summaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorPaul Mackerras2005-09-28 12:29:44 +0200
committerPaul Mackerras2005-09-28 12:29:44 +0200
commitbeeca08738c4c4024c81a591812bfe38f8c436c0 (patch)
tree2d668f8529c54562c13ee06f2777d0f145f92c1e /kernel/irq
parentpowerpc: Fixes to get the merged kernel to boot on powermac. (diff)
downloadkernel-qcow2-linux-beeca08738c4c4024c81a591812bfe38f8c436c0.tar.gz
kernel-qcow2-linux-beeca08738c4c4024c81a591812bfe38f8c436c0.tar.xz
kernel-qcow2-linux-beeca08738c4c4024c81a591812bfe38f8c436c0.zip
Don't call a NULL ack function in the generic IRQ code.
Some IRQ controllers don't need an ack function (e.g. OpenPIC on PPC platforms) and for them we'd rather not have the overhead of doing an indirect call to a function that does nothing. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'kernel/irq')
-rw-r--r--kernel/irq/handle.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 3ff7b925c387..51df337b37db 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -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