aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Lynch <nathanl@linux.ibm.com>2020-12-07 15:51:54 -0600
committerMichael Ellerman <mpe@ellerman.id.au>2020-12-08 21:41:01 +1100
commit366fb13bf13b029c4d43bf19382f7aea69bfa4b7 (patch)
treecd1a58a00d0a93f90458a275230c9b24e4c06cee
parentpowerpc/rtas: remove rtas_suspend_cpu() (diff)
downloadlinux-dev-366fb13bf13b029c4d43bf19382f7aea69bfa4b7.tar.xz
linux-dev-366fb13bf13b029c4d43bf19382f7aea69bfa4b7.zip
powerpc/pseries/hibernation: switch to rtas_ibm_suspend_me()
rtas_suspend_last_cpu() and related code perform a lot of work that isn't relevant to the hibernation workflow. All other CPUs are offline when called so there is no need to place them in H_JOIN or prod them on resume, nor is there need for retries or operations on shared state. Call the rtas_ibm_suspend_me() wrapper function directly from pseries_suspend_enter() instead of using rtas_suspend_last_cpu(). Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201207215200.1785968-23-nathanl@linux.ibm.com
-rw-r--r--arch/powerpc/platforms/pseries/suspend.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c
index 3315d698d5ab..703728cb95ec 100644
--- a/arch/powerpc/platforms/pseries/suspend.c
+++ b/arch/powerpc/platforms/pseries/suspend.c
@@ -76,11 +76,7 @@ static void pseries_suspend_enable_irqs(void)
**/
static int pseries_suspend_enter(suspend_state_t state)
{
- int rc = rtas_suspend_last_cpu(&suspend_data);
-
- atomic_set(&suspending, 0);
- atomic_set(&suspend_data.done, 1);
- return rc;
+ return rtas_ibm_suspend_me(NULL);
}
/**