Hi Green, On Thu, Apr 22, 2021 at 5:18 PM Green Wan <green....@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....@sifive.com> > Reviewed-by: Rick Chen <r...@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...@gmail.com> I think you can remove the RFC tag in the next version. Regards, Bin