[lm-sensors] lost alarms with it87

Hector Lahoz hectorlahoz at gmail.com
Sat Sep 20 00:11:33 CEST 2008


Hi
Ok, we won't use interrupts. Now, I'd like to have some kind of signal
that warns about CPU going above max temperature. For example, through
sensord. But the problem is that some seconds after the alarm is
triggered the ALARM message of sensors does not appear any more.
Shouldn't the alarm bit remain set until it is read? And if it's only
read by show_* functions (i.e. it87_update_device() ), why does it go
away?
The result is that the alarm is lost. Am I doing any false assumption
or is my chip not following the specification?

I've done a simple experiment to demonstrate this: First I ran sensors
every 5 seconds and then every 1 second:

# while [ 1 ]; do sensors | grep ^CPU; sleep 5; done

CPU Temp:    +28.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +29.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +30.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +31.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +31.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +31.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +32.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +32.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +32.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +34.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +34.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +34.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +35.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode

# while [ 1 ]; do sensors | grep ^CPU; sleep 1; done

(for clarity I've compressed the output by placing a multiplier at the
end meaning the number of identical lines)

CPU Temp:    +28.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +28.0°C  (low  = +29.0°C, high = +33.0°C)  sensor = thermal diode
CPU Temp:    +29.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *6
CPU Temp:    +30.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *8
CPU Temp:    +31.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *10
CPU Temp:    +32.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *12
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  ALARM  sensor
= thermal diode
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  ALARM  sensor
= thermal diode
CPU Temp:    +33.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *10
CPU Temp:    +34.0°C  (low  = +29.0°C, high = +33.0°C)  sensor =
thermal diode   *3

As you can see, I took care to reach the hysteresis temperature (29 deg)




More information about the lm-sensors mailing list