lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 29 Jan 2024 00:08:41 +0400
From: Alexey Charkov <alchark@...il.com>
To: Dragan Simic <dsimic@...jaro.org>
Cc: Rob Herring <robh+dt@...nel.org>, 
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>, Conor Dooley <conor+dt@...nel.org>, 
	Heiko Stuebner <heiko@...ech.de>, Daniel Lezcano <daniel.lezcano@...aro.org>, devicetree@...r.kernel.org, 
	linux-arm-kernel@...ts.infradead.org, linux-rockchip@...ts.infradead.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/4] arm64: dts: rockchip: enable temperature driven fan
 control on Rock 5B

On Sun, Jan 28, 2024 at 12:27 AM Dragan Simic <dsimic@...jaro.org> wrote:
>
> Hello Alexey,

Hello Dragan,

> On 2024-01-26 00:13, Dragan Simic wrote:
> > On 2024-01-24 21:30, Alexey Charkov wrote:
> >> This enables thermal monitoring on Radxa Rock 5B and links the PWM
> >> fan as an active cooling device managed automatically by the thermal
> >> subsystem, with a target SoC temperature of 55C
> >>
> >> Signed-off-by: Alexey Charkov <alchark@...il.com>
> >> ---
> >>  arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 25
> >> ++++++++++++++++++++++++-
> >>  1 file changed, 24 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> >> b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> >> index 9b7bf6cec8bd..c4c94e0b6163 100644
> >> --- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> >> +++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> >> @@ -52,7 +52,7 @@ led_rgb_b {
> >>
> >>      fan: pwm-fan {
> >>              compatible = "pwm-fan";
> >> -            cooling-levels = <0 95 145 195 255>;
> >> +            cooling-levels = <0 120 150 180 210 240 255>;
> >>              fan-supply = <&vcc5v0_sys>;
> >>              pwms = <&pwm1 0 50000 0>;
> >>              #cooling-cells = <2>;
> >> @@ -180,6 +180,25 @@ &cpu_l3 {
> >>      cpu-supply = <&vdd_cpu_lit_s0>;
> >>  };
> >>
> >> +&package_thermal {
> >> +    polling-delay = <1000>;
> >> +
> >> +    trips {
> >> +            package_fan: package-fan {
> >> +                    temperature = <55000>;
> >> +                    hysteresis = <2000>;
> >> +                    type = "active";
> >> +            };
> >> +    };
> >> +
> >> +    cooling-maps {
> >> +            map-fan {
> >> +                    trip = <&package_fan>;
> >> +                    cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> >> +            };
> >> +    };
> >> +};
> >
> > It should be better to have two new trips and two new cooling maps
> > defined, instead of having just one trip/map pair, like this:
> >
> > &package_thermal {
> >       polling-delay = <1000>;
> >
> >       trips {
> >               package_warm: package-warm {
> >                       temperature = <55000>;
> >                       hysteresis = <2000>;
> >                       type = "active";
> >               };
> >
> >               package_hot: package-hot {
> >                       temperature = <65000>;
> >                       hysteresis = <2000>;
> >                       type = "active";
> >               };
> >       };
> >
> >       cooling-maps {
> >               mapX {
> >                       trip = <&package_warm>;
> >                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
> >               };
> >
> >               mapY {
> >                       trip = <&package_hot>;
> >                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
> >               };
> >       };
> > };
> >
> > The idea behind this approach is to keep the fan spinning at the lowest
> > available speed until the package temperature reaches the second trip's
> > temperature level, at which point the fan starts ramping up.  An
> > approach
> > like this is already employed by the Pine64 RockPro64 SBC.
> >
> > This way, we'll be doing our best to keep the fan noise down;  of
> > course,
> > it will depend on the particular heatsink and fan combo how long the
> > fan
> > can be kept at the lowest speed, but we should aim at supporting as
> > many
> > different cooling setups as possible, and as well as possible, out of
> > the
> > box and with no additional tweaking required.
> >
> > Please notice "mapX" and "mapY" as the names of the additional cooling
> > maps,
> > where X and Y are simply the next lowest available indices, which is
> > pretty
> > much the usual way to name the additional cooling maps.
>
> Just checking, have you seen this?  Quite a few messages were exchanged
> on the same day, so just wanted to make sure you didn't miss this one.

Yes, thank you for pointing it out and following up.

I've been testing different setups to get my thoughts together on this
one. Long story short, your suggested setup indeed makes the system
quieter most of the time while still being safely far from hitting the
throttling threshold, though it appears that the main influence is
from the higher temperature value in the second trip (after which the
fan accelerates) rather than from the presence of the first trip and
the corresponding cooling map capped at the minimum-speed fan action.

In my observation, the system rarely crosses the 55C threshold under
partial load, and when the load is high (e.g. compiling stuff with 8
concurrent jobs) it takes ~2 seconds to go from below the first trip
point to above the second trip point, so the fan doesn't really get
the chance to stay at its leisurely first state.

So frankly I'm inclined to leave one trip point here, and simply
change its temperature threshold from 55C to 65C - just to keep it
simple.

What do you think?

Best regards,
Alexey

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