* [PATCH] riscv/purgatory: align riscv_kernel_entry
@ 2024-07-09 1:26 Daniel Maslowski
2024-07-15 11:46 ` Alexandre Ghiti
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Maslowski @ 2024-07-09 1:26 UTC (permalink / raw)
To: linux-riscv
Cc: Björn Töpel, Clément Léger, Daniel Maslowski
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 with oreboot and its SBI delegating unaligned
access exceptions and the kernel configured to handle them.
Signed-off-by: Daniel Maslowski <cyrevolt@gmail.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 5bcf3af903da..29121650a941 100644
--- a/arch/riscv/purgatory/entry.S
+++ b/arch/riscv/purgatory/entry.S
@@ -34,6 +34,7 @@ SYM_CODE_END(purgatory_start)
.data
+.align 4
SYM_DATA(riscv_kernel_entry, .quad 0)
.end
--
2.34.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] riscv/purgatory: align riscv_kernel_entry
2024-07-09 1:26 [PATCH] riscv/purgatory: align riscv_kernel_entry Daniel Maslowski
@ 2024-07-15 11:46 ` Alexandre Ghiti
2024-07-15 12:38 ` Alexandre Ghiti
0 siblings, 1 reply; 3+ messages in thread
From: Alexandre Ghiti @ 2024-07-15 11:46 UTC (permalink / raw)
To: Daniel Maslowski, linux-riscv
Cc: Björn Töpel, Clément Léger, Daniel Maslowski
Hi Daniel,
On 09/07/2024 03:26, 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 with oreboot and its SBI delegating unaligned
> access exceptions and the kernel configured to handle them.
>
> Signed-off-by: Daniel Maslowski <cyrevolt@gmail.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 5bcf3af903da..29121650a941 100644
> --- a/arch/riscv/purgatory/entry.S
> +++ b/arch/riscv/purgatory/entry.S
> @@ -34,6 +34,7 @@ SYM_CODE_END(purgatory_start)
>
> .data
>
> +.align 4
IIRC, .align on riscv takes a power of two as argument, which means you
align riscv_kernel_entry symbol to 16B here, any reason for this
alignment? I guess you want 4B on rv32 and 8B on rv64 right? In that
case, the best here would be to use LGREG
https://elixir.bootlin.com/linux/latest/source/arch/riscv/include/asm/asm.h#L29
Thanks,
Alex
> SYM_DATA(riscv_kernel_entry, .quad 0)
>
> .end
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] riscv/purgatory: align riscv_kernel_entry
2024-07-15 11:46 ` Alexandre Ghiti
@ 2024-07-15 12:38 ` Alexandre Ghiti
0 siblings, 0 replies; 3+ messages in thread
From: Alexandre Ghiti @ 2024-07-15 12:38 UTC (permalink / raw)
To: Daniel Maslowski, linux-riscv
Cc: Björn Töpel, Clément Léger, Daniel Maslowski
On 15/07/2024 13:46, Alexandre Ghiti wrote:
> Hi Daniel,
>
> On 09/07/2024 03:26, 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 with oreboot and its SBI delegating unaligned
>> access exceptions and the kernel configured to handle them.
>>
>> Signed-off-by: Daniel Maslowski <cyrevolt@gmail.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 5bcf3af903da..29121650a941 100644
>> --- a/arch/riscv/purgatory/entry.S
>> +++ b/arch/riscv/purgatory/entry.S
>> @@ -34,6 +34,7 @@ SYM_CODE_END(purgatory_start)
>> .data
>> +.align 4
>
>
> IIRC, .align on riscv takes a power of two as argument, which means
> you align riscv_kernel_entry symbol to 16B here, any reason for this
> alignment? I guess you want 4B on rv32 and 8B on rv64 right? In that
> case, the best here would be to use LGREG
> https://elixir.bootlin.com/linux/latest/source/arch/riscv/include/asm/asm.h#L29
>
> Thanks,
>
> Alex
>
>
>> SYM_DATA(riscv_kernel_entry, .quad 0)
>> .end
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
And since this is a fix, can you add a Fixes tag please?
Thanks,
Alex
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-15 12:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-09 1:26 [PATCH] riscv/purgatory: align riscv_kernel_entry Daniel Maslowski
2024-07-15 11:46 ` Alexandre Ghiti
2024-07-15 12:38 ` Alexandre Ghiti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox