lost alarms with it87

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux