On Thu, 4 Mar 2010, Uwe Kleine-König wrote: > -void note_interrupt(unsigned int irq, struct irq_desc *desc, > - irqreturn_t action_ret) > +void note_threaded_interrupt(unsigned int irq, struct irq_desc *desc, > + irqreturn_t action_ret) > { > if (unlikely(action_ret != IRQ_HANDLED)) { > /* > @@ -262,6 +262,19 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, > desc->irqs_unhandled = 0; > } > > +void note_interrupt(unsigned int irq, struct irq_desc *desc, > + irqreturn_t action_ret) > +{ > + if (action_ret == IRQ_WAKE_THREAD) > + /* handled in irq_thread() when the threaded handler returns */ > + return; > + > + /* don't report IRQ_WAKE_THREAD | IRQ_HANDLED as bogus return value */ > + action_ret &= ~IRQ_WAKE_THREAD; > + > + note_threaded_interrupt(irq, desc, action_ret); > +} > + We don't need an extra function for that. A simple if (action_ret & IRQ_WAKE_THREAD) return; in note_interrupt() is sufficient to cover everything. Thanks, tglx