Commit 54d94009 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent f2675e58
...@@ -49,7 +49,7 @@ static int thermal_zone_trip_update(struct thermal_zone_device *tz, ...@@ -49,7 +49,7 @@ static int thermal_zone_trip_update(struct thermal_zone_device *tz,
if (instance->target == 0 && tz->temperature >= trip->temperature) if (instance->target == 0 && tz->temperature >= trip->temperature)
instance->target = 1; instance->target = 1;
else if (instance->target == 1 && else if (instance->target == 1 &&
tz->temperature <= trip->temperature - trip->hysteresis) tz->temperature < trip->temperature - trip->hysteresis)
instance->target = 0; instance->target = 0;
dev_dbg(&instance->cdev->device, "target=%d\n", dev_dbg(&instance->cdev->device, "target=%d\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment