OSDN Git Service

genirq: Handle pending irqs in irq_startup()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 8 Feb 2012 10:57:52 +0000 (11:57 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Mar 2012 00:34:29 +0000 (16:34 -0800)
commitfd844dabebb45631b2e99a02ee6601ca136f10bd
treec3248a0de08819d0ab23ec217936a307b35d91f1
parentb7f0787da3657100fe8fc8b3f0565b0bee341510
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>
kernel/irq/autoprobe.c
kernel/irq/chip.c
kernel/irq/internals.h
kernel/irq/manage.c