https://bugs.freedesktop.org/show_bug.cgi?id=106447
--- Comment #15 from Thomas Martitz kugel@rockbox.org --- I investigated the commit found by git bisect a bit more, and found that the following patch (which reverts part of said commit) repairs resuming.
I can't tell the consequences, however reading the commit message suggests this part is non-critical:
While at it, make the core check pm_runtime_suspended() when setting power.direct_complete so that it doesn't need to be checked by ->prepare callbacks.
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 02a497e7c785..028c14386e5d 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -1959,9 +1959,7 @@ static int device_prepare(struct device *dev, pm_message_t state) * applies to suspend transitions, however. */ spin_lock_irq(&dev->power.lock); - dev->power.direct_complete = state.event == PM_EVENT_SUSPEND && - pm_runtime_suspended(dev) && ret > 0 && - !dev_pm_test_driver_flags(dev, DPM_FLAG_NEVER_SKIP); + dev->power.direct_complete = ret > 0 && state.event == PM_EVENT_SUSPEND; spin_unlock_irq(&dev->power.lock); return 0; }
So, what to do with this information / potential fix?