• Rafael J. Wysocki's avatar
    thermal: trip: Avoid skipping trips in thermal_zone_set_trips() · f844793f
    Rafael J. Wysocki authored
    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: 893bae92 ("thermal: trip: Make thermal_zone_set_trips() use trip thresholds")
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/12509184.O9o76ZdvQC@rjwysocki.net
    f844793f
thermal_trip.c 4.48 KB