Re: PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1
From: Tony Lindgren <tony@atomide.com>
Date: 2016-02-01 22:29:27
Also in:
linux-arm-kernel, linux-omap
From: Tony Lindgren <tony@atomide.com>
Date: 2016-02-01 22:29:27
Also in:
linux-arm-kernel, linux-omap
* Rafael J. Wysocki [off-list ref] [160201 14:18]:
On Mon, Feb 1, 2016 at 11:06 PM, Tony Lindgren [off-list ref] wrote:quoted
--- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c@@ -1419,17 +1419,25 @@ void pm_runtime_init(struct device *dev) */ void pm_runtime_reinit(struct device *dev) { - if (!pm_runtime_enabled(dev)) { - if (dev->power.runtime_status == RPM_ACTIVE) + if (pm_runtime_enabled(dev)) + return; + + if (dev->power.runtime_status == RPM_ACTIVE) { + if (dev->power.use_autosuspend) { + __pm_runtime_use_autosuspend(dev, false); + pm_runtime_suspend(dev);This won't work, because runtime PM is disabled at this point.
Hmm right OK. It does work from idling the hardware point of view though..
What about doing this instead:
if (dev->power.use_autosuspend)
__pm_runtime_use_autosuspend(dev, false);
pm_runtime_set_suspended(dev);..while this does not work. The hardware is never idled in this case. What else does __pm_runtime_use_autosuspend() set initially that changes things here? Regards, Tony