From: Benoit Goby Date: Mon, 13 Dec 2010 23:27:06 +0000 (-0800) Subject: PM: Wait for completion of the parent resume before resuming X-Git-Tag: firefly_0821_release~9833^2~5^2~55 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1cfb26afa1528c3c148f59aa0f6764d77c02659a;p=firefly-linux-kernel-4.4.55.git PM: Wait for completion of the parent resume before resuming If the parent device is in the DPM_RESUMING state, resume might get called before the parent's resume has completed, because dpm_wait won't get called. This issue was introduced by: 3d46a3c PM: Prevent waiting forever on asynchronous resume after abort Wait for completion of the parent resume if the parent state is >= DPM_OFF or == DPM_RESUMING Change-Id: I14a4e16426f61efceaefedc7e772f53b7522b5dd Signed-off-by: Benoit Goby --- diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 17aff79bd329..4a57ecc4ead9 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -528,7 +528,8 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) TRACE_DEVICE(dev); TRACE_RESUME(0); - if (dev->parent && dev->parent->power.status >= DPM_OFF) + if (dev->parent && (dev->parent->power.status >= DPM_OFF || + dev->parent->power.status == DPM_RESUMING)) dpm_wait(dev->parent, async); device_lock(dev);