Re: [PATCH v2] genirq: spurious irq detection for threaded irqs

From: Thomas Gleixner
Date: Fri Mar 05 2010 - 15:18:06 EST

On Fri, 5 Mar 2010, Uwe Kleine-KÃnig wrote:

> For threaded irqs the top half returns IRQ_WAKE_THREAD. Don't treat
> that value like IRQ_HANDLED for the spurious check. Instead check the
> return value of the threaded handler to be able to detect stuck irqs
> that only have threaded handlers and no top half that can detect the
> problem.
> Signed-off-by: Uwe Kleine-KÃnig <u.kleine-koenig@xxxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxx>
> ---
> Hello,
> changed since v1:
> - use note_interrupt for the threaded handler's return value, getting rid of
> note_threaded_interrupt. The only downside is that a threaded handler
> returning IRQ_WAKE_THREAD remains uncatched now.

Well that's easy to fix.

> + if (!noirqdebug)
> + note_interrupt(action->irq, desc, action_ret);

note_interrupt(action->irq, desc,
action_ret & ~IRQ_WAKE_THREAD);