All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] riscv: Do not save the scratch CSR during suspend
@ 2024-03-12 19:56 ` Samuel Holland
  0 siblings, 0 replies; 12+ messages in thread
From: Samuel Holland @ 2024-03-12 19:56 UTC (permalink / raw)
  To: Palmer Dabbelt, linux-riscv
  Cc: Samuel Holland, Albert Ou, Andrew Jones, Conor Dooley,
	Ley Foon Tan, Paul Walmsley, Pavel Machek, Rafael J. Wysocki,
	Sia Jee Heng, linux-kernel, linux-pm

While the processor is executing kernel code, the value of the scratch
CSR is always zero, so there is no need to save the value. Continue to
write the CSR during the resume flow, so we do not rely on firmware to
initialize it.

Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
---

 arch/riscv/include/asm/suspend.h | 1 -
 arch/riscv/kernel/suspend.c      | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/riscv/include/asm/suspend.h b/arch/riscv/include/asm/suspend.h
index 491296a335d0..6569eefacf38 100644
--- a/arch/riscv/include/asm/suspend.h
+++ b/arch/riscv/include/asm/suspend.h
@@ -13,7 +13,6 @@ struct suspend_context {
 	/* Saved and restored by low-level functions */
 	struct pt_regs regs;
 	/* Saved and restored by high-level functions */
-	unsigned long scratch;
 	unsigned long envcfg;
 	unsigned long tvec;
 	unsigned long ie;
diff --git a/arch/riscv/kernel/suspend.c b/arch/riscv/kernel/suspend.c
index 299795341e8a..3d306d8a253d 100644
--- a/arch/riscv/kernel/suspend.c
+++ b/arch/riscv/kernel/suspend.c
@@ -14,7 +14,6 @@
 
 void suspend_save_csrs(struct suspend_context *context)
 {
-	context->scratch = csr_read(CSR_SCRATCH);
 	if (riscv_cpu_has_extension_unlikely(smp_processor_id(), RISCV_ISA_EXT_XLINUXENVCFG))
 		context->envcfg = csr_read(CSR_ENVCFG);
 	context->tvec = csr_read(CSR_TVEC);
@@ -37,7 +36,7 @@ void suspend_save_csrs(struct suspend_context *context)
 
 void suspend_restore_csrs(struct suspend_context *context)
 {
-	csr_write(CSR_SCRATCH, context->scratch);
+	csr_write(CSR_SCRATCH, 0);
 	if (riscv_cpu_has_extension_unlikely(smp_processor_id(), RISCV_ISA_EXT_XLINUXENVCFG))
 		csr_write(CSR_ENVCFG, context->envcfg);
 	csr_write(CSR_TVEC, context->tvec);
-- 
2.43.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-04-10 14:20 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-12 19:56 [PATCH] riscv: Do not save the scratch CSR during suspend Samuel Holland
2024-03-12 19:56 ` Samuel Holland
2024-03-13  8:44 ` Andrew Jones
2024-03-13  8:44   ` Andrew Jones
2024-03-15  4:55 ` JeeHeng Sia
2024-03-15  4:55   ` JeeHeng Sia
2024-03-21 23:51   ` Samuel Holland
2024-03-21 23:51     ` Samuel Holland
2024-04-09 19:43     ` Palmer Dabbelt
2024-04-09 19:43       ` Palmer Dabbelt
2024-04-10 14:20 ` patchwork-bot+linux-riscv
2024-04-10 14:20   ` patchwork-bot+linux-riscv

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.