aboutsummaryrefslogtreecommitdiff
path: root/hw/slw.c
diff options
context:
space:
mode:
authorAkshay Adiga <akshay.adiga@linux.vnet.ibm.com>2018-05-23 13:47:38 +0530
committerStewart Smith <stewart@linux.ibm.com>2018-05-24 05:27:16 -0500
commit34e9c3c1edb3eed02f428f9cbf97d99b3db43d4d (patch)
tree84da956ebd206ecbd57a6165dfb7aaf501625cf1 /hw/slw.c
parentbb0079ea8490cbc138b9d14da30051cc0dabd381 (diff)
downloadskiboot-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>
Diffstat (limited to 'hw/slw.c')
-rw-r--r--hw/slw.c36
1 files changed, 8 insertions, 28 deletions
diff --git a/hw/slw.c b/hw/slw.c
index a5e1e90..49bcd83 100644
--- a/hw/slw.c
+++ b/hw/slw.c
@@ -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,