Commit 88759622 authored by Colin Cross's avatar Colin Cross Committed by Rafael J. Wysocki

PM: Reintroduce dropped call to check_wakeup_irqs

Patch 2e711c04
(PM: Remove sysdev suspend, resume and shutdown operations)
deleted sysdev_suspend(), which was being relied on to call
check_wakeup_irqs() in suspend.  If check_wakeup_irqs() is not
called, wake interrupts that are pending when suspend is
entered may be lost.  It also breaks IRQCHIP_MASK_ON_SUSPEND,
which is handled in check_wakeup_irqs().

This patch adds a call to check_wakeup_irqs() in syscore_suspend(),
similar to what was deleted in sysdev_suspend().
Signed-off-by: default avatarColin Cross <ccross@android.com>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent e3bbfa78
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/syscore_ops.h> #include <linux/syscore_ops.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/interrupt.h>
static LIST_HEAD(syscore_ops_list); static LIST_HEAD(syscore_ops_list);
static DEFINE_MUTEX(syscore_ops_lock); static DEFINE_MUTEX(syscore_ops_lock);
...@@ -48,6 +49,13 @@ int syscore_suspend(void) ...@@ -48,6 +49,13 @@ int syscore_suspend(void)
struct syscore_ops *ops; struct syscore_ops *ops;
int ret = 0; int ret = 0;
pr_debug("Checking wakeup interrupts\n");
/* Return error code if there are any wakeup interrupts pending. */
ret = check_wakeup_irqs();
if (ret)
return ret;
WARN_ONCE(!irqs_disabled(), WARN_ONCE(!irqs_disabled(),
"Interrupts enabled before system core suspend.\n"); "Interrupts enabled before system core suspend.\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment