diff mbox series

[v2] riscv/purgatory: align riscv_kernel_entry

Message ID 20240716204047.7649-1-cyrevolt@gmail.com (mailing list archive)
State Superseded
Headers show
Series [v2] riscv/purgatory: align riscv_kernel_entry | expand

Checks

Context Check Description
conchuod/vmtest-for-next-PR success PR summary
conchuod/patch-1-test-1 success .github/scripts/patches/tests/build_rv32_defconfig.sh
conchuod/patch-1-test-2 success .github/scripts/patches/tests/build_rv64_clang_allmodconfig.sh
conchuod/patch-1-test-3 success .github/scripts/patches/tests/build_rv64_gcc_allmodconfig.sh
conchuod/patch-1-test-4 success .github/scripts/patches/tests/build_rv64_nommu_k210_defconfig.sh
conchuod/patch-1-test-5 success .github/scripts/patches/tests/build_rv64_nommu_virt_defconfig.sh
conchuod/patch-1-test-6 warning .github/scripts/patches/tests/checkpatch.sh
conchuod/patch-1-test-7 success .github/scripts/patches/tests/dtb_warn_rv64.sh
conchuod/patch-1-test-8 success .github/scripts/patches/tests/header_inline.sh
conchuod/patch-1-test-9 success .github/scripts/patches/tests/kdoc.sh
conchuod/patch-1-test-10 success .github/scripts/patches/tests/module_param.sh
conchuod/patch-1-test-11 success .github/scripts/patches/tests/verify_fixes.sh
conchuod/patch-1-test-12 success .github/scripts/patches/tests/verify_signedoff.sh

Commit Message

Daniel Maslowski July 16, 2024, 8:40 p.m. UTC
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(+)

Comments

Jessica Clarke July 16, 2024, 8:53 p.m. UTC | #1
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
Andreas Schwab July 16, 2024, 9:22 p.m. UTC | #2
On Jul 16 2024, Daniel Maslowski wrote:

> This has been tested on a JH7110 SoC with oreboot and its SBI delegating

coreboot?
Conor Dooley July 16, 2024, 9:34 p.m. UTC | #3
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
Matthias Brugger July 18, 2024, 3:16 p.m. UTC | #4
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
Alexandre Ghiti July 18, 2024, 5:10 p.m. UTC | #5
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
Geert Uytterhoeven July 22, 2024, 7:51 a.m. UTC | #6
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 mbox series

Patch

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