All of lore.kernel.org
 help / color / mirror / Atom feed
* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-20 18:10 ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-20 18:10 UTC (permalink / raw)
  To: Eduardo Valentin, Zhang Rui, Jean Delvare, Guenter Roeck
  Cc: Andrew Lunn, Jason Cooper, linux-pm, lm-sensors, Gregory Clement,
	linux-arm-kernel, Sebastian Hesselbarth

Hi,

With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
one) was modified in such a way that sensors utility (current 3.3.4
version with 3.3.4 version of libsensors from lm-sensors package on
Debian unstable) does not see the temperature sensor anymore on armada
370 platforms (not tested on others). Additionally, the changes break
existing configurations of fancontrol utility, which prevents the 
fan to be regulated correctly w/o recreating an /etc/fancontrol w/
pwmconfig.

Here is what I have on my Armada 370-based system on a 3.11.5:

# sensors
g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        2457 RPM  (div = 1)

armada_thermal-virtual-0
Adapter: Virtual device
temp1:        +45.7°C  

And what I get on 3.12-rc6:

# sensors
g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        1350 RPM  (div = 1)


Monitoring what sensors does w/ strace, I started looking at the changes
to /sys/class/hwmon/hwmon1/:

On 3.11.5:

# find /sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/name
/sys/class/hwmon/hwmon1/subsystem
/sys/class/hwmon/hwmon1/uevent
/sys/class/hwmon/hwmon1/temp1_input

On 3.12-rc6:

# find /sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/name
/sys/class/hwmon/hwmon1/device
/sys/class/hwmon/hwmon1/subsystem
/sys/class/hwmon/hwmon1/uevent
/sys/class/hwmon/hwmon1/temp1_input

# find /sys/class/hwmon/hwmon1/device/
/sys/class/hwmon/hwmon1/device/
/sys/class/hwmon/hwmon1/device/temp
/sys/class/hwmon/hwmon1/device/type
/sys/class/hwmon/hwmon1/device/hwmon1
/sys/class/hwmon/hwmon1/device/hwmon1/name
/sys/class/hwmon/hwmon1/device/hwmon1/device
/sys/class/hwmon/hwmon1/device/hwmon1/subsystem
/sys/class/hwmon/hwmon1/device/hwmon1/uevent
/sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
/sys/class/hwmon/hwmon1/device/subsystem
/sys/class/hwmon/hwmon1/device/policy
/sys/class/hwmon/hwmon1/device/uevent
/sys/class/hwmon/hwmon1/device/passive

Is that expected? As for sensors, it *seems* to be bothered to find a
device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.

Cheers,

a+

ps: I can test if this is the same on kirkwood if there is a need.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-20 18:10 ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-20 18:10 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
one) was modified in such a way that sensors utility (current 3.3.4
version with 3.3.4 version of libsensors from lm-sensors package on
Debian unstable) does not see the temperature sensor anymore on armada
370 platforms (not tested on others). Additionally, the changes break
existing configurations of fancontrol utility, which prevents the 
fan to be regulated correctly w/o recreating an /etc/fancontrol w/
pwmconfig.

Here is what I have on my Armada 370-based system on a 3.11.5:

# sensors
g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        2457 RPM  (div = 1)

armada_thermal-virtual-0
Adapter: Virtual device
temp1:        +45.7?C  

And what I get on 3.12-rc6:

# sensors
g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        1350 RPM  (div = 1)


Monitoring what sensors does w/ strace, I started looking at the changes
to /sys/class/hwmon/hwmon1/:

On 3.11.5:

# find /sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/name
/sys/class/hwmon/hwmon1/subsystem
/sys/class/hwmon/hwmon1/uevent
/sys/class/hwmon/hwmon1/temp1_input

On 3.12-rc6:

# find /sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/
/sys/class/hwmon/hwmon1/name
/sys/class/hwmon/hwmon1/device
/sys/class/hwmon/hwmon1/subsystem
/sys/class/hwmon/hwmon1/uevent
/sys/class/hwmon/hwmon1/temp1_input

# find /sys/class/hwmon/hwmon1/device/
/sys/class/hwmon/hwmon1/device/
/sys/class/hwmon/hwmon1/device/temp
/sys/class/hwmon/hwmon1/device/type
/sys/class/hwmon/hwmon1/device/hwmon1
/sys/class/hwmon/hwmon1/device/hwmon1/name
/sys/class/hwmon/hwmon1/device/hwmon1/device
/sys/class/hwmon/hwmon1/device/hwmon1/subsystem
/sys/class/hwmon/hwmon1/device/hwmon1/uevent
/sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
/sys/class/hwmon/hwmon1/device/subsystem
/sys/class/hwmon/hwmon1/device/policy
/sys/class/hwmon/hwmon1/device/uevent
/sys/class/hwmon/hwmon1/device/passive

Is that expected? As for sensors, it *seems* to be bothered to find a
device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.

Cheers,

a+

ps: I can test if this is the same on kirkwood if there is a need.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-20 18:10 ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-20 18:10 UTC (permalink / raw)
  To: Eduardo Valentin, Zhang Rui, Jean Delvare, Guenter Roeck
  Cc: Andrew Lunn, Jason Cooper, linux-pm, lm-sensors, Gregory Clement,
	linux-arm-kernel, Sebastian Hesselbarth

SGksCgpXaXRoIDMuMTItcmMgc2VyaWVzLCBzeXNmcyBzdXBwb3J0IGZvciB0aGVybWFsIHN1c2Jz
eXRlbSAoYW5kL29yIGh3bW9uCm9uZSkgd2FzIG1vZGlmaWVkIGluIHN1Y2ggYSB3YXkgdGhhdCBz
ZW5zb3JzIHV0aWxpdHkgKGN1cnJlbnQgMy4zLjQKdmVyc2lvbiB3aXRoIDMuMy40IHZlcnNpb24g
b2YgbGlic2Vuc29ycyBmcm9tIGxtLXNlbnNvcnMgcGFja2FnZSBvbgpEZWJpYW4gdW5zdGFibGUp
IGRvZXMgbm90IHNlZSB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yIGFueW1vcmUgb24gYXJtYWRhCjM3
MCBwbGF0Zm9ybXMgKG5vdCB0ZXN0ZWQgb24gb3RoZXJzKS4gQWRkaXRpb25hbGx5LCB0aGUgY2hh
bmdlcyBicmVhawpleGlzdGluZyBjb25maWd1cmF0aW9ucyBvZiBmYW5jb250cm9sIHV0aWxpdHks
IHdoaWNoIHByZXZlbnRzIHRoZSAKZmFuIHRvIGJlIHJlZ3VsYXRlZCBjb3JyZWN0bHkgdy9vIHJl
Y3JlYXRpbmcgYW4gL2V0Yy9mYW5jb250cm9sIHcvCnB3bWNvbmZpZy4KCkhlcmUgaXMgd2hhdCBJ
IGhhdmUgb24gbXkgQXJtYWRhIDM3MC1iYXNlZCBzeXN0ZW0gb24gYSAzLjExLjU6CgojIHNlbnNv
cnMKZzc2Mi1pMmMtMC0zZQpBZGFwdGVyOiBtdjY0eHh4X2kyYyBhZGFwdGVyCmZhbjE6ICAgICAg
ICAyNDU3IFJQTSAgKGRpdiA9IDEpCgphcm1hZGFfdGhlcm1hbC12aXJ0dWFsLTAKQWRhcHRlcjog
VmlydHVhbCBkZXZpY2UKdGVtcDE6ICAgICAgICArNDUuN8KwQyAgCgpBbmQgd2hhdCBJIGdldCBv
biAzLjEyLXJjNjoKCiMgc2Vuc29ycwpnNzYyLWkyYy0wLTNlCkFkYXB0ZXI6IG12NjR4eHhfaTJj
IGFkYXB0ZXIKZmFuMTogICAgICAgIDEzNTAgUlBNICAoZGl2ID0gMSkKCgpNb25pdG9yaW5nIHdo
YXQgc2Vuc29ycyBkb2VzIHcvIHN0cmFjZSwgSSBzdGFydGVkIGxvb2tpbmcgYXQgdGhlIGNoYW5n
ZXMKdG8gL3N5cy9jbGFzcy9od21vbi9od21vbjEvOgoKT24gMy4xMS41OgoKIyBmaW5kIC9zeXMv
Y2xhc3MvaHdtb24vaHdtb24xLwovc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8KL3N5cy9jbGFzcy9o
d21vbi9od21vbjEvbmFtZQovc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9zdWJzeXN0ZW0KL3N5cy9j
bGFzcy9od21vbi9od21vbjEvdWV2ZW50Ci9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3RlbXAxX2lu
cHV0CgpPbiAzLjEyLXJjNjoKCiMgZmluZCAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8KL3N5cy9j
bGFzcy9od21vbi9od21vbjEvCi9zeXMvY2xhc3MvaHdtb24vaHdtb24xL25hbWUKL3N5cy9jbGFz
cy9od21vbi9od21vbjEvZGV2aWNlCi9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3N1YnN5c3RlbQov
c3lzL2NsYXNzL2h3bW9uL2h3bW9uMS91ZXZlbnQKL3N5cy9jbGFzcy9od21vbi9od21vbjEvdGVt
cDFfaW5wdXQKCiMgZmluZCAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvCi9zeXMvY2xh
c3MvaHdtb24vaHdtb24xL2RldmljZS8KL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL3Rl
bXAKL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL3R5cGUKL3N5cy9jbGFzcy9od21vbi9o
d21vbjEvZGV2aWNlL2h3bW9uMQovc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24x
L25hbWUKL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMS9kZXZpY2UKL3N5cy9j
bGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMS9zdWJzeXN0ZW0KL3N5cy9jbGFzcy9od21v
bi9od21vbjEvZGV2aWNlL2h3bW9uMS91ZXZlbnQKL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2
aWNlL2h3bW9uMS90ZW1wMV9pbnB1dAovc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2Uvc3Vi
c3lzdGVtCi9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9wb2xpY3kKL3N5cy9jbGFzcy9o
d21vbi9od21vbjEvZGV2aWNlL3VldmVudAovc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2Uv
cGFzc2l2ZQoKSXMgdGhhdCBleHBlY3RlZD8gQXMgZm9yIHNlbnNvcnMsIGl0ICpzZWVtcyogdG8g
YmUgYm90aGVyZWQgdG8gZmluZCBhCmRldmljZS8gZm9sZGVyIGluIC9zeXMvY2xhc3MvaHdtb24v
aHdtb24xLyB3L28gbm8gbmFtZSBlbnRyeSBpbiBpdC4KCkNoZWVycywKCmErCgpwczogSSBjYW4g
dGVzdCBpZiB0aGlzIGlzIHRoZSBzYW1lIG9uIGtpcmt3b29kIGlmIHRoZXJlIGlzIGEgbmVlZC4K
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNv
cnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxt
LXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-20 18:10 ` Arnaud Ebalard
  (?)
@ 2013-10-20 19:23   ` Guenter Roeck
  -1 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-20 19:23 UTC (permalink / raw)
  To: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, Jean Delvare
  Cc: linux-pm, lm-sensors, linux-arm-kernel, Andrew Lunn,
	Gregory Clement, Sebastian Hesselbarth, Jason Cooper

On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
> Hi,
>
> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> one) was modified in such a way that sensors utility (current 3.3.4
> version with 3.3.4 version of libsensors from lm-sensors package on
> Debian unstable) does not see the temperature sensor anymore on armada
> 370 platforms (not tested on others). Additionally, the changes break
> existing configurations of fancontrol utility, which prevents the
> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> pwmconfig.
>
> Here is what I have on my Armada 370-based system on a 3.11.5:
>
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        2457 RPM  (div = 1)
>
> armada_thermal-virtual-0
> Adapter: Virtual device
> temp1:        +45.7°C
>
> And what I get on 3.12-rc6:
>
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        1350 RPM  (div = 1)
>
>
> Monitoring what sensors does w/ strace, I started looking at the changes
> to /sys/class/hwmon/hwmon1/:
>
> On 3.11.5:
>
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
>
> On 3.12-rc6:
>
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/device
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
>
> # find /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/temp
> /sys/class/hwmon/hwmon1/device/type
> /sys/class/hwmon/hwmon1/device/hwmon1
> /sys/class/hwmon/hwmon1/device/hwmon1/name
> /sys/class/hwmon/hwmon1/device/hwmon1/device
> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> /sys/class/hwmon/hwmon1/device/subsystem
> /sys/class/hwmon/hwmon1/device/policy
> /sys/class/hwmon/hwmon1/device/uevent
> /sys/class/hwmon/hwmon1/device/passive
>
> Is that expected? As for sensors, it *seems* to be bothered to find a
> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>

The 'name' attribute should not be the problem, since there is a 'name'
attribute in the /sys/class/hwmon/hwmon1/ directory.

Key difference is that there is now a 'device' subdirectory, which results
in different handling by libsensors; the entry is no longer a virtual entry
but is expected to have a real device attached to it. For this device,
libsensors tries to scan the 'subsystem' entry which in turn must be well
defined and known. My suspicion is that the reported subsystem may not be
recognized by libsensors.

One question is why there is now a device entry, even though this is still as
virtual as it was before. You'll have to ask the thermal subsystem maintainers
for an answer.

I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
that suggests that hwmon1 may be declared to be a child of itself, which would
obviously not be a good idea.

Also, note that the thermal subsystem creates (or may create) sensor attributes
after registering the hwmon device, which means you can not rely on the udev
event that comes with the hwmon device creation and assume that all sensor
attributes exist at that time. I don't currently know how to handle this situation.
This is not unique, though; the coretemp driver does the same. Just something
to keep in mind.

Guenter


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-20 19:23   ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-20 19:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
> Hi,
>
> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> one) was modified in such a way that sensors utility (current 3.3.4
> version with 3.3.4 version of libsensors from lm-sensors package on
> Debian unstable) does not see the temperature sensor anymore on armada
> 370 platforms (not tested on others). Additionally, the changes break
> existing configurations of fancontrol utility, which prevents the
> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> pwmconfig.
>
> Here is what I have on my Armada 370-based system on a 3.11.5:
>
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        2457 RPM  (div = 1)
>
> armada_thermal-virtual-0
> Adapter: Virtual device
> temp1:        +45.7?C
>
> And what I get on 3.12-rc6:
>
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        1350 RPM  (div = 1)
>
>
> Monitoring what sensors does w/ strace, I started looking at the changes
> to /sys/class/hwmon/hwmon1/:
>
> On 3.11.5:
>
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
>
> On 3.12-rc6:
>
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/device
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
>
> # find /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/temp
> /sys/class/hwmon/hwmon1/device/type
> /sys/class/hwmon/hwmon1/device/hwmon1
> /sys/class/hwmon/hwmon1/device/hwmon1/name
> /sys/class/hwmon/hwmon1/device/hwmon1/device
> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> /sys/class/hwmon/hwmon1/device/subsystem
> /sys/class/hwmon/hwmon1/device/policy
> /sys/class/hwmon/hwmon1/device/uevent
> /sys/class/hwmon/hwmon1/device/passive
>
> Is that expected? As for sensors, it *seems* to be bothered to find a
> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>

The 'name' attribute should not be the problem, since there is a 'name'
attribute in the /sys/class/hwmon/hwmon1/ directory.

Key difference is that there is now a 'device' subdirectory, which results
in different handling by libsensors; the entry is no longer a virtual entry
but is expected to have a real device attached to it. For this device,
libsensors tries to scan the 'subsystem' entry which in turn must be well
defined and known. My suspicion is that the reported subsystem may not be
recognized by libsensors.

One question is why there is now a device entry, even though this is still as
virtual as it was before. You'll have to ask the thermal subsystem maintainers
for an answer.

I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
that suggests that hwmon1 may be declared to be a child of itself, which would
obviously not be a good idea.

Also, note that the thermal subsystem creates (or may create) sensor attributes
after registering the hwmon device, which means you can not rely on the udev
event that comes with the hwmon device creation and assume that all sensor
attributes exist at that time. I don't currently know how to handle this situation.
This is not unique, though; the coretemp driver does the same. Just something
to keep in mind.

Guenter

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-20 19:23   ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-20 19:23 UTC (permalink / raw)
  To: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, Jean Delvare
  Cc: linux-pm, lm-sensors, linux-arm-kernel, Andrew Lunn,
	Gregory Clement, Sebastian Hesselbarth, Jason Cooper

T24gMTAvMjAvMjAxMyAxMToxMCBBTSwgQXJuYXVkIEViYWxhcmQgd3JvdGU6Cj4gSGksCj4KPiBX
aXRoIDMuMTItcmMgc2VyaWVzLCBzeXNmcyBzdXBwb3J0IGZvciB0aGVybWFsIHN1c2JzeXRlbSAo
YW5kL29yIGh3bW9uCj4gb25lKSB3YXMgbW9kaWZpZWQgaW4gc3VjaCBhIHdheSB0aGF0IHNlbnNv
cnMgdXRpbGl0eSAoY3VycmVudCAzLjMuNAo+IHZlcnNpb24gd2l0aCAzLjMuNCB2ZXJzaW9uIG9m
IGxpYnNlbnNvcnMgZnJvbSBsbS1zZW5zb3JzIHBhY2thZ2Ugb24KPiBEZWJpYW4gdW5zdGFibGUp
IGRvZXMgbm90IHNlZSB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yIGFueW1vcmUgb24gYXJtYWRhCj4g
MzcwIHBsYXRmb3JtcyAobm90IHRlc3RlZCBvbiBvdGhlcnMpLiBBZGRpdGlvbmFsbHksIHRoZSBj
aGFuZ2VzIGJyZWFrCj4gZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgb2YgZmFuY29udHJvbCB1dGls
aXR5LCB3aGljaCBwcmV2ZW50cyB0aGUKPiBmYW4gdG8gYmUgcmVndWxhdGVkIGNvcnJlY3RseSB3
L28gcmVjcmVhdGluZyBhbiAvZXRjL2ZhbmNvbnRyb2wgdy8KPiBwd21jb25maWcuCj4KPiBIZXJl
IGlzIHdoYXQgSSBoYXZlIG9uIG15IEFybWFkYSAzNzAtYmFzZWQgc3lzdGVtIG9uIGEgMy4xMS41
Ogo+Cj4gIyBzZW5zb3JzCj4gZzc2Mi1pMmMtMC0zZQo+IEFkYXB0ZXI6IG12NjR4eHhfaTJjIGFk
YXB0ZXIKPiBmYW4xOiAgICAgICAgMjQ1NyBSUE0gIChkaXYgPSAxKQo+Cj4gYXJtYWRhX3RoZXJt
YWwtdmlydHVhbC0wCj4gQWRhcHRlcjogVmlydHVhbCBkZXZpY2UKPiB0ZW1wMTogICAgICAgICs0
NS43wrBDCj4KPiBBbmQgd2hhdCBJIGdldCBvbiAzLjEyLXJjNjoKPgo+ICMgc2Vuc29ycwo+IGc3
NjItaTJjLTAtM2UKPiBBZGFwdGVyOiBtdjY0eHh4X2kyYyBhZGFwdGVyCj4gZmFuMTogICAgICAg
IDEzNTAgUlBNICAoZGl2ID0gMSkKPgo+Cj4gTW9uaXRvcmluZyB3aGF0IHNlbnNvcnMgZG9lcyB3
LyBzdHJhY2UsIEkgc3RhcnRlZCBsb29raW5nIGF0IHRoZSBjaGFuZ2VzCj4gdG8gL3N5cy9jbGFz
cy9od21vbi9od21vbjEvOgo+Cj4gT24gMy4xMS41Ogo+Cj4gIyBmaW5kIC9zeXMvY2xhc3MvaHdt
b24vaHdtb24xLwo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xLwo+IC9zeXMvY2xhc3MvaHdtb24v
aHdtb24xL25hbWUKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9zdWJzeXN0ZW0KPiAvc3lzL2Ns
YXNzL2h3bW9uL2h3bW9uMS91ZXZlbnQKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS90ZW1wMV9p
bnB1dAo+Cj4gT24gMy4xMi1yYzY6Cj4KPiAjIGZpbmQgL3N5cy9jbGFzcy9od21vbi9od21vbjEv
Cj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvbmFt
ZQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZQo+IC9zeXMvY2xhc3MvaHdtb24vaHdt
b24xL3N1YnN5c3RlbQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3VldmVudAo+IC9zeXMvY2xh
c3MvaHdtb24vaHdtb24xL3RlbXAxX2lucHV0Cj4KPiAjIGZpbmQgL3N5cy9jbGFzcy9od21vbi9o
d21vbjEvZGV2aWNlLwo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS8KPiAvc3lzL2Ns
YXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvdGVtcAo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2Rl
dmljZS90eXBlCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMQo+IC9zeXMv
Y2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9od21vbjEvbmFtZQo+IC9zeXMvY2xhc3MvaHdtb24v
aHdtb24xL2RldmljZS9od21vbjEvZGV2aWNlCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2
aWNlL2h3bW9uMS9zdWJzeXN0ZW0KPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdt
b24xL3VldmVudAo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9od21vbjEvdGVtcDFf
aW5wdXQKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2Uvc3Vic3lzdGVtCj4gL3N5cy9j
bGFzcy9od21vbi9od21vbjEvZGV2aWNlL3BvbGljeQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24x
L2RldmljZS91ZXZlbnQKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvcGFzc2l2ZQo+
Cj4gSXMgdGhhdCBleHBlY3RlZD8gQXMgZm9yIHNlbnNvcnMsIGl0ICpzZWVtcyogdG8gYmUgYm90
aGVyZWQgdG8gZmluZCBhCj4gZGV2aWNlLyBmb2xkZXIgaW4gL3N5cy9jbGFzcy9od21vbi9od21v
bjEvIHcvbyBubyBuYW1lIGVudHJ5IGluIGl0Lgo+CgpUaGUgJ25hbWUnIGF0dHJpYnV0ZSBzaG91
bGQgbm90IGJlIHRoZSBwcm9ibGVtLCBzaW5jZSB0aGVyZSBpcyBhICduYW1lJwphdHRyaWJ1dGUg
aW4gdGhlIC9zeXMvY2xhc3MvaHdtb24vaHdtb24xLyBkaXJlY3RvcnkuCgpLZXkgZGlmZmVyZW5j
ZSBpcyB0aGF0IHRoZXJlIGlzIG5vdyBhICdkZXZpY2UnIHN1YmRpcmVjdG9yeSwgd2hpY2ggcmVz
dWx0cwppbiBkaWZmZXJlbnQgaGFuZGxpbmcgYnkgbGlic2Vuc29yczsgdGhlIGVudHJ5IGlzIG5v
IGxvbmdlciBhIHZpcnR1YWwgZW50cnkKYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgYSByZWFsIGRl
dmljZSBhdHRhY2hlZCB0byBpdC4gRm9yIHRoaXMgZGV2aWNlLApsaWJzZW5zb3JzIHRyaWVzIHRv
IHNjYW4gdGhlICdzdWJzeXN0ZW0nIGVudHJ5IHdoaWNoIGluIHR1cm4gbXVzdCBiZSB3ZWxsCmRl
ZmluZWQgYW5kIGtub3duLiBNeSBzdXNwaWNpb24gaXMgdGhhdCB0aGUgcmVwb3J0ZWQgc3Vic3lz
dGVtIG1heSBub3QgYmUKcmVjb2duaXplZCBieSBsaWJzZW5zb3JzLgoKT25lIHF1ZXN0aW9uIGlz
IHdoeSB0aGVyZSBpcyBub3cgYSBkZXZpY2UgZW50cnksIGV2ZW4gdGhvdWdoIHRoaXMgaXMgc3Rp
bGwgYXMKdmlydHVhbCBhcyBpdCB3YXMgYmVmb3JlLiBZb3UnbGwgaGF2ZSB0byBhc2sgdGhlIHRo
ZXJtYWwgc3Vic3lzdGVtIG1haW50YWluZXJzCmZvciBhbiBhbnN3ZXIuCgpJIGFtIGFsc28gY29u
Y2VybmVkIGFib3V0IHRoZSAnaHdtb24xJyBzdWJkaXJlY3RvcnkgdW5kZXJuZWF0aCBod21vbjEv
ZGV2aWNlOwp0aGF0IHN1Z2dlc3RzIHRoYXQgaHdtb24xIG1heSBiZSBkZWNsYXJlZCB0byBiZSBh
IGNoaWxkIG9mIGl0c2VsZiwgd2hpY2ggd291bGQKb2J2aW91c2x5IG5vdCBiZSBhIGdvb2QgaWRl
YS4KCkFsc28sIG5vdGUgdGhhdCB0aGUgdGhlcm1hbCBzdWJzeXN0ZW0gY3JlYXRlcyAob3IgbWF5
IGNyZWF0ZSkgc2Vuc29yIGF0dHJpYnV0ZXMKYWZ0ZXIgcmVnaXN0ZXJpbmcgdGhlIGh3bW9uIGRl
dmljZSwgd2hpY2ggbWVhbnMgeW91IGNhbiBub3QgcmVseSBvbiB0aGUgdWRldgpldmVudCB0aGF0
IGNvbWVzIHdpdGggdGhlIGh3bW9uIGRldmljZSBjcmVhdGlvbiBhbmQgYXNzdW1lIHRoYXQgYWxs
IHNlbnNvcgphdHRyaWJ1dGVzIGV4aXN0IGF0IHRoYXQgdGltZS4gSSBkb24ndCBjdXJyZW50bHkg
a25vdyBob3cgdG8gaGFuZGxlIHRoaXMgc2l0dWF0aW9uLgpUaGlzIGlzIG5vdCB1bmlxdWUsIHRo
b3VnaDsgdGhlIGNvcmV0ZW1wIGRyaXZlciBkb2VzIHRoZSBzYW1lLiBKdXN0IHNvbWV0aGluZwp0
byBrZWVwIGluIG1pbmQuCgpHdWVudGVyCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1z
ZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9s
bS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-20 19:23   ` Guenter Roeck
  (?)
@ 2013-10-21  2:28     ` Zhang Rui
  -1 siblings, 0 replies; 27+ messages in thread
