powerpc/powernv: Make it possible to skip the IRQHAPPENED check in power7_nap()
To support split core we need to be able to force all secondaries into nap, so the core can detect they are idle and do an unsplit. Currently power7_nap() will return without napping if there is an irq pending. We want to ignore the pending irq and nap anyway, we will deal with the interrupt later. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
441c19c8a2
commit
8d6f7c5aa3
@@ -39,6 +39,10 @@
|
||||
* Pass requested state in r3:
|
||||
* 0 - nap
|
||||
* 1 - sleep
|
||||
*
|
||||
* To check IRQ_HAPPENED in r4
|
||||
* 0 - don't check
|
||||
* 1 - check
|
||||
*/
|
||||
_GLOBAL(power7_powersave_common)
|
||||
/* Use r3 to pass state nap/sleep/winkle */
|
||||
@@ -71,6 +75,8 @@ _GLOBAL(power7_powersave_common)
|
||||
lbz r0,PACAIRQHAPPENED(r13)
|
||||
cmpwi cr0,r0,0
|
||||
beq 1f
|
||||
cmpwi cr0,r4,0
|
||||
beq 1f
|
||||
addi r1,r1,INT_FRAME_SIZE
|
||||
ld r0,16(r1)
|
||||
mtlr r0
|
||||
@@ -114,15 +120,18 @@ _GLOBAL(power7_idle)
|
||||
lwz r4,ADDROFF(powersave_nap)(r3)
|
||||
cmpwi 0,r4,0
|
||||
beqlr
|
||||
li r3, 1
|
||||
/* fall through */
|
||||
|
||||
_GLOBAL(power7_nap)
|
||||
mr r4,r3
|
||||
li r3,0
|
||||
b power7_powersave_common
|
||||
/* No return */
|
||||
|
||||
_GLOBAL(power7_sleep)
|
||||
li r3,1
|
||||
li r4,0
|
||||
b power7_powersave_common
|
||||
/* No return */
|
||||
|
||||
|
Reference in New Issue
Block a user