Message ID | 20201116081238.44223-1-wangkefeng.wang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | riscv: cacheinfo: Fix using smp_processor_id() in preemptible | expand |
On Mon, Nov 16, 2020 at 12:08 AM Kefeng Wang <wangkefeng.wang@huawei.com> wrote: > > Use raw_smp_processor_id instead of smp_processor_id() to fix warning, > > BUG: using smp_processor_id() in preemptible [00000000] code: init/1 > caller is debug_smp_processor_id+0x1c/0x26 > CPU: 0 PID: 1 Comm: init Not tainted 5.10.0-rc4 #211 > Call Trace: > walk_stackframe+0x0/0xaa > show_stack+0x32/0x3e > dump_stack+0x76/0x90 > check_preemption_disabled+0xaa/0xac > debug_smp_processor_id+0x1c/0x26 > get_cache_size+0x18/0x68 > load_elf_binary+0x868/0xece > bprm_execve+0x224/0x498 > kernel_execve+0xdc/0x142 > run_init_process+0x90/0x9e > try_to_run_init_process+0x12/0x3c > kernel_init+0xb4/0xf8 > ret_from_exception+0x0/0xc > > Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> > --- > arch/riscv/kernel/cacheinfo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/riscv/kernel/cacheinfo.c b/arch/riscv/kernel/cacheinfo.c > index de59dd457b41..9b5a8a347434 100644 > --- a/arch/riscv/kernel/cacheinfo.c > +++ b/arch/riscv/kernel/cacheinfo.c > @@ -26,7 +26,7 @@ cache_get_priv_group(struct cacheinfo *this_leaf) > > static struct cacheinfo *get_cacheinfo(u32 level, enum cache_type type) > { > - struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(smp_processor_id()); > + struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(raw_smp_processor_id()); > struct cacheinfo *this_leaf; > int index; > > -- > 2.26.2 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv Reviewed-by: Atish Patra <atish.patra@wdc.com> As this issue is only reproducible with CONFIG_PREEMPT, the commit text can be updated to specify that. I have tested this patch with Qemu as well. FWIW, Tested-by: Atish Patra <atish.patra@wdc.com>
On 2020/12/18 16:14, Atish Patra wrote: > On Mon, Nov 16, 2020 at 12:08 AM Kefeng Wang <wangkefeng.wang@huawei.com> wrote: >> Use raw_smp_processor_id instead of smp_processor_id() to fix warning, >> >> BUG: using smp_processor_id() in preemptible [00000000] code: init/1 >> caller is debug_smp_processor_id+0x1c/0x26 >> CPU: 0 PID: 1 Comm: init Not tainted 5.10.0-rc4 #211 >> Call Trace: >> walk_stackframe+0x0/0xaa >> show_stack+0x32/0x3e >> dump_stack+0x76/0x90 >> check_preemption_disabled+0xaa/0xac >> debug_smp_processor_id+0x1c/0x26 >> get_cache_size+0x18/0x68 >> load_elf_binary+0x868/0xece >> bprm_execve+0x224/0x498 >> kernel_execve+0xdc/0x142 >> run_init_process+0x90/0x9e >> try_to_run_init_process+0x12/0x3c >> kernel_init+0xb4/0xf8 >> ret_from_exception+0x0/0xc >> >> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> >> --- >> arch/riscv/kernel/cacheinfo.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/riscv/kernel/cacheinfo.c b/arch/riscv/kernel/cacheinfo.c >> index de59dd457b41..9b5a8a347434 100644 >> --- a/arch/riscv/kernel/cacheinfo.c >> +++ b/arch/riscv/kernel/cacheinfo.c >> @@ -26,7 +26,7 @@ cache_get_priv_group(struct cacheinfo *this_leaf) >> >> static struct cacheinfo *get_cacheinfo(u32 level, enum cache_type type) >> { >> - struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(smp_processor_id()); >> + struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(raw_smp_processor_id()); >> struct cacheinfo *this_leaf; >> int index; >> >> -- >> 2.26.2 >> >> >> _______________________________________________ >> linux-riscv mailing list >> linux-riscv@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-riscv > Reviewed-by: Atish Patra <atish.patra@wdc.com> > > As this issue is only reproducible with CONFIG_PREEMPT, the commit > text can be updated to specify that. I have tested this patch with > Qemu as well. FWIW, > > Tested-by: Atish Patra <atish.patra@wdc.com> Thanks Atish, will send v2. > >
diff --git a/arch/riscv/kernel/cacheinfo.c b/arch/riscv/kernel/cacheinfo.c index de59dd457b41..9b5a8a347434 100644 --- a/arch/riscv/kernel/cacheinfo.c +++ b/arch/riscv/kernel/cacheinfo.c @@ -26,7 +26,7 @@ cache_get_priv_group(struct cacheinfo *this_leaf) static struct cacheinfo *get_cacheinfo(u32 level, enum cache_type type) { - struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(smp_processor_id()); + struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(raw_smp_processor_id()); struct cacheinfo *this_leaf; int index;
Use raw_smp_processor_id instead of smp_processor_id() to fix warning, BUG: using smp_processor_id() in preemptible [00000000] code: init/1 caller is debug_smp_processor_id+0x1c/0x26 CPU: 0 PID: 1 Comm: init Not tainted 5.10.0-rc4 #211 Call Trace: walk_stackframe+0x0/0xaa show_stack+0x32/0x3e dump_stack+0x76/0x90 check_preemption_disabled+0xaa/0xac debug_smp_processor_id+0x1c/0x26 get_cache_size+0x18/0x68 load_elf_binary+0x868/0xece bprm_execve+0x224/0x498 kernel_execve+0xdc/0x142 run_init_process+0x90/0x9e try_to_run_init_process+0x12/0x3c kernel_init+0xb4/0xf8 ret_from_exception+0x0/0xc Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> --- arch/riscv/kernel/cacheinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)