diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index 7062798bf45284b26242c880dd5dc70c7f782abe..eb7696200a74ecee0b04d89b098a2b6516eda54f 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -252,8 +252,14 @@ static bool suspend_again(bool *drivers_resumed) if (suspend_again_consensus() && !freeze_kernel_threads()) { clear_wakeup_reasons(); - dpm_suspend_start(PMSG_SUSPEND); *drivers_resumed = false; + if (dpm_suspend_start(PMSG_SUSPEND)) { + printk(KERN_ERR "PM: Some devices failed to suspend\n"); + log_suspend_abort_reason("Some devices failed to suspend"); + if (suspend_ops->recover) + suspend_ops->recover(); + return false; + } return true; }