Message ID | 20230619-topic-sc8280xp-idle-v1-0-35a8b98451d0@linaro.org |
---|---|
Headers | show |
Series | Fix up SC8280XP idle states | expand |
On 19.06.2023 18:18, Konrad Dybcio wrote: > Apart from a total LLCC + APSS power collapse, SC8280XP can also put > either the DSU rail (CPU + L3), or VDD_CX in power collapse. > > Add support for these lower idle states to allow more flexibility. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > --- > arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > index ac0596dfdbc4..d524f851cb53 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > @@ -285,7 +285,23 @@ BIG_CPU_SLEEP_0: cpu-sleep-1-0 { > }; > > domain-idle-states { > - CLUSTER_SLEEP_0: cluster-sleep-0 { > + CLUSTER_SLEEP_L3_PC: cluster-sleep-0 { I guess this is misleading. cluster-sleep-0 would be APSS_OFF (cores and caches have no power) cluster-sleep-1 is ok (the CX rail is 0.0W) cluster-sleep-2 would be AOSS_SLEEP (a.k.a. we've entered the SLEEP state within RPMh and the system needs to be woken up by PDC) Konrad > + compatible = "domain-idle-state"; > + arm,psci-suspend-param = <0x41000044>; > + entry-latency-us = <2752>; > + exit-latency-us = <3048>; > + min-residency-us = <6118>; > + }; > + > + CLUSTER_SLEEP_CX_OFF: cluster-sleep-1 { > + compatible = "domain-idle-state"; > + arm,psci-suspend-param = <0x41002344>; > + entry-latency-us = <3263>; > + exit-latency-us = <4562>; > + min-residency-us = <8467>; > + }; > + > + CLUSTER_SLEEP_APSS_OFF: cluster-sleep-2 { > compatible = "domain-idle-state"; > arm,psci-suspend-param = <0x4100c344>; > entry-latency-us = <3263>; > @@ -632,7 +648,7 @@ CPU_PD7: power-domain-cpu7 { > > CLUSTER_PD: power-domain-cpu-cluster0 { > #power-domain-cells = <0>; > - domain-idle-states = <&CLUSTER_SLEEP_0>; > + domain-idle-states = <&CLUSTER_SLEEP_L3_PC &CLUSTER_SLEEP_CX_OFF &CLUSTER_SLEEP_APSS_OFF>; > }; > }; > >
Comparing the data available in the downstream sources with what's there upstream, it was easy to spot some differences. This series aligns what we have upstream with what is there on the vendor kernel. The big asterisk there is that the downstream sources for SC8280XP can't always be trusted. A simple test shows that the lower idle states that were previously missing are implemented in the firmware (Linux reports no errors and enters them). HOWEVER The only cluster idle state that's been present until now (the deepest one) is now barely used if at all, as the scheduler seems to deem it inefficient or so. Hence, a request for testing and comments, especially from those who use the X13s daily or have reliable setup to measure the power usage. Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> --- Konrad Dybcio (3): arm64: dts: qcom: sc8280xp: Add lower cluster idle states arm64: dts: qcom: sc8280xp: Add missing CPU idle states arm64: dts: qcom: sc8280xp: Fix up idle state periods arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 72 +++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 18 deletions(-) --- base-commit: 47045630bc409ce6606d97b790895210dd1d517d change-id: 20230619-topic-sc8280xp-idle-00fc007234c8 Best regards,