|
@@ -117,14 +117,16 @@ fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
|
|
|
/*
|
|
|
* No locking required for CPU-local interrupts:
|
|
|
*/
|
|
|
- desc->handler->ack(irq);
|
|
|
+ if (desc->handler->ack)
|
|
|
+ desc->handler->ack(irq);
|
|
|
action_ret = handle_IRQ_event(irq, regs, desc->action);
|
|
|
desc->handler->end(irq);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
spin_lock(&desc->lock);
|
|
|
- desc->handler->ack(irq);
|
|
|
+ if (desc->handler->ack)
|
|
|
+ desc->handler->ack(irq);
|
|
|
/*
|
|
|
* REPLAY is when Linux resends an IRQ that was dropped earlier
|
|
|
* WAITING is used by probe to mark irqs that are being tested
|