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
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Neil Patel <neilp@nvidia.com>
Tested-by: Neil Patel <neilp@nvidia.com>
Tested-by: Steve Lin <stlin@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Steve Lin <stlin@nvidia.com>

drivers/base/power/runtime.c

index 5989487..f264a92 100644 (file)
@@ -476,8 +476,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);
        }