diff options
-rw-r--r-- | drivers/cpuidle/cpuidle-powernv.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 59372077ec7c..3442764a5293 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c | |||
@@ -60,6 +60,8 @@ static int nap_loop(struct cpuidle_device *dev, | |||
60 | return index; | 60 | return index; |
61 | } | 61 | } |
62 | 62 | ||
63 | /* Register for fastsleep only in oneshot mode of broadcast */ | ||
64 | #ifdef CONFIG_TICK_ONESHOT | ||
63 | static int fastsleep_loop(struct cpuidle_device *dev, | 65 | static int fastsleep_loop(struct cpuidle_device *dev, |
64 | struct cpuidle_driver *drv, | 66 | struct cpuidle_driver *drv, |
65 | int index) | 67 | int index) |
@@ -83,7 +85,7 @@ static int fastsleep_loop(struct cpuidle_device *dev, | |||
83 | 85 | ||
84 | return index; | 86 | return index; |
85 | } | 87 | } |
86 | 88 | #endif | |
87 | /* | 89 | /* |
88 | * States for dedicated partition case. | 90 | * States for dedicated partition case. |
89 | */ | 91 | */ |
@@ -209,7 +211,14 @@ static int powernv_add_idle_states(void) | |||
209 | powernv_states[nr_idle_states].flags = 0; | 211 | powernv_states[nr_idle_states].flags = 0; |
210 | powernv_states[nr_idle_states].target_residency = 100; | 212 | powernv_states[nr_idle_states].target_residency = 100; |
211 | powernv_states[nr_idle_states].enter = &nap_loop; | 213 | powernv_states[nr_idle_states].enter = &nap_loop; |
212 | } else if (flags[i] & OPAL_PM_SLEEP_ENABLED || | 214 | } |
215 | |||
216 | /* | ||
217 | * All cpuidle states with CPUIDLE_FLAG_TIMER_STOP set must come | ||
218 | * within this config dependency check. | ||
219 | */ | ||
220 | #ifdef CONFIG_TICK_ONESHOT | ||
221 | if (flags[i] & OPAL_PM_SLEEP_ENABLED || | ||
213 | flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) { | 222 | flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) { |
214 | /* Add FASTSLEEP state */ | 223 | /* Add FASTSLEEP state */ |
215 | strcpy(powernv_states[nr_idle_states].name, "FastSleep"); | 224 | strcpy(powernv_states[nr_idle_states].name, "FastSleep"); |
@@ -218,7 +227,7 @@ static int powernv_add_idle_states(void) | |||
218 | powernv_states[nr_idle_states].target_residency = 300000; | 227 | powernv_states[nr_idle_states].target_residency = 300000; |
219 | powernv_states[nr_idle_states].enter = &fastsleep_loop; | 228 | powernv_states[nr_idle_states].enter = &fastsleep_loop; |
220 | } | 229 | } |
221 | 230 | #endif | |
222 | powernv_states[nr_idle_states].exit_latency = | 231 | powernv_states[nr_idle_states].exit_latency = |
223 | ((unsigned int)latency_ns[i]) / 1000; | 232 | ((unsigned int)latency_ns[i]) / 1000; |
224 | 233 | ||