From: Zhang Rui @ 2013-10-21  2:28 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Arnaud Ebalard, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi,

On Sun, 2013-10-20 at 12:23 -0700, Guenter Roeck wrote:
> On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
> > Hi,
> >
> > With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> > one) was modified in such a way that sensors utility (current 3.3.4
> > version with 3.3.4 version of libsensors from lm-sensors package on
> > Debian unstable) does not see the temperature sensor anymore on armada
> > 370 platforms (not tested on others). Additionally, the changes break
> > existing configurations of fancontrol utility, which prevents the
> > fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> > pwmconfig.
> >
> > Here is what I have on my Armada 370-based system on a 3.11.5:
> >
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        2457 RPM  (div = 1)
> >
> > armada_thermal-virtual-0
> > Adapter: Virtual device
> > temp1:        +45.7°C
> >
> > And what I get on 3.12-rc6:
> >
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        1350 RPM  (div = 1)
> >
> >
> > Monitoring what sensors does w/ strace, I started looking at the changes
> > to /sys/class/hwmon/hwmon1/:
> >
> > On 3.11.5:
> >
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> >
> > On 3.12-rc6:
> >
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/device
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> >
> > # find /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/temp
> > /sys/class/hwmon/hwmon1/device/type
> > /sys/class/hwmon/hwmon1/device/hwmon1
> > /sys/class/hwmon/hwmon1/device/hwmon1/name
> > /sys/class/hwmon/hwmon1/device/hwmon1/device
> > /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> > /sys/class/hwmon/hwmon1/device/subsystem
> > /sys/class/hwmon/hwmon1/device/policy
> > /sys/class/hwmon/hwmon1/device/uevent
> > /sys/class/hwmon/hwmon1/device/passive
> >
> > Is that expected? As for sensors, it *seems* to be bothered to find a
> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
> >

I agree. And it should be caused by this commit.

commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
Author: Eduardo Valentin <eduardo.valentin@ti.com>
Date:   Fri Aug 23 17:07:58 2013 -0400

    drivers: thermal: parent virtual hwmon with thermal zone
    
    When  creating virtual hwmon devices based out of thermal
    zone devices, the virtual devices won't have parents.
    
    This patch changes the code so that the parent of virtual
    hwmon devices is the thermal zone device that they are
    based of.
    
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>

> 
> The 'name' attribute should not be the problem, since there is a 'name'
> attribute in the /sys/class/hwmon/hwmon1/ directory.
> 
> Key difference is that there is now a 'device' subdirectory,

Right.

>  which results
> in different handling by libsensors;
Oh, I'm not aware of this before.
There is no such statement in the comments of hwmon_device_register(),
or anywhere else.
Could you show me some tutorials about how the sysfs I/F misleads
libsensors?

But anyway, I will revert this patch first.
Thanks for reporting the problem, Arnaud!

thanks,
rui
>  the entry is no longer a virtual entry
> but is expected to have a real device attached to it. For this device,
> libsensors tries to scan the 'subsystem' entry which in turn must be well
> defined and known. My suspicion is that the reported subsystem may not be
> recognized by libsensors.

> 
> One question is why there is now a device entry, even though this is still as
> virtual as it was before. You'll have to ask the thermal subsystem maintainers
> for an answer.

> I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
> that suggests that hwmon1 may be declared to be a child of itself, which would
> obviously not be a good idea.
> 
> Also, note that the thermal subsystem creates (or may create) sensor attributes
> after registering the hwmon device, which means you can not rely on the udev
> event that comes with the hwmon device creation and assume that all sensor
> attributes exist at that time. I don't currently know how to handle this situation.
> This is not unique, though; the coretemp driver does the same. Just something
> to keep in mind.
> 
> Guenter
> 



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  2:28     ` Zhang Rui
  0 siblings, 0 replies; 27+ messages in thread
From: Zhang Rui @ 2013-10-21  2:28 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Sun, 2013-10-20 at 12:23 -0700, Guenter Roeck wrote:
> On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
> > Hi,
> >
> > With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> > one) was modified in such a way that sensors utility (current 3.3.4
> > version with 3.3.4 version of libsensors from lm-sensors package on
> > Debian unstable) does not see the temperature sensor anymore on armada
> > 370 platforms (not tested on others). Additionally, the changes break
> > existing configurations of fancontrol utility, which prevents the
> > fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> > pwmconfig.
> >
> > Here is what I have on my Armada 370-based system on a 3.11.5:
> >
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        2457 RPM  (div = 1)
> >
> > armada_thermal-virtual-0
> > Adapter: Virtual device
> > temp1:        +45.7?C
> >
> > And what I get on 3.12-rc6:
> >
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        1350 RPM  (div = 1)
> >
> >
> > Monitoring what sensors does w/ strace, I started looking at the changes
> > to /sys/class/hwmon/hwmon1/:
> >
> > On 3.11.5:
> >
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> >
> > On 3.12-rc6:
> >
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/device
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> >
> > # find /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/temp
> > /sys/class/hwmon/hwmon1/device/type
> > /sys/class/hwmon/hwmon1/device/hwmon1
> > /sys/class/hwmon/hwmon1/device/hwmon1/name
> > /sys/class/hwmon/hwmon1/device/hwmon1/device
> > /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> > /sys/class/hwmon/hwmon1/device/subsystem
> > /sys/class/hwmon/hwmon1/device/policy
> > /sys/class/hwmon/hwmon1/device/uevent
> > /sys/class/hwmon/hwmon1/device/passive
> >
> > Is that expected? As for sensors, it *seems* to be bothered to find a
> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
> >

I agree. And it should be caused by this commit.

commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
Author: Eduardo Valentin <eduardo.valentin@ti.com>
Date:   Fri Aug 23 17:07:58 2013 -0400

    drivers: thermal: parent virtual hwmon with thermal zone
    
    When  creating virtual hwmon devices based out of thermal
    zone devices, the virtual devices won't have parents.
    
    This patch changes the code so that the parent of virtual
    hwmon devices is the thermal zone device that they are
    based of.
    
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: linux-pm at vger.kernel.org
    Cc: linux-kernel at vger.kernel.org
    Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>

> 
> The 'name' attribute should not be the problem, since there is a 'name'
> attribute in the /sys/class/hwmon/hwmon1/ directory.
> 
> Key difference is that there is now a 'device' subdirectory,

Right.

>  which results
> in different handling by libsensors;
Oh, I'm not aware of this before.
There is no such statement in the comments of hwmon_device_register(),
or anywhere else.
Could you show me some tutorials about how the sysfs I/F misleads
libsensors?

But anyway, I will revert this patch first.
Thanks for reporting the problem, Arnaud!

thanks,
rui
>  the entry is no longer a virtual entry
> but is expected to have a real device attached to it. For this device,
> libsensors tries to scan the 'subsystem' entry which in turn must be well
> defined and known. My suspicion is that the reported subsystem may not be
> recognized by libsensors.

> 
> One question is why there is now a device entry, even though this is still as
> virtual as it was before. You'll have to ask the thermal subsystem maintainers
> for an answer.

> I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
> that suggests that hwmon1 may be declared to be a child of itself, which would
> obviously not be a good idea.
> 
> Also, note that the thermal subsystem creates (or may create) sensor attributes
> after registering the hwmon device, which means you can not rely on the udev
> event that comes with the hwmon device creation and assume that all sensor
> attributes exist at that time. I don't currently know how to handle this situation.
> This is not unique, though; the coretemp driver does the same. Just something
> to keep in mind.
> 
> Guenter
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  2:28     ` Zhang Rui
  0 siblings, 0 replies; 27+ messages in thread
From: Zhang Rui @ 2013-10-21  2:28 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Arnaud Ebalard, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

SGksCgpPbiBTdW4sIDIwMTMtMTAtMjAgYXQgMTI6MjMgLTA3MDAsIEd1ZW50ZXIgUm9lY2sgd3Jv
dGU6Cj4gT24gMTAvMjAvMjAxMyAxMToxMCBBTSwgQXJuYXVkIEViYWxhcmQgd3JvdGU6Cj4gPiBI
aSwKPiA+Cj4gPiBXaXRoIDMuMTItcmMgc2VyaWVzLCBzeXNmcyBzdXBwb3J0IGZvciB0aGVybWFs
IHN1c2JzeXRlbSAoYW5kL29yIGh3bW9uCj4gPiBvbmUpIHdhcyBtb2RpZmllZCBpbiBzdWNoIGEg
d2F5IHRoYXQgc2Vuc29ycyB1dGlsaXR5IChjdXJyZW50IDMuMy40Cj4gPiB2ZXJzaW9uIHdpdGgg
My4zLjQgdmVyc2lvbiBvZiBsaWJzZW5zb3JzIGZyb20gbG0tc2Vuc29ycyBwYWNrYWdlIG9uCj4g
PiBEZWJpYW4gdW5zdGFibGUpIGRvZXMgbm90IHNlZSB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yIGFu
eW1vcmUgb24gYXJtYWRhCj4gPiAzNzAgcGxhdGZvcm1zIChub3QgdGVzdGVkIG9uIG90aGVycyku
IEFkZGl0aW9uYWxseSwgdGhlIGNoYW5nZXMgYnJlYWsKPiA+IGV4aXN0aW5nIGNvbmZpZ3VyYXRp
b25zIG9mIGZhbmNvbnRyb2wgdXRpbGl0eSwgd2hpY2ggcHJldmVudHMgdGhlCj4gPiBmYW4gdG8g
YmUgcmVndWxhdGVkIGNvcnJlY3RseSB3L28gcmVjcmVhdGluZyBhbiAvZXRjL2ZhbmNvbnRyb2wg
dy8KPiA+IHB3bWNvbmZpZy4KPiA+Cj4gPiBIZXJlIGlzIHdoYXQgSSBoYXZlIG9uIG15IEFybWFk
YSAzNzAtYmFzZWQgc3lzdGVtIG9uIGEgMy4xMS41Ogo+ID4KPiA+ICMgc2Vuc29ycwo+ID4gZzc2
Mi1pMmMtMC0zZQo+ID4gQWRhcHRlcjogbXY2NHh4eF9pMmMgYWRhcHRlcgo+ID4gZmFuMTogICAg
ICAgIDI0NTcgUlBNICAoZGl2ID0gMSkKPiA+Cj4gPiBhcm1hZGFfdGhlcm1hbC12aXJ0dWFsLTAK
PiA+IEFkYXB0ZXI6IFZpcnR1YWwgZGV2aWNlCj4gPiB0ZW1wMTogICAgICAgICs0NS43wrBDCj4g
Pgo+ID4gQW5kIHdoYXQgSSBnZXQgb24gMy4xMi1yYzY6Cj4gPgo+ID4gIyBzZW5zb3JzCj4gPiBn
NzYyLWkyYy0wLTNlCj4gPiBBZGFwdGVyOiBtdjY0eHh4X2kyYyBhZGFwdGVyCj4gPiBmYW4xOiAg
ICAgICAgMTM1MCBSUE0gIChkaXYgPSAxKQo+ID4KPiA+Cj4gPiBNb25pdG9yaW5nIHdoYXQgc2Vu
c29ycyBkb2VzIHcvIHN0cmFjZSwgSSBzdGFydGVkIGxvb2tpbmcgYXQgdGhlIGNoYW5nZXMKPiA+
IHRvIC9zeXMvY2xhc3MvaHdtb24vaHdtb24xLzoKPiA+Cj4gPiBPbiAzLjExLjU6Cj4gPgo+ID4g
IyBmaW5kIC9zeXMvY2xhc3MvaHdtb24vaHdtb24xLwo+ID4gL3N5cy9jbGFzcy9od21vbi9od21v
bjEvCj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9uYW1lCj4gPiAvc3lzL2NsYXNzL2h3bW9u
L2h3bW9uMS9zdWJzeXN0ZW0KPiA+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3VldmVudAo+ID4g
L3N5cy9jbGFzcy9od21vbi9od21vbjEvdGVtcDFfaW5wdXQKPiA+Cj4gPiBPbiAzLjEyLXJjNjoK
PiA+Cj4gPiAjIGZpbmQgL3N5cy9jbGFzcy9od21vbi9od21vbjEvCj4gPiAvc3lzL2NsYXNzL2h3
bW9uL2h3bW9uMS8KPiA+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL25hbWUKPiA+IC9zeXMvY2xh
c3MvaHdtb24vaHdtb24xL2RldmljZQo+ID4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvc3Vic3lz
dGVtCj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS91ZXZlbnQKPiA+IC9zeXMvY2xhc3MvaHdt
b24vaHdtb24xL3RlbXAxX2lucHV0Cj4gPgo+ID4gIyBmaW5kIC9zeXMvY2xhc3MvaHdtb24vaHdt
b24xL2RldmljZS8KPiA+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS8KPiA+IC9zeXMv
Y2xhc3MvaHdtb24vaHdtb24xL2RldmljZS90ZW1wCj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9u
MS9kZXZpY2UvdHlwZQo+ID4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMQo+
ID4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMS9uYW1lCj4gPiAvc3lzL2Ns
YXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24xL2RldmljZQo+ID4gL3N5cy9jbGFzcy9od21v
bi9od21vbjEvZGV2aWNlL2h3bW9uMS9zdWJzeXN0ZW0KPiA+IC9zeXMvY2xhc3MvaHdtb24vaHdt
b24xL2RldmljZS9od21vbjEvdWV2ZW50Cj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZp
Y2UvaHdtb24xL3RlbXAxX2lucHV0Cj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2Uv
c3Vic3lzdGVtCj4gPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvcG9saWN5Cj4gPiAv
c3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvdWV2ZW50Cj4gPiAvc3lzL2NsYXNzL2h3bW9u
L2h3bW9uMS9kZXZpY2UvcGFzc2l2ZQo+ID4KPiA+IElzIHRoYXQgZXhwZWN0ZWQ/IEFzIGZvciBz
ZW5zb3JzLCBpdCAqc2VlbXMqIHRvIGJlIGJvdGhlcmVkIHRvIGZpbmQgYQo+ID4gZGV2aWNlLyBm
b2xkZXIgaW4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvIHcvbyBubyBuYW1lIGVudHJ5IGluIGl0
Lgo+ID4KCkkgYWdyZWUuIEFuZCBpdCBzaG91bGQgYmUgY2F1c2VkIGJ5IHRoaXMgY29tbWl0LgoK
Y29tbWl0IGI4MjcxNWZkZDRhNTQwN2Y1Njg1M2IyNGQzODdkNDg0ZGQ5YzNiNWIKQXV0aG9yOiBF
ZHVhcmRvIFZhbGVudGluIDxlZHVhcmRvLnZhbGVudGluQHRpLmNvbT4KRGF0ZTogICBGcmkgQXVn
IDIzIDE3OjA3OjU4IDIwMTMgLTA0MDAKCiAgICBkcml2ZXJzOiB0aGVybWFsOiBwYXJlbnQgdmly
dHVhbCBod21vbiB3aXRoIHRoZXJtYWwgem9uZQogICAgCiAgICBXaGVuICBjcmVhdGluZyB2aXJ0
dWFsIGh3bW9uIGRldmljZXMgYmFzZWQgb3V0IG9mIHRoZXJtYWwKICAgIHpvbmUgZGV2aWNlcywg
dGhlIHZpcnR1YWwgZGV2aWNlcyB3b24ndCBoYXZlIHBhcmVudHMuCiAgICAKICAgIFRoaXMgcGF0
Y2ggY2hhbmdlcyB0aGUgY29kZSBzbyB0aGF0IHRoZSBwYXJlbnQgb2YgdmlydHVhbAogICAgaHdt
b24gZGV2aWNlcyBpcyB0aGUgdGhlcm1hbCB6b25lIGRldmljZSB0aGF0IHRoZXkgYXJlCiAgICBi
YXNlZCBvZi4KICAgIAogICAgQ2M6IFpoYW5nIFJ1aSA8cnVpLnpoYW5nQGludGVsLmNvbT4KICAg
IENjOiBsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKICAgIENjOiBsaW51eC1rZXJuZWxAdmdlci5r
ZXJuZWwub3JnCiAgICBTaWduZWQtb2ZmLWJ5OiBFZHVhcmRvIFZhbGVudGluIDxlZHVhcmRvLnZh
bGVudGluQHRpLmNvbT4KCj4gCj4gVGhlICduYW1lJyBhdHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSB0
aGUgcHJvYmxlbSwgc2luY2UgdGhlcmUgaXMgYSAnbmFtZScKPiBhdHRyaWJ1dGUgaW4gdGhlIC9z
eXMvY2xhc3MvaHdtb24vaHdtb24xLyBkaXJlY3RvcnkuCj4gCj4gS2V5IGRpZmZlcmVuY2UgaXMg
dGhhdCB0aGVyZSBpcyBub3cgYSAnZGV2aWNlJyBzdWJkaXJlY3RvcnksCgpSaWdodC4KCj4gIHdo
aWNoIHJlc3VsdHMKPiBpbiBkaWZmZXJlbnQgaGFuZGxpbmcgYnkgbGlic2Vuc29yczsKT2gsIEkn
bSBub3QgYXdhcmUgb2YgdGhpcyBiZWZvcmUuClRoZXJlIGlzIG5vIHN1Y2ggc3RhdGVtZW50IGlu
IHRoZSBjb21tZW50cyBvZiBod21vbl9kZXZpY2VfcmVnaXN0ZXIoKSwKb3IgYW55d2hlcmUgZWxz
ZS4KQ291bGQgeW91IHNob3cgbWUgc29tZSB0dXRvcmlhbHMgYWJvdXQgaG93IHRoZSBzeXNmcyBJ
L0YgbWlzbGVhZHMKbGlic2Vuc29ycz8KCkJ1dCBhbnl3YXksIEkgd2lsbCByZXZlcnQgdGhpcyBw
YXRjaCBmaXJzdC4KVGhhbmtzIGZvciByZXBvcnRpbmcgdGhlIHByb2JsZW0sIEFybmF1ZCEKCnRo
YW5rcywKcnVpCj4gIHRoZSBlbnRyeSBpcyBubyBsb25nZXIgYSB2aXJ0dWFsIGVudHJ5Cj4gYnV0
IGlzIGV4cGVjdGVkIHRvIGhhdmUgYSByZWFsIGRldmljZSBhdHRhY2hlZCB0byBpdC4gRm9yIHRo
aXMgZGV2aWNlLAo+IGxpYnNlbnNvcnMgdHJpZXMgdG8gc2NhbiB0aGUgJ3N1YnN5c3RlbScgZW50
cnkgd2hpY2ggaW4gdHVybiBtdXN0IGJlIHdlbGwKPiBkZWZpbmVkIGFuZCBrbm93bi4gTXkgc3Vz
cGljaW9uIGlzIHRoYXQgdGhlIHJlcG9ydGVkIHN1YnN5c3RlbSBtYXkgbm90IGJlCj4gcmVjb2du
aXplZCBieSBsaWJzZW5zb3JzLgoKPiAKPiBPbmUgcXVlc3Rpb24gaXMgd2h5IHRoZXJlIGlzIG5v
dyBhIGRldmljZSBlbnRyeSwgZXZlbiB0aG91Z2ggdGhpcyBpcyBzdGlsbCBhcwo+IHZpcnR1YWwg
YXMgaXQgd2FzIGJlZm9yZS4gWW91J2xsIGhhdmUgdG8gYXNrIHRoZSB0aGVybWFsIHN1YnN5c3Rl
bSBtYWludGFpbmVycwo+IGZvciBhbiBhbnN3ZXIuCgo+IEkgYW0gYWxzbyBjb25jZXJuZWQgYWJv
dXQgdGhlICdod21vbjEnIHN1YmRpcmVjdG9yeSB1bmRlcm5lYXRoIGh3bW9uMS9kZXZpY2U7Cj4g
dGhhdCBzdWdnZXN0cyB0aGF0IGh3bW9uMSBtYXkgYmUgZGVjbGFyZWQgdG8gYmUgYSBjaGlsZCBv
ZiBpdHNlbGYsIHdoaWNoIHdvdWxkCj4gb2J2aW91c2x5IG5vdCBiZSBhIGdvb2QgaWRlYS4KPiAK
PiBBbHNvLCBub3RlIHRoYXQgdGhlIHRoZXJtYWwgc3Vic3lzdGVtIGNyZWF0ZXMgKG9yIG1heSBj
cmVhdGUpIHNlbnNvciBhdHRyaWJ1dGVzCj4gYWZ0ZXIgcmVnaXN0ZXJpbmcgdGhlIGh3bW9uIGRl
dmljZSwgd2hpY2ggbWVhbnMgeW91IGNhbiBub3QgcmVseSBvbiB0aGUgdWRldgo+IGV2ZW50IHRo
YXQgY29tZXMgd2l0aCB0aGUgaHdtb24gZGV2aWNlIGNyZWF0aW9uIGFuZCBhc3N1bWUgdGhhdCBh
bGwgc2Vuc29yCj4gYXR0cmlidXRlcyBleGlzdCBhdCB0aGF0IHRpbWUuIEkgZG9uJ3QgY3VycmVu
dGx5IGtub3cgaG93IHRvIGhhbmRsZSB0aGlzIHNpdHVhdGlvbi4KPiBUaGlzIGlzIG5vdCB1bmlx
dWUsIHRob3VnaDsgdGhlIGNvcmV0ZW1wIGRyaXZlciBkb2VzIHRoZSBzYW1lLiBKdXN0IHNvbWV0
aGluZwo+IHRvIGtlZXAgaW4gbWluZC4KPiAKPiBHdWVudGVyCj4gCgoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0
CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h
aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-21  2:28     ` Zhang Rui
  (?)
@ 2013-10-21  5:19       ` Guenter Roeck
  -1 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21  5:19 UTC (permalink / raw)
  To: Zhang Rui
  Cc: Arnaud Ebalard, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

