Thread (34 messages) 34 messages, 4 authors, 2024-01-29

Re: [PATCH 2/4] arm64: dts: rockchip: enable built-in thermal monitoring on rk3588

From: Alexey Charkov <alchark@gmail.com>
Date: 2024-01-25 14:47:09
Also in: linux-devicetree, linux-rockchip, lkml

On Thu, Jan 25, 2024 at 2:02 PM Daniel Lezcano
[off-list ref] wrote:
On 25/01/2024 09:26, Alexey Charkov wrote:
quoted
On Thu, Jan 25, 2024 at 1:56 AM Daniel Lezcano
[off-list ref] wrote:
quoted
On 24/01/2024 21:30, Alexey Charkov wrote:
quoted
Include thermal zones information in device tree for rk3588 variants
There is an energy model for the CPUs. But finding out the sustainable
power may be a bit tricky. So I suggest to remove everything related to
the power allocator in this change and propose a dedicated change with
all the power configuration (which includes proper k_p* coefficients to
be set from userspace to have a flat mitigation figure).

That implies removing the "contribution" properties in this description.
Alright, I'll just drop those "contribution" properties, thanks!
quoted
Some comments below but definitively this version is close to be ok.
Yay! :)
quoted
quoted
Signed-off-by: Alexey Charkov <alchark@gmail.com>
---
   arch/arm64/boot/dts/rockchip/rk3588s.dtsi | 165 ++++++++++++++++++++++++++++++
   1 file changed, 165 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
index 36b1b7acfe6a..131b9eb21398 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
@@ -10,6 +10,7 @@
   #include <dt-bindings/reset/rockchip,rk3588-cru.h>
   #include <dt-bindings/phy/phy.h>
   #include <dt-bindings/ata/ahci.h>
+#include <dt-bindings/thermal/thermal.h>

   / {
       compatible = "rockchip,rk3588";
@@ -2228,6 +2229,170 @@ tsadc: tsadc@fec00000 {
               status = "disabled";
       };

+     thermal_zones: thermal-zones {
+             /* sensor near the center of the whole chip */
+             package_thermal: package-thermal {
+                     polling-delay-passive = <0>;
+                     polling-delay = <0>;
+                     thermal-sensors = <&tsadc 0>;
+
+                     trips {
+                             package_crit: package-crit {
+                                     temperature = <115000>;
+                                     hysteresis = <0>;
+                                     type = "critical";
+                             };
+                     };
+             };
+
+             /* sensor between A76 cores 0 and 1 */
+             bigcore0_thermal: bigcore0-thermal {
+                     polling-delay-passive = <20>;
20ms seems very short, is this value on purpose? Or just picked up
arbitrarily?
Frankly, I simply used the value that Radxa's downstream DTS sets for
my board. 100ms seem to work just as well.
quoted
If it is possible, perhaps you should profile the temperature of these
thermal zones (CPUs ones). There is a tool in
<linuxdir>/tools/thermal/thermometer to do that.

You can measure with 10ms sampling rate when running for instance
dhrystone pinned on b0 and b1, then on b2 and b3. And finally on the
small cluster.
It seems tricky to isolate the effects from just one of the CPU
clusters, as their individual thermal outputs are not that high.

For my testing I disabled the fan (but didn't remove the heatsink to
avoid wasting the thermal interface tape),
It is ok but the system will have more heat capacity and it will be
necessary to saturate it before running the tests. IOW warm up the
system by running thermal stress tests several times.
quoted
and tried loading CPUs with
stress-ng. Here are the observations:
Usually I use drhystone to thermal stress the cores (e. one minute).
Hmm, could you please point to the source package or repo to get the
version of dhrystone you use? I could only find the old shar [1] and a
Debian version with added Makefile [2], but neither seems to produce
multiple threads.

It doesn't seem to be packaged for either Gentoo or Fedora unfortunately.

Indeed, I'm getting higher thermal load (vs. stress-ng --cpu) even by
simply compiling kernel sources, although I'd expect it to wait for
memory and/or IO quite a lot.

[1] https://www.netlib.org/benchmark/dhry-c
[2] https://github.com/qris/dhrystone-deb

Thanks a lot,
Alexey

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help