Rafael: It turns out that I need a pm_schedule_idle() routine. pm_schedule_suspend() just doesn't do what I want -- I need the runtime_idle() callback to be invoked when the timer expires, not runtime_suspend(). Adding the routine itself is easy enough, but the obvious way to implement it is to use dev->power.request to tell the timer function whether it should queue an idle or a suspend. This leads to a problem: It becomes impossible to queue an idle request if there's a scheduled suspend. The reason is that power.request has to remain set to indicate that a suspend should be queued when the timer expires, so it can't be changed to RPM_REQ_IDLE. One possible way around this would be to have pm_schedule_idle() completely replace pm_schedule_suspend(). This seems like a reasonable approach -- at the time of the function call we don't know what conditions will be like in the future, so when the timer expires we should check again to see if a suspend is appropriate. What do you think? Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm