[RFC PATCH v7 1/2] riscv: cpu: Add callback to init each core
Bin Meng
bmeng.cn at gmail.com
Sat May 1 13:55:11 CEST 2021
Hi Green,
On Thu, Apr 22, 2021 at 5:18 PM Green Wan <green.wan at sifive.com> wrote:
>
> Add a callback harts_early_init() to start.S to allow different riscv
> hart perform setup code for each hart as early as possible. Since all
> the harts enter the callback, they must be able to run the same
> setup.
>
> Signed-off-by: Green Wan <green.wan at sifive.com>
> Reviewed-by: Rick Chen <rick at andestech.com>
> ---
> arch/riscv/cpu/cpu.c | 11 +++++++++++
> arch/riscv/cpu/start.S | 6 ++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c
> index 85592f5bee..43c086ca19 100644
> --- a/arch/riscv/cpu/cpu.c
> +++ b/arch/riscv/cpu/cpu.c
> @@ -140,3 +140,14 @@ int arch_early_init_r(void)
> {
> return riscv_cpu_probe();
> }
> +
> +/**
> + * harts_early_init() - A callback function called by start.S to configure
> + * feature settings of each hart.
> + *
> + * In a multi-core system, memory access shall be careful here, it shall
> + * take care race conditions.
nits: take care of
> + */
> +__weak void harts_early_init(void)
> +{
> +}
> diff --git a/arch/riscv/cpu/start.S b/arch/riscv/cpu/start.S
> index 8589509e01..bdd5517bca 100644
> --- a/arch/riscv/cpu/start.S
> +++ b/arch/riscv/cpu/start.S
> @@ -117,6 +117,12 @@ call_board_init_f_0:
> mv sp, a0
> #endif
>
> + /*
> + * Configure proprietary settings and customized CRSs of harts
nits: use single line comment if this does exceed 80 characters
CRSs => CSRs
> + */
> +call_harts_early_init:
> + jal harts_early_init
> +
> #ifndef CONFIG_XIP
> /*
> * Pick hart to initialize global data and run U-Boot. The other harts
> --
Otherwise,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
I think you can remove the RFC tag in the next version.
Regards,
Bin
More information about the U-Boot
mailing list