Skip to content

Commit

Permalink
genirq: Do not consider disabled wakeup irqs
Browse files Browse the repository at this point in the history
If an wakeup interrupt has been disabled before the suspend code
disables all interrupts then we have to ignore the pending flag.

Otherwise we would abort suspend over and over as nothing clears the
pending flag because the interrupt is disabled.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: NeilBrown <neilb@suse.de>
  • Loading branch information
Thomas Gleixner committed May 4, 2012
1 parent d4dc0f9 commit 9c6079a
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion kernel/irq/pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,13 @@ int check_wakeup_irqs(void)
int irq;

for_each_irq_desc(irq, desc) {
/*
* Only interrupts which are marked as wakeup source
* and have not been disabled before the suspend check
* can abort suspend.
*/
if (irqd_is_wakeup_set(&desc->irq_data)) {
if (desc->istate & IRQS_PENDING)
if (desc->depth == 1 && desc->istate & IRQS_PENDING)
return -EBUSY;
continue;
}
Expand Down

0 comments on commit 9c6079a

Please sign in to comment.