linux/arch/powerpc
Benjamin Herrenschmidt ff3da2e093 [POWERPC] Fix iSeries hard irq enabling regression
A subtle bug sneaked into iSeries recently.  On this platform, we must
not normally clear MSR:EE (the hardware external interrupt enable)
except for short periods of time.  Taking an interrupt while
soft-disabled doesn't cause us to clear it for example.

The iSeries kernel expects to mostly run with MSR:EE enabled at all
times except in a few exception entry/exit code paths.  Thus
local_irq_enable() doesn't check if it needs to hard-enable as it
expects this to be unnecessary on iSeries.

However, hard_irq_disable() _does_ cause MSR:EE to be cleared,
including on iSeries.  A call to it was recently added to the
context switch code, thus causing interrupts to become disabled
for a long periods of time, causing the iSeries watchdog to kick
in under some circumstances and other nasty things.

This patch fixes it by making local_irq_enable() properly re-enable
MSR:EE on iSeries.  It basically removes a return statement here
to make iSeries use the same code path as everybody else.  That does
mean that we might occasionally get spurious decrementer interrupts
but I don't think that matters.

Another option would have been to make hard_irq_disable() a nop
on iSeries but I didn't like it much, in case we have good reasons
to hard-disable.

Part of the patch is fixes to make sure the hard_enabled PACA field
is properly set on iSeries as it used not to be before, since it
was mostly unused.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-04-03 22:10:34 +11:00
..
boot [POWERPC] sata_fsl: reduce compatibility to fsl,pq-sata 2008-03-31 10:27:35 -05:00
configs [POWERPC] Fix defconfigs so we dont set both GENRTC and RTCLIB 2008-03-31 11:53:46 -05:00
kernel [POWERPC] Fix iSeries hard irq enabling regression 2008-04-03 22:10:34 +11:00
lib [POWERPC] rheap: Changes config mechanism 2007-10-16 17:09:21 -06:00
math-emu [POWERPC] Fix carry bug in 128-bit unsigned integer adding 2008-01-23 19:34:21 -06:00
mm [POWERPC] Don't use 64k pages for ioremap on pSeries 2008-03-24 17:41:22 +11:00
oprofile vma_map: use proper pointer types 2008-03-30 14:20:23 -07:00
platforms powerpc/pseries/xcis: ansify 2008-03-30 14:20:24 -07:00
sysdev [POWERPC] Fix CPM2 SCC1 clock initialization. 2008-04-03 01:31:59 -05:00
xmon [POWERPC] Make setjmp/longjmp code usable outside of xmon 2008-01-25 22:52:50 +11:00
.gitignore [POWERPC] Add files build to .gitignore 2006-12-04 20:41:29 +11:00
Kconfig Kprobes: indicate kretprobe support in Kconfig 2008-03-04 16:35:11 -08:00
Kconfig.debug [POWERPC] 4xx: Base support for 440GX Taishan eval board 2007-12-23 13:13:33 -06:00
Makefile [POWERPC] Fix zImage-dtb.initrd build error 2008-03-13 10:09:26 +11:00