PM: Need to wake_up_all when suspend fail
BH Hsieh [Mon, 13 Aug 2012 07:33:07 +0000 (15:33 +0800)]
In rpm_suspend, when suspend fail,
before going to reschedule another autosuspend,
wake_up_all is required to avoid remote wakeup
issues.

Bug 1026169
Bug 1027598
Bug 1032565

Change-Id: Ieaf9282dae59b2cb343bf01aa2ba837a8cdc39c7
Signed-off-by: BH Hsieh <bhsieh@nvidia.com>
Reviewed-on: http://git-master/r/122978
(cherry picked from commit 856f955552e8dbdf3b4a25c3eb648bcd5193cacf)
Reviewed-on: http://git-master/r/124535
Reviewed-by: Neil Patel <neilp@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Tested-by: Neil Patel <neilp@nvidia.com>
Reviewed-by: Steve Lin <stlin@nvidia.com>

drivers/base/power/runtime.c

index 3f141ea..3748973 100644 (file)
@@ -406,8 +406,10 @@ static int rpm_suspend(struct device *dev, int rpmflags)
                         * reschedule another autosuspend.
                         */
                        if ((rpmflags & RPM_AUTO) &&
-                           pm_runtime_autosuspend_expiration(dev) != 0)
+                           pm_runtime_autosuspend_expiration(dev) != 0) {
+                               wake_up_all(&dev->power.wait_queue);
                                goto repeat;
+                       }
                } else {
                        pm_runtime_cancel_pending(dev);
                }