powerpc: Add irqtrace support for 32-bit powerpc
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 17 Jun 2009 17:43:59 +0000 (17:43 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 26 Jun 2009 04:37:27 +0000 (14:37 +1000)
commit5d38902c483881645ba16058cffaa478b81e5cfa
tree1ed21b6a245c772a6d86cac7cd8ebe566dd970bb
parent04a85d1234d7e1682a612565e663e6b760918643
powerpc: Add irqtrace support for 32-bit powerpc

Based on initial work from: Dale Farnsworth <dale@farnsworth.org>

Add the low level irq tracing hooks for 32-bit powerpc needed
to enable full lockdep functionality.

The approach taken to deal with the code in entry_32.S is that
we don't trace all the transitions of MSR:EE when we just turn
it off to peek at TI_FLAGS without races. Only when we are
calling into C code or returning from exceptions with a state
that have changed from what lockdep thinks.

There's a little bugger though: If we take an exception that
keeps interrupts enabled (such as an alignment exception) while
interrupts are enabled, we will call trace_hardirqs_on() on the
way back spurriously. Not a big deal, but to get rid of it would
require remembering in pt_regs that the exception was one of the
type that kept interrupts enabled which we don't know at this
stage. (Well, we could test all cases for regs->trap but that
sucks too much).

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Tested-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/Kconfig
arch/powerpc/include/asm/hw_irq.h
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/setup_32.c