Re: [PATCH v2 2/2] thermal: core: Add sanity check for polling_delay and passive_delay

From: Daniel Lezcano
Date: Mon Jul 08 2024 - 08:13:06 EST


On 05/07/2024 21:46, Rafael J. Wysocki wrote:
From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

If polling_delay is nonzero and passive_delay is 0, the thermal zone
will use polling except when tz->passive is nonzero, which does not make
sense.

Also if polling_delay is nonzero and passive_delay is greater than
polling_delay, the thermal zone temperature will be updated less often
when tz->passive is nonzero. This does not make sense either.

Ensure that none of the above will happen.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
---

v1 -> v2: The patch actually matches the changelog

---
drivers/thermal/thermal_core.c | 3 +++
1 file changed, 3 insertions(+)

Index: linux-pm/drivers/thermal/thermal_core.c
===================================================================
--- linux-pm.orig/drivers/thermal/thermal_core.c
+++ linux-pm/drivers/thermal/thermal_core.c
@@ -1440,6 +1440,9 @@ thermal_zone_device_register_with_trips(
td->threshold = INT_MAX;
}
+ if (polling_delay && (passive_delay > polling_delay || !passive_delay))
+ passive_delay = polling_delay;

Given this is a system misconfiguration, it would make more sense to bail out with -EINVAL. Assigning a default value in the back of the caller will never raise its attention and can make a bad configuration staying for a long time.

That said, there are configurations with a passive delay set to zero but with a non zero polling delay. For instance, a thermal zone mitigated with a fan, so active trip points are set. Another example is when there is only critical trip points for a thermal zone.

Actually there are multiple combinations with delays value which may look invalid but which are actually valid.

For example, a setup with polling_delay > 0, passive_delay = 0, active trip points, cooling map to this active trips, passive trip points without cooling map.

IMHO, it is better to do the configuration the system is asking for, even if it sounds weird


thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog