thermal: gov_bang_bang: Fix possible cooling device state ping-pong
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>
This commit is contained in:
parent
f2675e588f
commit
54d94009cb
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user