]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
thermal: gov_bang_bang: Fix possible cooling device state ping-pong
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 15 Jan 2024 17:57:06 +0000 (18:57 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 29 Jan 2024 14:37:56 +0000 (15:37 +0100)
The current behavior of thermal_zone_trip_update() in the bang-bang
thermal governor may be problematic for trip points with 0 hysteresis,
because when the zone temperature reaches the trip temperature and
stays there, it will then cause the cooling device go "on" and "off"
alternately, which is not desirable.

Address this by requiring the zone temperature to actually fall below
trip->temperature - trip->hysteresis for the cooling device to go off.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/gov_bang_bang.c

index 6ddf0accdc98f918fdad2d22aa8f525fd575c656..c3b2943a2db8bf6217d320953a8c29a076bea790 100644 (file)
@@ -49,7 +49,7 @@ static int thermal_zone_trip_update(struct thermal_zone_device *tz,
                if (instance->target == 0 && tz->temperature >= trip->temperature)
                        instance->target = 1;
                else if (instance->target == 1 &&
-                        tz->temperature <= trip->temperature - trip->hysteresis)
+                        tz->temperature < trip->temperature - trip->hysteresis)
                        instance->target = 0;
 
                dev_dbg(&instance->cdev->device, "target=%d\n",