On 10 October 2013 16:45, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 10 Oct 2013, Ulf Hansson wrote: > >> Typically the runtime idle function is triggered after resume and >> probe. Instead of immediately requesting the device to go into >> in-active state we make use of the autosuspend, if we have enabled >> it earlier. >> >> Cc: Len Brown <len.brown@xxxxxxxxx> >> Cc: Pavel Machek <pavel@xxxxxx> >> Cc: Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> >> Cc: Kevin Hilman <khilman@xxxxxxxxxx> >> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> >> Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> >> Cc: linux-pm@xxxxxxxxxxxxxxx >> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> >> --- >> drivers/mmc/core/bus.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c >> index cdca8a7..7f0e900 100644 >> --- a/drivers/mmc/core/bus.c >> +++ b/drivers/mmc/core/bus.c >> @@ -205,6 +205,12 @@ static int mmc_runtime_resume(struct device *dev) >> >> static int mmc_runtime_idle(struct device *dev) >> { >> + if (pm_runtime_autosuspend_used(dev)) { >> + pm_runtime_mark_last_busy(dev); >> + pm_runtime_autosuspend(dev); >> + return -EBUSY; >> + } >> + >> return 0; >> } > Hi Alan, Thanks for response! > I would greatly prefer to see the core rpm_idle() routine changed > instead. Currently the last line says: > > return retval ? retval : rpm_suspend(dev, rpmflags); > > The second argument to rpm_suspend should be rpmflags | RPM_AUTO. That > way, if the runtime-idle callback returns 0, we will automatically do > either a normal suspend or an autosuspend, whichever is appropriate. I know you guys, Mika and Rafael had a discussion around this feature a few month ago. Were thinking of you sending this response. :-) At that time, Rafael suggested to go ahead using similar method as I implemented here, which is also what Mika proposed for drivers/i2c/busses/i2c-designware-platdrv.c, not sure he finally sent a formal patch though. Anyway, just wanted us all to be aligned on the best way forward. I am also in favour of fixing this in the runtime PM core. How do you think we shall handle drivers that not have the runtime_idle callbacks? I guess we want to use the RPM_AUTO flag here as well? > > As an added benefit, with this change there's no need to add the > pm_runtime_autosuspend_used() function. In my patch I am also checking if I should update the last busy mark, do you mean it should be okay to do this even if not needed? > > Alan Stern > Kind regards Ulf Hansson -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html