aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/pm.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2012-04-25 12:54:54 +0200
committerThomas Gleixner <tglx@linutronix.de>2012-05-04 23:38:50 +0200
commitd4dc0f90d243fb54cfbca6601c9a7c5a758e437f (patch)
treec868d2debe4a4f8d802ad6bbaa257bb5be83dd22 /kernel/irq/pm.c
parentgenirq: Be more informative on irq type mismatch (diff)
downloadlinux-dev-d4dc0f90d243fb54cfbca6601c9a7c5a758e437f.tar.xz
linux-dev-d4dc0f90d243fb54cfbca6601c9a7c5a758e437f.zip
genirq: Allow check_wakeup_irqs to notice level-triggered interrupts
Level triggered interrupts do not cause IRQS_PENDING to be set when they fire while "disabled" as the 'pending' state is always present in the level - they automatically refire where re-enabled. However the IRQS_PENDING flag is also used to abort a suspend cycle - if any 'is_wakeup_set' interrupt is PENDING, check_wakeup_irqs() will cause suspend to abort. Without IRQS_PENDING, suspend won't abort. Consequently, level-triggered interrupts that fire during the 'noirq' phase of suspend do not currently abort suspend. So set IRQS_PENDING even for level triggered interrupts, and make sure to clear the flag in check_irq_resend. [ Changelog by courtesy of Neil ] Tested-by: NeilBrown <neilb@suse.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq/pm.c')
0 files changed, 0 insertions, 0 deletions