summaryrefslogtreecommitdiffstats
path: root/kernel/irq/resend.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-05-21 20:33:19 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2012-05-21 20:33:19 -0700
commit471368557a734c6c486ee757952c902b36e7fd01 (patch)
treef192a77d2cb70b1d135e7be62418806e8c590a3e /kernel/irq/resend.c
parentcb60e3e65c1b96a4d6444a7a13dc7dd48bc15a2b (diff)
parente0d8ffd1df44518cb9ac9b1807d1f13cc100fc2f (diff)
downloadop-kernel-dev-471368557a734c6c486ee757952c902b36e7fd01.zip
op-kernel-dev-471368557a734c6c486ee757952c902b36e7fd01.tar.gz
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core irq changes from Ingo Molnar: "A collection of small fixes." By Thomas Gleixner * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: hexagon: Remove select of not longer existing Kconfig switches arm: Select core options instead of redefining them genirq: Do not consider disabled wakeup irqs genirq: Allow check_wakeup_irqs to notice level-triggered interrupts genirq: Be more informative on irq type mismatch genirq: Reject bogus threaded irq requests genirq: Streamline irq_action
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r--kernel/irq/resend.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c
index 14dd576..6454db7 100644
--- a/kernel/irq/resend.c
+++ b/kernel/irq/resend.c
@@ -58,10 +58,13 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
/*
* We do not resend level type interrupts. Level type
* interrupts are resent by hardware when they are still
- * active.
+ * active. Clear the pending bit so suspend/resume does not
+ * get confused.
*/
- if (irq_settings_is_level(desc))
+ if (irq_settings_is_level(desc)) {
+ desc->istate &= ~IRQS_PENDING;
return;
+ }
if (desc->istate & IRQS_REPLAY)
return;
if (desc->istate & IRQS_PENDING) {
OpenPOWER on IntegriCloud