aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/manage.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2012-02-08 11:57:52 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-02-29 16:34:29 -0800
commitfd844dabebb45631b2e99a02ee6601ca136f10bd (patch)
treec3248a0de08819d0ab23ec217936a307b35d91f1 /kernel/irq/manage.c
parentb7f0787da3657100fe8fc8b3f0565b0bee341510 (diff)
downloadkernel_samsung_smdk4412-fd844dabebb45631b2e99a02ee6601ca136f10bd.zip
kernel_samsung_smdk4412-fd844dabebb45631b2e99a02ee6601ca136f10bd.tar.gz
kernel_samsung_smdk4412-fd844dabebb45631b2e99a02ee6601ca136f10bd.tar.bz2
genirq: Handle pending irqs in irq_startup()
commit b4bc724e82e80478cba5fe9825b62e71ddf78757 upstream. 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> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r--kernel/irq/manage.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index a1aadab..def3406 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -1018,7 +1018,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;