• Rafael J. Wysocki's avatar
    PM / Runtime: Remove idle notification after failing suspend · f71648d7
    Rafael J. Wysocki authored
    If runtime suspend of a device fails returning -EAGAIN or -EBUSY,
    which means that it's safe to try to suspend it again, the PM core
    runs the runtime idle helper function for it.  Unfortunately this may
    lead to problems, for example for PCI devices whose drivers don't
    implement the ->runtime_idle() callback, because in that case the
    PCI bus type's ->runtime_idle() always calls pm_runtime_suspend()
    for the given device.  Then, if there's an automatic idle
    notification after the driver's ->runtime_suspend() returning -EAGAIN
    or -EBUSY, it will make the suspend happen again possibly causing a
    busy loop to appear.  To avoid that, remove the idle notification
    after failing runtime suspend of a device altogether and let the
    callers of pm_runtime_suspend() repeat the operation if need be.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    f71648d7
runtime.c 32.6 KB