diff mbox series

[v2,4/4] arm64: dts: qcom: sdm670: add frequency profile

Message ID 20230802011548.387519-10-mailingradian@gmail.com
State Accepted
Commit 605a981e53dc226f0b654b3aa74c303e5ca7c051
Headers show
Series SDM670 CPU Frequency Scaling | expand

Commit Message

Richard Acayan Aug. 2, 2023, 1:15 a.m. UTC
Add the coefficients for the CPU frequencies to aid in frequency
scaling.

Profiling setup:
 - freqbench (https://github.com/kdrag0n/freqbench)
 - LineageOS kernel, android_kernel_google_msm-4.9
 - recommended configuration options by freqbench
 - disabled options that require clang or 32-bit compilers
 - mmc governor switched from simple_ondemand to powersave

    Frequency domains: cpu1 cpu6
    Offline CPUs: cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7
    Sampling power every 1000 ms
    Baseline power usage: 445 mW

    ===== CPU 1 =====
    Frequencies: 300 576 748 998 1209 1324 1516 1612 1708

     300:  1114     3.7 C/MHz     43 mW   11.6 J   25.8 I/mJ   269.4 s
     576:  2138     3.7 C/MHz     51 mW    7.1 J   42.2 I/mJ   140.3 s
     748:  2780     3.7 C/MHz     67 mW    7.3 J   41.3 I/mJ   107.9 s
     998:  3706     3.7 C/MHz     73 mW    5.9 J   51.1 I/mJ    80.9 s
    1209:  4490     3.7 C/MHz     86 mW    5.7 J   52.2 I/mJ    66.8 s
    1324:  4918     3.7 C/MHz     90 mW    5.5 J   54.6 I/mJ    61.0 s
    1516:  5631     3.7 C/MHz    103 mW    5.5 J   54.9 I/mJ    53.3 s
    1612:  5987     3.7 C/MHz    109 mW    5.5 J   55.0 I/mJ    50.1 s
    1708:  6344     3.7 C/MHz    126 mW    5.9 J   50.5 I/mJ    47.3 s

    ===== CPU 6 =====
    Frequencies: 300 652 825 979 1132 1363 1536 1747 1843 1996

     300:  1868     6.2 C/MHz     53 mW    8.5 J   35.2 I/mJ   160.6 s
     652:  4073     6.2 C/MHz     96 mW    7.1 J   42.4 I/mJ    73.7 s
     825:  5132     6.2 C/MHz    117 mW    6.9 J   43.7 I/mJ    58.5 s
     979:  6099     6.2 C/MHz    151 mW    7.4 J   40.4 I/mJ    49.2 s
    1132:  7071     6.2 C/MHz    207 mW    8.8 J   34.1 I/mJ    42.4 s
    1363:  8482     6.2 C/MHz    235 mW    8.3 J   36.1 I/mJ    35.4 s
    1536:  9578     6.2 C/MHz    287 mW    9.0 J   33.3 I/mJ    31.3 s
    1747: 10892     6.2 C/MHz    340 mW    9.4 J   32.0 I/mJ    27.6 s
    1843: 11471     6.2 C/MHz    368 mW    9.6 J   31.1 I/mJ    26.2 s
    1996: 12425     6.2 C/MHz    438 mW   10.6 J   28.3 I/mJ    24.2 s

Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
 arch/arm64/boot/dts/qcom/sdm670.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Konrad Dybcio Aug. 10, 2023, 8:20 p.m. UTC | #1
On 2.08.2023 03:15, Richard Acayan wrote:
> Add the coefficients for the CPU frequencies to aid in frequency
> scaling.
> 
> Profiling setup:
>  - freqbench (https://github.com/kdrag0n/freqbench)
>  - LineageOS kernel, android_kernel_google_msm-4.9
>  - recommended configuration options by freqbench
>  - disabled options that require clang or 32-bit compilers
>  - mmc governor switched from simple_ondemand to powersave
> 
>     Frequency domains: cpu1 cpu6
>     Offline CPUs: cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7
>     Sampling power every 1000 ms
>     Baseline power usage: 445 mW
> 
>     ===== CPU 1 =====
>     Frequencies: 300 576 748 998 1209 1324 1516 1612 1708
> 
>      300:  1114     3.7 C/MHz     43 mW   11.6 J   25.8 I/mJ   269.4 s
>      576:  2138     3.7 C/MHz     51 mW    7.1 J   42.2 I/mJ   140.3 s
>      748:  2780     3.7 C/MHz     67 mW    7.3 J   41.3 I/mJ   107.9 s
>      998:  3706     3.7 C/MHz     73 mW    5.9 J   51.1 I/mJ    80.9 s
>     1209:  4490     3.7 C/MHz     86 mW    5.7 J   52.2 I/mJ    66.8 s
>     1324:  4918     3.7 C/MHz     90 mW    5.5 J   54.6 I/mJ    61.0 s
>     1516:  5631     3.7 C/MHz    103 mW    5.5 J   54.9 I/mJ    53.3 s
>     1612:  5987     3.7 C/MHz    109 mW    5.5 J   55.0 I/mJ    50.1 s
>     1708:  6344     3.7 C/MHz    126 mW    5.9 J   50.5 I/mJ    47.3 s
> 
>     ===== CPU 6 =====
>     Frequencies: 300 652 825 979 1132 1363 1536 1747 1843 1996
> 
>      300:  1868     6.2 C/MHz     53 mW    8.5 J   35.2 I/mJ   160.6 s
>      652:  4073     6.2 C/MHz     96 mW    7.1 J   42.4 I/mJ    73.7 s
>      825:  5132     6.2 C/MHz    117 mW    6.9 J   43.7 I/mJ    58.5 s
>      979:  6099     6.2 C/MHz    151 mW    7.4 J   40.4 I/mJ    49.2 s
>     1132:  7071     6.2 C/MHz    207 mW    8.8 J   34.1 I/mJ    42.4 s
>     1363:  8482     6.2 C/MHz    235 mW    8.3 J   36.1 I/mJ    35.4 s
>     1536:  9578     6.2 C/MHz    287 mW    9.0 J   33.3 I/mJ    31.3 s
>     1747: 10892     6.2 C/MHz    340 mW    9.4 J   32.0 I/mJ    27.6 s
>     1843: 11471     6.2 C/MHz    368 mW    9.6 J   31.1 I/mJ    26.2 s
>     1996: 12425     6.2 C/MHz    438 mW   10.6 J   28.3 I/mJ    24.2 s
> 
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> ---
I've looked into this a bit and upstream handling of dynamic power seems
broken on qcom.. Trying to resolve this

Konrad
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sdm670.dtsi b/arch/arm64/boot/dts/qcom/sdm670.dtsi
index e1ef3fc2ace0..0ac39d3d68ca 100644
--- a/arch/arm64/boot/dts/qcom/sdm670.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670.dtsi
@@ -36,6 +36,8 @@  CPU0: cpu@0 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -61,6 +63,8 @@  CPU1: cpu@100 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x100>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -81,6 +85,8 @@  CPU2: cpu@200 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x200>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -101,6 +107,8 @@  CPU3: cpu@300 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x300>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -121,6 +129,8 @@  CPU4: cpu@400 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x400>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -141,6 +151,8 @@  CPU5: cpu@500 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x500>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <610>;
+			dynamic-power-coefficient = <203>;
 			qcom,freq-domain = <&cpufreq_hw 0>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -161,6 +173,8 @@  CPU6: cpu@600 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x600>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <1024>;
+			dynamic-power-coefficient = <393>;
 			qcom,freq-domain = <&cpufreq_hw 1>;
 			operating-points-v2 = <&cpu6_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,
@@ -181,6 +195,8 @@  CPU7: cpu@700 {
 			compatible = "qcom,kryo360";
 			reg = <0x0 0x700>;
 			enable-method = "psci";
+			capacity-dmips-mhz = <1024>;
+			dynamic-power-coefficient = <393>;
 			qcom,freq-domain = <&cpufreq_hw 1>;
 			operating-points-v2 = <&cpu6_opp_table>;
 			interconnects = <&gladiator_noc MASTER_AMPSS_M0 3 &mem_noc SLAVE_EBI_CH0 3>,