Messages in this thread | | | Date | Wed, 13 Mar 2024 09:44:18 +0100 | From | Andrew Jones <> | Subject | Re: [PATCH] riscv: Do not save the scratch CSR during suspend |
| |
On Tue, Mar 12, 2024 at 12:56:38PM -0700, Samuel Holland wrote: > 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 >
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
| |