irq: Handle spurios irq detection for threaded irqs
authorSebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tue, 31 May 2011 06:56:11 +0000 (08:56 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 3 Jun 2011 12:53:15 +0000 (14:53 +0200)
commit3a43e05f4d0600e906fa09f4a65d749288c44592
treeb99732c8f459e70078c7dd90f62a5174376e3c62
parentef26f20cd117eb3c185038ed7cbf7b235575751d
irq: Handle spurios irq detection for threaded irqs

The detection of spurios interrupts is currently limited to first level
handler. In force-threaded mode we never notice if the threaded irq does
not feel responsible.
This patch catches the return value of the threaded handler and forwards
it to the spurious detector. If the primary handler returns only
IRQ_WAKE_THREAD then the spourious detector ignores it because it gets
called again from the threaded handler.

[ tglx: Report the erroneous return value early and bail out ]

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Link: http://lkml.kernel.org/r/1306824972-27067-2-git-send-email-sebastian@breakpoint.cc
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/irqreturn.h
kernel/irq/handle.c
kernel/irq/manage.c
kernel/irq/spurious.c