[PATCH v7 3/3] riscv: store percpu offset into thread_info
bot+bpf-ci at kernel.org
bot+bpf-ci at kernel.org
Wed Jul 1 21:07:52 PDT 2026
> diff --git a/arch/riscv/include/asm/asm.h b/arch/riscv/include/asm/asm.h
> index e9e8ba83e632..137a49488325 100644
> --- a/arch/riscv/include/asm/asm.h
> +++ b/arch/riscv/include/asm/asm.h
> @@ -91,11 +91,7 @@
>
> #ifdef CONFIG_SMP
> .macro asm_per_cpu dst sym tmp
> - lw \tmp, TASK_TI_CPU_NUM(tp)
> - slli \tmp, \tmp, RISCV_LGPTR
> - la \dst, __per_cpu_offset
> - add \dst, \dst, \tmp
> - REG_L \tmp, 0(\dst)
> + REG_L \tmp, TASK_TI_PCPU_OFFSET(tp)
> la \dst, \sym
> add \dst, \dst, \tmp
> .endm
This isn't a bug, but asm_per_cpu was the only reader of TASK_TI_CPU_NUM,
and it now loads TASK_TI_PCPU_OFFSET(tp) instead.
> diff --git a/arch/riscv/kernel/asm-offsets.c b/arch/riscv/kernel/asm-offsets.c
> index af827448a609..fbf53b66b0e0 100644
> --- a/arch/riscv/kernel/asm-offsets.c
> +++ b/arch/riscv/kernel/asm-offsets.c
> @@ -38,6 +38,7 @@ void asm_offsets(void)
> OFFSET(TASK_THREAD_SUM, task_struct, thread.sum);
>
> OFFSET(TASK_TI_CPU, task_struct, thread_info.cpu);
> + OFFSET(TASK_TI_PCPU_OFFSET, task_struct, thread_info.pcpu_offset);
> OFFSET(TASK_TI_PREEMPT_COUNT, task_struct, thread_info.preempt_count);
> OFFSET(TASK_TI_KERNEL_SP, task_struct, thread_info.kernel_sp);
> OFFSET(TASK_TI_USER_SP, task_struct, thread_info.user_sp);
A tree-wide search now finds TASK_TI_CPU_NUM only at its definition in
asm_offsets():
OFFSET(TASK_TI_CPU_NUM, task_struct, thread_info.cpu);
with no remaining users (TASK_TI_CPU is a separate symbol still referenced
by entry.S). Could this OFFSET() line be dropped as well?
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/28562450933
More information about the linux-riscv
mailing list