Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 064b021f authored by Colin Cross's avatar Colin Cross Committed by Rafael J. Wysocki
Browse files

PM / Sleep: call early resume handlers when suspend_noirq fails



Commit cf579dfb (PM / Sleep: Introduce
"late suspend" and "early resume" of devices) introduced a bug where
suspend_late handlers would be called, but if dpm_suspend_noirq returned
an error the early_resume handlers would never be called.  All devices
would end up on the dpm_late_early_list, and would never be resumed
again.

Fix it by calling dpm_resume_early when dpm_suspend_noirq returns
an error.

Signed-off-by: default avatarColin Cross <ccross@android.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 11388c87
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -989,8 +989,16 @@ static int dpm_suspend_late(pm_message_t state)
int dpm_suspend_end(pm_message_t state)
{
	int error = dpm_suspend_late(state);
	if (error)
		return error;

	error = dpm_suspend_noirq(state);
	if (error) {
		dpm_resume_early(state);
		return error;
	}

	return error ? : dpm_suspend_noirq(state);
	return 0;
}
EXPORT_SYMBOL_GPL(dpm_suspend_end);