On Wed, Feb 9, 2022 at 4:38 AM Heiko Stuebner <heiko@xxxxxxxxx> wrote: > > The callback used inside sbi_remote_fence_i is set at sbi probe time > to the needed variant. Before that it is a NULL pointer. > > Some users like the flush_icache_*() functions suggest a generic > functionality, that doesn't depend on a specific boot-stage but > uses sbi_remote_fence_i as one option to flush other cpu cores. > > So they definitly shouldn't run into null-pointer dereference /s/definitly/definitely > issues when called "too early" during boot. > > So introduce an empty function to be the standard for the __sbi_rfence > function pointer until sbi_init has run. > > Users of sbi_remote_fence_i will have separate code for the local > cpu and sbi_init() is called before other cpus are brought up. > So there are no other cpus present at the time when the issue > might happen. > > Signed-off-by: Heiko Stuebner <heiko@xxxxxxxxx> > --- > arch/riscv/kernel/sbi.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c > index f72527fcb347..c839acd668d3 100644 > --- a/arch/riscv/kernel/sbi.c > +++ b/arch/riscv/kernel/sbi.c > @@ -15,11 +15,19 @@ > unsigned long sbi_spec_version __ro_after_init = SBI_SPEC_VERSION_DEFAULT; > EXPORT_SYMBOL(sbi_spec_version); > > +static int __sbi_rfence_none(int fid, const struct cpumask *cpu_mask, > + unsigned long start, unsigned long size, > + unsigned long arg4, unsigned long arg5) > +{ > + return -EOPNOTSUPP; > +} > + > static void (*__sbi_set_timer)(uint64_t stime) __ro_after_init; > static int (*__sbi_send_ipi)(const struct cpumask *cpu_mask) __ro_after_init; > static int (*__sbi_rfence)(int fid, const struct cpumask *cpu_mask, > unsigned long start, unsigned long size, > - unsigned long arg4, unsigned long arg5) __ro_after_init; > + unsigned long arg4, unsigned long arg5) > + __ro_after_init = __sbi_rfence_none; > > struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, > unsigned long arg1, unsigned long arg2, > -- > 2.30.2 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-riscv Otherwise, LGTM. Reviewed-by: Atish Patra <atishp@xxxxxxxxxxxx> -- Regards, Atish