diff options
author | Jon Medhurst <tixy@linaro.org> | 2016-11-10 16:10:43 +0000 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2016-11-10 16:10:43 +0000 |
commit | 5f89b43447acb82e9843cebf7db279b4fca84559 (patch) | |
tree | 0e15eacf5745d3c634e82f3a893334e48e187eb9 | |
parent | 2d6824cc0b8e1fbe705035bcdaab552631ff38e3 (diff) | |
parent | 1ee98aaeb82fdd9499dd0b3a7f19dd0b17d9c1db (diff) |
Merge branch '4.4-armlt-juno-eas' into lsk-4.4-armltlsk-4.4-armlt-20161110
-rw-r--r-- | arch/arm64/boot/dts/arm/juno-r2.dts | 8 | ||||
-rw-r--r-- | arch/arm64/boot/dts/arm/juno-sched-energy.dtsi | 147 | ||||
-rw-r--r-- | arch/arm64/boot/dts/arm/juno.dts | 8 | ||||
-rw-r--r-- | arch/arm64/boot/dts/arm/juno_r2-sched-energy.dtsi | 139 | ||||
-rw-r--r-- | linaro/configs/EAS.conf | 6 |
5 files changed, 308 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/arm/juno-r2.dts b/arch/arm64/boot/dts/arm/juno-r2.dts index cb8ff4cd7d1e..42cac59ffe4b 100644 --- a/arch/arm64/boot/dts/arm/juno-r2.dts +++ b/arch/arm64/boot/dts/arm/juno-r2.dts @@ -93,6 +93,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <450>; + sched-energy-costs = <&CPU_COST_A72 &CLUSTER_COST_A72>; }; A72_1: cpu@1 { @@ -105,6 +106,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <450>; + sched-energy-costs = <&CPU_COST_A72 &CLUSTER_COST_A72>; }; A53_0: cpu@100 { @@ -117,6 +119,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_1: cpu@101 { @@ -129,6 +132,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_2: cpu@102 { @@ -141,6 +145,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_3: cpu@103 { @@ -153,6 +158,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A72_L2: l2-cache0 { @@ -162,6 +168,8 @@ A53_L2: l2-cache1 { compatible = "cache"; }; + + /include/ "juno_r2-sched-energy.dtsi" }; pmu_a72 { diff --git a/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi b/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi new file mode 100644 index 000000000000..38207e4391ab --- /dev/null +++ b/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi @@ -0,0 +1,147 @@ +/* + * ARM JUNO specific energy cost model data. There are no unit requirements for + * the data. Data can be normalized to any reference point, but the + * normalization must be consistent. That is, one bogo-joule/watt must be the + * same quantity for all data, but we don't care what it is. + */ + +/* static struct idle_state idle_states_cluster_a53[] = { */ +/* { .power = 56 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 56 }, /\* WFI *\/ */ +/* { .power = 56 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 17 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct idle_state idle_states_cluster_a57[] = { */ +/* { .power = 65 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 65 }, /\* WFI *\/ */ +/* { .power = 65 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 24 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_cluster_a53[] = { */ +/* /\* Power per cluster *\/ */ +/* { .cap = 235, .power = 26, }, /\* 450 MHz *\/ */ +/* { .cap = 303, .power = 30, }, /\* 575 MHz *\/ */ +/* { .cap = 368, .power = 39, }, /\* 700 MHz *\/ */ +/* { .cap = 406, .power = 47, }, /\* 775 MHz *\/ */ +/* { .cap = 447, .power = 57, }, /\* 850 Mhz *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_cluster_a57[] = { */ +/* /\* Power per cluster *\/ */ +/* { .cap = 417, .power = 24, }, /\* 450 MHz *\/ */ +/* { .cap = 579, .power = 32, }, /\* 625 MHz *\/ */ +/* { .cap = 744, .power = 43, }, /\* 800 MHz *\/ */ +/* { .cap = 883, .power = 49, }, /\* 950 MHz *\/ */ +/* { .cap = 1024, .power = 64, }, /\* 1100 MHz *\/ */ +/* }; */ + +/* static struct sched_group_energy energy_cluster_a53 = { */ +/* .nr_idle_states = ARRAY_SIZE(idle_states_cluster_a53), */ +/* .idle_states = idle_states_cluster_a53, */ +/* .nr_cap_states = ARRAY_SIZE(cap_states_cluster_a53), */ +/* .cap_states = cap_states_cluster_a53, */ +/* }; */ + +/* static struct sched_group_energy energy_cluster_a57 = { */ +/* .nr_idle_states = ARRAY_SIZE(idle_states_cluster_a57), */ +/* .idle_states = idle_states_cluster_a57, */ +/* .nr_cap_states = ARRAY_SIZE(cap_states_cluster_a57), */ +/* .cap_states = cap_states_cluster_a57, */ +/* }; */ + +/* static struct idle_state idle_states_core_a53[] = { */ +/* { .power = 6 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 6 }, /\* WFI *\/ */ +/* { .power = 0 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 0 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct idle_state idle_states_core_a57[] = { */ +/* { .power = 15 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 15 }, /\* WFI *\/ */ +/* { .power = 0 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 0 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_core_a53[] = { */ +/* /\* Power per cpu *\/ */ +/* { .cap = 235, .power = 33, }, /\* 450 MHz *\/ */ +/* { .cap = 302, .power = 46, }, /\* 575 MHz *\/ */ +/* { .cap = 368, .power = 61, }, /\* 700 MHz *\/ */ +/* { .cap = 406, .power = 76, }, /\* 775 MHz *\/ */ +/* { .cap = 447, .power = 93, }, /\* 850 Mhz *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_core_a57[] = { */ +/* /\* Power per cpu *\/ */ +/* { .cap = 417, .power = 168, }, /\* 450 MHz *\/ */ +/* { .cap = 579, .power = 251, }, /\* 625 MHz *\/ */ +/* { .cap = 744, .power = 359, }, /\* 800 MHz *\/ */ +/* { .cap = 883, .power = 479, }, /\* 950 MHz *\/ */ +/* { .cap = 1024, .power = 616, }, /\* 1100 MHz *\/ */ +/* }; */ + +energy-costs { + CPU_COST_A57: core-cost0 { + busy-cost-data = < + 417 168 + 579 251 + 744 359 + 883 479 + 1023 616 + >; + idle-cost-data = < + 15 + 15 + 0 + 0 + >; + }; + CPU_COST_A53: core-cost1 { + busy-cost-data = < + 235 33 + 302 46 + 368 61 + 406 76 + 447 93 + >; + idle-cost-data = < + 6 + 6 + 0 + 0 + >; + }; + CLUSTER_COST_A57: cluster-cost0 { + busy-cost-data = < + 417 24 + 579 32 + 744 43 + 883 49 + 1024 64 + >; + idle-cost-data = < + 65 + 65 + 65 + 24 + >; + }; + CLUSTER_COST_A53: cluster-cost1 { + busy-cost-data = < + 235 26 + 303 30 + 368 39 + 406 47 + 447 57 + >; + idle-cost-data = < + 56 + 56 + 56 + 17 + >; + }; +}; diff --git a/arch/arm64/boot/dts/arm/juno.dts b/arch/arm64/boot/dts/arm/juno.dts index 8bf4f2bba8cb..4d3336892853 100644 --- a/arch/arm64/boot/dts/arm/juno.dts +++ b/arch/arm64/boot/dts/arm/juno.dts @@ -93,6 +93,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <530>; + sched-energy-costs = <&CPU_COST_A57 &CLUSTER_COST_A57>; }; A57_1: cpu@1 { @@ -105,6 +106,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <530>; + sched-energy-costs = <&CPU_COST_A57 &CLUSTER_COST_A57>; }; A53_0: cpu@100 { @@ -117,6 +119,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_1: cpu@101 { @@ -129,6 +132,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_2: cpu@102 { @@ -141,6 +145,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_3: cpu@103 { @@ -153,6 +158,7 @@ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; #cooling-cells = <2>; dynamic-power-coefficient = <140>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A57_L2: l2-cache0 { @@ -162,6 +168,8 @@ A53_L2: l2-cache1 { compatible = "cache"; }; + + /include/ "juno-sched-energy.dtsi" }; pmu_a57 { diff --git a/arch/arm64/boot/dts/arm/juno_r2-sched-energy.dtsi b/arch/arm64/boot/dts/arm/juno_r2-sched-energy.dtsi new file mode 100644 index 000000000000..3a9c67124d49 --- /dev/null +++ b/arch/arm64/boot/dts/arm/juno_r2-sched-energy.dtsi @@ -0,0 +1,139 @@ +/* + * ARM JUNO specific energy cost model data. There are no unit requirements for + * the data. Data can be normalized to any reference point, but the + * normalization must be consistent. That is, one bogo-joule/watt must be the + * same quantity for all data, but we don't care what it is. + */ + +/* static struct idle_state idle_states_cluster_a53[] = { */ +/* { .power = 56 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 56 }, /\* WFI *\/ */ +/* { .power = 56 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 17 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct idle_state idle_states_cluster_a57[] = { */ +/* { .power = 65 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 65 }, /\* WFI *\/ */ +/* { .power = 65 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 24 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_cluster_a53[] = { */ +/* /\* Power per cluster *\/ */ +/* { .cap = 235, .power = 26, }, /\* 450 MHz *\/ */ +/* { .cap = 303, .power = 30, }, /\* 575 MHz *\/ */ +/* { .cap = 368, .power = 39, }, /\* 700 MHz *\/ */ +/* { .cap = 406, .power = 47, }, /\* 775 MHz *\/ */ +/* { .cap = 447, .power = 57, }, /\* 850 Mhz *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_cluster_a57[] = { */ +/* /\* Power per cluster *\/ */ +/* { .cap = 417, .power = 24, }, /\* 450 MHz *\/ */ +/* { .cap = 579, .power = 32, }, /\* 625 MHz *\/ */ +/* { .cap = 744, .power = 43, }, /\* 800 MHz *\/ */ +/* { .cap = 883, .power = 49, }, /\* 950 MHz *\/ */ +/* { .cap = 1024, .power = 64, }, /\* 1100 MHz *\/ */ +/* }; */ + +/* static struct sched_group_energy energy_cluster_a53 = { */ +/* .nr_idle_states = ARRAY_SIZE(idle_states_cluster_a53), */ +/* .idle_states = idle_states_cluster_a53, */ +/* .nr_cap_states = ARRAY_SIZE(cap_states_cluster_a53), */ +/* .cap_states = cap_states_cluster_a53, */ +/* }; */ + +/* static struct sched_group_energy energy_cluster_a57 = { */ +/* .nr_idle_states = ARRAY_SIZE(idle_states_cluster_a57), */ +/* .idle_states = idle_states_cluster_a57, */ +/* .nr_cap_states = ARRAY_SIZE(cap_states_cluster_a57), */ +/* .cap_states = cap_states_cluster_a57, */ +/* }; */ + +/* static struct idle_state idle_states_core_a53[] = { */ +/* { .power = 6 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 6 }, /\* WFI *\/ */ +/* { .power = 0 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 0 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct idle_state idle_states_core_a57[] = { */ +/* { .power = 15 }, /\* arch_cpu_idle() (active idle) = WFI *\/ */ +/* { .power = 15 }, /\* WFI *\/ */ +/* { .power = 0 }, /\* cpu-sleep-0 *\/ */ +/* { .power = 0 }, /\* cluster-sleep-0 *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_core_a53[] = { */ +/* /\* Power per cpu *\/ */ +/* { .cap = 235, .power = 33, }, /\* 450 MHz *\/ */ +/* { .cap = 302, .power = 46, }, /\* 575 MHz *\/ */ +/* { .cap = 368, .power = 61, }, /\* 700 MHz *\/ */ +/* { .cap = 406, .power = 76, }, /\* 775 MHz *\/ */ +/* { .cap = 447, .power = 93, }, /\* 850 Mhz *\/ */ +/* }; */ + +/* static struct capacity_state cap_states_core_a57[] = { */ +/* /\* Power per cpu *\/ */ +/* { .cap = 417, .power = 168, }, /\* 450 MHz *\/ */ +/* { .cap = 579, .power = 251, }, /\* 625 MHz *\/ */ +/* { .cap = 744, .power = 359, }, /\* 800 MHz *\/ */ +/* { .cap = 883, .power = 479, }, /\* 950 MHz *\/ */ +/* { .cap = 1024, .power = 616, }, /\* 1100 MHz *\/ */ +/* }; */ + +energy-costs { + CPU_COST_A72: core-cost0 { + busy-cost-data = < + 501 174 + 849 344 + 1023 526 + >; + idle-cost-data = < + 48 + 48 + 0 + 0 + >; + }; + CPU_COST_A53: core-cost1 { + busy-cost-data = < + 276 37 + 501 59 + 593 117 + >; + idle-cost-data = < + 33 + 33 + 0 + 0 + >; + }; + CLUSTER_COST_A72: cluster-cost0 { + busy-cost-data = < + 501 48 + 849 73 + 1024 107 + >; + idle-cost-data = < + 48 + 48 + 48 + 18 + >; + }; + CLUSTER_COST_A53: cluster-cost1 { + busy-cost-data = < + 276 41 + 501 86 + 593 107 + >; + idle-cost-data = < + 41 + 41 + 41 + 14 + >; + }; +}; diff --git a/linaro/configs/EAS.conf b/linaro/configs/EAS.conf new file mode 100644 index 000000000000..703cec3689b4 --- /dev/null +++ b/linaro/configs/EAS.conf @@ -0,0 +1,6 @@ +CONFIG_CPU_FREQ_GOV_SCHED=y +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED=y +CONFIG_SCHED_TUNE=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_SCHEDTUNE=y +CONFIG_SCHED_MC=y |