diff options
author | Akshay Adiga <akshay.adiga@linux.vnet.ibm.com> | 2018-05-23 13:47:38 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2018-05-24 05:27:16 -0500 |
commit | 34e9c3c1edb3eed02f428f9cbf97d99b3db43d4d (patch) | |
tree | 84da956ebd206ecbd57a6165dfb7aaf501625cf1 | |
parent | bb0079ea8490cbc138b9d14da30051cc0dabd381 (diff) | |
download | skiboot-34e9c3c1edb3eed02f428f9cbf97d99b3db43d4d.zip skiboot-34e9c3c1edb3eed02f428f9cbf97d99b3db43d4d.tar.gz skiboot-34e9c3c1edb3eed02f428f9cbf97d99b3db43d4d.tar.bz2 |
SLW: Remove stop1_lite and stop2_lite
stop1_lite has been removed since it adds no additional benefit
over stop0_lite. stop2_lite has been removed since currently it adds
minimal benefit over stop2. However, the benefit is eclipsed by the time
required to ungate the clocks
Moreover, Lite states don't give up the SMT resources, can potentially
have a performance impact on sibling threads.
Since current OSs (Linux) aren't smart enough to make good decisions
with these stop states, we're (temporarly) removing them from what
we expose to the OS, the idea being to bring them back in a new
DT representation so that only an OS that knows what to do will
do things with them.
Signed-off-by: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
[stewart: add to explanation]
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
-rw-r--r-- | hw/slw.c | 36 |
1 files changed, 8 insertions, 28 deletions
@@ -531,20 +531,9 @@ static struct cpu_idle_states power9_cpu_idle_states[] = { | OPAL_PM_PSSCR_ESL \ | OPAL_PM_PSSCR_EC, .pm_ctrl_reg_mask = OPAL_PM_PSSCR_MASK }, - { - .name = "stop1_lite", /* Enter stop1 with no state loss */ - .latency_ns = 4900, - .residency_ns = 49000, - .flags = 0*OPAL_PM_DEC_STOP \ - | 0*OPAL_PM_TIMEBASE_STOP \ - | 0*OPAL_PM_LOSE_USER_CONTEXT \ - | 0*OPAL_PM_LOSE_HYP_CONTEXT \ - | 0*OPAL_PM_LOSE_FULL_CONTEXT \ - | 1*OPAL_PM_STOP_INST_FAST, - .pm_ctrl_reg_val = OPAL_PM_PSSCR_RL(1) \ - | OPAL_PM_PSSCR_MTL(3) \ - | OPAL_PM_PSSCR_TR(3), - .pm_ctrl_reg_mask = OPAL_PM_PSSCR_MASK }, + + /* stop1_lite has been removed since it adds no additional benefit over stop0_lite */ + { .name = "stop1", .latency_ns = 5000, @@ -561,20 +550,11 @@ static struct cpu_idle_states power9_cpu_idle_states[] = { | OPAL_PM_PSSCR_ESL \ | OPAL_PM_PSSCR_EC, .pm_ctrl_reg_mask = OPAL_PM_PSSCR_MASK }, - { - .name = "stop2_lite", /* Enter stop2 with no state loss */ - .latency_ns = 9900, - .residency_ns = 99000, - .flags = 0*OPAL_PM_DEC_STOP \ - | 0*OPAL_PM_TIMEBASE_STOP \ - | 0*OPAL_PM_LOSE_USER_CONTEXT \ - | 0*OPAL_PM_LOSE_HYP_CONTEXT \ - | 0*OPAL_PM_LOSE_FULL_CONTEXT \ - | 1*OPAL_PM_STOP_INST_FAST, - .pm_ctrl_reg_val = OPAL_PM_PSSCR_RL(2) \ - | OPAL_PM_PSSCR_MTL(3) \ - | OPAL_PM_PSSCR_TR(3), - .pm_ctrl_reg_mask = OPAL_PM_PSSCR_MASK }, + /* + * stop2_lite has been removed since currently it adds minimal benefit over stop2. + * However, the benefit is eclipsed by the time required to ungate the clocks + */ + { .name = "stop2", .latency_ns = 10000, |