Michal Suchanek 831a3a
From 366fb13bf13b029c4d43bf19382f7aea69bfa4b7 Mon Sep 17 00:00:00 2001
Michal Suchanek 831a3a
From: Nathan Lynch <nathanl@linux.ibm.com>
Michal Suchanek 831a3a
Date: Mon, 7 Dec 2020 15:51:54 -0600
Michal Suchanek 831a3a
Subject: [PATCH] powerpc/pseries/hibernation: switch to rtas_ibm_suspend_me()
Michal Suchanek 831a3a
Michal Suchanek 831a3a
References: bsc#1181674 ltc#189159
Michal Suchanek 831a3a
Patch-mainline: v5.11-rc1
Michal Suchanek 831a3a
Git-commit: 366fb13bf13b029c4d43bf19382f7aea69bfa4b7
Michal Suchanek 831a3a
Michal Suchanek 831a3a
rtas_suspend_last_cpu() and related code perform a lot of work that
Michal Suchanek 831a3a
isn't relevant to the hibernation workflow. All other CPUs are offline
Michal Suchanek 831a3a
when called so there is no need to place them in H_JOIN or prod them
Michal Suchanek 831a3a
on resume, nor is there need for retries or operations on shared
Michal Suchanek 831a3a
state.
Michal Suchanek 831a3a
Michal Suchanek 831a3a
Call the rtas_ibm_suspend_me() wrapper function directly from
Michal Suchanek 831a3a
pseries_suspend_enter() instead of using rtas_suspend_last_cpu().
Michal Suchanek 831a3a
Michal Suchanek 831a3a
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Michal Suchanek 831a3a
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Michal Suchanek 831a3a
Link: https://lore.kernel.org/r/20201207215200.1785968-23-nathanl@linux.ibm.com
Michal Suchanek 831a3a
Acked-by: Michal Suchanek <msuchanek@suse.de>
Michal Suchanek 831a3a
---
Michal Suchanek 831a3a
 arch/powerpc/platforms/pseries/suspend.c | 6 +-----
Michal Suchanek 831a3a
 1 file changed, 1 insertion(+), 5 deletions(-)
Michal Suchanek 831a3a
Michal Suchanek 831a3a
diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c
Michal Suchanek 831a3a
index 3315d698d5ab..703728cb95ec 100644
Michal Suchanek 831a3a
--- a/arch/powerpc/platforms/pseries/suspend.c
Michal Suchanek 831a3a
+++ b/arch/powerpc/platforms/pseries/suspend.c
Michal Suchanek 831a3a
@@ -76,11 +76,7 @@ static void pseries_suspend_enable_irqs(void)
Michal Suchanek 831a3a
  **/
Michal Suchanek 831a3a
 static int pseries_suspend_enter(suspend_state_t state)
Michal Suchanek 831a3a
 {
Michal Suchanek 831a3a
-	int rc = rtas_suspend_last_cpu(&suspend_data);
Michal Suchanek 831a3a
-
Michal Suchanek 831a3a
-	atomic_set(&suspending, 0);
Michal Suchanek 831a3a
-	atomic_set(&suspend_data.done, 1);
Michal Suchanek 831a3a
-	return rc;
Michal Suchanek 831a3a
+	return rtas_ibm_suspend_me(NULL);
Michal Suchanek 831a3a
 }
Michal Suchanek 831a3a
 
Michal Suchanek 831a3a
 /**
Michal Suchanek 831a3a
-- 
Michal Suchanek 831a3a
2.26.2
Michal Suchanek 831a3a