Michal Suchanek 144258
From 5f6665e400569de479733677e77862542aebb6cc Mon Sep 17 00:00:00 2001
Michal Suchanek 144258
From: Nathan Lynch <nathanl@linux.ibm.com>
Michal Suchanek 144258
Date: Mon, 7 Dec 2020 15:51:48 -0600
Michal Suchanek 144258
Subject: [PATCH] powerpc/rtas: remove rtas_ibm_suspend_me_unsafe()
Michal Suchanek 144258
Michal Suchanek 144258
References: bsc#1181674 ltc#189159
Michal Suchanek 144258
Patch-mainline: v5.11-rc1
Michal Suchanek 144258
Git-commit: 5f6665e400569de479733677e77862542aebb6cc
Michal Suchanek 144258
Michal Suchanek 144258
rtas_ibm_suspend_me_unsafe() is now unused; remove it and
Michal Suchanek 144258
rtas_percpu_suspend_me() which becomes unused as a result.
Michal Suchanek 144258
Michal Suchanek 144258
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Michal Suchanek 144258
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Michal Suchanek 144258
Link: https://lore.kernel.org/r/20201207215200.1785968-17-nathanl@linux.ibm.com
Michal Suchanek 144258
Acked-by: Michal Suchanek <msuchanek@suse.de>
Michal Suchanek 144258
---
Michal Suchanek 144258
 arch/powerpc/include/asm/rtas.h |  1 -
Michal Suchanek 144258
 arch/powerpc/kernel/rtas.c      | 67 +--------------------------------
Michal Suchanek 144258
 2 files changed, 1 insertion(+), 67 deletions(-)
Michal Suchanek 144258
Michal Suchanek 144258
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
Michal Suchanek 144258
index 3b52d8574fcc..9a6107ffe378 100644
Michal Suchanek 144258
--- a/arch/powerpc/include/asm/rtas.h
Michal Suchanek 144258
+++ b/arch/powerpc/include/asm/rtas.h
Michal Suchanek 144258
@@ -258,7 +258,6 @@ extern int rtas_set_indicator_fast(int indicator, int index, int new_value);
Michal Suchanek 144258
 extern void rtas_progress(char *s, unsigned short hex);
Michal Suchanek 144258
 extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data);
Michal Suchanek 144258
 extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data);
Michal Suchanek 144258
-int rtas_ibm_suspend_me_unsafe(u64 handle);
Michal Suchanek 144258
 int rtas_ibm_suspend_me(int *fw_status);
Michal Suchanek 144258
 
Michal Suchanek 144258
 struct rtc_time;
Michal Suchanek 144258
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
Michal Suchanek 144258
--- a/arch/powerpc/kernel/rtas.c
Michal Suchanek 144258
+++ b/arch/powerpc/kernel/rtas.c
Michal Suchanek 144258
@@ -923,73 +923,7 @@ int rtas_suspend_cpu(struct rtas_suspend
Michal Suchanek 144258
 {
Michal Suchanek 144258
 	return __rtas_suspend_cpu(data, 0);
Michal Suchanek 144258
 }
Michal Suchanek 144258
-
Michal Suchanek 144258
-static void rtas_percpu_suspend_me(void *info)
Michal Suchanek 144258
-{
Michal Suchanek 144258
-	__rtas_suspend_cpu((struct rtas_suspend_me_data *)info, 1);
Michal Suchanek 144258
-}
Michal Suchanek 144258
-
Michal Suchanek 144258
-int rtas_ibm_suspend_me_unsafe(u64 handle)
Michal Suchanek 144258
-{
Michal Suchanek 144258
-	long state;
Michal Suchanek 144258
-	long rc;
Michal Suchanek 144258
-	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
Michal Suchanek 144258
-	struct rtas_suspend_me_data data;
Michal Suchanek 144258
-	DECLARE_COMPLETION_ONSTACK(done);
Michal Suchanek 144258
-
Michal Suchanek 144258
-	if (!rtas_service_present("ibm,suspend-me"))
Michal Suchanek 144258
-		return -ENOSYS;
Michal Suchanek 144258
-
Michal Suchanek 144258
-	/* Make sure the state is valid */
Michal Suchanek 144258
-	rc = plpar_hcall(H_VASI_STATE, retbuf, handle);
Michal Suchanek 144258
-
Michal Suchanek 144258
-	state = retbuf[0];
Michal Suchanek 144258
-
Michal Suchanek 144258
-	if (rc) {
Michal Suchanek 144258
-		printk(KERN_ERR "rtas_ibm_suspend_me: vasi_state returned %ld\n",rc);
Michal Suchanek 144258
-		return rc;
Michal Suchanek 144258
-	} else if (state == H_VASI_ENABLED) {
Michal Suchanek 144258
-		return -EAGAIN;
Michal Suchanek 144258
-	} else if (state != H_VASI_SUSPENDING) {
Michal Suchanek 144258
-		printk(KERN_ERR "rtas_ibm_suspend_me: vasi_state returned state %ld\n",
Michal Suchanek 144258
-		       state);
Michal Suchanek 144258
-		return -EIO;
Michal Suchanek 144258
-	}
Michal Suchanek 144258
-
Michal Suchanek 144258
-	atomic_set(&data.working, 0);
Michal Suchanek 144258
-	atomic_set(&data.done, 0);
Michal Suchanek 144258
-	atomic_set(&data.error, 0);
Michal Suchanek 144258
-	data.token = rtas_token("ibm,suspend-me");
Michal Suchanek 144258
-	data.complete = &don;;
Michal Suchanek 144258
-
Michal Suchanek 144258
-	lock_device_hotplug();
Michal Suchanek 144258
-
Michal Suchanek 144258
-	cpu_hotplug_disable();
Michal Suchanek 144258
-
Michal Suchanek 144258
-	/* Call function on all CPUs.  One of us will make the
Michal Suchanek 144258
-	 * rtas call
Michal Suchanek 144258
-	 */
Michal Suchanek 144258
-	if (on_each_cpu(rtas_percpu_suspend_me, &data, 0))
Michal Suchanek 144258
-		atomic_set(&data.error, -EINVAL);
Michal Suchanek 144258
-
Michal Suchanek 144258
-	wait_for_completion(&done);
Michal Suchanek 144258
-
Michal Suchanek 144258
-	if (atomic_read(&data.error) != 0)
Michal Suchanek 144258
-		printk(KERN_ERR "Error doing global join\n");
Michal Suchanek 144258
-
Michal Suchanek 144258
-
Michal Suchanek 144258
-	cpu_hotplug_enable();
Michal Suchanek 144258
-
Michal Suchanek 144258
-	unlock_device_hotplug();
Michal Suchanek 144258
-
Michal Suchanek 144258
-	return atomic_read(&data.error);
Michal Suchanek 144258
-}
Michal Suchanek 144258
-#else /* CONFIG_PPC_PSERIES */
Michal Suchanek 144258
-int rtas_ibm_suspend_me_unsafe(u64 handle)
Michal Suchanek 144258
-{
Michal Suchanek 144258
-	return -ENOSYS;
Michal Suchanek 144258
-}
Michal Suchanek 144258
-#endif
Michal Suchanek 144258
+#endif /* CONFIG_PPC_PSERIES */
Michal Suchanek 144258
 
Michal Suchanek 144258
 /**
Michal Suchanek 144258
  * Find a specific pseries error log in an RTAS extended event log.
Michal Suchanek 144258
-- 
Michal Suchanek 144258
2.26.2
Michal Suchanek 144258