PM / sleep: Return -EBUSY from suspend_enter() on wakeup detection
authorRuchi Kandoi <kandoiruchi@google.com>
Fri, 8 May 2015 02:07:42 +0000 (19:07 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 19 May 2015 00:26:56 +0000 (02:26 +0200)
If a wakeup source is found to be pending in the last stage of
suspend after syscore suspend, then the machine won't suspend, but
suspend_enter() will return 0.  That is confusing, as wakeup detection
elsewhere causes -EBUSY to be returned from suspend_enter().

To avoid the confusion, make suspend_enter() return -EBUSY in that
case too.

Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
[ rjw: Subject and changelog ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/power/suspend.c

index 274371a71ed08f1c31d1ce44e89552aad0e86d07..53266b729fd9c785cc1f4461e0bc2a7c82aeb5a9 100644 (file)
@@ -366,6 +366,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
                        trace_suspend_resume(TPS("machine_suspend"),
                                state, false);
                        events_check_enabled = false;
+               } else if (*wakeup) {
+                       error = -EBUSY;
                }
                syscore_resume();
        }