[PATCH bpf-next v1] selftests/bpf: Test jited inline of bpf_get_smp_processor_id() for RISC-V

Tiezhu Yang posted 1 patch 2 days, 16 hours ago
tools/testing/selftests/bpf/progs/verifier_jit_inline.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH bpf-next v1] selftests/bpf: Test jited inline of bpf_get_smp_processor_id() for RISC-V
Posted by Tiezhu Yang 2 days, 16 hours ago
Add the JITed inline instruction of bpf_get_smp_processor_id() for RISC-V
to pass the test case.

On RISC-V, the 'cpu' field of 'struct thread_info' resides at offset 0x20,
BPF_REG_0 maps to the a5 register, and the thread pointer (tp) is used as
the base address. Therefore, the JIT compiler emits "lw a5, 0x20(tp)" to
optimize this helper call.

Tested on a RISC-V virtual machine.

Before:
  $ sudo ./test_progs -t verifier_jit_inline
  #610/1   verifier_jit_inline/inline_bpf_get_current_task:OK
  #610/2   verifier_jit_inline/inline_bpf_get_smp_processor_id:SKIP
  #610     verifier_jit_inline:OK (SKIP: 1/2)
  Summary: 1/1 PASSED, 1 SKIPPED, 0 FAILED

After:
  $ sudo ./test_progs -t verifier_jit_inline
  #610/1   verifier_jit_inline/inline_bpf_get_current_task:OK
  #610/2   verifier_jit_inline/inline_bpf_get_smp_processor_id:OK
  #610     verifier_jit_inline:OK
  Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 tools/testing/selftests/bpf/progs/verifier_jit_inline.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/testing/selftests/bpf/progs/verifier_jit_inline.c b/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
index 02e562f56f9d..c696baa5364b 100644
--- a/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
+++ b/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
@@ -25,6 +25,8 @@ SEC("fentry/bpf_fentry_test2")
 __success __retval(0)
 __arch_loongarch
 __jited("	ld.wu	$a5, $tp, 16")
+__arch_riscv64
+__jited("	lw	a5, 0x20(tp)")
 int inline_bpf_get_smp_processor_id(void)
 {
 	bpf_get_smp_processor_id();
-- 
2.42.0
Re: [PATCH bpf-next v1] selftests/bpf: Test jited inline of bpf_get_smp_processor_id() for RISC-V
Posted by Pu Lehui 1 day, 19 hours ago
On 2026/7/22 15:01, Tiezhu Yang wrote:
> Add the JITed inline instruction of bpf_get_smp_processor_id() for RISC-V
> to pass the test case.
> 
> On RISC-V, the 'cpu' field of 'struct thread_info' resides at offset 0x20,
> BPF_REG_0 maps to the a5 register, and the thread pointer (tp) is used as
> the base address. Therefore, the JIT compiler emits "lw a5, 0x20(tp)" to
> optimize this helper call.
> 
> Tested on a RISC-V virtual machine.
> 
> Before:
>    $ sudo ./test_progs -t verifier_jit_inline
>    #610/1   verifier_jit_inline/inline_bpf_get_current_task:OK
>    #610/2   verifier_jit_inline/inline_bpf_get_smp_processor_id:SKIP
>    #610     verifier_jit_inline:OK (SKIP: 1/2)
>    Summary: 1/1 PASSED, 1 SKIPPED, 0 FAILED
> 
> After:
>    $ sudo ./test_progs -t verifier_jit_inline
>    #610/1   verifier_jit_inline/inline_bpf_get_current_task:OK
>    #610/2   verifier_jit_inline/inline_bpf_get_smp_processor_id:OK
>    #610     verifier_jit_inline:OK
>    Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
> 
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
>   tools/testing/selftests/bpf/progs/verifier_jit_inline.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/tools/testing/selftests/bpf/progs/verifier_jit_inline.c b/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
> index 02e562f56f9d..c696baa5364b 100644
> --- a/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
> +++ b/tools/testing/selftests/bpf/progs/verifier_jit_inline.c
> @@ -25,6 +25,8 @@ SEC("fentry/bpf_fentry_test2")
>   __success __retval(0)
>   __arch_loongarch
>   __jited("	ld.wu	$a5, $tp, 16")
> +__arch_riscv64
> +__jited("	lw	a5, 0x20(tp)")
>   int inline_bpf_get_smp_processor_id(void)
>   {
>   	bpf_get_smp_processor_id();

Hi Tiezhu,

There are many places in selftest can be add __arch_riscv64 tag, I think 
we can enable them witch one patch.