* [PATCH v3 0/2] arm64: dts: qcom: sm8650: rework CPU & GPU thermal zones
@ 2025-01-29 9:43 Neil Armstrong
2025-01-29 9:43 ` [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points Neil Armstrong
2025-01-29 9:43 ` [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures Neil Armstrong
0 siblings, 2 replies; 9+ messages in thread
From: Neil Armstrong @ 2025-01-29 9:43 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong
On the SM8650 platform, the dynamic clock and voltage scaling (DCVS) for
the CPUs is handled by hardware & firmware using factory and
form-factor determined parameters in order to maximize frequency while
keeping the temperature way below the junction temperature where the SoC
would experience a thermal shutdown if not permanent damages.
On the other side, the High Level Ooperating System (HLOS), like Linux,
is able to adjust the CPU and GPU frequency using the internal SoC
temperature sensors (here tsens) and it's UP/LOW interrupts, but it
effectly does the same work twice for CPU in an less effective manner.
Let's take the CPU Hardware & Firmware action in account and design the
thermal zones trip points and cooling devices mapping to use the HLOS
as a safety warant in case the platform experiences a temperature surge
to helpfully avoid a thermal shutdown and handle the scenario gracefully.
On the CPU side, the LMh hardware does the DCVS control loop, so
only keep the critical trip point that would do a software system
reboot as an emergency action to avoid the thermal shutdown.
On the GPU side, the GPU can achieve much higher temperature,
update the trip point with the downstream implementation as a
reference.
Those 2 changes optimizes the thermal management design by avoiding
concurrent thermal management, calculations & avoidable interrupts
for CPU, and allows us to use reach higher OPPs for the GPUs and
squeeze more performances in both cases.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Changes in v3:
- The GMU doesn't handle temperature, remove it from all texts, just bump the temps
- Link to v2: https://lore.kernel.org/r/20250110-topic-sm8650-thermal-cpu-idle-v2-0-5787ad79abbb@linaro.org
Changes in v2:
- Drop idle injection
- only keep critical trip points
- reword commmit msg and cover letter
- Link to v1: https://lore.kernel.org/r/20250103-topic-sm8650-thermal-cpu-idle-v1-0-faa1f011ecd9@linaro.org
---
Neil Armstrong (2):
arm64: dts: qcom: sm8650: drop cpu thermal passive trip points
arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures
arch/arm64/boot/dts/qcom/sm8650.dtsi | 228 ++++-------------------------------
1 file changed, 24 insertions(+), 204 deletions(-)
---
base-commit: 8155b4ef3466f0e289e8fcc9e6e62f3f4dceeac2
change-id: 20250103-topic-sm8650-thermal-cpu-idle-1e19181a94ed
Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points 2025-01-29 9:43 [PATCH v3 0/2] arm64: dts: qcom: sm8650: rework CPU & GPU thermal zones Neil Armstrong @ 2025-01-29 9:43 ` Neil Armstrong 2025-02-01 15:41 ` Konrad Dybcio 2025-01-29 9:43 ` [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures Neil Armstrong 1 sibling, 1 reply; 9+ messages in thread From: Neil Armstrong @ 2025-01-29 9:43 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong On the SM8650, the dynamic clock and voltage scaling (DCVS) is done in an hardware controlled loop using the LMH and EPSS blocks with constraints and OPPs programmed in the board firmware. Since the Hardware does a better job at maintaining the CPUs temperature in an acceptable range by taking in account more parameters like the die characteristics or other factory fused values, it makes no sense to try and reproduce a similar set of constraints with the Linux cpufreq thermal core. In addition, the tsens IP is responsible for monitoring the temperature across the SoC and the current settings will heavily trigger the tsens UP/LOW interrupts if the CPU temperatures reaches the hardware thermal constraints which are currently defined in the DT. And since the CPUs are not hooked in the thermal trip points, the potential interrupts and calculations are a waste of system resources. Drop the current passive trip points and only leave the critical trip point that will trigger a software system reboot before an hardware thermal shutdown in the allmost impossible case the hardware DCVS cannot handle the temperature surge. Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> --- arch/arm64/boot/dts/qcom/sm8650.dtsi | 180 ----------------------------------- 1 file changed, 180 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi index 25e47505adcb790d09f1d2726386438487255824..95509ce2713d4fcc3dbe0c5cd5827312d5681af4 100644 --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi @@ -5751,18 +5751,6 @@ cpu2-top-thermal { thermal-sensors = <&tsens0 5>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu2-critical { temperature = <110000>; hysteresis = <1000>; @@ -5775,18 +5763,6 @@ cpu2-bottom-thermal { thermal-sensors = <&tsens0 6>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu2-critical { temperature = <110000>; hysteresis = <1000>; @@ -5799,18 +5775,6 @@ cpu3-top-thermal { thermal-sensors = <&tsens0 7>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu3-critical { temperature = <110000>; hysteresis = <1000>; @@ -5823,18 +5787,6 @@ cpu3-bottom-thermal { thermal-sensors = <&tsens0 8>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu3-critical { temperature = <110000>; hysteresis = <1000>; @@ -5847,18 +5799,6 @@ cpu4-top-thermal { thermal-sensors = <&tsens0 9>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu4-critical { temperature = <110000>; hysteresis = <1000>; @@ -5871,18 +5811,6 @@ cpu4-bottom-thermal { thermal-sensors = <&tsens0 10>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu4-critical { temperature = <110000>; hysteresis = <1000>; @@ -5895,18 +5823,6 @@ cpu5-top-thermal { thermal-sensors = <&tsens0 11>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu5-critical { temperature = <110000>; hysteresis = <1000>; @@ -5919,18 +5835,6 @@ cpu5-bottom-thermal { thermal-sensors = <&tsens0 12>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu5-critical { temperature = <110000>; hysteresis = <1000>; @@ -5943,18 +5847,6 @@ cpu6-top-thermal { thermal-sensors = <&tsens0 13>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu6-critical { temperature = <110000>; hysteresis = <1000>; @@ -5967,18 +5859,6 @@ cpu6-bottom-thermal { thermal-sensors = <&tsens0 14>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu6-critical { temperature = <110000>; hysteresis = <1000>; @@ -6009,18 +5889,6 @@ cpu7-top-thermal { thermal-sensors = <&tsens1 1>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu7-critical { temperature = <110000>; hysteresis = <1000>; @@ -6033,18 +5901,6 @@ cpu7-middle-thermal { thermal-sensors = <&tsens1 2>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu7-critical { temperature = <110000>; hysteresis = <1000>; @@ -6057,18 +5913,6 @@ cpu7-bottom-thermal { thermal-sensors = <&tsens1 3>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu7-critical { temperature = <110000>; hysteresis = <1000>; @@ -6081,18 +5925,6 @@ cpu0-thermal { thermal-sensors = <&tsens1 4>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu0-critical { temperature = <110000>; hysteresis = <1000>; @@ -6105,18 +5937,6 @@ cpu1-thermal { thermal-sensors = <&tsens1 5>; trips { - trip-point0 { - temperature = <90000>; - hysteresis = <2000>; - type = "passive"; - }; - - trip-point1 { - temperature = <95000>; - hysteresis = <2000>; - type = "passive"; - }; - cpu1-critical { temperature = <110000>; hysteresis = <1000>; -- 2.34.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points 2025-01-29 9:43 ` [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points Neil Armstrong @ 2025-02-01 15:41 ` Konrad Dybcio 2025-02-03 8:23 ` Neil Armstrong 0 siblings, 1 reply; 9+ messages in thread From: Konrad Dybcio @ 2025-02-01 15:41 UTC (permalink / raw) To: Neil Armstrong, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 29.01.2025 10:43 AM, Neil Armstrong wrote: > On the SM8650, the dynamic clock and voltage scaling (DCVS) is done in an > hardware controlled loop using the LMH and EPSS blocks with constraints and > OPPs programmed in the board firmware. > > Since the Hardware does a better job at maintaining the CPUs temperature > in an acceptable range by taking in account more parameters like the die > characteristics or other factory fused values, it makes no sense to try > and reproduce a similar set of constraints with the Linux cpufreq thermal > core. > > In addition, the tsens IP is responsible for monitoring the temperature > across the SoC and the current settings will heavily trigger the tsens > UP/LOW interrupts if the CPU temperatures reaches the hardware thermal > constraints which are currently defined in the DT. And since the CPUs > are not hooked in the thermal trip points, the potential interrupts and > calculations are a waste of system resources. > > Drop the current passive trip points and only leave the critical trip > point that will trigger a software system reboot before an hardware > thermal shutdown in the allmost impossible case the hardware DCVS cannot > handle the temperature surge. > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > --- > arch/arm64/boot/dts/qcom/sm8650.dtsi | 180 ----------------------------------- > 1 file changed, 180 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi > index 25e47505adcb790d09f1d2726386438487255824..95509ce2713d4fcc3dbe0c5cd5827312d5681af4 100644 > --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi > @@ -5751,18 +5751,6 @@ cpu2-top-thermal { > thermal-sensors = <&tsens0 5>; > > trips { > - trip-point0 { > - temperature = <90000>; > - hysteresis = <2000>; > - type = "passive"; > - }; Feel free to drop polling-delay-passive from these nodes too Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points 2025-02-01 15:41 ` Konrad Dybcio @ 2025-02-03 8:23 ` Neil Armstrong 0 siblings, 0 replies; 9+ messages in thread From: Neil Armstrong @ 2025-02-03 8:23 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 01/02/2025 16:41, Konrad Dybcio wrote: > On 29.01.2025 10:43 AM, Neil Armstrong wrote: >> On the SM8650, the dynamic clock and voltage scaling (DCVS) is done in an >> hardware controlled loop using the LMH and EPSS blocks with constraints and >> OPPs programmed in the board firmware. >> >> Since the Hardware does a better job at maintaining the CPUs temperature >> in an acceptable range by taking in account more parameters like the die >> characteristics or other factory fused values, it makes no sense to try >> and reproduce a similar set of constraints with the Linux cpufreq thermal >> core. >> >> In addition, the tsens IP is responsible for monitoring the temperature >> across the SoC and the current settings will heavily trigger the tsens >> UP/LOW interrupts if the CPU temperatures reaches the hardware thermal >> constraints which are currently defined in the DT. And since the CPUs >> are not hooked in the thermal trip points, the potential interrupts and >> calculations are a waste of system resources. >> >> Drop the current passive trip points and only leave the critical trip >> point that will trigger a software system reboot before an hardware >> thermal shutdown in the allmost impossible case the hardware DCVS cannot >> handle the temperature surge. >> >> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> >> --- >> arch/arm64/boot/dts/qcom/sm8650.dtsi | 180 ----------------------------------- >> 1 file changed, 180 deletions(-) >> >> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi >> index 25e47505adcb790d09f1d2726386438487255824..95509ce2713d4fcc3dbe0c5cd5827312d5681af4 100644 >> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi >> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi >> @@ -5751,18 +5751,6 @@ cpu2-top-thermal { >> thermal-sensors = <&tsens0 5>; >> >> trips { >> - trip-point0 { >> - temperature = <90000>; >> - hysteresis = <2000>; >> - type = "passive"; >> - }; > > Feel free to drop polling-delay-passive from these nodes too Good catch Neil > > Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures 2025-01-29 9:43 [PATCH v3 0/2] arm64: dts: qcom: sm8650: rework CPU & GPU thermal zones Neil Armstrong 2025-01-29 9:43 ` [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points Neil Armstrong @ 2025-01-29 9:43 ` Neil Armstrong 2025-01-29 14:41 ` Neil Armstrong 1 sibling, 1 reply; 9+ messages in thread From: Neil Armstrong @ 2025-01-29 9:43 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU is done from the HLOS, but the GPU can achieve a much higher temperature before failing according the the reference downstream implementation. Set higher temperatures in the GPU trip points corresponding to the temperatures provided by Qualcomm in the dowstream source, much closer to the junction temperature and with a higher critical temperature trip in the case the HLOS DCVS cannot handle the temperature surge. Fixes: 497624ed5506 ("arm64: dts: qcom: sm8650: Throttle the GPU when overheating") Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> --- arch/arm64/boot/dts/qcom/sm8650.dtsi | 48 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi index 95509ce2713d4fcc3dbe0c5cd5827312d5681af4..e9fcf05cb084b7979ecf0f4712fed332e9f4b07a 100644 --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi @@ -6173,19 +6173,19 @@ map0 { trips { gpu0_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6206,19 +6206,19 @@ map0 { trips { gpu1_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6239,19 +6239,19 @@ map0 { trips { gpu2_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6272,19 +6272,19 @@ map0 { trips { gpu3_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6305,19 +6305,19 @@ map0 { trips { gpu4_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6338,19 +6338,19 @@ map0 { trips { gpu5_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6371,19 +6371,19 @@ map0 { trips { gpu6_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; @@ -6404,19 +6404,19 @@ map0 { trips { gpu7_alert0: trip-point0 { - temperature = <85000>; + temperature = <95000>; hysteresis = <1000>; type = "passive"; }; trip-point1 { - temperature = <90000>; + temperature = <115000>; hysteresis = <1000>; type = "hot"; }; trip-point2 { - temperature = <110000>; + temperature = <125000>; hysteresis = <1000>; type = "critical"; }; -- 2.34.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures 2025-01-29 9:43 ` [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures Neil Armstrong @ 2025-01-29 14:41 ` Neil Armstrong 2025-02-01 15:37 ` Konrad Dybcio 0 siblings, 1 reply; 9+ messages in thread From: Neil Armstrong @ 2025-01-29 14:41 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 29/01/2025 10:43, Neil Armstrong wrote: > On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU > is done from the HLOS, but the GPU can achieve a much higher temperature > before failing according the the reference downstream implementation. > > Set higher temperatures in the GPU trip points corresponding to > the temperatures provided by Qualcomm in the dowstream source, much > closer to the junction temperature and with a higher critical > temperature trip in the case the HLOS DCVS cannot handle the > temperature surge. Since the tsens MAX_THRESHOLD which leads to a system monitor thermal shutdown is set at 120C, I need to lower the critical and hot trip point, so please ignore this patchset. Thanks, Neil > > Fixes: 497624ed5506 ("arm64: dts: qcom: sm8650: Throttle the GPU when overheating") > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > --- > arch/arm64/boot/dts/qcom/sm8650.dtsi | 48 ++++++++++++++++++------------------ > 1 file changed, 24 insertions(+), 24 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi > index 95509ce2713d4fcc3dbe0c5cd5827312d5681af4..e9fcf05cb084b7979ecf0f4712fed332e9f4b07a 100644 > --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi > @@ -6173,19 +6173,19 @@ map0 { > > trips { > gpu0_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6206,19 +6206,19 @@ map0 { > > trips { > gpu1_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6239,19 +6239,19 @@ map0 { > > trips { > gpu2_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6272,19 +6272,19 @@ map0 { > > trips { > gpu3_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6305,19 +6305,19 @@ map0 { > > trips { > gpu4_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6338,19 +6338,19 @@ map0 { > > trips { > gpu5_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6371,19 +6371,19 @@ map0 { > > trips { > gpu6_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > @@ -6404,19 +6404,19 @@ map0 { > > trips { > gpu7_alert0: trip-point0 { > - temperature = <85000>; > + temperature = <95000>; > hysteresis = <1000>; > type = "passive"; > }; > > trip-point1 { > - temperature = <90000>; > + temperature = <115000>; > hysteresis = <1000>; > type = "hot"; > }; > > trip-point2 { > - temperature = <110000>; > + temperature = <125000>; > hysteresis = <1000>; > type = "critical"; > }; > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures 2025-01-29 14:41 ` Neil Armstrong @ 2025-02-01 15:37 ` Konrad Dybcio 2025-02-03 8:23 ` neil.armstrong 0 siblings, 1 reply; 9+ messages in thread From: Konrad Dybcio @ 2025-02-01 15:37 UTC (permalink / raw) To: neil.armstrong, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 29.01.2025 3:41 PM, Neil Armstrong wrote: > On 29/01/2025 10:43, Neil Armstrong wrote: >> On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU >> is done from the HLOS, but the GPU can achieve a much higher temperature >> before failing according the the reference downstream implementation. >> >> Set higher temperatures in the GPU trip points corresponding to >> the temperatures provided by Qualcomm in the dowstream source, much >> closer to the junction temperature and with a higher critical >> temperature trip in the case the HLOS DCVS cannot handle the >> temperature surge. > > Since the tsens MAX_THRESHOLD which leads to a system > monitor thermal shutdown is set at 120C, I need to lower > the critical and hot trip point, so please ignore this patchset. Should we make the "critical" trip point something like 110 or so? If LMH triggers a hard shutdown at 120, the OS will not have any time to take action. And 120 sounds like we're pushing it quite hard anyway. Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures 2025-02-01 15:37 ` Konrad Dybcio @ 2025-02-03 8:23 ` neil.armstrong 2025-02-03 13:07 ` Konrad Dybcio 0 siblings, 1 reply; 9+ messages in thread From: neil.armstrong @ 2025-02-03 8:23 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 01/02/2025 16:37, Konrad Dybcio wrote: > On 29.01.2025 3:41 PM, Neil Armstrong wrote: >> On 29/01/2025 10:43, Neil Armstrong wrote: >>> On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU >>> is done from the HLOS, but the GPU can achieve a much higher temperature >>> before failing according the the reference downstream implementation. >>> >>> Set higher temperatures in the GPU trip points corresponding to >>> the temperatures provided by Qualcomm in the dowstream source, much >>> closer to the junction temperature and with a higher critical >>> temperature trip in the case the HLOS DCVS cannot handle the >>> temperature surge. >> >> Since the tsens MAX_THRESHOLD which leads to a system >> monitor thermal shutdown is set at 120C, I need to lower >> the critical and hot trip point, so please ignore this patchset. > > Should we make the "critical" trip point something like 110 or so? If > LMH triggers a hard shutdown at 120, the OS will not have any time to > take action. And 120 sounds like we're pushing it quite hard anyway. My plan is to harmonize and use 110 for hot and 115 for critical, and if available any passive cooling devices is available at 95C Neil > > Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures 2025-02-03 8:23 ` neil.armstrong @ 2025-02-03 13:07 ` Konrad Dybcio 0 siblings, 0 replies; 9+ messages in thread From: Konrad Dybcio @ 2025-02-03 13:07 UTC (permalink / raw) To: neil.armstrong, Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel On 3.02.2025 9:23 AM, neil.armstrong@linaro.org wrote: > On 01/02/2025 16:37, Konrad Dybcio wrote: >> On 29.01.2025 3:41 PM, Neil Armstrong wrote: >>> On 29/01/2025 10:43, Neil Armstrong wrote: >>>> On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU >>>> is done from the HLOS, but the GPU can achieve a much higher temperature >>>> before failing according the the reference downstream implementation. >>>> >>>> Set higher temperatures in the GPU trip points corresponding to >>>> the temperatures provided by Qualcomm in the dowstream source, much >>>> closer to the junction temperature and with a higher critical >>>> temperature trip in the case the HLOS DCVS cannot handle the >>>> temperature surge. >>> >>> Since the tsens MAX_THRESHOLD which leads to a system >>> monitor thermal shutdown is set at 120C, I need to lower >>> the critical and hot trip point, so please ignore this patchset. >> >> Should we make the "critical" trip point something like 110 or so? If >> LMH triggers a hard shutdown at 120, the OS will not have any time to >> take action. And 120 sounds like we're pushing it quite hard anyway. > > > My plan is to harmonize and use 110 for hot and 115 for critical, and > if available any passive cooling devices is available at 95C sounds good! Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-02-03 13:07 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-01-29 9:43 [PATCH v3 0/2] arm64: dts: qcom: sm8650: rework CPU & GPU thermal zones Neil Armstrong 2025-01-29 9:43 ` [PATCH v3 1/2] arm64: dts: qcom: sm8650: drop cpu thermal passive trip points Neil Armstrong 2025-02-01 15:41 ` Konrad Dybcio 2025-02-03 8:23 ` Neil Armstrong 2025-01-29 9:43 ` [PATCH v3 2/2] arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures Neil Armstrong 2025-01-29 14:41 ` Neil Armstrong 2025-02-01 15:37 ` Konrad Dybcio 2025-02-03 8:23 ` neil.armstrong 2025-02-03 13:07 ` Konrad Dybcio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox