Thread (74 messages) 74 messages, 5 authors, 2016-02-05

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

* 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help