[PATCH v2] riscv: smp: Align secondary_start_sbi to 4 bytes
Michael Ellerman
mpe at kernel.org
Tue Apr 14 19:06:28 PDT 2026
On 13/4/2026 23:20, cp0613 at linux.alibaba.com wrote:
> From: Chen Pei <cp0613 at linux.alibaba.com>
>
> During SMP boot, the secondary_start_sbi address is passed to the
> slave core via sbi_hsm_hart_start. In OpenSBI, this address is
> written to STVEC in sbi_hart_switch_mode.
...
> diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
> index 9c99c5ad6fe8..9f33be6260e1 100644
> --- a/arch/riscv/kernel/head.S
> +++ b/arch/riscv/kernel/head.S
> @@ -127,6 +127,7 @@ relocate_enable_mmu:
> #endif /* CONFIG_MMU */
> #ifdef CONFIG_SMP
> .global secondary_start_sbi
> + .align 2
> secondary_start_sbi:
> /* Mask all interrupts */
> csrw CSR_IE, zero
Minor nit, but IMHO .balign is preferable in new code. It always byte
aligns, whereas .align has different meanings across architectures, and
on some arches (including riscv) requires the reader to do the math to
convert to a byte alignment.
These days there's also the SYM_CODE_START etc. macros defined via
linkage.h, which use __ALIGN from arch/riscv/include/asm/linkage.h,
which is already .balign 4.
cheers
More information about the linux-riscv
mailing list