On 10/20/2013 07:28 PM, Zhang Rui wrote:
> Hi,
>
> On Sun, 2013-10-20 at 12:23 -0700, Guenter Roeck wrote:
>> On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
>>> Hi,
>>>
>>> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
>>> one) was modified in such a way that sensors utility (current 3.3.4
>>> version with 3.3.4 version of libsensors from lm-sensors package on
>>> Debian unstable) does not see the temperature sensor anymore on armada
>>> 370 platforms (not tested on others). Additionally, the changes break
>>> existing configurations of fancontrol utility, which prevents the
>>> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
>>> pwmconfig.
>>>
>>> Here is what I have on my Armada 370-based system on a 3.11.5:
>>>
>>> # sensors
>>> g762-i2c-0-3e
>>> Adapter: mv64xxx_i2c adapter
>>> fan1:        2457 RPM  (div = 1)
>>>
>>> armada_thermal-virtual-0
>>> Adapter: Virtual device
>>> temp1:        +45.7°C
>>>
>>> And what I get on 3.12-rc6:
>>>
>>> # sensors
>>> g762-i2c-0-3e
>>> Adapter: mv64xxx_i2c adapter
>>> fan1:        1350 RPM  (div = 1)
>>>
>>>
>>> Monitoring what sensors does w/ strace, I started looking at the changes
>>> to /sys/class/hwmon/hwmon1/:
>>>
>>> On 3.11.5:
>>>
>>> # find /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/name
>>> /sys/class/hwmon/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/temp1_input
>>>
>>> On 3.12-rc6:
>>>
>>> # find /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/name
>>> /sys/class/hwmon/hwmon1/device
>>> /sys/class/hwmon/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/temp1_input
>>>
>>> # find /sys/class/hwmon/hwmon1/device/
>>> /sys/class/hwmon/hwmon1/device/
>>> /sys/class/hwmon/hwmon1/device/temp
>>> /sys/class/hwmon/hwmon1/device/type
>>> /sys/class/hwmon/hwmon1/device/hwmon1
>>> /sys/class/hwmon/hwmon1/device/hwmon1/name
>>> /sys/class/hwmon/hwmon1/device/hwmon1/device
>>> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
>>> /sys/class/hwmon/hwmon1/device/subsystem
>>> /sys/class/hwmon/hwmon1/device/policy
>>> /sys/class/hwmon/hwmon1/device/uevent
>>> /sys/class/hwmon/hwmon1/device/passive
>>>
>>> Is that expected? As for sensors, it *seems* to be bothered to find a
>>> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>>>
>
> I agree. And it should be caused by this commit.
>
> commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
> Author: Eduardo Valentin <eduardo.valentin@ti.com>
> Date:   Fri Aug 23 17:07:58 2013 -0400
>
>      drivers: thermal: parent virtual hwmon with thermal zone
>
>      When  creating virtual hwmon devices based out of thermal
>      zone devices, the virtual devices won't have parents.
>
>      This patch changes the code so that the parent of virtual
>      hwmon devices is the thermal zone device that they are
>      based of.
>
>      Cc: Zhang Rui <rui.zhang@intel.com>
>      Cc: linux-pm@vger.kernel.org
>      Cc: linux-kernel@vger.kernel.org
>      Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>
>>
>> The 'name' attribute should not be the problem, since there is a 'name'
>> attribute in the /sys/class/hwmon/hwmon1/ directory.
>>
>> Key difference is that there is now a 'device' subdirectory,
>
> Right.
>
>>   which results
>> in different handling by libsensors;
> Oh, I'm not aware of this before.
> There is no such statement in the comments of hwmon_device_register(),
> or anywhere else.
> Could you show me some tutorials about how the sysfs I/F misleads
> libsensors?
>

I looked into the libsensors source code. I don't think there is a tutorial,
or at least I am not aware of one.

Still, I don't entirely understand how the above commit results in what seems
to be recursive parents (or, from looking into the code, how that happens in
the first place).

Guenter

> But anyway, I will revert this patch first.
> Thanks for reporting the problem, Arnaud!
>
> thanks,
> rui
>>   the entry is no longer a virtual entry
>> but is expected to have a real device attached to it. For this device,
>> libsensors tries to scan the 'subsystem' entry which in turn must be well
>> defined and known. My suspicion is that the reported subsystem may not be
>> recognized by libsensors.
>
>>
>> One question is why there is now a device entry, even though this is still as
>> virtual as it was before. You'll have to ask the thermal subsystem maintainers
>> for an answer.
>
>> I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
>> that suggests that hwmon1 may be declared to be a child of itself, which would
>> obviously not be a good idea.
>>
>> Also, note that the thermal subsystem creates (or may create) sensor attributes
>> after registering the hwmon device, which means you can not rely on the udev
>> event that comes with the hwmon device creation and assume that all sensor
>> attributes exist at that time. I don't currently know how to handle this situation.
>> This is not unique, though; the coretemp driver does the same. Just something
>> to keep in mind.
>>
>> Guenter
>>
>
>
>
>


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  5:19       ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21  5:19 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/20/2013 07:28 PM, Zhang Rui wrote:
> Hi,
>
> On Sun, 2013-10-20 at 12:23 -0700, Guenter Roeck wrote:
>> On 10/20/2013 11:10 AM, Arnaud Ebalard wrote:
>>> Hi,
>>>
>>> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
>>> one) was modified in such a way that sensors utility (current 3.3.4
>>> version with 3.3.4 version of libsensors from lm-sensors package on
>>> Debian unstable) does not see the temperature sensor anymore on armada
>>> 370 platforms (not tested on others). Additionally, the changes break
>>> existing configurations of fancontrol utility, which prevents the
>>> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
>>> pwmconfig.
>>>
>>> Here is what I have on my Armada 370-based system on a 3.11.5:
>>>
>>> # sensors
>>> g762-i2c-0-3e
>>> Adapter: mv64xxx_i2c adapter
>>> fan1:        2457 RPM  (div = 1)
>>>
>>> armada_thermal-virtual-0
>>> Adapter: Virtual device
>>> temp1:        +45.7?C
>>>
>>> And what I get on 3.12-rc6:
>>>
>>> # sensors
>>> g762-i2c-0-3e
>>> Adapter: mv64xxx_i2c adapter
>>> fan1:        1350 RPM  (div = 1)
>>>
>>>
>>> Monitoring what sensors does w/ strace, I started looking at the changes
>>> to /sys/class/hwmon/hwmon1/:
>>>
>>> On 3.11.5:
>>>
>>> # find /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/name
>>> /sys/class/hwmon/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/temp1_input
>>>
>>> On 3.12-rc6:
>>>
>>> # find /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/
>>> /sys/class/hwmon/hwmon1/name
>>> /sys/class/hwmon/hwmon1/device
>>> /sys/class/hwmon/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/temp1_input
>>>
>>> # find /sys/class/hwmon/hwmon1/device/
>>> /sys/class/hwmon/hwmon1/device/
>>> /sys/class/hwmon/hwmon1/device/temp
>>> /sys/class/hwmon/hwmon1/device/type
>>> /sys/class/hwmon/hwmon1/device/hwmon1
>>> /sys/class/hwmon/hwmon1/device/hwmon1/name
>>> /sys/class/hwmon/hwmon1/device/hwmon1/device
>>> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
>>> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
>>> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
>>> /sys/class/hwmon/hwmon1/device/subsystem
>>> /sys/class/hwmon/hwmon1/device/policy
>>> /sys/class/hwmon/hwmon1/device/uevent
>>> /sys/class/hwmon/hwmon1/device/passive
>>>
>>> Is that expected? As for sensors, it *seems* to be bothered to find a
>>> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>>>
>
> I agree. And it should be caused by this commit.
>
> commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
> Author: Eduardo Valentin <eduardo.valentin@ti.com>
> Date:   Fri Aug 23 17:07:58 2013 -0400
>
>      drivers: thermal: parent virtual hwmon with thermal zone
>
>      When  creating virtual hwmon devices based out of thermal
>      zone devices, the virtual devices won't have parents.
>
>      This patch changes the code so that the parent of virtual
>      hwmon devices is the thermal zone device that they are
>      based of.
>
>      Cc: Zhang Rui <rui.zhang@intel.com>
>      Cc: linux-pm at vger.kernel.org
>      Cc: linux-kernel at vger.kernel.org
>      Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>
>>
>> The 'name' attribute should not be the problem, since there is a 'name'
>> attribute in the /sys/class/hwmon/hwmon1/ directory.
>>
>> Key difference is that there is now a 'device' subdirectory,
>
> Right.
>
>>   which results
>> in different handling by libsensors;
> Oh, I'm not aware of this before.
> There is no such statement in the comments of hwmon_device_register(),
> or anywhere else.
> Could you show me some tutorials about how the sysfs I/F misleads
> libsensors?
>

I looked into the libsensors source code. I don't think there is a tutorial,
or at least I am not aware of one.

Still, I don't entirely understand how the above commit results in what seems
to be recursive parents (or, from looking into the code, how that happens in
the first place).

Guenter

> But anyway, I will revert this patch first.
> Thanks for reporting the problem, Arnaud!
>
> thanks,
> rui
>>   the entry is no longer a virtual entry
>> but is expected to have a real device attached to it. For this device,
>> libsensors tries to scan the 'subsystem' entry which in turn must be well
>> defined and known. My suspicion is that the reported subsystem may not be
>> recognized by libsensors.
>
>>
>> One question is why there is now a device entry, even though this is still as
>> virtual as it was before. You'll have to ask the thermal subsystem maintainers
>> for an answer.
>
>> I am also concerned about the 'hwmon1' subdirectory underneath hwmon1/device;
>> that suggests that hwmon1 may be declared to be a child of itself, which would
>> obviously not be a good idea.
>>
>> Also, note that the thermal subsystem creates (or may create) sensor attributes
>> after registering the hwmon device, which means you can not rely on the udev
>> event that comes with the hwmon device creation and assume that all sensor
>> attributes exist at that time. I don't currently know how to handle this situation.
>> This is not unique, though; the coretemp driver does the same. Just something
>> to keep in mind.
>>
>> Guenter
>>
>
>
>
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  5:19       ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21  5:19 UTC (permalink / raw)
  To: Zhang Rui
  Cc: Arnaud Ebalard, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

T24gMTAvMjAvMjAxMyAwNzoyOCBQTSwgWmhhbmcgUnVpIHdyb3RlOgo+IEhpLAo+Cj4gT24gU3Vu
LCAyMDEzLTEwLTIwIGF0IDEyOjIzIC0wNzAwLCBHdWVudGVyIFJvZWNrIHdyb3RlOgo+PiBPbiAx
MC8yMC8yMDEzIDExOjEwIEFNLCBBcm5hdWQgRWJhbGFyZCB3cm90ZToKPj4+IEhpLAo+Pj4KPj4+
IFdpdGggMy4xMi1yYyBzZXJpZXMsIHN5c2ZzIHN1cHBvcnQgZm9yIHRoZXJtYWwgc3VzYnN5dGVt
IChhbmQvb3IgaHdtb24KPj4+IG9uZSkgd2FzIG1vZGlmaWVkIGluIHN1Y2ggYSB3YXkgdGhhdCBz
ZW5zb3JzIHV0aWxpdHkgKGN1cnJlbnQgMy4zLjQKPj4+IHZlcnNpb24gd2l0aCAzLjMuNCB2ZXJz
aW9uIG9mIGxpYnNlbnNvcnMgZnJvbSBsbS1zZW5zb3JzIHBhY2thZ2Ugb24KPj4+IERlYmlhbiB1
bnN0YWJsZSkgZG9lcyBub3Qgc2VlIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IgYW55bW9yZSBvbiBh
cm1hZGEKPj4+IDM3MCBwbGF0Zm9ybXMgKG5vdCB0ZXN0ZWQgb24gb3RoZXJzKS4gQWRkaXRpb25h
bGx5LCB0aGUgY2hhbmdlcyBicmVhawo+Pj4gZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgb2YgZmFu
Y29udHJvbCB1dGlsaXR5LCB3aGljaCBwcmV2ZW50cyB0aGUKPj4+IGZhbiB0byBiZSByZWd1bGF0
ZWQgY29ycmVjdGx5IHcvbyByZWNyZWF0aW5nIGFuIC9ldGMvZmFuY29udHJvbCB3Lwo+Pj4gcHdt
Y29uZmlnLgo+Pj4KPj4+IEhlcmUgaXMgd2hhdCBJIGhhdmUgb24gbXkgQXJtYWRhIDM3MC1iYXNl
ZCBzeXN0ZW0gb24gYSAzLjExLjU6Cj4+Pgo+Pj4gIyBzZW5zb3JzCj4+PiBnNzYyLWkyYy0wLTNl
Cj4+PiBBZGFwdGVyOiBtdjY0eHh4X2kyYyBhZGFwdGVyCj4+PiBmYW4xOiAgICAgICAgMjQ1NyBS
UE0gIChkaXYgPSAxKQo+Pj4KPj4+IGFybWFkYV90aGVybWFsLXZpcnR1YWwtMAo+Pj4gQWRhcHRl
cjogVmlydHVhbCBkZXZpY2UKPj4+IHRlbXAxOiAgICAgICAgKzQ1LjfCsEMKPj4+Cj4+PiBBbmQg
d2hhdCBJIGdldCBvbiAzLjEyLXJjNjoKPj4+Cj4+PiAjIHNlbnNvcnMKPj4+IGc3NjItaTJjLTAt
M2UKPj4+IEFkYXB0ZXI6IG12NjR4eHhfaTJjIGFkYXB0ZXIKPj4+IGZhbjE6ICAgICAgICAxMzUw
IFJQTSAgKGRpdiA9IDEpCj4+Pgo+Pj4KPj4+IE1vbml0b3Jpbmcgd2hhdCBzZW5zb3JzIGRvZXMg
dy8gc3RyYWNlLCBJIHN0YXJ0ZWQgbG9va2luZyBhdCB0aGUgY2hhbmdlcwo+Pj4gdG8gL3N5cy9j
bGFzcy9od21vbi9od21vbjEvOgo+Pj4KPj4+IE9uIDMuMTEuNToKPj4+Cj4+PiAjIGZpbmQgL3N5
cy9jbGFzcy9od21vbi9od21vbjEvCj4+PiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8KPj4+IC9z
eXMvY2xhc3MvaHdtb24vaHdtb24xL25hbWUKPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3N1
YnN5c3RlbQo+Pj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvdWV2ZW50Cj4+PiAvc3lzL2NsYXNz
L2h3bW9uL2h3bW9uMS90ZW1wMV9pbnB1dAo+Pj4KPj4+IE9uIDMuMTItcmM2Ogo+Pj4KPj4+ICMg
ZmluZCAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8KPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24x
Lwo+Pj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvbmFtZQo+Pj4gL3N5cy9jbGFzcy9od21vbi9o
d21vbjEvZGV2aWNlCj4+PiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9zdWJzeXN0ZW0KPj4+IC9z
eXMvY2xhc3MvaHdtb24vaHdtb24xL3VldmVudAo+Pj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEv
dGVtcDFfaW5wdXQKPj4+Cj4+PiAjIGZpbmQgL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNl
Lwo+Pj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlLwo+Pj4gL3N5cy9jbGFzcy9od21v
bi9od21vbjEvZGV2aWNlL3RlbXAKPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS90
eXBlCj4+PiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24xCj4+PiAvc3lzL2Ns
YXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24xL25hbWUKPj4+IC9zeXMvY2xhc3MvaHdtb24v
aHdtb24xL2RldmljZS9od21vbjEvZGV2aWNlCj4+PiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9k
ZXZpY2UvaHdtb24xL3N1YnN5c3RlbQo+Pj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNl
L2h3bW9uMS91ZXZlbnQKPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9od21vbjEv
dGVtcDFfaW5wdXQKPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9zdWJzeXN0ZW0K
Pj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9wb2xpY3kKPj4+IC9zeXMvY2xhc3Mv
aHdtb24vaHdtb24xL2RldmljZS91ZXZlbnQKPj4+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2Rl
dmljZS9wYXNzaXZlCj4+Pgo+Pj4gSXMgdGhhdCBleHBlY3RlZD8gQXMgZm9yIHNlbnNvcnMsIGl0
ICpzZWVtcyogdG8gYmUgYm90aGVyZWQgdG8gZmluZCBhCj4+PiBkZXZpY2UvIGZvbGRlciBpbiAv
c3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8gdy9vIG5vIG5hbWUgZW50cnkgaW4gaXQuCj4+Pgo+Cj4g
SSBhZ3JlZS4gQW5kIGl0IHNob3VsZCBiZSBjYXVzZWQgYnkgdGhpcyBjb21taXQuCj4KPiBjb21t
aXQgYjgyNzE1ZmRkNGE1NDA3ZjU2ODUzYjI0ZDM4N2Q0ODRkZDljM2I1Ygo+IEF1dGhvcjogRWR1
YXJkbyBWYWxlbnRpbiA8ZWR1YXJkby52YWxlbnRpbkB0aS5jb20+Cj4gRGF0ZTogICBGcmkgQXVn
IDIzIDE3OjA3OjU4IDIwMTMgLTA0MDAKPgo+ICAgICAgZHJpdmVyczogdGhlcm1hbDogcGFyZW50
IHZpcnR1YWwgaHdtb24gd2l0aCB0aGVybWFsIHpvbmUKPgo+ICAgICAgV2hlbiAgY3JlYXRpbmcg
dmlydHVhbCBod21vbiBkZXZpY2VzIGJhc2VkIG91dCBvZiB0aGVybWFsCj4gICAgICB6b25lIGRl
dmljZXMsIHRoZSB2aXJ0dWFsIGRldmljZXMgd29uJ3QgaGF2ZSBwYXJlbnRzLgo+Cj4gICAgICBU
aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGNvZGUgc28gdGhhdCB0aGUgcGFyZW50IG9mIHZpcnR1YWwK
PiAgICAgIGh3bW9uIGRldmljZXMgaXMgdGhlIHRoZXJtYWwgem9uZSBkZXZpY2UgdGhhdCB0aGV5
IGFyZQo+ICAgICAgYmFzZWQgb2YuCj4KPiAgICAgIENjOiBaaGFuZyBSdWkgPHJ1aS56aGFuZ0Bp
bnRlbC5jb20+Cj4gICAgICBDYzogbGludXgtcG1Admdlci5rZXJuZWwub3JnCj4gICAgICBDYzog
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwo+ICAgICAgU2lnbmVkLW9mZi1ieTogRWR1YXJk
byBWYWxlbnRpbiA8ZWR1YXJkby52YWxlbnRpbkB0aS5jb20+Cj4KPj4KPj4gVGhlICduYW1lJyBh
dHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSB0aGUgcHJvYmxlbSwgc2luY2UgdGhlcmUgaXMgYSAnbmFt
ZScKPj4gYXR0cmlidXRlIGluIHRoZSAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8gZGlyZWN0b3J5
Lgo+Pgo+PiBLZXkgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZXJlIGlzIG5vdyBhICdkZXZpY2UnIHN1
YmRpcmVjdG9yeSwKPgo+IFJpZ2h0Lgo+Cj4+ICAgd2hpY2ggcmVzdWx0cwo+PiBpbiBkaWZmZXJl
bnQgaGFuZGxpbmcgYnkgbGlic2Vuc29yczsKPiBPaCwgSSdtIG5vdCBhd2FyZSBvZiB0aGlzIGJl
Zm9yZS4KPiBUaGVyZSBpcyBubyBzdWNoIHN0YXRlbWVudCBpbiB0aGUgY29tbWVudHMgb2YgaHdt
b25fZGV2aWNlX3JlZ2lzdGVyKCksCj4gb3IgYW55d2hlcmUgZWxzZS4KPiBDb3VsZCB5b3Ugc2hv
dyBtZSBzb21lIHR1dG9yaWFscyBhYm91dCBob3cgdGhlIHN5c2ZzIEkvRiBtaXNsZWFkcwo+IGxp
YnNlbnNvcnM/Cj4KCkkgbG9va2VkIGludG8gdGhlIGxpYnNlbnNvcnMgc291cmNlIGNvZGUuIEkg
ZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYSB0dXRvcmlhbCwKb3IgYXQgbGVhc3QgSSBhbSBub3QgYXdh
cmUgb2Ygb25lLgoKU3RpbGwsIEkgZG9uJ3QgZW50aXJlbHkgdW5kZXJzdGFuZCBob3cgdGhlIGFi
b3ZlIGNvbW1pdCByZXN1bHRzIGluIHdoYXQgc2VlbXMKdG8gYmUgcmVjdXJzaXZlIHBhcmVudHMg
KG9yLCBmcm9tIGxvb2tpbmcgaW50byB0aGUgY29kZSwgaG93IHRoYXQgaGFwcGVucyBpbgp0aGUg
Zmlyc3QgcGxhY2UpLgoKR3VlbnRlcgoKPiBCdXQgYW55d2F5LCBJIHdpbGwgcmV2ZXJ0IHRoaXMg
cGF0Y2ggZmlyc3QuCj4gVGhhbmtzIGZvciByZXBvcnRpbmcgdGhlIHByb2JsZW0sIEFybmF1ZCEK
Pgo+IHRoYW5rcywKPiBydWkKPj4gICB0aGUgZW50cnkgaXMgbm8gbG9uZ2VyIGEgdmlydHVhbCBl
bnRyeQo+PiBidXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBhIHJlYWwgZGV2aWNlIGF0dGFjaGVkIHRv
IGl0LiBGb3IgdGhpcyBkZXZpY2UsCj4+IGxpYnNlbnNvcnMgdHJpZXMgdG8gc2NhbiB0aGUgJ3N1
YnN5c3RlbScgZW50cnkgd2hpY2ggaW4gdHVybiBtdXN0IGJlIHdlbGwKPj4gZGVmaW5lZCBhbmQg
a25vd24uIE15IHN1c3BpY2lvbiBpcyB0aGF0IHRoZSByZXBvcnRlZCBzdWJzeXN0ZW0gbWF5IG5v
dCBiZQo+PiByZWNvZ25pemVkIGJ5IGxpYnNlbnNvcnMuCj4KPj4KPj4gT25lIHF1ZXN0aW9uIGlz
IHdoeSB0aGVyZSBpcyBub3cgYSBkZXZpY2UgZW50cnksIGV2ZW4gdGhvdWdoIHRoaXMgaXMgc3Rp
bGwgYXMKPj4gdmlydHVhbCBhcyBpdCB3YXMgYmVmb3JlLiBZb3UnbGwgaGF2ZSB0byBhc2sgdGhl
IHRoZXJtYWwgc3Vic3lzdGVtIG1haW50YWluZXJzCj4+IGZvciBhbiBhbnN3ZXIuCj4KPj4gSSBh
bSBhbHNvIGNvbmNlcm5lZCBhYm91dCB0aGUgJ2h3bW9uMScgc3ViZGlyZWN0b3J5IHVuZGVybmVh
dGggaHdtb24xL2RldmljZTsKPj4gdGhhdCBzdWdnZXN0cyB0aGF0IGh3bW9uMSBtYXkgYmUgZGVj
bGFyZWQgdG8gYmUgYSBjaGlsZCBvZiBpdHNlbGYsIHdoaWNoIHdvdWxkCj4+IG9idmlvdXNseSBu
b3QgYmUgYSBnb29kIGlkZWEuCj4+Cj4+IEFsc28sIG5vdGUgdGhhdCB0aGUgdGhlcm1hbCBzdWJz
eXN0ZW0gY3JlYXRlcyAob3IgbWF5IGNyZWF0ZSkgc2Vuc29yIGF0dHJpYnV0ZXMKPj4gYWZ0ZXIg
cmVnaXN0ZXJpbmcgdGhlIGh3bW9uIGRldmljZSwgd2hpY2ggbWVhbnMgeW91IGNhbiBub3QgcmVs
eSBvbiB0aGUgdWRldgo+PiBldmVudCB0aGF0IGNvbWVzIHdpdGggdGhlIGh3bW9uIGRldmljZSBj
cmVhdGlvbiBhbmQgYXNzdW1lIHRoYXQgYWxsIHNlbnNvcgo+PiBhdHRyaWJ1dGVzIGV4aXN0IGF0
IHRoYXQgdGltZS4gSSBkb24ndCBjdXJyZW50bHkga25vdyBob3cgdG8gaGFuZGxlIHRoaXMgc2l0
dWF0aW9uLgo+PiBUaGlzIGlzIG5vdCB1bmlxdWUsIHRob3VnaDsgdGhlIGNvcmV0ZW1wIGRyaXZl
ciBkb2VzIHRoZSBzYW1lLiBKdXN0IHNvbWV0aGluZwo+PiB0byBrZWVwIGluIG1pbmQuCj4+Cj4+
IEd1ZW50ZXIKPj4KPgo+Cj4KPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29y
cy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vu
c29ycw=

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-20 18:10 ` Arnaud Ebalard
  (?)
@ 2013-10-21  7:17   ` Jean Delvare
  -1 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-21  7:17 UTC (permalink / raw)
  To: Arnaud Ebalard
  Cc: Eduardo Valentin, Zhang Rui, Guenter Roeck, linux-pm, lm-sensors,
	linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi Arnaud,

