genirq: assert that irq handlers are indeed running in hardirq context
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Mon, 2 Mar 2009 15:13:32 +0000 (16:13 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 2 Mar 2009 23:05:45 +0000 (00:05 +0100)
Make sure the genirq layer handlers are indeed running handlers
in hardirq context. That is the genirq expectation and doing
anything else is broken.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <1236006812.5330.632.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/irq/handle.c

index 3aba8d12f328ec91e59f5c72217ceb0c0d2fd0a1..a2ee682bca2eee1676386d7259093f7648f5008f 100644 (file)
@@ -328,6 +328,8 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
        irqreturn_t ret, retval = IRQ_NONE;
        unsigned int status = 0;
 
+       WARN_ONCE(!in_irq(), "BUG: IRQ handler called from non-hardirq context!");
+
        if (!(action->flags & IRQF_DISABLED))
                local_irq_enable_in_hardirq();