On Wed, Dec 29, 2021 at 8:03 AM Manaf Meethalavalappu PallikunhiSure, will update in next patch version
<quic_manafm@xxxxxxxxxxx> wrote:
Whenever a thermal zone is in trip violated state, there is a chanceYou seem to be arguing that disabling a thermal zone should prevent it
that the same thermal zone mode can be disabled either via thermal
core API or via thermal zone sysfs. Once it is disabled, the framework
bails out any re-evaluation of thermal zone. It leads to a case where
if it is already in mitigation state, it will stay the same state
until it is re-enabled.
from throttling anything, which is reasonable, but I'm not sure if the
change below is sufficient for that.
To avoid above mentioned issue, on thermal zone disable requestThis can be declared in the block in which it is used.
reset thermal zone and clear mitigation for each trip explicitly.
Signed-off-by: Manaf Meethalavalappu Pallikunhi <quic_manafm@xxxxxxxxxxx>
---
drivers/thermal/thermal_core.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 51374f4..5f4e35b 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -427,6 +427,7 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode)
{
int ret = 0;
+ int trip;
Sure will update in next version
mutex_lock(&tz->lock);The coding style asks for braces here if they are used after the else.
@@ -449,8 +450,14 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
if (mode == THERMAL_DEVICE_ENABLED)
thermal_notify_tz_enable(tz->id);So I'm not sure if this makes the throttling go away in all cases (eg.
- else
+ else {
+ /* make sure all previous throttlings are cleared */
+ thermal_zone_device_init(tz);
+ for (trip = 0; trip < tz->trips; trip++)
+ handle_thermal_trip(tz, trip);
what if the current temperature is still above the given trip at this
point?).
+
thermal_notify_tz_disable(tz->id);
+ }
return ret;
}