On Sun, 20 Oct 2013 20:10:41 +0200, Arnaud Ebalard wrote:
> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> one) was modified in such a way that sensors utility (current 3.3.4
> version with 3.3.4 version of libsensors from lm-sensors package on
> Debian unstable) does not see the temperature sensor anymore on armada
> 370 platforms (not tested on others). Additionally, the changes break
> existing configurations of fancontrol utility, which prevents the 
> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> pwmconfig.
> 
> Here is what I have on my Armada 370-based system on a 3.11.5:
> 
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        2457 RPM  (div = 1)
> 
> armada_thermal-virtual-0
> Adapter: Virtual device
> temp1:        +45.7°C  
> 
> And what I get on 3.12-rc6:
> 
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        1350 RPM  (div = 1)
> 
> 
> Monitoring what sensors does w/ strace, I started looking at the changes
> to /sys/class/hwmon/hwmon1/:
> 
> On 3.11.5:
> 
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
> 
> On 3.12-rc6:
> 
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/device
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
> 
> # find /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/temp
> /sys/class/hwmon/hwmon1/device/type
> /sys/class/hwmon/hwmon1/device/hwmon1
> /sys/class/hwmon/hwmon1/device/hwmon1/name
> /sys/class/hwmon/hwmon1/device/hwmon1/device
> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> /sys/class/hwmon/hwmon1/device/subsystem
> /sys/class/hwmon/hwmon1/device/policy
> /sys/class/hwmon/hwmon1/device/uevent
> /sys/class/hwmon/hwmon1/device/passive

Can you please share the full output of "strace sensors"? This will
help me understand which exact code paths are taken in libsensors.

> Is that expected? As for sensors, it *seems* to be bothered to find a
> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.

It should be able to cope with this just fine. The radeon driver does
exactly this and libsensors has no problem with it. 

-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  7:17   ` Jean Delvare
  0 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-21  7:17 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Arnaud,

On Sun, 20 Oct 2013 20:10:41 +0200, Arnaud Ebalard wrote:
> With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> one) was modified in such a way that sensors utility (current 3.3.4
> version with 3.3.4 version of libsensors from lm-sensors package on
> Debian unstable) does not see the temperature sensor anymore on armada
> 370 platforms (not tested on others). Additionally, the changes break
> existing configurations of fancontrol utility, which prevents the 
> fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> pwmconfig.
> 
> Here is what I have on my Armada 370-based system on a 3.11.5:
> 
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        2457 RPM  (div = 1)
> 
> armada_thermal-virtual-0
> Adapter: Virtual device
> temp1:        +45.7?C  
> 
> And what I get on 3.12-rc6:
> 
> # sensors
> g762-i2c-0-3e
> Adapter: mv64xxx_i2c adapter
> fan1:        1350 RPM  (div = 1)
> 
> 
> Monitoring what sensors does w/ strace, I started looking at the changes
> to /sys/class/hwmon/hwmon1/:
> 
> On 3.11.5:
> 
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
> 
> On 3.12-rc6:
> 
> # find /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/
> /sys/class/hwmon/hwmon1/name
> /sys/class/hwmon/hwmon1/device
> /sys/class/hwmon/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/uevent
> /sys/class/hwmon/hwmon1/temp1_input
> 
> # find /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/
> /sys/class/hwmon/hwmon1/device/temp
> /sys/class/hwmon/hwmon1/device/type
> /sys/class/hwmon/hwmon1/device/hwmon1
> /sys/class/hwmon/hwmon1/device/hwmon1/name
> /sys/class/hwmon/hwmon1/device/hwmon1/device
> /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> /sys/class/hwmon/hwmon1/device/subsystem
> /sys/class/hwmon/hwmon1/device/policy
> /sys/class/hwmon/hwmon1/device/uevent
> /sys/class/hwmon/hwmon1/device/passive

Can you please share the full output of "strace sensors"? This will
help me understand which exact code paths are taken in libsensors.

> Is that expected? As for sensors, it *seems* to be bothered to find a
> device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.

It should be able to cope with this just fine. The radeon driver does
exactly this and libsensors has no problem with it. 

-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21  7:17   ` Jean Delvare
  0 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-21  7:17 UTC (permalink / raw)
  To: Arnaud Ebalard
  Cc: Eduardo Valentin, Zhang Rui, Guenter Roeck, linux-pm, lm-sensors,
	linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

SGkgQXJuYXVkLAoKT24gU3VuLCAyMCBPY3QgMjAxMyAyMDoxMDo0MSArMDIwMCwgQXJuYXVkIEVi
YWxhcmQgd3JvdGU6Cj4gV2l0aCAzLjEyLXJjIHNlcmllcywgc3lzZnMgc3VwcG9ydCBmb3IgdGhl
cm1hbCBzdXNic3l0ZW0gKGFuZC9vciBod21vbgo+IG9uZSkgd2FzIG1vZGlmaWVkIGluIHN1Y2gg
YSB3YXkgdGhhdCBzZW5zb3JzIHV0aWxpdHkgKGN1cnJlbnQgMy4zLjQKPiB2ZXJzaW9uIHdpdGgg
My4zLjQgdmVyc2lvbiBvZiBsaWJzZW5zb3JzIGZyb20gbG0tc2Vuc29ycyBwYWNrYWdlIG9uCj4g
RGViaWFuIHVuc3RhYmxlKSBkb2VzIG5vdCBzZWUgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBhbnlt
b3JlIG9uIGFybWFkYQo+IDM3MCBwbGF0Zm9ybXMgKG5vdCB0ZXN0ZWQgb24gb3RoZXJzKS4gQWRk
aXRpb25hbGx5LCB0aGUgY2hhbmdlcyBicmVhawo+IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIG9m
IGZhbmNvbnRyb2wgdXRpbGl0eSwgd2hpY2ggcHJldmVudHMgdGhlIAo+IGZhbiB0byBiZSByZWd1
bGF0ZWQgY29ycmVjdGx5IHcvbyByZWNyZWF0aW5nIGFuIC9ldGMvZmFuY29udHJvbCB3Lwo+IHB3
bWNvbmZpZy4KPiAKPiBIZXJlIGlzIHdoYXQgSSBoYXZlIG9uIG15IEFybWFkYSAzNzAtYmFzZWQg
c3lzdGVtIG9uIGEgMy4xMS41Ogo+IAo+ICMgc2Vuc29ycwo+IGc3NjItaTJjLTAtM2UKPiBBZGFw
dGVyOiBtdjY0eHh4X2kyYyBhZGFwdGVyCj4gZmFuMTogICAgICAgIDI0NTcgUlBNICAoZGl2ID0g
MSkKPiAKPiBhcm1hZGFfdGhlcm1hbC12aXJ0dWFsLTAKPiBBZGFwdGVyOiBWaXJ0dWFsIGRldmlj
ZQo+IHRlbXAxOiAgICAgICAgKzQ1LjfCsEMgIAo+IAo+IEFuZCB3aGF0IEkgZ2V0IG9uIDMuMTIt
cmM2Ogo+IAo+ICMgc2Vuc29ycwo+IGc3NjItaTJjLTAtM2UKPiBBZGFwdGVyOiBtdjY0eHh4X2ky
YyBhZGFwdGVyCj4gZmFuMTogICAgICAgIDEzNTAgUlBNICAoZGl2ID0gMSkKPiAKPiAKPiBNb25p
dG9yaW5nIHdoYXQgc2Vuc29ycyBkb2VzIHcvIHN0cmFjZSwgSSBzdGFydGVkIGxvb2tpbmcgYXQg
dGhlIGNoYW5nZXMKPiB0byAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS86Cj4gCj4gT24gMy4xMS41
Ogo+IAo+ICMgZmluZCAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS8KPiAvc3lzL2NsYXNzL2h3bW9u
L2h3bW9uMS8KPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9uYW1lCj4gL3N5cy9jbGFzcy9od21v
bi9od21vbjEvc3Vic3lzdGVtCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvdWV2ZW50Cj4gL3N5
cy9jbGFzcy9od21vbi9od21vbjEvdGVtcDFfaW5wdXQKPiAKPiBPbiAzLjEyLXJjNjoKPiAKPiAj
IGZpbmQgL3N5cy9jbGFzcy9od21vbi9od21vbjEvCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEv
Cj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvbmFtZQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24x
L2RldmljZQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3N1YnN5c3RlbQo+IC9zeXMvY2xhc3Mv
aHdtb24vaHdtb24xL3VldmVudAo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3RlbXAxX2lucHV0
Cj4gCj4gIyBmaW5kIC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS8KPiAvc3lzL2NsYXNz
L2h3bW9uL2h3bW9uMS9kZXZpY2UvCj4gL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL3Rl
bXAKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvdHlwZQo+IC9zeXMvY2xhc3MvaHdt
b24vaHdtb24xL2RldmljZS9od21vbjEKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2Uv
aHdtb24xL25hbWUKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24xL2Rldmlj
ZQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9od21vbjEvc3Vic3lzdGVtCj4gL3N5
cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL2h3bW9uMS91ZXZlbnQKPiAvc3lzL2NsYXNzL2h3
bW9uL2h3bW9uMS9kZXZpY2UvaHdtb24xL3RlbXAxX2lucHV0Cj4gL3N5cy9jbGFzcy9od21vbi9o
d21vbjEvZGV2aWNlL3N1YnN5c3RlbQo+IC9zeXMvY2xhc3MvaHdtb24vaHdtb24xL2RldmljZS9w
b2xpY3kKPiAvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9kZXZpY2UvdWV2ZW50Cj4gL3N5cy9jbGFz
cy9od21vbi9od21vbjEvZGV2aWNlL3Bhc3NpdmUKCkNhbiB5b3UgcGxlYXNlIHNoYXJlIHRoZSBm
dWxsIG91dHB1dCBvZiAic3RyYWNlIHNlbnNvcnMiPyBUaGlzIHdpbGwKaGVscCBtZSB1bmRlcnN0
YW5kIHdoaWNoIGV4YWN0IGNvZGUgcGF0aHMgYXJlIHRha2VuIGluIGxpYnNlbnNvcnMuCgo+IElz
IHRoYXQgZXhwZWN0ZWQ/IEFzIGZvciBzZW5zb3JzLCBpdCAqc2VlbXMqIHRvIGJlIGJvdGhlcmVk
IHRvIGZpbmQgYQo+IGRldmljZS8gZm9sZGVyIGluIC9zeXMvY2xhc3MvaHdtb24vaHdtb24xLyB3
L28gbm8gbmFtZSBlbnRyeSBpbiBpdC4KCkl0IHNob3VsZCBiZSBhYmxlIHRvIGNvcGUgd2l0aCB0
aGlzIGp1c3QgZmluZS4gVGhlIHJhZGVvbiBkcml2ZXIgZG9lcwpleGFjdGx5IHRoaXMgYW5kIGxp
YnNlbnNvcnMgaGFzIG5vIHByb2JsZW0gd2l0aCBpdC4gCgotLSAKSmVhbiBEZWx2YXJlCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1h
aWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5z
b3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-21  7:17   ` Jean Delvare
  (?)
@ 2013-10-21 15:16     ` Guenter Roeck
  -1 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21 15:16 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

On Mon, Oct 21, 2013 at 09:17:39AM +0200, Jean Delvare wrote:
> Hi Arnaud,
> 
> On Sun, 20 Oct 2013 20:10:41 +0200, Arnaud Ebalard wrote:
> > With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> > one) was modified in such a way that sensors utility (current 3.3.4
> > version with 3.3.4 version of libsensors from lm-sensors package on
> > Debian unstable) does not see the temperature sensor anymore on armada
> > 370 platforms (not tested on others). Additionally, the changes break
> > existing configurations of fancontrol utility, which prevents the 
> > fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> > pwmconfig.
> > 
> > Here is what I have on my Armada 370-based system on a 3.11.5:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        2457 RPM  (div = 1)
> > 
> > armada_thermal-virtual-0
> > Adapter: Virtual device
> > temp1:        +45.7°C  
> > 
> > And what I get on 3.12-rc6:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        1350 RPM  (div = 1)
> > 
> > 
> > Monitoring what sensors does w/ strace, I started looking at the changes
> > to /sys/class/hwmon/hwmon1/:
> > 
> > On 3.11.5:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > On 3.12-rc6:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/device
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > # find /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/temp
> > /sys/class/hwmon/hwmon1/device/type
> > /sys/class/hwmon/hwmon1/device/hwmon1
> > /sys/class/hwmon/hwmon1/device/hwmon1/name
> > /sys/class/hwmon/hwmon1/device/hwmon1/device
> > /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> > /sys/class/hwmon/hwmon1/device/subsystem
> > /sys/class/hwmon/hwmon1/device/policy
> > /sys/class/hwmon/hwmon1/device/uevent
> > /sys/class/hwmon/hwmon1/device/passive
> 
> Can you please share the full output of "strace sensors"? This will
> help me understand which exact code paths are taken in libsensors.
> 
> > Is that expected? As for sensors, it *seems* to be bothered to find a
> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
> 
> It should be able to cope with this just fine. The radeon driver does
> exactly this and libsensors has no problem with it. 
> 
Hi Jean,

I think it is more likely that the problem is related to parsing the 'subsystem'
link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
the device as unknown.

Question is if we can come up with some more generic code to handle that case.
Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
But then there can be more than one of those, so you would need some means
for enumerating bus and chip numbers, so I don't know if that is feasible.

Guenter

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 15:16     ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21 15:16 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 21, 2013 at 09:17:39AM +0200, Jean Delvare wrote:
> Hi Arnaud,
> 
> On Sun, 20 Oct 2013 20:10:41 +0200, Arnaud Ebalard wrote:
> > With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> > one) was modified in such a way that sensors utility (current 3.3.4
> > version with 3.3.4 version of libsensors from lm-sensors package on
> > Debian unstable) does not see the temperature sensor anymore on armada
> > 370 platforms (not tested on others). Additionally, the changes break
> > existing configurations of fancontrol utility, which prevents the 
> > fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> > pwmconfig.
> > 
> > Here is what I have on my Armada 370-based system on a 3.11.5:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        2457 RPM  (div = 1)
> > 
> > armada_thermal-virtual-0
> > Adapter: Virtual device
> > temp1:        +45.7?C  
> > 
> > And what I get on 3.12-rc6:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        1350 RPM  (div = 1)
> > 
> > 
> > Monitoring what sensors does w/ strace, I started looking at the changes
> > to /sys/class/hwmon/hwmon1/:
> > 
> > On 3.11.5:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > On 3.12-rc6:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/device
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > # find /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/temp
> > /sys/class/hwmon/hwmon1/device/type
> > /sys/class/hwmon/hwmon1/device/hwmon1
> > /sys/class/hwmon/hwmon1/device/hwmon1/name
> > /sys/class/hwmon/hwmon1/device/hwmon1/device
> > /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> > /sys/class/hwmon/hwmon1/device/subsystem
> > /sys/class/hwmon/hwmon1/device/policy
> > /sys/class/hwmon/hwmon1/device/uevent
> > /sys/class/hwmon/hwmon1/device/passive
> 
> Can you please share the full output of "strace sensors"? This will
> help me understand which exact code paths are taken in libsensors.
> 
> > Is that expected? As for sensors, it *seems* to be bothered to find a
> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
> 
> It should be able to cope with this just fine. The radeon driver does
> exactly this and libsensors has no problem with it. 
> 
Hi Jean,

I think it is more likely that the problem is related to parsing the 'subsystem'
link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
the device as unknown.

Question is if we can come up with some more generic code to handle that case.
Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
But then there can be more than one of those, so you would need some means
for enumerating bus and chip numbers, so I don't know if that is feasible.

Guenter

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 15:16     ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2013-10-21 15:16 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

On Mon, Oct 21, 2013 at 09:17:39AM +0200, Jean Delvare wrote:
> Hi Arnaud,
> 
> On Sun, 20 Oct 2013 20:10:41 +0200, Arnaud Ebalard wrote:
> > With 3.12-rc series, sysfs support for thermal susbsytem (and/or hwmon
> > one) was modified in such a way that sensors utility (current 3.3.4
> > version with 3.3.4 version of libsensors from lm-sensors package on
> > Debian unstable) does not see the temperature sensor anymore on armada
> > 370 platforms (not tested on others). Additionally, the changes break
> > existing configurations of fancontrol utility, which prevents the 
> > fan to be regulated correctly w/o recreating an /etc/fancontrol w/
> > pwmconfig.
> > 
> > Here is what I have on my Armada 370-based system on a 3.11.5:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        2457 RPM  (div = 1)
> > 
> > armada_thermal-virtual-0
> > Adapter: Virtual device
> > temp1:        +45.7°C  
> > 
> > And what I get on 3.12-rc6:
> > 
> > # sensors
> > g762-i2c-0-3e
> > Adapter: mv64xxx_i2c adapter
> > fan1:        1350 RPM  (div = 1)
> > 
> > 
> > Monitoring what sensors does w/ strace, I started looking at the changes
> > to /sys/class/hwmon/hwmon1/:
> > 
> > On 3.11.5:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > On 3.12-rc6:
> > 
> > # find /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/
> > /sys/class/hwmon/hwmon1/name
> > /sys/class/hwmon/hwmon1/device
> > /sys/class/hwmon/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/temp1_input
> > 
> > # find /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/
> > /sys/class/hwmon/hwmon1/device/temp
> > /sys/class/hwmon/hwmon1/device/type
> > /sys/class/hwmon/hwmon1/device/hwmon1
> > /sys/class/hwmon/hwmon1/device/hwmon1/name
> > /sys/class/hwmon/hwmon1/device/hwmon1/device
> > /sys/class/hwmon/hwmon1/device/hwmon1/subsystem
> > /sys/class/hwmon/hwmon1/device/hwmon1/uevent
> > /sys/class/hwmon/hwmon1/device/hwmon1/temp1_input
> > /sys/class/hwmon/hwmon1/device/subsystem
> > /sys/class/hwmon/hwmon1/device/policy
> > /sys/class/hwmon/hwmon1/device/uevent
> > /sys/class/hwmon/hwmon1/device/passive
> 
> Can you please share the full output of "strace sensors"? This will
> help me understand which exact code paths are taken in libsensors.
> 
> > Is that expected? As for sensors, it *seems* to be bothered to find a
> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
> 
> It should be able to cope with this just fine. The radeon driver does
> exactly this and libsensors has no problem with it. 
> 
Hi Jean,

I think it is more likely that the problem is related to parsing the 'subsystem'
link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
the device as unknown.

Question is if we can come up with some more generic code to handle that case.
Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
But then there can be more than one of those, so you would need some means
for enumerating bus and chip numbers, so I don't know if that is feasible.

Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-21  7:17   ` Jean Delvare
  (?)
@ 2013-10-21 18:14     ` Arnaud Ebalard
  -1 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:14 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Andrew Lunn, Jason Cooper, linux-pm, lm-sensors,
	Eduardo Valentin, Guenter Roeck, Gregory Clement, Zhang Rui,
	linux-arm-kernel, Sebastian Hesselbarth

Hi Jean,

Jean Delvare <khali@linux-fr.org> writes:

> Can you please share the full output of "strace sensors"? This will
> help me understand which exact code paths are taken in libsensors.

The 'strace sensors' output on a 3.12-rc6 is below, followed by the
output of the same command on a 3.11.6.

-3.12-rc6--8<--------------------------------------------------------

