diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2012-02-08 11:57:52 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2012-02-15 11:56:59 +0100 |
commit | b4bc724e82e80478cba5fe9825b62e71ddf78757 (patch) | |
tree | 81f2ba0bcbb1ac50837c1c0e5ae8b606e22d47da /kernel/irq/manage.c | |
parent | ac5637611150281f398bb7a47e3fcb69a09e7803 (diff) | |
download | op-kernel-dev-b4bc724e82e80478cba5fe9825b62e71ddf78757.zip op-kernel-dev-b4bc724e82e80478cba5fe9825b62e71ddf78757.tar.gz |
genirq: Handle pending irqs in irq_startup()
An interrupt might be pending when irq_startup() is called, but the
startup code does not invoke the resend logic. In some cases this
prevents the device from issuing another interrupt which renders the
device non functional.
Call the resend function in irq_startup() to keep things going.
Reported-and-tested-by: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index a9a9dbe..32313c0 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1027,7 +1027,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) desc->istate |= IRQS_ONESHOT; if (irq_settings_can_autoenable(desc)) - irq_startup(desc); + irq_startup(desc, true); else /* Undo nested disables: */ desc->depth = 1; |