powerpc/irq: Fix another case of lazy IRQ state getting out of sync
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 10 May 2012 16:12:38 +0000 (16:12 +0000)
committerVarun Wadekar <vwadekar@nvidia.com>
Fri, 18 May 2012 10:37:33 +0000 (15:37 +0530)
commitac20a0916399c63828273aa8d78b9c98322cbe70
tree5b274618eddc103fa0910c8b9a071d3ca9dee65c
parente0f398d440a74c5fcb7bc4fb4912bd46775eb0e2
powerpc/irq: Fix another case of lazy IRQ state getting out of sync

So we have another case of paca->irq_happened getting out of
sync with the HW irq state. This can happen when a perfmon
interrupt occurs while soft disabled, as it will return to a
soft disabled but hard enabled context while leaving a stale
PACA_IRQ_HARD_DIS flag set.

This patch fixes it, and also adds a test for the condition
of those flags being out of sync in arch_local_irq_restore()
when CONFIG_TRACE_IRQFLAGS is enabled.

This helps catching those gremlins faster (and so far I
can't seem see any anymore, so that's good news).

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/irq.c