public inbox for linux-riscv@lists.infradead.org
 help / color / mirror / Atom feed
* [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