diff mbox series

riscv: cacheinfo: Fix using smp_processor_id() in preemptible

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

Commit Message

Kefeng Wang Nov. 16, 2020, 8:12 a.m. UTC
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(-)

Comments

Atish Patra Dec. 18, 2020, 8:14 a.m. UTC | #1
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>
Kefeng Wang Dec. 18, 2020, 8:24 a.m. UTC | #2
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 mbox series

Patch

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;