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

PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1

From: tony@atomide.com (Tony Lindgren)
Date: 2016-02-03 17:22:22
Also in: linux-omap, linux-pm

* Rafael J. Wysocki [off-list ref] [160203 09:19]:
On Wed, Feb 3, 2016 at 12:46 AM, Tony Lindgren [off-list ref] wrote:
quoted
* Alan Stern [off-list ref] [160202 13:46]:
quoted
On Tue, 2 Feb 2016, Tony Lindgren wrote:
quoted
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help