]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
riscv/purgatory: align riscv_kernel_entry
authorDaniel Maslowski <cyrevolt@googlemail.com>
Fri, 19 Jul 2024 17:04:37 +0000 (19:04 +0200)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 1 Aug 2024 14:14:34 +0000 (07:14 -0700)
When alignment handling is delegated to the kernel, everything must be
word-aligned in purgatory, since the trap handler is then set to the
kexec one. Without the alignment, hitting the exception would
ultimately crash. On other occasions, the kernel's handler would take
care of exceptions.
This has been tested on a JH7110 SoC with oreboot and its SBI delegating
unaligned access exceptions and the kernel configured to handle them.

Fixes: 736e30af583fb ("RISC-V: Add purgatory")
Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240719170437.247457-1-cyrevolt@gmail.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/purgatory/entry.S

index 5bcf3af903daa2f9fb2aaf1e57d79121bfcda988..0e6ca6d5ae4b418f1c4d99906a5ab57f10485a00 100644 (file)
@@ -7,6 +7,7 @@
  * Author: Li Zhengyu (lizhengyu3@huawei.com)
  *
  */
+#include <asm/asm.h>
 #include <linux/linkage.h>
 
 .text
@@ -34,6 +35,7 @@ SYM_CODE_END(purgatory_start)
 
 .data
 
+.align LGREG
 SYM_DATA(riscv_kernel_entry, .quad 0)
 
 .end