PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1
Tony Lindgren
tony at atomide.com
Wed Feb 3 09:22:22 PST 2016
* Rafael J. Wysocki <rafael at kernel.org> [160203 09:19]:
> On Wed, Feb 3, 2016 at 12:46 AM, Tony Lindgren <tony at atomide.com> wrote:
> > * Alan Stern <stern at rowland.harvard.edu> [160202 13:46]:
> >> On Tue, 2 Feb 2016, Tony Lindgren wrote:
> >>
> >> > > Also, what is autosuspend_delay set to for your device? And is
> >> > > runtime_auto set?
> >> >
> >> > It's 100 at that point, see the commented snippet below from
> >> > omap_hsmmc_probe():
> >> >
> >> > pm_runtime_enable(host->dev);
> >> > pm_runtime_get_sync(host->dev);
> >> > pm_runtime_set_autosuspend_delay(host->dev, MMC_AUTOSUSPEND_DELAY);
> >> > /* NOTE: pm_runtime_dont_use_autosuspend(host->dev) needed here? */
> >> > pm_runtime_use_autosuspend(host->dev);
> >> > ...
> >> > /* gets -EPROBE_DEFER */
> >> > err_irq:
> >> > ...
> >> > pm_runtime_put_sync(host->dev);
> >>
> >> You could try changing this to pm_runtime_put_sync_suspend(). But
> >> putting pm_runtime_dont_use_autosuspend() before the put_sync seems
> >> like a perfectly reasonable thing to do, especially if you feel you
> >> should reverse all the changes you made at the start.
>
> FWIW, I'd call pm_runtime_dont_use_autosuspend() before put_sync().
>
> After all, the driver doesn't want to use autosuspend going forward,
> so stating that explicitly looks like the right thing to do.
Yeah agreed. FYI, this is what I typed up here into a commit message:
1. For sections of code that needs the device disabled, use
pm_runtime_put_sync_suspend() if pm_runtime_set_autosuspend() has
been set.
2. For driver exit code, use pm_runtime_dont_use_autosuspend() before
pm_runtime_put_sync() if pm_runtime_use_autosuspend() has been
set.
Regards,
Tony
More information about the linux-arm-kernel
mailing list