Commit 8eb0fd3b authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

PM: sleep: Integrate suspend-to-idle with generig suspend flow



After previous changes the suspend-to-idle code flow can be
integrated more tightly with the generic system suspend code flow
by making suspend_enter() call s2idle_loop() later and removing
the direct invocations of dpm_noirq_begin(),
dpm_noirq_suspend_devices(), dpm_noirq_end(), and
dpm_noirq_resume_devices() from the latter, so do that.

This change is not expected to alter functionality.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 56b99184
Loading
Loading
Loading
Loading
+5 −16
Original line number Diff line number Diff line
@@ -119,13 +119,6 @@ static void s2idle_enter(void)

static void s2idle_loop(void)
{
	int error;

	dpm_noirq_begin();
	error = dpm_noirq_suspend_devices(PMSG_SUSPEND);
	if (error)
		goto resume;

	pm_pr_dbg("suspend-to-idle\n");

	/*
@@ -150,10 +143,6 @@ static void s2idle_loop(void)
	}

	pm_pr_dbg("resume from suspend-to-idle\n");

resume:
	dpm_noirq_resume_devices(PMSG_RESUME);
	dpm_noirq_end();
}

void s2idle_wake(void)
@@ -408,11 +397,6 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
	if (error)
		goto Devices_early_resume;

	if (state == PM_SUSPEND_TO_IDLE && pm_test_level != TEST_PLATFORM) {
		s2idle_loop();
		goto Platform_early_resume;
	}

	error = dpm_suspend_noirq(PMSG_SUSPEND);
	if (error) {
		pr_err("noirq suspend of devices failed\n");
@@ -425,6 +409,11 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
	if (suspend_test(TEST_PLATFORM))
		goto Platform_wake;

	if (state == PM_SUSPEND_TO_IDLE) {
		s2idle_loop();
		goto Platform_wake;
	}

	error = suspend_disable_secondary_cpus();
	if (error || suspend_test(TEST_CPUS))
		goto Enable_cpus;