PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1
Tony Lindgren
tony at atomide.com
Mon Feb 1 14:29:27 PST 2016
* Rafael J. Wysocki <rafael at kernel.org> [160201 14:18]:
> On Mon, Feb 1, 2016 at 11:06 PM, Tony Lindgren <tony at atomide.com> wrote:
> > --- 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
More information about the linux-arm-kernel
mailing list