Message ID | 20240716204047.7649-1-cyrevolt@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] riscv/purgatory: align riscv_kernel_entry | expand |
On 16 Jul 2024, at 21:40, Daniel Maslowski <cyrevolt@googlemail.com> wrote: > > 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: 736e30af583fb6e0e2b8211b894ff99dea0f1ee7 > Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com> > --- > arch/riscv/purgatory/entry.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S > index 5bcf3af903da..0e6ca6d5ae4b 100644 > --- a/arch/riscv/purgatory/entry.S > +++ b/arch/riscv/purgatory/entry.S > @@ -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) It’s a bit weird to use LGREG for a .quad. The file is RV64-only already, anyway. Jess
On Jul 16 2024, Daniel Maslowski wrote:
> This has been tested on a JH7110 SoC with oreboot and its SBI delegating
coreboot?
On Tue, Jul 16, 2024 at 11:22:01PM +0200, Andreas Schwab wrote: > On Jul 16 2024, Daniel Maslowski wrote: > > > This has been tested on a JH7110 SoC with oreboot and its SBI delegating > > coreboot? oreboot is coreboot without the c :) https://github.com/oreboot/oreboot
On Tue, Jul 16, 2024 at 10:40:47PM +0200, Daniel Maslowski wrote: > 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: 736e30af583fb6e0e2b8211b894ff99dea0f1ee7 Should be: Fixes: 736e30af583fb ("RISC-V: Add purgatory") Regards, Matthias > Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com> > --- > arch/riscv/purgatory/entry.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S > index 5bcf3af903da..0e6ca6d5ae4b 100644 > --- a/arch/riscv/purgatory/entry.S > +++ b/arch/riscv/purgatory/entry.S > @@ -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 > -- > 2.45.2 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Hi Daniel, On 16/07/2024 22:40, Daniel Maslowski wrote: > 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: 736e30af583fb6e0e2b8211b894ff99dea0f1ee7 > Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com> > --- > arch/riscv/purgatory/entry.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S > index 5bcf3af903da..0e6ca6d5ae4b 100644 > --- a/arch/riscv/purgatory/entry.S > +++ b/arch/riscv/purgatory/entry.S > @@ -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 With the Fixes tag fixed like Matthias suggested, you can add: Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Thanks, Alex
Hi Conor, On Tue, Jul 16, 2024 at 11:38 PM Conor Dooley <conor@kernel.org> wrote: > On Tue, Jul 16, 2024 at 11:22:01PM +0200, Andreas Schwab wrote: > > On Jul 16 2024, Daniel Maslowski wrote: > > > > > This has been tested on a JH7110 SoC with oreboot and its SBI delegating > > > > coreboot? > > oreboot is coreboot without the c :) At first I thought this was just a joke about a typo... > https://github.com/oreboot/oreboot Given it's mainly written in Rust, perhaps it should have been called roreboot? Or roarboot? ;-) Gr{oetje,eeting}s, Geert
diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S index 5bcf3af903da..0e6ca6d5ae4b 100644 --- a/arch/riscv/purgatory/entry.S +++ b/arch/riscv/purgatory/entry.S @@ -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
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: 736e30af583fb6e0e2b8211b894ff99dea0f1ee7 Signed-off-by: Daniel Maslowski <cyrevolt@gmail.com> --- arch/riscv/purgatory/entry.S | 2 ++ 1 file changed, 2 insertions(+)