Re: [PATCH v2 3/3] thermal/core: Fix thermal trip cross point

From: Daniel Lezcano
Date: Tue Jul 12 2022 - 09:06:30 EST


On 12/07/2022 14:40, Lukasz Luba wrote:


On 7/12/22 13:30, Daniel Lezcano wrote:
On 12/07/2022 13:29, Lukasz Luba wrote:

[ ... ]

@@ -511,8 +528,13 @@ void thermal_zone_device_update(struct thermal_zone_device *tz,
      tz->notify_event = event;
-    for (count = 0; count < tz->trips; count++)
-        handle_thermal_trip(tz, count);
+    if (tz->last_temperature <= tz->temperature) {
+        for (count = 0; count < tz->trips; count++)
+            handle_thermal_trip(tz, count);
+    } else {
+        for (count = tz->prev_trip; count >= 0; count--)
+            handle_thermal_trip(tz, count);
+    }

In general the code look good. I have one question, though:
Is it always true that these trip points coming from the DT
and parsed in thermal_of_build_thermal_zone() populated by
     for_each_child_of_node(child, gchild) {
          thermal_of_populate_trip(gchild, &tz->trips[i++]);

are always defined in right order in DT?

Hmm, that is a good question. Even if the convention is to put the trip point in the ascending order, I don't find any documentation telling it is mandatory. Given that I don't feel particularly comfortable to assume that is the case.

Perhaps, it would make more sense to build a map of indexes telling the order in the trip points and work with it instead.



Sounds a reliable way to move forward. Maybe you could just sort in the
right order those trip points in the thermal_of_build_thermal_zone()
in an additional patch to this series?
Than this patch could stay as is, because it looks go

Unfortunately, there is the manual setup as well as the ACPI.



--
<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