Message ID | 20250328085313.1193815-1-bjorn@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [fixes] riscv/purgatory: 4B align purgatory_start | expand |
Context | Check | Description |
---|---|---|
bjorn/pre-ci_am | success | Success |
bjorn/build-rv32-defconfig | success | build-rv32-defconfig |
bjorn/build-rv64-clang-allmodconfig | success | build-rv64-clang-allmodconfig |
bjorn/build-rv64-gcc-allmodconfig | success | build-rv64-gcc-allmodconfig |
bjorn/build-rv64-nommu-k210-defconfig | success | build-rv64-nommu-k210-defconfig |
bjorn/build-rv64-nommu-k210-virt | success | build-rv64-nommu-k210-virt |
bjorn/checkpatch | success | checkpatch |
bjorn/dtb-warn-rv64 | success | dtb-warn-rv64 |
bjorn/header-inline | success | header-inline |
bjorn/kdoc | success | kdoc |
bjorn/module-param | success | module-param |
bjorn/verify-fixes | success | verify-fixes |
bjorn/verify-signedoff | success | verify-signedoff |
Hi Björn, On 28/03/2025 09:53, Björn Töpel wrote: > From: Björn Töpel <bjorn@rivosinc.com> > > When a crashkernel is launched on RISC-V, the entry to purgatory is > done by trapping via the stvec CSR. From riscv_kexec_norelocate(): > > | ... > | /* > | * Switch to physical addressing > | * This will also trigger a jump to CSR_STVEC > | * which in this case is the address of the new > | * kernel. > | */ > | csrw CSR_STVEC, a2 > | csrw CSR_SATP, zero > > stvec requires that the address is 4B aligned, which was not the case, > e.g.: > > | Loaded purgatory at 0xffffc000 > | kexec_file: kexec_file_load: type:1, start:0xffffd232 head:0x4 flags:0x6 > > The address 0xffffd232 not 4B aligned. > > Correct by adding proper function alignment. > > With this change, crashkernels loaded with kexec-file will be able to > properly enter the purgatory. > > Fixes: 736e30af583fb ("RISC-V: Add purgatory") > Signed-off-by: Björn Töpel <bjorn@rivosinc.com> > --- > arch/riscv/purgatory/entry.S | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S > index 0e6ca6d5ae4b..c5db2f072c34 100644 > --- a/arch/riscv/purgatory/entry.S > +++ b/arch/riscv/purgatory/entry.S > @@ -12,6 +12,7 @@ > > .text > > +.align 2 > SYM_CODE_START(purgatory_start) > > lla sp, .Lstack > > base-commit: acb4f33713b9f6cadb6143f211714c343465411c Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Thanks, Alex
diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S index 0e6ca6d5ae4b..c5db2f072c34 100644 --- a/arch/riscv/purgatory/entry.S +++ b/arch/riscv/purgatory/entry.S @@ -12,6 +12,7 @@ .text +.align 2 SYM_CODE_START(purgatory_start) lla sp, .Lstack