execve("/usr/bin/sensors", ["sensors"], [/* 13 vars */]) = 0
brk(0)                                  = 0xf63000
uname({sys="Linux", node="mood", ...})  = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f15000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=24842, ...}) = 0
mmap2(NULL, 24842, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ee9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/arm-linux-gnueabi/libsensors.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\210\27\0\0004\0\0\0"..., 512) = 512
lseek(3, 53908, SEEK_SET)               = 53908
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
lseek(3, 53644, SEEK_SET)               = 53644
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\24\1\25\1"..., 42) = 42
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f14000
fstat64(3, {st_mode=S_IFREG|0644, st_size=54948, ...}) = 0
mmap2(NULL, 86952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ed3000
mprotect(0xb6ee0000, 28672, PROT_NONE)  = 0
mmap2(0xb6ee7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb6ee7000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0h\202\1\0004\0\0\0"..., 512) = 512
lseek(3, 1240084, SEEK_SET)             = 1240084
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2840) = 2840
lseek(3, 1236484, SEEK_SET)             = 1236484
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0755, st_size=1242924, ...}) = 0
mmap2(NULL, 1279368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d9a000
mprotect(0xb6ec5000, 32768, PROT_NONE)  = 0
mmap2(0xb6ecd000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b) = 0xb6ecd000
mmap2(0xb6ed0000, 9608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ed0000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000<\0\0004\0\0\0"..., 512) = 512
lseek(3, 659912, SEEK_SET)              = 659912
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 659588, SEEK_SET)              = 659588
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=661072, ...}) = 0
mmap2(NULL, 692364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cf0000
mprotect(0xb6d91000, 28672, PROT_NONE)  = 0
mmap2(0xb6d98000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa0) = 0xb6d98000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f13000
set_tls(0xb6f134c0, 0xb6f13b98, 0xb6f18050, 0xb6f134c0, 0xb6f18050) = 0
mprotect(0xb6ecd000, 8192, PROT_READ)   = 0
mprotect(0xb6d98000, 4096, PROT_READ)   = 0
mprotect(0xb6ee7000, 4096, PROT_READ)   = 0
mprotect(0x14000, 4096, PROT_READ)      = 0
mprotect(0xb6f17000, 4096, PROT_READ)   = 0
munmap(0xb6ee9000, 24842)               = 0
brk(0)                                  = 0xf63000
brk(0xf84000)                           = 0xf84000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1607632, ...}) = 0
mmap2(NULL, 1607632, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6b67000
close(3)                                = 0
statfs("/sys", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
openat(AT_FDCWD, "/sys/class/i2c-adapter", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 3 entries */, 32768)     = 52
open("/sys/class/i2c-adapter/i2c-0/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "mv64xxx_i2c adapter\n", 4096)  = 20
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
openat(AT_FDCWD, "/sys/class/hwmon", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 4 entries */, 32768)     = 72
readlink("/sys/class/hwmon/hwmon0/device", "../../../0-003e"..., 254) = 15
open("/sys/class/hwmon/hwmon0/name", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "g762\n", 4096)                 = 5
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon0/device/subsystem", "../../../../../../bus/i2c", 254) = 25
open("/sys/class/i2c-adapter/i2c-0/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/sys/class/hwmon/hwmon0/device", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
brk(0xfab000)                           = 0xfab000
getdents(4, /* 17 entries */, 32768)    = 356
stat64("/sys/class/hwmon/hwmon0/device/fan1_pulses", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_div", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_alarm", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_fault", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
readlink("/sys/class/hwmon/hwmon1/device", "../../thermal_zone0"..., 254) = 19
open("/sys/class/hwmon/hwmon1/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "armada_thermal\n", 4096)       = 15
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon1/device/subsystem", "../../../../class/thermal", 254) = 25
open("/sys/class/hwmon/hwmon1/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/etc/sensors3.conf", O_RDONLY)    = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbebc4af4) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0644, st_size=10344, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(3, "# libsensors configuration file\n"..., 8192) = 8192
read(3, " label in4 \"+12V\"\n    label in5 "..., 8192) = 2152
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbebc3b04) = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
munmap(0xb6f12000, 4096)                = 0
openat(AT_FDCWD, "/etc/sensors.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 3 entries */, 32768)     = 56
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26260, ...}) = 0
mmap2(NULL, 26260, PROT_READ, MAP_SHARED, 3, 0) = 0xb6ee9000
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/ISO8859-1.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\354\3\0\0004\0\0\0"..., 512) = 512
lseek(3, 8548, SEEK_SET)                = 8548
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 8248, SEEK_SET)                = 8248
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=9628, ...}) = 0
mmap2(NULL, 41020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b5c000
mprotect(0xb6b5e000, 28672, PROT_NONE)  = 0
mmap2(0xb6b65000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb6b65000
close(3)                                = 0
mprotect(0xb6b65000, 4096, PROT_READ)   = 0
fstat64(1, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_fault", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "1536\n", 4096)                 = 5
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_div", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "1\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_alarm", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
write(1, "g762-i2c-0-3e\nAdapter: mv64xxx_i"..., 77g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        1536 RPM  (div = 1)

) = 77
exit_group(0)                           = ?





-3.11.6--8<--------------------------------------------------------

execve("/usr/bin/sensors", ["sensors"], [/* 13 vars */]) = 0
brk(0)                                  = 0x1ae9000
uname({sys="Linux", node="mood", ...})  = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe7000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=24842, ...}) = 0
mmap2(NULL, 24842, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6fbb000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/arm-linux-gnueabi/libsensors.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\210\27\0\0004\0\0\0"..., 512) = 512
lseek(3, 53908, SEEK_SET)               = 53908
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
lseek(3, 53644, SEEK_SET)               = 53644
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\24\1\25\1"..., 42) = 42
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe6000
fstat64(3, {st_mode=S_IFREG|0644, st_size=54948, ...}) = 0
mmap2(NULL, 86952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fa5000
mprotect(0xb6fb2000, 28672, PROT_NONE)  = 0
mmap2(0xb6fb9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb6fb9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0h\202\1\0004\0\0\0"..., 512) = 512
lseek(3, 1240084, SEEK_SET)             = 1240084
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2840) = 2840
lseek(3, 1236484, SEEK_SET)             = 1236484
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0755, st_size=1242924, ...}) = 0
mmap2(NULL, 1279368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e6c000
mprotect(0xb6f97000, 32768, PROT_NONE)  = 0
mmap2(0xb6f9f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b) = 0xb6f9f000
mmap2(0xb6fa2000, 9608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6fa2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000<\0\0004\0\0\0"..., 512) = 512
lseek(3, 659912, SEEK_SET)              = 659912
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 659588, SEEK_SET)              = 659588
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=661072, ...}) = 0
mmap2(NULL, 692364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dc2000
mprotect(0xb6e63000, 28672, PROT_NONE)  = 0
mmap2(0xb6e6a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa0) = 0xb6e6a000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe5000
set_tls(0xb6fe54c0, 0xb6fe5b98, 0xb6fea050, 0xb6fe54c0, 0xb6fea050) = 0
mprotect(0xb6f9f000, 8192, PROT_READ)   = 0
mprotect(0xb6e6a000, 4096, PROT_READ)   = 0
mprotect(0xb6fb9000, 4096, PROT_READ)   = 0
mprotect(0x14000, 4096, PROT_READ)      = 0
mprotect(0xb6fe9000, 4096, PROT_READ)   = 0
munmap(0xb6fbb000, 24842)               = 0
brk(0)                                  = 0x1ae9000
brk(0x1b0a000)                          = 0x1b0a000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1607632, ...}) = 0
mmap2(NULL, 1607632, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6c39000
close(3)                                = 0
statfs("/sys", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
openat(AT_FDCWD, "/sys/class/i2c-adapter", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 3 entries */, 32768)     = 52
open("/sys/class/i2c-adapter/i2c-0/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "mv64xxx_i2c adapter\n", 4096)  = 20
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
openat(AT_FDCWD, "/sys/class/hwmon", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 4 entries */, 32768)     = 72
readlink("/sys/class/hwmon/hwmon0/device", "../../../0-003e"..., 254) = 15
open("/sys/class/hwmon/hwmon0/name", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "g762\n", 4096)                 = 5
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon0/device/subsystem", "../../../../../../bus/i2c", 254) = 25
open("/sys/class/i2c-adapter/i2c-0/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/sys/class/hwmon/hwmon0/device", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
brk(0x1b31000)                          = 0x1b31000
getdents(4, /* 17 entries */, 32768)    = 356
stat64("/sys/class/hwmon/hwmon0/device/fan1_pulses", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_div", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_alarm", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_fault", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
readlink("/sys/class/hwmon/hwmon1/device", 0xbeb3596c, 254) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "armada_thermal\n", 4096)       = 15
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
openat(AT_FDCWD, "/sys/class/hwmon/hwmon1", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
getdents(4, /* 6 entries */, 32768)     = 116
stat64("/sys/class/hwmon/hwmon1/temp1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/etc/sensors3.conf", O_RDONLY)    = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbeb35af4) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0644, st_size=10344, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(3, "# libsensors configuration file\n"..., 8192) = 8192
read(3, " label in4 \"+12V\"\n    label in5 "..., 8192) = 2152
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbeb34b04) = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
munmap(0xb6fe4000, 4096)                = 0
openat(AT_FDCWD, "/etc/sensors.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 3 entries */, 32768)     = 56
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26260, ...}) = 0
mmap2(NULL, 26260, PROT_READ, MAP_SHARED, 3, 0) = 0xb6fbb000
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/ISO8859-1.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\354\3\0\0004\0\0\0"..., 512) = 512
lseek(3, 8548, SEEK_SET)                = 8548
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 8248, SEEK_SET)                = 8248
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=9628, ...}) = 0
mmap2(NULL, 41020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c2e000
mprotect(0xb6c30000, 28672, PROT_NONE)  = 0
mmap2(0xb6c37000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb6c37000
close(3)                                = 0
mprotect(0xb6c37000, 4096, PROT_READ)   = 0
fstat64(1, {st_mode=S_IFREG|0644, st_size=9385, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_fault", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "3510\n", 4096)                 = 5
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_div", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "1\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_alarm", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon1/temp1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/temp1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/temp1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "42893\n", 4096)                = 6
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon1/temp1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "42893\n", 4096)                = 6
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
brk(0x1b13000)                          = 0x1b13000
write(1, "g762-i2c-0-3e\nAdapter: mv64xxx_i"..., 152g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        3510 RPM  (div = 1)

armada_thermal-virtual-0
Adapter: Virtual device
temp1:        +42.9°C  

) = 152
exit_group(0)                           = ?

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 18:14     ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:14 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Jean,

Jean Delvare <khali@linux-fr.org> writes:

> Can you please share the full output of "strace sensors"? This will
> help me understand which exact code paths are taken in libsensors.

The 'strace sensors' output on a 3.12-rc6 is below, followed by the
output of the same command on a 3.11.6.

-3.12-rc6--8<--------------------------------------------------------

execve("/usr/bin/sensors", ["sensors"], [/* 13 vars */]) = 0
brk(0)                                  = 0xf63000
uname({sys="Linux", node="mood", ...})  = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f15000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=24842, ...}) = 0
mmap2(NULL, 24842, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ee9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/arm-linux-gnueabi/libsensors.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\210\27\0\0004\0\0\0"..., 512) = 512
lseek(3, 53908, SEEK_SET)               = 53908
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
lseek(3, 53644, SEEK_SET)               = 53644
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\24\1\25\1"..., 42) = 42
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f14000
fstat64(3, {st_mode=S_IFREG|0644, st_size=54948, ...}) = 0
mmap2(NULL, 86952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ed3000
mprotect(0xb6ee0000, 28672, PROT_NONE)  = 0
mmap2(0xb6ee7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb6ee7000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0h\202\1\0004\0\0\0"..., 512) = 512
lseek(3, 1240084, SEEK_SET)             = 1240084
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2840) = 2840
lseek(3, 1236484, SEEK_SET)             = 1236484
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0755, st_size=1242924, ...}) = 0
mmap2(NULL, 1279368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d9a000
mprotect(0xb6ec5000, 32768, PROT_NONE)  = 0
mmap2(0xb6ecd000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b) = 0xb6ecd000
mmap2(0xb6ed0000, 9608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ed0000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000<\0\0004\0\0\0"..., 512) = 512
lseek(3, 659912, SEEK_SET)              = 659912
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 659588, SEEK_SET)              = 659588
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=661072, ...}) = 0
mmap2(NULL, 692364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cf0000
mprotect(0xb6d91000, 28672, PROT_NONE)  = 0
mmap2(0xb6d98000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa0) = 0xb6d98000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f13000
set_tls(0xb6f134c0, 0xb6f13b98, 0xb6f18050, 0xb6f134c0, 0xb6f18050) = 0
mprotect(0xb6ecd000, 8192, PROT_READ)   = 0
mprotect(0xb6d98000, 4096, PROT_READ)   = 0
mprotect(0xb6ee7000, 4096, PROT_READ)   = 0
mprotect(0x14000, 4096, PROT_READ)      = 0
mprotect(0xb6f17000, 4096, PROT_READ)   = 0
munmap(0xb6ee9000, 24842)               = 0
brk(0)                                  = 0xf63000
brk(0xf84000)                           = 0xf84000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1607632, ...}) = 0
mmap2(NULL, 1607632, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6b67000
close(3)                                = 0
statfs("/sys", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
openat(AT_FDCWD, "/sys/class/i2c-adapter", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 3 entries */, 32768)     = 52
open("/sys/class/i2c-adapter/i2c-0/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "mv64xxx_i2c adapter\n", 4096)  = 20
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
openat(AT_FDCWD, "/sys/class/hwmon", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 4 entries */, 32768)     = 72
readlink("/sys/class/hwmon/hwmon0/device", "../../../0-003e"..., 254) = 15
open("/sys/class/hwmon/hwmon0/name", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "g762\n", 4096)                 = 5
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon0/device/subsystem", "../../../../../../bus/i2c", 254) = 25
open("/sys/class/i2c-adapter/i2c-0/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/sys/class/hwmon/hwmon0/device", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
brk(0xfab000)                           = 0xfab000
getdents(4, /* 17 entries */, 32768)    = 356
stat64("/sys/class/hwmon/hwmon0/device/fan1_pulses", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_div", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_alarm", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_fault", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
readlink("/sys/class/hwmon/hwmon1/device", "../../thermal_zone0"..., 254) = 19
open("/sys/class/hwmon/hwmon1/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(4, "armada_thermal\n", 4096)       = 15
close(4)                                = 0
munmap(0xb6f12000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon1/device/subsystem", "../../../../class/thermal", 254) = 25
open("/sys/class/hwmon/hwmon1/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/etc/sensors3.conf", O_RDONLY)    = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbebc4af4) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0644, st_size=10344, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
read(3, "# libsensors configuration file\n"..., 8192) = 8192
read(3, " label in4 \"+12V\"\n    label in5 "..., 8192) = 2152
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbebc3b04) = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
munmap(0xb6f12000, 4096)                = 0
openat(AT_FDCWD, "/etc/sensors.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 3 entries */, 32768)     = 56
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26260, ...}) = 0
mmap2(NULL, 26260, PROT_READ, MAP_SHARED, 3, 0) = 0xb6ee9000
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/ISO8859-1.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\354\3\0\0004\0\0\0"..., 512) = 512
lseek(3, 8548, SEEK_SET)                = 8548
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 8248, SEEK_SET)                = 8248
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=9628, ...}) = 0
mmap2(NULL, 41020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b5c000
mprotect(0xb6b5e000, 28672, PROT_NONE)  = 0
mmap2(0xb6b65000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb6b65000
close(3)                                = 0
mprotect(0xb6b65000, 4096, PROT_READ)   = 0
fstat64(1, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f12000
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_fault", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "1536\n", 4096)                 = 5
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_div", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "1\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_alarm", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f11000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6f11000, 4096)                = 0
write(1, "g762-i2c-0-3e\nAdapter: mv64xxx_i"..., 77g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        1536 RPM  (div = 1)

) = 77
exit_group(0)                           = ?





-3.11.6--8<--------------------------------------------------------

execve("/usr/bin/sensors", ["sensors"], [/* 13 vars */]) = 0
brk(0)                                  = 0x1ae9000
uname({sys="Linux", node="mood", ...})  = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe7000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=24842, ...}) = 0
mmap2(NULL, 24842, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6fbb000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/arm-linux-gnueabi/libsensors.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\210\27\0\0004\0\0\0"..., 512) = 512
lseek(3, 53908, SEEK_SET)               = 53908
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
lseek(3, 53644, SEEK_SET)               = 53644
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\24\1\25\1"..., 42) = 42
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe6000
fstat64(3, {st_mode=S_IFREG|0644, st_size=54948, ...}) = 0
mmap2(NULL, 86952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fa5000
mprotect(0xb6fb2000, 28672, PROT_NONE)  = 0
mmap2(0xb6fb9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb6fb9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0h\202\1\0004\0\0\0"..., 512) = 512
lseek(3, 1240084, SEEK_SET)             = 1240084
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2840) = 2840
lseek(3, 1236484, SEEK_SET)             = 1236484
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0755, st_size=1242924, ...}) = 0
mmap2(NULL, 1279368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e6c000
mprotect(0xb6f97000, 32768, PROT_NONE)  = 0
mmap2(0xb6f9f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b) = 0xb6f9f000
mmap2(0xb6fa2000, 9608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6fa2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabi/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000<\0\0004\0\0\0"..., 512) = 512
lseek(3, 659912, SEEK_SET)              = 659912
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 659588, SEEK_SET)              = 659588
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=661072, ...}) = 0
mmap2(NULL, 692364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dc2000
mprotect(0xb6e63000, 28672, PROT_NONE)  = 0
mmap2(0xb6e6a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa0) = 0xb6e6a000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe5000
set_tls(0xb6fe54c0, 0xb6fe5b98, 0xb6fea050, 0xb6fe54c0, 0xb6fea050) = 0
mprotect(0xb6f9f000, 8192, PROT_READ)   = 0
mprotect(0xb6e6a000, 4096, PROT_READ)   = 0
mprotect(0xb6fb9000, 4096, PROT_READ)   = 0
mprotect(0x14000, 4096, PROT_READ)      = 0
mprotect(0xb6fe9000, 4096, PROT_READ)   = 0
munmap(0xb6fbb000, 24842)               = 0
brk(0)                                  = 0x1ae9000
brk(0x1b0a000)                          = 0x1b0a000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1607632, ...}) = 0
mmap2(NULL, 1607632, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6c39000
close(3)                                = 0
statfs("/sys", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
openat(AT_FDCWD, "/sys/class/i2c-adapter", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 3 entries */, 32768)     = 52
open("/sys/class/i2c-adapter/i2c-0/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "mv64xxx_i2c adapter\n", 4096)  = 20
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
openat(AT_FDCWD, "/sys/class/hwmon", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 4 entries */, 32768)     = 72
readlink("/sys/class/hwmon/hwmon0/device", "../../../0-003e"..., 254) = 15
open("/sys/class/hwmon/hwmon0/name", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "g762\n", 4096)                 = 5
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
readlink("/sys/class/hwmon/hwmon0/device/subsystem", "../../../../../../bus/i2c", 254) = 25
open("/sys/class/i2c-adapter/i2c-0/device/name", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/sys/class/hwmon/hwmon0/device", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
brk(0x1b31000)                          = 0x1b31000
getdents(4, /* 17 entries */, 32768)    = 356
stat64("/sys/class/hwmon/hwmon0/device/fan1_pulses", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_div", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_alarm", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_fault", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
stat64("/sys/class/hwmon/hwmon0/device/fan1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
readlink("/sys/class/hwmon/hwmon1/device", 0xbeb3596c, 254) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/name", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(4, "armada_thermal\n", 4096)       = 15
close(4)                                = 0
munmap(0xb6fe4000, 4096)                = 0
openat(AT_FDCWD, "/sys/class/hwmon/hwmon1", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
getdents(4, /* 6 entries */, 32768)     = 116
stat64("/sys/class/hwmon/hwmon1/temp1_input", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/etc/sensors3.conf", O_RDONLY)    = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbeb35af4) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0644, st_size=10344, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
read(3, "# libsensors configuration file\n"..., 8192) = 8192
read(3, " label in4 \"+12V\"\n    label in5 "..., 8192) = 2152
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbeb34b04) = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
munmap(0xb6fe4000, 4096)                = 0
openat(AT_FDCWD, "/etc/sensors.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 3 entries */, 32768)     = 56
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26260, ...}) = 0
mmap2(NULL, 26260, PROT_READ, MAP_SHARED, 3, 0) = 0xb6fbb000
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabi/gconv/ISO8859-1.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\354\3\0\0004\0\0\0"..., 512) = 512
lseek(3, 8548, SEEK_SET)                = 8548
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 8248, SEEK_SET)                = 8248
read(3, "A)\0\0\0aeabi\0\1\37\0\0\0\0054T\0\6\2\10\1\t\1\22\4\23\1\24\1"..., 42) = 42
fstat64(3, {st_mode=S_IFREG|0644, st_size=9628, ...}) = 0
mmap2(NULL, 41020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c2e000
mprotect(0xb6c30000, 28672, PROT_NONE)  = 0
mmap2(0xb6c37000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb6c37000
close(3)                                = 0
mprotect(0xb6c37000, 4096, PROT_READ)   = 0
fstat64(1, {st_mode=S_IFREG|0644, st_size=9385, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe4000
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon0/device/fan1_fault", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "3510\n", 4096)                 = 5
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_div", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "1\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon0/device/fan1_alarm", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "0\n", 4096)                    = 2
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon1/temp1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/temp1_label", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/hwmon/hwmon1/temp1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "42893\n", 4096)                = 6
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
open("/sys/class/hwmon/hwmon1/temp1_input", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe3000
read(3, "42893\n", 4096)                = 6
close(3)                                = 0
munmap(0xb6fe3000, 4096)                = 0
brk(0x1b13000)                          = 0x1b13000
write(1, "g762-i2c-0-3e\nAdapter: mv64xxx_i"..., 152g762-i2c-0-3e
Adapter: mv64xxx_i2c adapter
fan1:        3510 RPM  (div = 1)

armada_thermal-virtual-0
Adapter: Virtual device
temp1:        +42.9?C  

) = 152
exit_group(0)                           = ?

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 18:14     ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:14 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Andrew Lunn, Jason Cooper, linux-pm, lm-sensors,
	Eduardo Valentin, Guenter Roeck, Gregory Clement, Zhang Rui,
	linux-arm-kernel, Sebastian Hesselbarth

SGkgSmVhbiwKCkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiB3cml0ZXM6Cgo+IENh
biB5b3UgcGxlYXNlIHNoYXJlIHRoZSBmdWxsIG91dHB1dCBvZiAic3RyYWNlIHNlbnNvcnMiPyBU
aGlzIHdpbGwKPiBoZWxwIG1lIHVuZGVyc3RhbmQgd2hpY2ggZXhhY3QgY29kZSBwYXRocyBhcmUg
dGFrZW4gaW4gbGlic2Vuc29ycy4KClRoZSAnc3RyYWNlIHNlbnNvcnMnIG91dHB1dCBvbiBhIDMu
MTItcmM2IGlzIGJlbG93LCBmb2xsb3dlZCBieSB0aGUKb3V0cHV0IG9mIHRoZSBzYW1lIGNvbW1h
bmQgb24gYSAzLjExLjYuCgotMy4xMi1yYzYtLTg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmV4ZWN2ZSgiL3Vzci9iaW4vc2Vuc29ycyIs
IFsic2Vuc29ycyJdLCBbLyogMTMgdmFycyAqL10pID0gMApicmsoMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAweGY2MzAwMAp1bmFtZSh7c3lzPSJMaW51eCIsIG5vZGU9Im1v
b2QiLCAuLi59KSAgPSAwCmFjY2VzcygiL2V0Yy9sZC5zby5ub2h3Y2FwIiwgRl9PSykgICAgICA9
IC0xIEVOT0VOVCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKbW1hcDIoTlVMTCwgNDA5Niwg
UFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9
IDB4YjZmMTUwMDAKYWNjZXNzKCIvZXRjL2xkLnNvLnByZWxvYWQiLCBSX09LKSAgICAgID0gLTEg
RU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvZXRjL2xkLnNvLmNhY2hl
IiwgT19SRE9OTFl8T19DTE9FWEVDKSA9IDMKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA2
NDQsIHN0X3NpemU9MjQ4NDIsIC4uLn0pID0gMAptbWFwMihOVUxMLCAyNDg0MiwgUFJPVF9SRUFE
LCBNQVBfUFJJVkFURSwgMywgMCkgPSAweGI2ZWU5MDAwCmNsb3NlKDMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDAKYWNjZXNzKCIvZXRjL2xkLnNvLm5vaHdjYXAiLCBGX09LKSAg
ICAgID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvdXNyL2xp
Yi9hcm0tbGludXgtZ251ZWFiaS9saWJzZW5zb3JzLnNvLjQiLCBPX1JET05MWXxPX0NMT0VYRUMp
ID0gMwpyZWFkKDMsICJcMTc3RUxGXDFcMVwxXDBcMFwwXDBcMFwwXDBcMFwwXDNcMChcMFwxXDBc
MFwwXDIxMFwyN1wwXDAwMDRcMFwwXDAiLi4uLCA1MTIpID0gNTEyCmxzZWVrKDMsIDUzOTA4LCBT
RUVLX1NFVCkgICAgICAgICAgICAgICA9IDUzOTA4CnJlYWQoMywgIlwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uLCAxMDQw
KSA9IDEwNDAKbHNlZWsoMywgNTM2NDQsIFNFRUtfU0VUKSAgICAgICAgICAgICAgID0gNTM2NDQK
cmVhZCgzLCAiQSlcMFwwXDBhZWFiaVwwXDFcMzdcMFwwXDBcMDA1NFRcMFw2XDJcMTBcMVx0XDFc
MjJcNFwyNFwxXDI1XDEiLi4uLCA0MikgPSA0MgptbWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8
UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0FOT05ZTU9VUywgLTEsIDApID0gMHhiNmYxNDAw
MApmc3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT01NDk0OCwgLi4ufSkg
PSAwCm1tYXAyKE5VTEwsIDg2OTUyLCBQUk9UX1JFQUR8UFJPVF9FWEVDLCBNQVBfUFJJVkFURXxN
QVBfREVOWVdSSVRFLCAzLCAwKSA9IDB4YjZlZDMwMDAKbXByb3RlY3QoMHhiNmVlMDAwMCwgMjg2
NzIsIFBST1RfTk9ORSkgID0gMAptbWFwMigweGI2ZWU3MDAwLCA4MTkyLCBQUk9UX1JFQUR8UFJP
VF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4YykgPSAw
eGI2ZWU3MDAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKYWNj
ZXNzKCIvZXRjL2xkLnNvLm5vaHdjYXAiLCBGX09LKSAgICAgID0gLTEgRU5PRU5UIChObyBzdWNo
IGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvbGliL2FybS1saW51eC1nbnVlYWJpL2xpYmMuc28u
NiIsIE9fUkRPTkxZfE9fQ0xPRVhFQykgPSAzCnJlYWQoMywgIlwxNzdFTEZcMVwxXDFcMFwwXDBc
MFwwXDBcMFwwXDBcM1wwKFwwXDFcMFwwXDBoXDIwMlwxXDAwMDRcMFwwXDAiLi4uLCA1MTIpID0g
NTEyCmxzZWVrKDMsIDEyNDAwODQsIFNFRUtfU0VUKSAgICAgICAgICAgICA9IDEyNDAwODQKcmVh
ZCgzLCAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMCIuLi4sIDI4NDApID0gMjg0MApsc2VlaygzLCAxMjM2NDg0LCBTRUVLX1NF
VCkgICAgICAgICAgICAgPSAxMjM2NDg0CnJlYWQoMywgIkEpXDBcMFwwYWVhYmlcMFwxXDM3XDBc
MFwwXDAwNTRUXDBcNlwyXDEwXDFcdFwxXDIyXDRcMjNcMVwyNFwxIi4uLiwgNDIpID0gNDIKZnN0
YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA3NTUsIHN0X3NpemU9MTI0MjkyNCwgLi4ufSkgPSAw
Cm1tYXAyKE5VTEwsIDEyNzkzNjgsIFBST1RfUkVBRHxQUk9UX0VYRUMsIE1BUF9QUklWQVRFfE1B
UF9ERU5ZV1JJVEUsIDMsIDApID0gMHhiNmQ5YTAwMAptcHJvdGVjdCgweGI2ZWM1MDAwLCAzMjc2
OCwgUFJPVF9OT05FKSAgPSAwCm1tYXAyKDB4YjZlY2QwMDAsIDEyMjg4LCBQUk9UX1JFQUR8UFJP
VF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4MTJiKSA9
IDB4YjZlY2QwMDAKbW1hcDIoMHhiNmVkMDAwMCwgOTYwOCwgUFJPVF9SRUFEfFBST1RfV1JJVEUs
IE1BUF9QUklWQVRFfE1BUF9GSVhFRHxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2ZWQwMDAw
CmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKYWNjZXNzKCIvZXRj
L2xkLnNvLm5vaHdjYXAiLCBGX09LKSAgICAgID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3Ig
ZGlyZWN0b3J5KQpvcGVuKCIvbGliL2FybS1saW51eC1nbnVlYWJpL2xpYm0uc28uNiIsIE9fUkRP
TkxZfE9fQ0xPRVhFQykgPSAzCnJlYWQoMywgIlwxNzdFTEZcMVwxXDFcMFwwXDBcMFwwXDBcMFww
XDBcM1wwKFwwXDFcMFwwXDAwMDA8XDBcMDAwNFwwXDBcMCIuLi4sIDUxMikgPSA1MTIKbHNlZWso
MywgNjU5OTEyLCBTRUVLX1NFVCkgICAgICAgICAgICAgID0gNjU5OTEyCnJlYWQoMywgIlwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDAiLi4uLCAxMTYwKSA9IDExNjAKbHNlZWsoMywgNjU5NTg4LCBTRUVLX1NFVCkgICAgICAgICAg
ICAgID0gNjU5NTg4CnJlYWQoMywgIkEpXDBcMFwwYWVhYmlcMFwxXDM3XDBcMFwwXDAwNTRUXDBc
NlwyXDEwXDFcdFwxXDIyXDRcMjNcMVwyNFwxIi4uLiwgNDIpID0gNDIKZnN0YXQ2NCgzLCB7c3Rf
bW9kZT1TX0lGUkVHfDA2NDQsIHN0X3NpemU9NjYxMDcyLCAuLi59KSA9IDAKbW1hcDIoTlVMTCwg
NjkyMzY0LCBQUk9UX1JFQUR8UFJPVF9FWEVDLCBNQVBfUFJJVkFURXxNQVBfREVOWVdSSVRFLCAz
LCAwKSA9IDB4YjZjZjAwMDAKbXByb3RlY3QoMHhiNmQ5MTAwMCwgMjg2NzIsIFBST1RfTk9ORSkg
ID0gMAptbWFwMigweGI2ZDk4MDAwLCA4MTkyLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BS
SVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4YTApID0gMHhiNmQ5ODAwMApjbG9z
ZSgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCm1tYXAyKE5VTEwsIDQwOTYs
IFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkg
PSAweGI2ZjEzMDAwCnNldF90bHMoMHhiNmYxMzRjMCwgMHhiNmYxM2I5OCwgMHhiNmYxODA1MCwg
MHhiNmYxMzRjMCwgMHhiNmYxODA1MCkgPSAwCm1wcm90ZWN0KDB4YjZlY2QwMDAsIDgxOTIsIFBS
T1RfUkVBRCkgICA9IDAKbXByb3RlY3QoMHhiNmQ5ODAwMCwgNDA5NiwgUFJPVF9SRUFEKSAgID0g
MAptcHJvdGVjdCgweGI2ZWU3MDAwLCA0MDk2LCBQUk9UX1JFQUQpICAgPSAwCm1wcm90ZWN0KDB4
MTQwMDAsIDQwOTYsIFBST1RfUkVBRCkgICAgICA9IDAKbXByb3RlY3QoMHhiNmYxNzAwMCwgNDA5
NiwgUFJPVF9SRUFEKSAgID0gMAptdW5tYXAoMHhiNmVlOTAwMCwgMjQ4NDIpICAgICAgICAgICAg
ICAgPSAwCmJyaygwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4ZjYzMDAw
CmJyaygweGY4NDAwMCkgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4Zjg0MDAwCm9wZW4o
Ii91c3IvbGliL2xvY2FsZS9sb2NhbGUtYXJjaGl2ZSIsIE9fUkRPTkxZfE9fTEFSR0VGSUxFfE9f
Q0xPRVhFQykgPSAzCmZzdGF0NjQoMywge3N0X21vZGU9U19JRlJFR3wwNjQ0LCBzdF9zaXplPTE2
MDc2MzIsIC4uLn0pID0gMAptbWFwMihOVUxMLCAxNjA3NjMyLCBQUk9UX1JFQUQsIE1BUF9QUklW
QVRFLCAzLCAwKSA9IDB4YjZiNjcwMDAKY2xvc2UoMykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMApzdGF0ZnMoIi9zeXMiLCB7Zl90eXBlPSJTWVNGU19NQUdJQyIsIGZfYnNpemU9
NDA5NiwgZl9ibG9ja3M9MCwgZl9iZnJlZT0wLCBmX2JhdmFpbD0wLCBmX2ZpbGVzPTAsIGZfZmZy
ZWU9MCwgZl9mc2lkPXswLCAwfSwgZl9uYW1lbGVuPTI1NSwgZl9mcnNpemU9NDA5Nn0pID0gMApv
cGVuYXQoQVRfRkRDV0QsICIvc3lzL2NsYXNzL2kyYy1hZGFwdGVyIiwgT19SRE9OTFl8T19OT05C
TE9DS3xPX0xBUkdFRklMRXxPX0RJUkVDVE9SWXxPX0NMT0VYRUMpID0gMwpmY250bDY0KDMsIEZf
R0VURkQpICAgICAgICAgICAgICAgICAgICAgPSAweDEgKGZsYWdzIEZEX0NMT0VYRUMpCmdldGRl
bnRzKDMsIC8qIDMgZW50cmllcyAqLywgMzI3NjgpICAgICA9IDUyCm9wZW4oIi9zeXMvY2xhc3Mv
aTJjLWFkYXB0ZXIvaTJjLTAvbmFtZSIsIE9fUkRPTkxZKSA9IDQKZnN0YXQ2NCg0LCB7c3RfbW9k
ZT1TX0lGUkVHfDA0NDQsIHN0X3NpemU9NDA5NiwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDQwOTYs
IFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkg
PSAweGI2ZjEyMDAwCnJlYWQoNCwgIm12NjR4eHhfaTJjIGFkYXB0ZXJcbiIsIDQwOTYpICA9IDIw
CmNsb3NlKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKbXVubWFwKDB4YjZm
MTIwMDAsIDQwOTYpICAgICAgICAgICAgICAgID0gMApnZXRkZW50cygzLCAvKiAwIGVudHJpZXMg
Ki8sIDMyNzY4KSAgICAgPSAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDAKb3BlbmF0KEFUX0ZEQ1dELCAiL3N5cy9jbGFzcy9od21vbiIsIE9fUkRPTkxZfE9fTk9O
QkxPQ0t8T19MQVJHRUZJTEV8T19ESVJFQ1RPUll8T19DTE9FWEVDKSA9IDMKZ2V0ZGVudHMoMywg
LyogNCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gNzIKcmVhZGxpbmsoIi9zeXMvY2xhc3MvaHdt
b24vaHdtb24wL2RldmljZSIsICIuLi8uLi8uLi8wLTAwM2UiLi4uLCAyNTQpID0gMTUKb3Blbigi
L3N5cy9jbGFzcy9od21vbi9od21vbjAvbmFtZSIsIE9fUkRPTkxZKSA9IC0xIEVOT0VOVCAoTm8g
c3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKb3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2
aWNlL25hbWUiLCBPX1JET05MWSkgPSA0CmZzdGF0NjQoNCwge3N0X21vZGU9U19JRlJFR3wwNDQ0
LCBzdF9zaXplPTQwOTYsIC4uLn0pID0gMAptbWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8UFJP
VF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0FOT05ZTU9VUywgLTEsIDApID0gMHhiNmYxMjAwMApy
ZWFkKDQsICJnNzYyXG4iLCA0MDk2KSAgICAgICAgICAgICAgICAgPSA1CmNsb3NlKDQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKbXVubWFwKDB4YjZmMTIwMDAsIDQwOTYpICAg
ICAgICAgICAgICAgID0gMApyZWFkbGluaygiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNl
L3N1YnN5c3RlbSIsICIuLi8uLi8uLi8uLi8uLi8uLi9idXMvaTJjIiwgMjU0KSA9IDI1Cm9wZW4o
Ii9zeXMvY2xhc3MvaTJjLWFkYXB0ZXIvaTJjLTAvZGV2aWNlL25hbWUiLCBPX1JET05MWSkgPSAt
MSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCm9wZW5hdChBVF9GRENXRCwgIi9z
eXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZSIsIE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19MQVJH
RUZJTEV8T19ESVJFQ1RPUll8T19DTE9FWEVDKSA9IDQKYnJrKDB4ZmFiMDAwKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMHhmYWIwMDAKZ2V0ZGVudHMoNCwgLyogMTcgZW50cmllcyAqLywg
MzI3NjgpICAgID0gMzU2CnN0YXQ2NCgiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2Zh
bjFfcHVsc2VzIiwge3N0X21vZGU9U19JRlJFR3wwNjQ0LCBzdF9zaXplPTQwOTYsIC4uLn0pID0g
MApzdGF0NjQoIi9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9mYW4xX2RpdiIsIHtzdF9t
b2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKc3RhdDY0KCIvc3lzL2Ns
YXNzL2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9hbGFybSIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0
NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKc3RhdDY0KCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9u
MC9kZXZpY2UvZmFuMV9mYXVsdCIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2
LCAuLi59KSA9IDAKc3RhdDY0KCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9p
bnB1dCIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKZ2V0
ZGVudHMoNCwgLyogMCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gMApjbG9zZSg0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAwCnJlYWRsaW5rKCIvc3lzL2NsYXNzL2h3bW9uL2h3
bW9uMS9kZXZpY2UiLCAiLi4vLi4vdGhlcm1hbF96b25lMCIuLi4sIDI1NCkgPSAxOQpvcGVuKCIv
c3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9uYW1lIiwgT19SRE9OTFkpID0gNApmc3RhdDY0KDQsIHtz
dF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKbW1hcDIoTlVMTCwg
NDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0x
LCAwKSA9IDB4YjZmMTIwMDAKcmVhZCg0LCAiYXJtYWRhX3RoZXJtYWxcbiIsIDQwOTYpICAgICAg
ID0gMTUKY2xvc2UoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAptdW5tYXAo
MHhiNmYxMjAwMCwgNDA5NikgICAgICAgICAgICAgICAgPSAwCnJlYWRsaW5rKCIvc3lzL2NsYXNz
L2h3bW9uL2h3bW9uMS9kZXZpY2Uvc3Vic3lzdGVtIiwgIi4uLy4uLy4uLy4uL2NsYXNzL3RoZXJt
YWwiLCAyNTQpID0gMjUKb3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjEvZGV2aWNlL25hbWUi
LCBPX1JET05MWSkgPSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCmdldGRl
bnRzKDMsIC8qIDAgZW50cmllcyAqLywgMzI3NjgpICAgICA9IDAKY2xvc2UoMykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMApvcGVuKCIvZXRjL3NlbnNvcnMzLmNvbmYiLCBPX1JE
T05MWSkgICAgPSAzCmlvY3RsKDMsIFNORENUTF9UTVJfVElNRUJBU0Ugb3IgVENHRVRTLCAweGJl
YmM0YWY0KSA9IC0xIEVOT1RUWSAoSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlKQpmc3Rh
dDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT0xMDM0NCwgLi4ufSkgPSAwCm1t
YXAyKE5VTEwsIDQwOTYsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5P
TllNT1VTLCAtMSwgMCkgPSAweGI2ZjEyMDAwCnJlYWQoMywgIiMgbGlic2Vuc29ycyBjb25maWd1
cmF0aW9uIGZpbGVcbiIuLi4sIDgxOTIpID0gODE5MgpyZWFkKDMsICIgbGFiZWwgaW40IFwiKzEy
VlwiXG4gICAgbGFiZWwgaW41ICIuLi4sIDgxOTIpID0gMjE1MgpyZWFkKDMsICIiLCA0MDk2KSAg
ICAgICAgICAgICAgICAgICAgICAgPSAwCnJlYWQoMywgIiIsIDgxOTIpICAgICAgICAgICAgICAg
ICAgICAgICA9IDAKaW9jdGwoMywgU05EQ1RMX1RNUl9USU1FQkFTRSBvciBUQ0dFVFMsIDB4YmVi
YzNiMDQpID0gLTEgRU5PVFRZIChJbmFwcHJvcHJpYXRlIGlvY3RsIGZvciBkZXZpY2UpCmNsb3Nl
KDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKbXVubWFwKDB4YjZmMTIwMDAs
IDQwOTYpICAgICAgICAgICAgICAgID0gMApvcGVuYXQoQVRfRkRDV0QsICIvZXRjL3NlbnNvcnMu
ZCIsIE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19MQVJHRUZJTEV8T19ESVJFQ1RPUll8T19DTE9FWEVD
KSA9IDMKZ2V0ZGVudHMoMywgLyogMyBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gNTYKZ2V0ZGVu
dHMoMywgLyogMCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gMApjbG9zZSgzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwCm9wZW4oIi91c3IvbGliL2FybS1saW51eC1nbnVlYWJp
L2djb252L2djb252LW1vZHVsZXMuY2FjaGUiLCBPX1JET05MWSkgPSAzCmZzdGF0NjQoMywge3N0
X21vZGU9U19JRlJFR3wwNjQ0LCBzdF9zaXplPTI2MjYwLCAuLi59KSA9IDAKbW1hcDIoTlVMTCwg
MjYyNjAsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgMywgMCkgPSAweGI2ZWU5MDAwCmNsb3NlKDMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKb3BlbigiL3Vzci9saWIvYXJtLWxp
bnV4LWdudWVhYmkvZ2NvbnYvSVNPODg1OS0xLnNvIiwgT19SRE9OTFl8T19DTE9FWEVDKSA9IDMK
cmVhZCgzLCAiXDE3N0VMRlwxXDFcMVwwXDBcMFwwXDBcMFwwXDBcMFwzXDAoXDBcMVwwXDBcMFwz
NTRcM1wwXDAwMDRcMFwwXDAiLi4uLCA1MTIpID0gNTEyCmxzZWVrKDMsIDg1NDgsIFNFRUtfU0VU
KSAgICAgICAgICAgICAgICA9IDg1NDgKcmVhZCgzLCAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIuLi4sIDEwODApID0gMTA4
MApsc2VlaygzLCA4MjQ4LCBTRUVLX1NFVCkgICAgICAgICAgICAgICAgPSA4MjQ4CnJlYWQoMywg
IkEpXDBcMFwwYWVhYmlcMFwxXDM3XDBcMFwwXDAwNTRUXDBcNlwyXDEwXDFcdFwxXDIyXDRcMjNc
MVwyNFwxIi4uLiwgNDIpID0gNDIKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQsIHN0
X3NpemU9OTYyOCwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDQxMDIwLCBQUk9UX1JFQUR8UFJPVF9F
WEVDLCBNQVBfUFJJVkFURXxNQVBfREVOWVdSSVRFLCAzLCAwKSA9IDB4YjZiNWMwMDAKbXByb3Rl
Y3QoMHhiNmI1ZTAwMCwgMjg2NzIsIFBST1RfTk9ORSkgID0gMAptbWFwMigweGI2YjY1MDAwLCA4
MTkyLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5Z
V1JJVEUsIDMsIDB4MSkgPSAweGI2YjY1MDAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDAKbXByb3RlY3QoMHhiNmI2NTAwMCwgNDA5NiwgUFJPVF9SRUFEKSAgID0g
MApmc3RhdDY0KDEsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT05MjE2LCAuLi59KSA9
IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1B
UF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmMTIwMDAKb3BlbigiL3N5cy9jbGFzcy9od21vbi9o
d21vbjAvZGV2aWNlL2ZhbjFfbGFiZWwiLCBPX1JET05MWSkgPSAtMSBFTk9FTlQgKE5vIHN1Y2gg
ZmlsZSBvciBkaXJlY3RvcnkpCm9wZW4oIi9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9m
YW4xX2xhYmVsIiwgT19SRE9OTFkpID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0
b3J5KQpvcGVuKCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9mYXVsdCIsIE9f
UkRPTkxZKSA9IDMKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA0NDQsIHN0X3NpemU9NDA5
NiwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDQwOTYsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBf
UFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2ZjExMDAwCnJlYWQoMywgIjBcbiIs
IDQwOTYpICAgICAgICAgICAgICAgICAgICA9IDIKY2xvc2UoMykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMAptdW5tYXAoMHhiNmYxMTAwMCwgNDA5NikgICAgICAgICAgICAgICAg
PSAwCm9wZW4oIi9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9mYW4xX2lucHV0IiwgT19S
RE9OTFkpID0gMwpmc3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2
LCAuLi59KSA9IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9Q
UklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmMTEwMDAKcmVhZCgzLCAiMTUzNlxu
IiwgNDA5NikgICAgICAgICAgICAgICAgID0gNQpjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwCm11bm1hcCgweGI2ZjExMDAwLCA0MDk2KSAgICAgICAgICAgICAgICA9
IDAKb3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2ZhbjFfZGl2IiwgT19SRE9O
TFkpID0gMwpmc3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT00MDk2LCAu
Li59KSA9IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklW
QVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmMTEwMDAKcmVhZCgzLCAiMVxuIiwgNDA5
NikgICAgICAgICAgICAgICAgICAgID0gMgpjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAwCm11bm1hcCgweGI2ZjExMDAwLCA0MDk2KSAgICAgICAgICAgICAgICA9IDAK
b3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2ZhbjFfYWxhcm0iLCBPX1JET05M
WSkgPSAzCmZzdGF0NjQoMywge3N0X21vZGU9U19JRlJFR3wwNDQ0LCBzdF9zaXplPTQwOTYsIC4u
Ln0pID0gMAptbWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZB
VEV8TUFQX0FOT05ZTU9VUywgLTEsIDApID0gMHhiNmYxMTAwMApyZWFkKDMsICIwXG4iLCA0MDk2
KSAgICAgICAgICAgICAgICAgICAgPSAyCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDAKbXVubWFwKDB4YjZmMTEwMDAsIDQwOTYpICAgICAgICAgICAgICAgID0gMAp3
cml0ZSgxLCAiZzc2Mi1pMmMtMC0zZVxuQWRhcHRlcjogbXY2NHh4eF9pIi4uLiwgNzdnNzYyLWky
Yy0wLTNlCkFkYXB0ZXI6IG12NjR4eHhfaTJjIGFkYXB0ZXIKZmFuMTogICAgICAgIDE1MzYgUlBN
ICAoZGl2ID0gMSkKCikgPSA3NwpleGl0X2dyb3VwKDApICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSA/CgoKCgoKLTMuMTEuNi0tODwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZXhlY3ZlKCIvdXNyL2Jpbi9zZW5zb3JzIiwgWyJzZW5z
b3JzIl0sIFsvKiAxMyB2YXJzICovXSkgPSAwCmJyaygwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MWFlOTAwMAp1bmFtZSh7c3lzPSJMaW51eCIsIG5vZGU9Im1vb2QiLCAu
Li59KSAgPSAwCmFjY2VzcygiL2V0Yy9sZC5zby5ub2h3Y2FwIiwgRl9PSykgICAgICA9IC0xIEVO
T0VOVCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9S
RUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZm
ZTcwMDAKYWNjZXNzKCIvZXRjL2xkLnNvLnByZWxvYWQiLCBSX09LKSAgICAgID0gLTEgRU5PRU5U
IChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvZXRjL2xkLnNvLmNhY2hlIiwgT19S
RE9OTFl8T19DTE9FWEVDKSA9IDMKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQsIHN0
X3NpemU9MjQ4NDIsIC4uLn0pID0gMAptbWFwMihOVUxMLCAyNDg0MiwgUFJPVF9SRUFELCBNQVBf
UFJJVkFURSwgMywgMCkgPSAweGI2ZmJiMDAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDAKYWNjZXNzKCIvZXRjL2xkLnNvLm5vaHdjYXAiLCBGX09LKSAgICAgID0g
LTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvdXNyL2xpYi9hcm0t
bGludXgtZ251ZWFiaS9saWJzZW5zb3JzLnNvLjQiLCBPX1JET05MWXxPX0NMT0VYRUMpID0gMwpy
ZWFkKDMsICJcMTc3RUxGXDFcMVwxXDBcMFwwXDBcMFwwXDBcMFwwXDNcMChcMFwxXDBcMFwwXDIx
MFwyN1wwXDAwMDRcMFwwXDAiLi4uLCA1MTIpID0gNTEyCmxzZWVrKDMsIDUzOTA4LCBTRUVLX1NF
VCkgICAgICAgICAgICAgICA9IDUzOTA4CnJlYWQoMywgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uLCAxMDQwKSA9IDEw
NDAKbHNlZWsoMywgNTM2NDQsIFNFRUtfU0VUKSAgICAgICAgICAgICAgID0gNTM2NDQKcmVhZCgz
LCAiQSlcMFwwXDBhZWFiaVwwXDFcMzdcMFwwXDBcMDA1NFRcMFw2XDJcMTBcMVx0XDFcMjJcNFwy
NFwxXDI1XDEiLi4uLCA0MikgPSA0MgptbWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8UFJPVF9X
UklURSwgTUFQX1BSSVZBVEV8TUFQX0FOT05ZTU9VUywgLTEsIDApID0gMHhiNmZlNjAwMApmc3Rh
dDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT01NDk0OCwgLi4ufSkgPSAwCm1t
YXAyKE5VTEwsIDg2OTUyLCBQUk9UX1JFQUR8UFJPVF9FWEVDLCBNQVBfUFJJVkFURXxNQVBfREVO
WVdSSVRFLCAzLCAwKSA9IDB4YjZmYTUwMDAKbXByb3RlY3QoMHhiNmZiMjAwMCwgMjg2NzIsIFBS
T1RfTk9ORSkgID0gMAptbWFwMigweGI2ZmI5MDAwLCA4MTkyLCBQUk9UX1JFQUR8UFJPVF9XUklU
RSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4YykgPSAweGI2ZmI5
MDAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKYWNjZXNzKCIv
ZXRjL2xkLnNvLm5vaHdjYXAiLCBGX09LKSAgICAgID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUg
b3IgZGlyZWN0b3J5KQpvcGVuKCIvbGliL2FybS1saW51eC1nbnVlYWJpL2xpYmMuc28uNiIsIE9f
UkRPTkxZfE9fQ0xPRVhFQykgPSAzCnJlYWQoMywgIlwxNzdFTEZcMVwxXDFcMFwwXDBcMFwwXDBc
MFwwXDBcM1wwKFwwXDFcMFwwXDBoXDIwMlwxXDAwMDRcMFwwXDAiLi4uLCA1MTIpID0gNTEyCmxz
ZWVrKDMsIDEyNDAwODQsIFNFRUtfU0VUKSAgICAgICAgICAgICA9IDEyNDAwODQKcmVhZCgzLCAi
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMCIuLi4sIDI4NDApID0gMjg0MApsc2VlaygzLCAxMjM2NDg0LCBTRUVLX1NFVCkgICAg
ICAgICAgICAgPSAxMjM2NDg0CnJlYWQoMywgIkEpXDBcMFwwYWVhYmlcMFwxXDM3XDBcMFwwXDAw
NTRUXDBcNlwyXDEwXDFcdFwxXDIyXDRcMjNcMVwyNFwxIi4uLiwgNDIpID0gNDIKZnN0YXQ2NCgz
LCB7c3RfbW9kZT1TX0lGUkVHfDA3NTUsIHN0X3NpemU9MTI0MjkyNCwgLi4ufSkgPSAwCm1tYXAy
KE5VTEwsIDEyNzkzNjgsIFBST1RfUkVBRHxQUk9UX0VYRUMsIE1BUF9QUklWQVRFfE1BUF9ERU5Z
V1JJVEUsIDMsIDApID0gMHhiNmU2YzAwMAptcHJvdGVjdCgweGI2Zjk3MDAwLCAzMjc2OCwgUFJP
VF9OT05FKSAgPSAwCm1tYXAyKDB4YjZmOWYwMDAsIDEyMjg4LCBQUk9UX1JFQUR8UFJPVF9XUklU
RSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4MTJiKSA9IDB4YjZm
OWYwMDAKbW1hcDIoMHhiNmZhMjAwMCwgOTYwOCwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9Q
UklWQVRFfE1BUF9GSVhFRHxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2ZmEyMDAwCmNsb3Nl
KDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKYWNjZXNzKCIvZXRjL2xkLnNv
Lm5vaHdjYXAiLCBGX09LKSAgICAgID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0
b3J5KQpvcGVuKCIvbGliL2FybS1saW51eC1nbnVlYWJpL2xpYm0uc28uNiIsIE9fUkRPTkxZfE9f
Q0xPRVhFQykgPSAzCnJlYWQoMywgIlwxNzdFTEZcMVwxXDFcMFwwXDBcMFwwXDBcMFwwXDBcM1ww
KFwwXDFcMFwwXDAwMDA8XDBcMDAwNFwwXDBcMCIuLi4sIDUxMikgPSA1MTIKbHNlZWsoMywgNjU5
OTEyLCBTRUVLX1NFVCkgICAgICAgICAgICAgID0gNjU5OTEyCnJlYWQoMywgIlwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4u
LCAxMTYwKSA9IDExNjAKbHNlZWsoMywgNjU5NTg4LCBTRUVLX1NFVCkgICAgICAgICAgICAgID0g
NjU5NTg4CnJlYWQoMywgIkEpXDBcMFwwYWVhYmlcMFwxXDM3XDBcMFwwXDAwNTRUXDBcNlwyXDEw
XDFcdFwxXDIyXDRcMjNcMVwyNFwxIi4uLiwgNDIpID0gNDIKZnN0YXQ2NCgzLCB7c3RfbW9kZT1T
X0lGUkVHfDA2NDQsIHN0X3NpemU9NjYxMDcyLCAuLi59KSA9IDAKbW1hcDIoTlVMTCwgNjkyMzY0
LCBQUk9UX1JFQUR8UFJPVF9FWEVDLCBNQVBfUFJJVkFURXxNQVBfREVOWVdSSVRFLCAzLCAwKSA9
IDB4YjZkYzIwMDAKbXByb3RlY3QoMHhiNmU2MzAwMCwgMjg2NzIsIFBST1RfTk9ORSkgID0gMApt
bWFwMigweGI2ZTZhMDAwLCA4MTkyLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8
TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMsIDB4YTApID0gMHhiNmU2YTAwMApjbG9zZSgzKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCm1tYXAyKE5VTEwsIDQwOTYsIFBST1Rf
UkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2
ZmU1MDAwCnNldF90bHMoMHhiNmZlNTRjMCwgMHhiNmZlNWI5OCwgMHhiNmZlYTA1MCwgMHhiNmZl
NTRjMCwgMHhiNmZlYTA1MCkgPSAwCm1wcm90ZWN0KDB4YjZmOWYwMDAsIDgxOTIsIFBST1RfUkVB
RCkgICA9IDAKbXByb3RlY3QoMHhiNmU2YTAwMCwgNDA5NiwgUFJPVF9SRUFEKSAgID0gMAptcHJv
dGVjdCgweGI2ZmI5MDAwLCA0MDk2LCBQUk9UX1JFQUQpICAgPSAwCm1wcm90ZWN0KDB4MTQwMDAs
IDQwOTYsIFBST1RfUkVBRCkgICAgICA9IDAKbXByb3RlY3QoMHhiNmZlOTAwMCwgNDA5NiwgUFJP
VF9SRUFEKSAgID0gMAptdW5tYXAoMHhiNmZiYjAwMCwgMjQ4NDIpICAgICAgICAgICAgICAgPSAw
CmJyaygwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MWFlOTAwMApicmso
MHgxYjBhMDAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDFiMGEwMDAKb3BlbigiL3Vz
ci9saWIvbG9jYWxlL2xvY2FsZS1hcmNoaXZlIiwgT19SRE9OTFl8T19MQVJHRUZJTEV8T19DTE9F
WEVDKSA9IDMKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQsIHN0X3NpemU9MTYwNzYz
MiwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDE2MDc2MzIsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUs
IDMsIDApID0gMHhiNmMzOTAwMApjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAwCnN0YXRmcygiL3N5cyIsIHtmX3R5cGU9IlNZU0ZTX01BR0lDIiwgZl9ic2l6ZT00MDk2
LCBmX2Jsb2Nrcz0wLCBmX2JmcmVlPTAsIGZfYmF2YWlsPTAsIGZfZmlsZXM9MCwgZl9mZnJlZT0w
LCBmX2ZzaWQ9ezAsIDB9LCBmX25hbWVsZW49MjU1LCBmX2Zyc2l6ZT00MDk2fSkgPSAwCm9wZW5h
dChBVF9GRENXRCwgIi9zeXMvY2xhc3MvaTJjLWFkYXB0ZXIiLCBPX1JET05MWXxPX05PTkJMT0NL
fE9fTEFSR0VGSUxFfE9fRElSRUNUT1JZfE9fQ0xPRVhFQykgPSAzCmZjbnRsNjQoMywgRl9HRVRG
RCkgICAgICAgICAgICAgICAgICAgICA9IDB4MSAoZmxhZ3MgRkRfQ0xPRVhFQykKZ2V0ZGVudHMo
MywgLyogMyBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gNTIKb3BlbigiL3N5cy9jbGFzcy9pMmMt
YWRhcHRlci9pMmMtMC9uYW1lIiwgT19SRE9OTFkpID0gNApmc3RhdDY0KDQsIHtzdF9tb2RlPVNf
SUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJP
VF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4
YjZmZTQwMDAKcmVhZCg0LCAibXY2NHh4eF9pMmMgYWRhcHRlclxuIiwgNDA5NikgID0gMjAKY2xv
c2UoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAptdW5tYXAoMHhiNmZlNDAw
MCwgNDA5NikgICAgICAgICAgICAgICAgPSAwCmdldGRlbnRzKDMsIC8qIDAgZW50cmllcyAqLywg
MzI3NjgpICAgICA9IDAKY2xvc2UoMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MApvcGVuYXQoQVRfRkRDV0QsICIvc3lzL2NsYXNzL2h3bW9uIiwgT19SRE9OTFl8T19OT05CTE9D
S3xPX0xBUkdFRklMRXxPX0RJUkVDVE9SWXxPX0NMT0VYRUMpID0gMwpnZXRkZW50cygzLCAvKiA0
IGVudHJpZXMgKi8sIDMyNzY4KSAgICAgPSA3MgpyZWFkbGluaygiL3N5cy9jbGFzcy9od21vbi9o
d21vbjAvZGV2aWNlIiwgIi4uLy4uLy4uLzAtMDAzZSIuLi4sIDI1NCkgPSAxNQpvcGVuKCIvc3lz
L2NsYXNzL2h3bW9uL2h3bW9uMC9uYW1lIiwgT19SRE9OTFkpID0gLTEgRU5PRU5UIChObyBzdWNo
IGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVuKCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2Uv
bmFtZSIsIE9fUkRPTkxZKSA9IDQKZnN0YXQ2NCg0LCB7c3RfbW9kZT1TX0lGUkVHfDA0NDQsIHN0
X3NpemU9NDA5NiwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDQwOTYsIFBST1RfUkVBRHxQUk9UX1dS
SVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2ZmU0MDAwCnJlYWQo
NCwgImc3NjJcbiIsIDQwOTYpICAgICAgICAgICAgICAgICA9IDUKY2xvc2UoNCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMAptdW5tYXAoMHhiNmZlNDAwMCwgNDA5NikgICAgICAg
ICAgICAgICAgPSAwCnJlYWRsaW5rKCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2Uvc3Vi
c3lzdGVtIiwgIi4uLy4uLy4uLy4uLy4uLy4uL2J1cy9pMmMiLCAyNTQpID0gMjUKb3BlbigiL3N5
cy9jbGFzcy9pMmMtYWRhcHRlci9pMmMtMC9kZXZpY2UvbmFtZSIsIE9fUkRPTkxZKSA9IC0xIEVO
T0VOVCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKb3BlbmF0KEFUX0ZEQ1dELCAiL3N5cy9j
bGFzcy9od21vbi9od21vbjAvZGV2aWNlIiwgT19SRE9OTFl8T19OT05CTE9DS3xPX0xBUkdFRklM
RXxPX0RJUkVDVE9SWXxPX0NMT0VYRUMpID0gNApicmsoMHgxYjMxMDAwKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAweDFiMzEwMDAKZ2V0ZGVudHMoNCwgLyogMTcgZW50cmllcyAqLywgMzI3
NjgpICAgID0gMzU2CnN0YXQ2NCgiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2ZhbjFf
cHVsc2VzIiwge3N0X21vZGU9U19JRlJFR3wwNjQ0LCBzdF9zaXplPTQwOTYsIC4uLn0pID0gMApz
dGF0NjQoIi9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9mYW4xX2RpdiIsIHtzdF9tb2Rl
PVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKc3RhdDY0KCIvc3lzL2NsYXNz
L2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9hbGFybSIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwg
c3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKc3RhdDY0KCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9k
ZXZpY2UvZmFuMV9mYXVsdCIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAu
Li59KSA9IDAKc3RhdDY0KCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9pbnB1
dCIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAKZ2V0ZGVu
dHMoNCwgLyogMCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gMApjbG9zZSg0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwCnJlYWRsaW5rKCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9u
MS9kZXZpY2UiLCAweGJlYjM1OTZjLCAyNTQpID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3Ig
ZGlyZWN0b3J5KQpvcGVuKCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMS9uYW1lIiwgT19SRE9OTFkp
ID0gNApmc3RhdDY0KDQsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59
KSA9IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRF
fE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmZTQwMDAKcmVhZCg0LCAiYXJtYWRhX3RoZXJt
YWxcbiIsIDQwOTYpICAgICAgID0gMTUKY2xvc2UoNCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMAptdW5tYXAoMHhiNmZlNDAwMCwgNDA5NikgICAgICAgICAgICAgICAgPSAwCm9w
ZW5hdChBVF9GRENXRCwgIi9zeXMvY2xhc3MvaHdtb24vaHdtb24xIiwgT19SRE9OTFl8T19OT05C
TE9DS3xPX0xBUkdFRklMRXxPX0RJUkVDVE9SWXxPX0NMT0VYRUMpID0gNApnZXRkZW50cyg0LCAv
KiA2IGVudHJpZXMgKi8sIDMyNzY4KSAgICAgPSAxMTYKc3RhdDY0KCIvc3lzL2NsYXNzL2h3bW9u
L2h3bW9uMS90ZW1wMV9pbnB1dCIsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2
LCAuLi59KSA9IDAKZ2V0ZGVudHMoNCwgLyogMCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gMApj
bG9zZSg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCmdldGRlbnRzKDMsIC8q
IDAgZW50cmllcyAqLywgMzI3NjgpICAgICA9IDAKY2xvc2UoMykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMApvcGVuKCIvZXRjL3NlbnNvcnMzLmNvbmYiLCBPX1JET05MWSkgICAg
PSAzCmlvY3RsKDMsIFNORENUTF9UTVJfVElNRUJBU0Ugb3IgVENHRVRTLCAweGJlYjM1YWY0KSA9
IC0xIEVOT1RUWSAoSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlKQpmc3RhdDY0KDMsIHtz
dF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT0xMDM0NCwgLi4ufSkgPSAwCm1tYXAyKE5VTEws
IDQwOTYsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAt
MSwgMCkgPSAweGI2ZmU0MDAwCnJlYWQoMywgIiMgbGlic2Vuc29ycyBjb25maWd1cmF0aW9uIGZp
bGVcbiIuLi4sIDgxOTIpID0gODE5MgpyZWFkKDMsICIgbGFiZWwgaW40IFwiKzEyVlwiXG4gICAg
bGFiZWwgaW41ICIuLi4sIDgxOTIpID0gMjE1MgpyZWFkKDMsICIiLCA0MDk2KSAgICAgICAgICAg
ICAgICAgICAgICAgPSAwCnJlYWQoMywgIiIsIDgxOTIpICAgICAgICAgICAgICAgICAgICAgICA9
IDAKaW9jdGwoMywgU05EQ1RMX1RNUl9USU1FQkFTRSBvciBUQ0dFVFMsIDB4YmViMzRiMDQpID0g
LTEgRU5PVFRZIChJbmFwcHJvcHJpYXRlIGlvY3RsIGZvciBkZXZpY2UpCmNsb3NlKDMpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKbXVubWFwKDB4YjZmZTQwMDAsIDQwOTYpICAg
ICAgICAgICAgICAgID0gMApvcGVuYXQoQVRfRkRDV0QsICIvZXRjL3NlbnNvcnMuZCIsIE9fUkRP
TkxZfE9fTk9OQkxPQ0t8T19MQVJHRUZJTEV8T19ESVJFQ1RPUll8T19DTE9FWEVDKSA9IDMKZ2V0
ZGVudHMoMywgLyogMyBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gNTYKZ2V0ZGVudHMoMywgLyog
MCBlbnRyaWVzICovLCAzMjc2OCkgICAgID0gMApjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwCm9wZW4oIi91c3IvbGliL2FybS1saW51eC1nbnVlYWJpL2djb252L2dj
b252LW1vZHVsZXMuY2FjaGUiLCBPX1JET05MWSkgPSAzCmZzdGF0NjQoMywge3N0X21vZGU9U19J
RlJFR3wwNjQ0LCBzdF9zaXplPTI2MjYwLCAuLi59KSA9IDAKbW1hcDIoTlVMTCwgMjYyNjAsIFBS
T1RfUkVBRCwgTUFQX1NIQVJFRCwgMywgMCkgPSAweGI2ZmJiMDAwCmNsb3NlKDMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDAKb3BlbigiL3Vzci9saWIvYXJtLWxpbnV4LWdudWVh
YmkvZ2NvbnYvSVNPODg1OS0xLnNvIiwgT19SRE9OTFl8T19DTE9FWEVDKSA9IDMKcmVhZCgzLCAi
XDE3N0VMRlwxXDFcMVwwXDBcMFwwXDBcMFwwXDBcMFwzXDAoXDBcMVwwXDBcMFwzNTRcM1wwXDAw
MDRcMFwwXDAiLi4uLCA1MTIpID0gNTEyCmxzZWVrKDMsIDg1NDgsIFNFRUtfU0VUKSAgICAgICAg
ICAgICAgICA9IDg1NDgKcmVhZCgzLCAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIuLi4sIDEwODApID0gMTA4MApsc2Vlaygz
LCA4MjQ4LCBTRUVLX1NFVCkgICAgICAgICAgICAgICAgPSA4MjQ4CnJlYWQoMywgIkEpXDBcMFww
YWVhYmlcMFwxXDM3XDBcMFwwXDAwNTRUXDBcNlwyXDEwXDFcdFwxXDIyXDRcMjNcMVwyNFwxIi4u
LiwgNDIpID0gNDIKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQsIHN0X3NpemU9OTYy
OCwgLi4ufSkgPSAwCm1tYXAyKE5VTEwsIDQxMDIwLCBQUk9UX1JFQUR8UFJPVF9FWEVDLCBNQVBf
UFJJVkFURXxNQVBfREVOWVdSSVRFLCAzLCAwKSA9IDB4YjZjMmUwMDAKbXByb3RlY3QoMHhiNmMz
MDAwMCwgMjg2NzIsIFBST1RfTk9ORSkgID0gMAptbWFwMigweGI2YzM3MDAwLCA4MTkyLCBQUk9U
X1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0ZJWEVEfE1BUF9ERU5ZV1JJVEUsIDMs
IDB4MSkgPSAweGI2YzM3MDAwCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDAKbXByb3RlY3QoMHhiNmMzNzAwMCwgNDA5NiwgUFJPVF9SRUFEKSAgID0gMApmc3RhdDY0
KDEsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT05Mzg1LCAuLi59KSA9IDAKbW1hcDIo
TlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1P
VVMsIC0xLCAwKSA9IDB4YjZmZTQwMDAKb3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2
aWNlL2ZhbjFfbGFiZWwiLCBPX1JET05MWSkgPSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBk
aXJlY3RvcnkpCm9wZW4oIi9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9mYW4xX2xhYmVs
IiwgT19SRE9OTFkpID0gLTEgRU5PRU5UIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQpvcGVu
KCIvc3lzL2NsYXNzL2h3bW9uL2h3bW9uMC9kZXZpY2UvZmFuMV9mYXVsdCIsIE9fUkRPTkxZKSA9
IDMKZnN0YXQ2NCgzLCB7c3RfbW9kZT1TX0lGUkVHfDA0NDQsIHN0X3NpemU9NDA5NiwgLi4ufSkg
PSAwCm1tYXAyKE5VTEwsIDQwOTYsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxN
QVBfQU5PTllNT1VTLCAtMSwgMCkgPSAweGI2ZmUzMDAwCnJlYWQoMywgIjBcbiIsIDQwOTYpICAg
ICAgICAgICAgICAgICAgICA9IDIKY2xvc2UoMykgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMAptdW5tYXAoMHhiNmZlMzAwMCwgNDA5NikgICAgICAgICAgICAgICAgPSAwCm9wZW4o
Ii9zeXMvY2xhc3MvaHdtb24vaHdtb24wL2RldmljZS9mYW4xX2lucHV0IiwgT19SRE9OTFkpID0g
Mwpmc3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9
IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1B
UF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmZTMwMDAKcmVhZCgzLCAiMzUxMFxuIiwgNDA5Nikg
ICAgICAgICAgICAgICAgID0gNQpjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAwCm11bm1hcCgweGI2ZmUzMDAwLCA0MDk2KSAgICAgICAgICAgICAgICA9IDAKb3Blbigi
L3N5cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2ZhbjFfZGl2IiwgT19SRE9OTFkpID0gMwpm
c3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDY0NCwgc3Rfc2l6ZT00MDk2LCAuLi59KSA9IDAK
bW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9B
Tk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmZTMwMDAKcmVhZCgzLCAiMVxuIiwgNDA5NikgICAgICAg
ICAgICAgICAgICAgID0gMgpjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAwCm11bm1hcCgweGI2ZmUzMDAwLCA0MDk2KSAgICAgICAgICAgICAgICA9IDAKb3BlbigiL3N5
cy9jbGFzcy9od21vbi9od21vbjAvZGV2aWNlL2ZhbjFfYWxhcm0iLCBPX1JET05MWSkgPSAzCmZz
dGF0NjQoMywge3N0X21vZGU9U19JRlJFR3wwNDQ0LCBzdF9zaXplPTQwOTYsIC4uLn0pID0gMApt
bWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0FO
T05ZTU9VUywgLTEsIDApID0gMHhiNmZlMzAwMApyZWFkKDMsICIwXG4iLCA0MDk2KSAgICAgICAg
ICAgICAgICAgICAgPSAyCmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDAKbXVubWFwKDB4YjZmZTMwMDAsIDQwOTYpICAgICAgICAgICAgICAgID0gMApvcGVuKCIvc3lz
L2NsYXNzL2h3bW9uL2h3bW9uMS90ZW1wMV9sYWJlbCIsIE9fUkRPTkxZKSA9IC0xIEVOT0VOVCAo
Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKb3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjEv
dGVtcDFfbGFiZWwiLCBPX1JET05MWSkgPSAtMSBFTk9FTlQgKE5vIHN1Y2ggZmlsZSBvciBkaXJl
Y3RvcnkpCm9wZW4oIi9zeXMvY2xhc3MvaHdtb24vaHdtb24xL3RlbXAxX2lucHV0IiwgT19SRE9O
TFkpID0gMwpmc3RhdDY0KDMsIHtzdF9tb2RlPVNfSUZSRUd8MDQ0NCwgc3Rfc2l6ZT00MDk2LCAu
Li59KSA9IDAKbW1hcDIoTlVMTCwgNDA5NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklW
QVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKSA9IDB4YjZmZTMwMDAKcmVhZCgzLCAiNDI4OTNcbiIs
IDQwOTYpICAgICAgICAgICAgICAgID0gNgpjbG9zZSgzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAwCm11bm1hcCgweGI2ZmUzMDAwLCA0MDk2KSAgICAgICAgICAgICAgICA9IDAK
b3BlbigiL3N5cy9jbGFzcy9od21vbi9od21vbjEvdGVtcDFfaW5wdXQiLCBPX1JET05MWSkgPSAz
CmZzdGF0NjQoMywge3N0X21vZGU9U19JRlJFR3wwNDQ0LCBzdF9zaXplPTQwOTYsIC4uLn0pID0g
MAptbWFwMihOVUxMLCA0MDk2LCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQ
X0FOT05ZTU9VUywgLTEsIDApID0gMHhiNmZlMzAwMApyZWFkKDMsICI0Mjg5M1xuIiwgNDA5Nikg
ICAgICAgICAgICAgICAgPSA2CmNsb3NlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDAKbXVubWFwKDB4YjZmZTMwMDAsIDQwOTYpICAgICAgICAgICAgICAgID0gMApicmsoMHgx
YjEzMDAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDFiMTMwMDAKd3JpdGUoMSwgImc3
NjItaTJjLTAtM2VcbkFkYXB0ZXI6IG12NjR4eHhfaSIuLi4sIDE1Mmc3NjItaTJjLTAtM2UKQWRh
cHRlcjogbXY2NHh4eF9pMmMgYWRhcHRlcgpmYW4xOiAgICAgICAgMzUxMCBSUE0gIChkaXYgPSAx
KQoKYXJtYWRhX3RoZXJtYWwtdmlydHVhbC0wCkFkYXB0ZXI6IFZpcnR1YWwgZGV2aWNlCnRlbXAx
OiAgICAgICAgKzQyLjnCsEMgIAoKKSA9IDE1MgpleGl0X2dyb3VwKDApICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSA/CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3Jn
Cmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-21  2:28     ` Zhang Rui
  (?)
@ 2013-10-21 18:49       ` Arnaud Ebalard
  -1 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:49 UTC (permalink / raw)
  To: Zhang Rui
  Cc: Guenter Roeck, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi,

Zhang Rui <rui.zhang@intel.com> writes:

>> > Is that expected? As for sensors, it *seems* to be bothered to find a
>> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>> >
>
> I agree. And it should be caused by this commit.
>
> commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
> Author: Eduardo Valentin <eduardo.valentin@ti.com>
> Date:   Fri Aug 23 17:07:58 2013 -0400
>
>     drivers: thermal: parent virtual hwmon with thermal zone

FWIW, the one-liner reverting this commit in your tree (6ddcb7e635
Revert "drivers: thermal: parent virtual hwmon with thermal zone")
does indeed makes sensors and fancontrol happy again.

Cheers,

a+

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 18:49       ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:49 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Zhang Rui <rui.zhang@intel.com> writes:

>> > Is that expected? As for sensors, it *seems* to be bothered to find a
>> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>> >
>
> I agree. And it should be caused by this commit.
>
> commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
> Author: Eduardo Valentin <eduardo.valentin@ti.com>
> Date:   Fri Aug 23 17:07:58 2013 -0400
>
>     drivers: thermal: parent virtual hwmon with thermal zone

FWIW, the one-liner reverting this commit in your tree (6ddcb7e635
Revert "drivers: thermal: parent virtual hwmon with thermal zone")
does indeed makes sensors and fancontrol happy again.

Cheers,

a+

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-21 18:49       ` Arnaud Ebalard
  0 siblings, 0 replies; 27+ messages in thread
From: Arnaud Ebalard @ 2013-10-21 18:49 UTC (permalink / raw)
  To: Zhang Rui
  Cc: Guenter Roeck, Eduardo Valentin, Jean Delvare, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi,

Zhang Rui <rui.zhang@intel.com> writes:

>> > Is that expected? As for sensors, it *seems* to be bothered to find a
>> > device/ folder in /sys/class/hwmon/hwmon1/ w/o no name entry in it.
>> >
>
> I agree. And it should be caused by this commit.
>
> commit b82715fdd4a5407f56853b24d387d484dd9c3b5b
> Author: Eduardo Valentin <eduardo.valentin@ti.com>
> Date:   Fri Aug 23 17:07:58 2013 -0400
>
>     drivers: thermal: parent virtual hwmon with thermal zone

FWIW, the one-liner reverting this commit in your tree (6ddcb7e635
Revert "drivers: thermal: parent virtual hwmon with thermal zone")
does indeed makes sensors and fancontrol happy again.

Cheers,

a+

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
  2013-10-21 15:16     ` Guenter Roeck
  (?)
@ 2013-10-22 12:04       ` Jean Delvare
  -1 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-22 12:04 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi Guenter,

On Mon, 21 Oct 2013 08:16:16 -0700, Guenter Roeck wrote:
> I think it is more likely that the problem is related to parsing the 'subsystem'
> link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
> 'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
> the device as unknown.

Yes, you are right, that's exactly what is happening here.

> Question is if we can come up with some more generic code to handle that case.
> Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
> But then there can be more than one of those, so you would need some means
> for enumerating bus and chip numbers, so I don't know if that is feasible.

The whole point of identifying the subsystem is because we want to
assign a unique, stable identifier to each chip, and the naming scheme
depends on the subsystem. If we start treating all unsupported
subsystems as "other", we simply won't be able to give these devices
unique names. Developers and users are unlikely to care and report the
problem to us if libsensors shows them their "foo-other-0" device. This
is why libsensors ignores these devices: developers and users will
report about the missing device and we can add proper support to
libsensors. That way we can get the naming scheme right immediately
instead of later when this will break running configurations.

Commit b82715fdd4a5407f56853b24d387d484dd9c3b5b is simply wrong, so it
should be reverted. It assumes that there's a 1:1 mapping between
thermal zones and hwmon devices, which is not the case. See this
comment near the top of thermal_hwmon.c:

/* thermal zone devices with the same type share one hwmon device */

So associating the hwmon device with the first registered thermal zone
of its kind is arbitrary and asymmetric and makes no sense. I don't
know what the goal of that change was, but that will have to be
achieved in a different way.

Note that merging all thermal zones of one kind into a single hwmon
device is exactly what makes it possible to treat it as a virtual
device and still guarantee uniqueness of the identifier (e.g.
acpitz-virtual-0.) It has the drawback of leaving the input ordering
stability up to the kernel, but back then it was not considered an
issue.

If we now want to have one hwmon device per thermal zone, then the
kernel must provide a way for libsensors to give each of them a unique
and stable identifier. Naming scheme is relatively free.

Note that I am not necessarily in favor of such a change, as 1* it
could lead to a huge number of hwmon devices, making the output of
"sensors" harder to read, and 2* the change could break existing
configurations. So if anyone wants to change this, a really really good
reason must be provided, i.e. you will have to demonstrate that the
benefits outweigh the pain.

Hope it helps,
-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-22 12:04       ` Jean Delvare
  0 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-22 12:04 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Guenter,

On Mon, 21 Oct 2013 08:16:16 -0700, Guenter Roeck wrote:
> I think it is more likely that the problem is related to parsing the 'subsystem'
> link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
> 'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
> the device as unknown.

Yes, you are right, that's exactly what is happening here.

> Question is if we can come up with some more generic code to handle that case.
> Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
> But then there can be more than one of those, so you would need some means
> for enumerating bus and chip numbers, so I don't know if that is feasible.

The whole point of identifying the subsystem is because we want to
assign a unique, stable identifier to each chip, and the naming scheme
depends on the subsystem. If we start treating all unsupported
subsystems as "other", we simply won't be able to give these devices
unique names. Developers and users are unlikely to care and report the
problem to us if libsensors shows them their "foo-other-0" device. This
is why libsensors ignores these devices: developers and users will
report about the missing device and we can add proper support to
libsensors. That way we can get the naming scheme right immediately
instead of later when this will break running configurations.

Commit b82715fdd4a5407f56853b24d387d484dd9c3b5b is simply wrong, so it
should be reverted. It assumes that there's a 1:1 mapping between
thermal zones and hwmon devices, which is not the case. See this
comment near the top of thermal_hwmon.c:

/* thermal zone devices with the same type share one hwmon device */

So associating the hwmon device with the first registered thermal zone
of its kind is arbitrary and asymmetric and makes no sense. I don't
know what the goal of that change was, but that will have to be
achieved in a different way.

Note that merging all thermal zones of one kind into a single hwmon
device is exactly what makes it possible to treat it as a virtual
device and still guarantee uniqueness of the identifier (e.g.
acpitz-virtual-0.) It has the drawback of leaving the input ordering
stability up to the kernel, but back then it was not considered an
issue.

If we now want to have one hwmon device per thermal zone, then the
kernel must provide a way for libsensors to give each of them a unique
and stable identifier. Naming scheme is relatively free.

Note that I am not necessarily in favor of such a change, as 1* it
could lead to a huge number of hwmon devices, making the output of
"sensors" harder to read, and 2* the change could break existing
configurations. So if anyone wants to change this, a really really good
reason must be provided, i.e. you will have to demonstrate that the
benefits outweigh the pain.

Hope it helps,
-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [lm-sensors] [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series
@ 2013-10-22 12:04       ` Jean Delvare
  0 siblings, 0 replies; 27+ messages in thread
From: Jean Delvare @ 2013-10-22 12:04 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Arnaud Ebalard, Eduardo Valentin, Zhang Rui, linux-pm,
	lm-sensors, linux-arm-kernel, Andrew Lunn, Gregory Clement,
	Sebastian Hesselbarth, Jason Cooper

Hi Guenter,

On Mon, 21 Oct 2013 08:16:16 -0700, Guenter Roeck wrote:
> I think it is more likely that the problem is related to parsing the 'subsystem'
> link. If I understand the code in lib/sysfs.c correctly, it doesn't recognize
> 'thermal' (which I think is the subsystem name, but I may be wrong) and ignores
> the device as unknown.

Yes, you are right, that's exactly what is happening here.

> Question is if we can come up with some more generic code to handle that case.
> Define SENSORS_BUS_TYPE_OTHER and treat it similar to virtual, maybe ?
> But then there can be more than one of those, so you would need some means
> for enumerating bus and chip numbers, so I don't know if that is feasible.

The whole point of identifying the subsystem is because we want to
assign a unique, stable identifier to each chip, and the naming scheme
depends on the subsystem. If we start treating all unsupported
subsystems as "other", we simply won't be able to give these devices
unique names. Developers and users are unlikely to care and report the
problem to us if libsensors shows them their "foo-other-0" device. This
is why libsensors ignores these devices: developers and users will
report about the missing device and we can add proper support to
libsensors. That way we can get the naming scheme right immediately
instead of later when this will break running configurations.

Commit b82715fdd4a5407f56853b24d387d484dd9c3b5b is simply wrong, so it
should be reverted. It assumes that there's a 1:1 mapping between
thermal zones and hwmon devices, which is not the case. See this
comment near the top of thermal_hwmon.c:

/* thermal zone devices with the same type share one hwmon device */

So associating the hwmon device with the first registered thermal zone
of its kind is arbitrary and asymmetric and makes no sense. I don't
know what the goal of that change was, but that will have to be
achieved in a different way.

Note that merging all thermal zones of one kind into a single hwmon
device is exactly what makes it possible to treat it as a virtual
device and still guarantee uniqueness of the identifier (e.g.
acpitz-virtual-0.) It has the drawback of leaving the input ordering
stability up to the kernel, but back then it was not considered an
issue.

If we now want to have one hwmon device per thermal zone, then the
kernel must provide a way for libsensors to give each of them a unique
and stable identifier. Naming scheme is relatively free.

Note that I am not necessarily in favor of such a change, as 1* it
could lead to a huge number of hwmon devices, making the output of
"sensors" harder to read, and 2* the change could break existing
configurations. So if anyone wants to change this, a really really good
reason must be provided, i.e. you will have to demonstrate that the
benefits outweigh the pain.

Hope it helps,
-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2013-10-22 12:04 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-20 18:10 [REGRESSION?] sensors and fancontrol not seeing armada_thermal on 3.12-rc series Arnaud Ebalard
2013-10-20 18:10 ` [lm-sensors] " Arnaud Ebalard
2013-10-20 18:10 ` Arnaud Ebalard
2013-10-20 19:23 ` Guenter Roeck
2013-10-20 19:23   ` [lm-sensors] " Guenter Roeck
2013-10-20 19:23   ` Guenter Roeck
2013-10-21  2:28   ` Zhang Rui
2013-10-21  2:28     ` [lm-sensors] " Zhang Rui
2013-10-21  2:28     ` Zhang Rui
2013-10-21  5:19     ` Guenter Roeck
2013-10-21  5:19       ` [lm-sensors] " Guenter Roeck
2013-10-21  5:19       ` Guenter Roeck
2013-10-21 18:49     ` Arnaud Ebalard
2013-10-21 18:49       ` [lm-sensors] " Arnaud Ebalard
2013-10-21 18:49       ` Arnaud Ebalard
2013-10-21  7:17 ` Jean Delvare
2013-10-21  7:17   ` [lm-sensors] " Jean Delvare
2013-10-21  7:17   ` Jean Delvare
2013-10-21 15:16   ` Guenter Roeck
2013-10-21 15:16     ` [lm-sensors] " Guenter Roeck
2013-10-21 15:16     ` Guenter Roeck
2013-10-22 12:04     ` Jean Delvare
2013-10-22 12:04       ` [lm-sensors] " Jean Delvare
2013-10-22 12:04       ` Jean Delvare
2013-10-21 18:14   ` Arnaud Ebalard
2013-10-21 18:14     ` [lm-sensors] " Arnaud Ebalard
2013-10-21 18:14     ` Arnaud Ebalard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.