[POWERPC] Defer processing of interrupts when the CPU wakes from sleep mode
authorPaul Mackerras <paulus@samba.org>
Wed, 14 May 2008 04:30:48 +0000 (14:30 +1000)
committerPaul Mackerras <paulus@samba.org>
Fri, 16 May 2008 13:22:28 +0000 (23:22 +1000)
commita560643e21e1ac10f7398b45111aecdd7f47a4a5
tree32cd887f782c35c60cc2a925ab4c49f762851319
parentfcff474ea5cb17ff015aa40e92ed86fede41f1e2
[POWERPC] Defer processing of interrupts when the CPU wakes from sleep mode

This provides a way to defer processing of an interrupt that wakes the
processor out of sleep mode.  On 32-bit platforms that use an
interrupt to wake the processor, we have to have interrupts enabled in
hardware at the point where we go to sleep, otherwise the processor
will never wake up.  However, because interrupts are logically
disabled at this point, we don't want to process the interrupt
straight away.

This is handled by setting the _TLF_SLEEPING flag.  When we get an
interrupt and _TLF_SLEEPING is set, we firstly clear the MSR_EE
(external interrupt enable) bit in the saved MSR value, and secondly
we then return to the address in the link register, like we do for
_TLF_NAPPING, but without actually handling the interrupt.

Note that this is handled somewhat differently on powerbooks, so this
new code will only be used on non-Apple machines.

Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/entry_32.S
include/asm-powerpc/thread_info.h