From f445e727370d64706aa50e9b2db2948d30b4750d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 10 Nov 2024 06:01:20 +0100 Subject: [PATCH] 6.6-stable patches added patches: riscv-purgatory-align-riscv_kernel_entry.patch --- ...v-purgatory-align-riscv_kernel_entry.patch | 47 +++++++++++++++++++ queue-6.6/series | 1 + 2 files changed, 48 insertions(+) create mode 100644 queue-6.6/riscv-purgatory-align-riscv_kernel_entry.patch diff --git a/queue-6.6/riscv-purgatory-align-riscv_kernel_entry.patch b/queue-6.6/riscv-purgatory-align-riscv_kernel_entry.patch new file mode 100644 index 00000000000..88ad0f9374c --- /dev/null +++ b/queue-6.6/riscv-purgatory-align-riscv_kernel_entry.patch @@ -0,0 +1,47 @@ +From fb197c5d2fd24b9af3d4697d0cf778645846d6d5 Mon Sep 17 00:00:00 2001 +From: Daniel Maslowski +Date: Fri, 19 Jul 2024 19:04:37 +0200 +Subject: riscv/purgatory: align riscv_kernel_entry + +From: Daniel Maslowski + +commit fb197c5d2fd24b9af3d4697d0cf778645846d6d5 upstream. + +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 +Reviewed-by: Alexandre Ghiti +Link: https://lore.kernel.org/r/20240719170437.247457-1-cyrevolt@gmail.com +Signed-off-by: Palmer Dabbelt +Signed-off-by: Xiangyu Chen +Signed-off-by: Greg Kroah-Hartman +--- + arch/riscv/purgatory/entry.S | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/riscv/purgatory/entry.S ++++ b/arch/riscv/purgatory/entry.S +@@ -11,6 +11,8 @@ + .macro size, sym:req + .size \sym, . - \sym + .endm ++#include ++#include + + .text + +@@ -39,6 +41,7 @@ size purgatory_start + + .data + ++.align LGREG + .globl riscv_kernel_entry + riscv_kernel_entry: + .quad 0 diff --git a/queue-6.6/series b/queue-6.6/series index f9e007ac799..34c0eba2006 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -95,3 +95,4 @@ arm64-sve-discard-stale-cpu-state-when-handling-sve-traps.patch arm64-kconfig-make-sme-depend-on-broken-for-now.patch arm64-smccc-remove-broken-support-for-smcccv1.3-sve-discard-hint.patch btrfs-reinitialize-delayed-ref-list-after-deleting-it-from-the-list.patch +riscv-purgatory-align-riscv_kernel_entry.patch -- 2.47.2