[PATCH bpf-next v5 3/3] selftests/bpf: enable timed may_goto tests for riscv64
Pu Lehui
pulehui at huawei.com
Thu Jul 23 03:15:54 PDT 2026
On 2026/7/23 13:41, Feng Jiang wrote:
> Enable verifier_may_goto_1 (raw instruction tests), stream_cond_break
> (250ms timeout path), and the may_goto_interaction fastcall test on
> riscv64 now that the JIT supports timed may_goto.
>
> Reviewed-by: Pu Lehui <pulehui at huawei.com>
> Signed-off-by: Feng Jiang <jiangfeng at kylinos.cn>
> ---
> tools/testing/selftests/bpf/progs/stream.c | 1 +
> tools/testing/selftests/bpf/progs/verifier_bpf_fastcall.c | 3 ++-
> tools/testing/selftests/bpf/progs/verifier_may_goto_1.c | 4 ++++
> 3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/bpf/progs/stream.c b/tools/testing/selftests/bpf/progs/stream.c
> index 92ba1d72e0ec..8d8e53d37266 100644
> --- a/tools/testing/selftests/bpf/progs/stream.c
> +++ b/tools/testing/selftests/bpf/progs/stream.c
> @@ -64,6 +64,7 @@ SEC("syscall")
> __arch_x86_64
> __arch_arm64
> __arch_s390x
> +__arch_riscv64
> __success __retval(0)
> __stderr("ERROR: Timeout detected for may_goto instruction")
This test fails because it relies on arch_bpf_stack_walk to fetch the
prog. It's fine to leave it on though, since support is on the way.
https://lore.kernel.org/bpf/20260722140015.1982158-1-varunrmallya@gmail.com/
> __stderr("CPU: {{[0-9]+}} UID: 0 PID: {{[0-9]+}} Comm: {{.*}}")
> diff --git a/tools/testing/selftests/bpf/progs/verifier_bpf_fastcall.c b/tools/testing/selftests/bpf/progs/verifier_bpf_fastcall.c
> index 8d7ff38e4c06..83707faea049 100644
> --- a/tools/testing/selftests/bpf/progs/verifier_bpf_fastcall.c
> +++ b/tools/testing/selftests/bpf/progs/verifier_bpf_fastcall.c
> @@ -660,6 +660,7 @@ __naked void may_goto_interaction_x86_64(void)
>
> SEC("raw_tp")
> __arch_arm64
> +__arch_riscv64
> __log_level(4) __msg("stack depth 24")
> /* may_goto counter at -24 */
> __xlated("0: *(u64 *)(r10 -24) =")
> @@ -679,7 +680,7 @@ __xlated("10: *(u64 *)(r10 -24) = r12")
> __xlated("11: *(u64 *)(r10 -8) = r1")
> __xlated("12: exit")
> __success
> -__naked void may_goto_interaction_arm64(void)
> +__naked void may_goto_interaction(void)
> {
> asm volatile (
> "r1 = 1;"
> diff --git a/tools/testing/selftests/bpf/progs/verifier_may_goto_1.c b/tools/testing/selftests/bpf/progs/verifier_may_goto_1.c
> index cb1ce4d13cfc..0e211f030d0d 100644
> --- a/tools/testing/selftests/bpf/progs/verifier_may_goto_1.c
> +++ b/tools/testing/selftests/bpf/progs/verifier_may_goto_1.c
> @@ -11,6 +11,7 @@ __description("may_goto 0")
> __arch_x86_64
> __arch_s390x
> __arch_arm64
> +__arch_riscv64
> __xlated("0: r0 = 1")
> __xlated("1: exit")
> __success
> @@ -31,6 +32,7 @@ __description("batch 2 of may_goto 0")
> __arch_x86_64
> __arch_s390x
> __arch_arm64
> +__arch_riscv64
> __xlated("0: r0 = 1")
> __xlated("1: exit")
> __success
> @@ -53,6 +55,7 @@ __description("may_goto batch with offsets 2/1/0")
> __arch_x86_64
> __arch_s390x
> __arch_arm64
> +__arch_riscv64
> __xlated("0: r0 = 1")
> __xlated("1: exit")
> __success
> @@ -79,6 +82,7 @@ __description("may_goto batch with offsets 2/0")
> __arch_x86_64
> __arch_s390x
> __arch_arm64
> +__arch_riscv64
> __xlated("0: *(u64 *)(r10 -16) = 65535")
> __xlated("1: *(u64 *)(r10 -8) = 0")
> __xlated("2: r12 = *(u64 *)(r10 -16)")
>
More information about the linux-riscv
mailing list