2013-07-03 14:48:45

by Guenter Roeck

[permalink] [raw]
Subject: Re: [lm-sensors] 3.10: Intel HWMON/NIC temperature sensor question

On Wed, Jul 03, 2013 at 08:35:50AM -0400, Justin Piszcz wrote:
> Hi,
>
>
>
> I saw this in the device drive section and was curious which Intel-based
> NICs contain temperature sensors?
>
>
>
> Intel(R) 10GbE PCI Express adapters HWMON support
>
> Intel(R) PCI-Express Gigabit adapters HWMON support
>
>
>
> I checked the boards below and none appear to expose a hwmon interface:
>
> 08:00.0 Ethernet controller: Intel Corporation 82580 Gigabit Network
> Connection (rev 01)
>
> 08:00.1 Ethernet controller: Intel Corporation 82580 Gigabit Network
> Connection (rev 01)
>
> 08:00.2 Ethernet controller: Intel Corporation 82580 Gigabit Network
> Connection (rev 01)
>
> 08:00.3 Ethernet controller: Intel Corporation 82580 Gigabit Network
> Connection (rev 01)
>
> 09:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network
> Connection
>
> 0a:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network
> Connection
>
> 01:00.0 Ethernet controller: Intel Corporation 82598EB 10-Gigabit AT2 Server
> Adapter (rev 01)
>
82575 and 82599. Doesn't matter much, though, since they don't export the "name"
attribute from their driver, meaning the sensors command won't find the sensors.
Also, they enerate the hwmon device first and then create the attributes, which
is the wrong order and creates a potential race condition with demons.

Someone who has a board will have to fix that at some point.

Guenter


2013-07-03 15:08:52

by Jean Delvare

[permalink] [raw]
Subject: Re: [lm-sensors] 3.10: Intel HWMON/NIC temperature sensor question

On Wed, 3 Jul 2013 07:48:45 -0700, Guenter Roeck wrote:
> 82575 and 82599. Doesn't matter much, though, since they don't export the "name"
> attribute from their driver, meaning the sensors command won't find the sensors.
> Also, they enerate the hwmon device first and then create the attributes, which
> is the wrong order and creates a potential race condition with demons.

Yes and no. For devices which are only implementing hwmon features,
hwmon is just a link and the attributes belong to the device. So we can
create the attributes first and the hwmon device second.

However for devices which are primarily something else and only
register a hwmon device as a side object, the hwmon attributes are
attached to the hwmon class device and not the main device. In that
case the hwmon device has to be created first and the attributes
second. Yes, this is racy. The only clean way around it AFAIK is to
implement all the attributes as proper class attributes rather than
creating them manually - but it would take a whole redesign of the
hwmon core module.

A workaround may be to create the name attribute last.

> Someone who has a board will have to fix that at some point.

--
Jean Delvare

2013-07-03 16:25:46

by Guenter Roeck

[permalink] [raw]
Subject: Re: [lm-sensors] 3.10: Intel HWMON/NIC temperature sensor question

On Wed, Jul 03, 2013 at 05:08:38PM +0200, Jean Delvare wrote:
> On Wed, 3 Jul 2013 07:48:45 -0700, Guenter Roeck wrote:
> > 82575 and 82599. Doesn't matter much, though, since they don't export the "name"
> > attribute from their driver, meaning the sensors command won't find the sensors.
> > Also, they enerate the hwmon device first and then create the attributes, which
> > is the wrong order and creates a potential race condition with demons.
>
> Yes and no. For devices which are only implementing hwmon features,
> hwmon is just a link and the attributes belong to the device. So we can
> create the attributes first and the hwmon device second.
>
> However for devices which are primarily something else and only
> register a hwmon device as a side object, the hwmon attributes are
> attached to the hwmon class device and not the main device. In that
> case the hwmon device has to be created first and the attributes
> second. Yes, this is racy. The only clean way around it AFAIK is to
> implement all the attributes as proper class attributes rather than
> creating them manually - but it would take a whole redesign of the
> hwmon core module.
>

Actually, there would be a simple solution. We can add an API call such as
hwmon_device_register_groups(), which in addition to passing the parent device
would also pass "struct attribute_groups **". It would have to create the device
manually instead of calling device_create(), but would add the groups to the
device structure prior to calling device_register(). The core device handling
code would then automatically create all attributes (and remove them later on).

We might even be able to convince the device core maintainers to let us add a
"device_register_groups()" API into the device core code.

Code itself should be straightforward. Worth a try ?

Guenter