]> www.infradead.org Git - nvme.git/commit
thermal: trip: Avoid skipping trips in thermal_zone_set_trips()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 30 Jul 2024 14:41:18 +0000 (16:41 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 31 Jul 2024 10:30:58 +0000 (12:30 +0200)
commitf844793f2d374ffb7f2231f4d36cd4bc52f12de0
treea263031ef2a3fc49116c967d960dc2979651d941
parent8400291e289ee6b2bf9779ff1c83a291501f017b
thermal: trip: Avoid skipping trips in thermal_zone_set_trips()

Say there are 3 trip points A, B, C sorted in ascending temperature
order with no hysteresis.  If the zone temerature is exactly equal to
B, thermal_zone_set_trips() will set the boundaries to A and C and the
hardware will not catch any crossing of B (either way) until either A
or C is crossed and the boundaries are changed.

To avoid that, use non-strict inequalities when comparing the trip
threshold to the zone temperature in thermal_zone_set_trips().

In the example above, it will cause both boundaries to be set to B,
which is desirable because an interrupt will trigger when the zone
temperature becomes different from B regardless of which way it goes.
That will allow a new interval to be set depending on the direction of
the zone temperature change.

Fixes: 893bae92237d ("thermal: trip: Make thermal_zone_set_trips() use trip thresholds")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/12509184.O9o76ZdvQC@rjwysocki.net
drivers/thermal/thermal_trip.c