[PATCH] riscv/purgatory: align riscv_kernel_entry

Alexandre Ghiti alex at ghiti.fr
Mon Jul 15 05:38:13 PDT 2024


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 at 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 at 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




More information about the linux-riscv mailing list