diff mbox series

[v1,2/2] thermal: gov_bang_bang: Fix possible cooling device state ping-pong

Message ID 2339862.ElGaqSPkdT@kreacher
State New
Headers show
Series thermal: A couple of minor governor fixes | expand

Commit Message

Rafael J. Wysocki Jan. 15, 2024, 5:57 p.m. UTC
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

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 |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series

Patch

Index: linux-pm/drivers/thermal/gov_bang_bang.c
===================================================================
--- linux-pm.orig/drivers/thermal/gov_bang_bang.c
+++ linux-pm/drivers/thermal/gov_bang_bang.c
@@ -49,7 +49,7 @@  static int thermal_zone_trip_update(stru
 		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",