On Wed, Feb 3, 2016 at 6:22 PM, Tony Lindgren <tony@xxxxxxxxxxx> wrote: > * Rafael J. Wysocki <rafael@xxxxxxxxxx> [160203 09:19]: >> On Wed, Feb 3, 2016 at 12:46 AM, Tony Lindgren <tony@xxxxxxxxxxx> wrote: >> > * Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> [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. Sounds reasonable to me. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html