* Already running: If it is shared get the other
* CPU to go looking for our mystery interrupt too
*/
- if (desc->action && (desc->action->flags & SA_SHIRQ))
+ if (desc->action && (desc->action->flags & IRQF_SHARED))
desc->status |= IRQ_PENDING;
spin_unlock(&desc->lock);
continue;
while (action) {
/* Only shared IRQ handlers are safe to call */
- if (action->flags & SA_SHIRQ) {
+ if (action->flags & IRQF_SHARED) {
if (action->handler(i, action->dev_id, regs) ==
IRQ_HANDLED)
ok = 1;
* If we did actual work for the real IRQ line we must let the
* IRQ controller clean up too
*/
- if (work)
+ if (work && desc->chip && desc->chip->end)
desc->chip->end(i);
spin_unlock(&desc->lock);
}
*/
printk(KERN_EMERG "Disabling IRQ #%d\n", irq);
desc->status |= IRQ_DISABLED;
+ desc->depth = 1;
desc->chip->disable(irq);
}
desc->irqs_unhandled = 0;