summaryrefslogtreecommitdiffstats
path: root/drivers/cpuidle/cpuidle-powernv.c
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2014-06-11 07:59:27 +0200
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-06-11 09:05:12 +0200
commit9b6a68d94333cf19d4ec0f2aaf9f9eb68866630e (patch)
tree59b7dc95763f5f070ca8a8f50582cb938aeebf5a /drivers/cpuidle/cpuidle-powernv.c
parentpowerpc/powernv: Fix killed EEH event (diff)
downloadlinux-9b6a68d94333cf19d4ec0f2aaf9f9eb68866630e.tar.xz
linux-9b6a68d94333cf19d4ec0f2aaf9f9eb68866630e.zip
powerpc/cpuidle: Only clear LPCR decrementer wakeup bit on fast sleep entry
Currently when entering fastsleep we clear all LPCR PECE bits. This patch changes it to only clear the decrementer bit (ie. PECE1), which is the only bit we really need to clear here. This is needed if we want to set other wakeup causes like the PECEDH bit so we can use hypervisor doorbells on powernv. Also we no longer clear the MER bit as it should never be set in the host anyway. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/cpuidle/cpuidle-powernv.c')
-rw-r--r--drivers/cpuidle/cpuidle-powernv.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
index 719f6fb5b1c3..74f5788d50b1 100644
--- a/drivers/cpuidle/cpuidle-powernv.c
+++ b/drivers/cpuidle/cpuidle-powernv.c
@@ -73,12 +73,10 @@ static int fastsleep_loop(struct cpuidle_device *dev,
return index;
new_lpcr = old_lpcr;
- new_lpcr &= ~(LPCR_MER | LPCR_PECE); /* lpcr[mer] must be 0 */
-
- /* exit powersave upon external interrupt, but not decrementer
- * interrupt.
+ /* Do not exit powersave upon decrementer as we've setup the timer
+ * offload.
*/
- new_lpcr |= LPCR_PECE0;
+ new_lpcr &= ~LPCR_PECE1;
mtspr(SPRN_LPCR, new_lpcr);
power7_sleep();