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)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 11 May 2012 23:40:41 +0000 (09:40 +1000)
commit7c0482e3d055e5de056d3c693b821e39205b99ae
treead8d3ff6965d675c6bd255c5665deab7fba5df9f
parent4e25651b70b8d6ded7229ead8181619e121b648d
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