Re: [PATCH v5] drivers: thermal: clear all mitigation when thermal zone is disabled

From: Manaf Meethalavalappu Pallikunhi
Date: Mon Feb 14 2022 - 15:05:25 EST



On 1/31/2022 12:55 PM, Lukasz Luba wrote:
Hi Manaf,

On 1/27/22 6:11 PM, Manaf Meethalavalappu Pallikunhi wrote:
Whenever a thermal zone is in trip violated state, there is a chance
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 forever.

To avoid above mentioned issue, add support to bind/unbind
governor from thermal zone during thermal zone mode change request
and clear all existing throttling in governor unbind_from_tz()
callback.

I have one use case:
This would be a bit dangerous, e.g. to switch governors while there is a
high temperature. Although, sounds reasonable to left a 'default' state
for a next governor.

I believe only way to change the governror via userspace at runtime.

Just re-evaluate thermal zone  (thermal_zone_device_update) immediately  after

thermal_zone_device_set_policy()  in same policy_store() context, isn't it good enough ?

Not sure how a "default" state  can be reverted once governor change is done.

Re-evaluating thermal zone doesn't guarantee that it will recover previous

set default state for all governors, right ?


Suggested-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
Signed-off-by: Manaf Meethalavalappu Pallikunhi <quic_manafm@xxxxxxxxxxx>
---
  drivers/thermal/gov_power_allocator.c |  3 +++
  drivers/thermal/gov_step_wise.c       | 26 ++++++++++++++++++++++++++
  drivers/thermal/thermal_core.c        | 31 +++++++++++++++++++++++++++----
  3 files changed, 56 insertions(+), 4 deletions(-)

Why only two governors need that change and not all?
Because they don't have 'bind/unbind' callbacks, then maybe we should
change that as well to make it consistent?
I will update other governors as well in v6

Regards,
Lukasz