Re: [PATCH bpf-next 6/7] selftests/bpf: Enable __arena argument tests on arm64

Xu Kuohai <[email protected]>
Newsgroups org.kernel.vger.bpf
Message-ID <[email protected]>
On 8/11/2026 3:09 AM, Puranjay Mohan wrote:
> The arena kfunc and struct_ops argument tests were restricted to x86-64
> because it was the only JIT that implemented the conversions. arm64 does
> now, so let them run there too: tag every program in arena_kfunc.c with
> __arch_arm64 in addition to __arch_x86_64, and widen the __x86_64__
> guards in the struct_ops arena test.
> 
> Without this the tests report SKIP on arm64 rather than exercising the
> newly added JIT support.
> 
> Signed-off-by: Puranjay Mohan <[email protected]>
> ---
>   .../selftests/bpf/prog_tests/test_struct_ops_arena.c   | 10 +++++-----
>   tools/testing/selftests/bpf/progs/arena_kfunc.c        |  9 +++++++++
>   2 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/test_struct_ops_arena.c b/tools/testing/selftests/bpf/prog_tests/test_struct_ops_arena.c
> index 940ec2cda0d52..7f9f54ba3fbe5 100644
> --- a/tools/testing/selftests/bpf/prog_tests/test_struct_ops_arena.c
> +++ b/tools/testing/selftests/bpf/prog_tests/test_struct_ops_arena.c
> @@ -6,7 +6,7 @@
>   #include "struct_ops_arena_attach.skel.h"
>   #include "struct_ops_arena_fail.skel.h"
>   
> -#if defined(__x86_64__)
> +#if defined(__x86_64__) || defined(__aarch64__)
>   /*
>    * Attach callbacks with __arena and __arena__nullable arguments and drive
>    * them through the bpf_testmod_ops3_call_test_arena*() kfuncs.
> @@ -111,11 +111,11 @@ static void arena_arg_attach(void)
>   void serial_test_struct_ops_arena(void)
>   {
>   	/*
> -	 * Arena struct_ops arguments need JIT support, currently x86-64 only.
> -	 * Elsewhere verification fails with "JIT does not support arena
> -	 * arguments", so the programs cannot even load.
> +	 * Arena struct_ops arguments need JIT support, currently x86-64 and
> +	 * arm64 only. Elsewhere verification fails with "JIT does not support
> +	 * arena arguments", so the programs cannot even load.
>   	 */
> -#if defined(__x86_64__)
> +#if defined(__x86_64__) || defined(__aarch64__)
>   	if (test__start_subtest("arena_arg"))
>   		arena_arg();
>   	if (test__start_subtest("arena_arg_fail"))
> diff --git a/tools/testing/selftests/bpf/progs/arena_kfunc.c b/tools/testing/selftests/bpf/progs/arena_kfunc.c
> index cdcea889da586..bf0d304e0e59c 100644
> --- a/tools/testing/selftests/bpf/progs/arena_kfunc.c
> +++ b/tools/testing/selftests/bpf/progs/arena_kfunc.c
> @@ -27,6 +27,7 @@ volatile u64 stash;
>   
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __success __retval(0)
>   int arena_arg_forms(void *ctx)
>   {
> @@ -70,6 +71,7 @@ int arena_arg_forms(void *ctx)
>    */
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __success __retval(0)
>   int arena_arg_rebase(void *ctx)
>   {
> @@ -111,6 +113,7 @@ int arena_arg_rebase(void *ctx)
>   
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __success __retval(0)
>   int arena_args5(void *ctx)
>   {
> @@ -142,6 +145,7 @@ int arena_args5(void *ctx)
>   
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __success __retval(0)
>   int arena_arg_mixed(void *ctx)
>   {
> @@ -169,6 +173,7 @@ int arena_arg_mixed(void *ctx)
>   /* kernel-side faults on unpopulated pages recover via the scratch page */
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __success __retval(0)
>   int arena_arg_unpopulated(void *ctx)
>   {
> @@ -189,6 +194,7 @@ int arena_arg_unpopulated(void *ctx)
>   
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __failure __msg("arena pointer requires a program with an associated arena")
>   int arena_arg_no_arena(void *ctx)
>   {
> @@ -198,6 +204,7 @@ int arena_arg_no_arena(void *ctx)
>   
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __failure __msg("is not a pointer to arena or scalar")
>   int arena_arg_bad_reg(void *ctx)
>   {
> @@ -213,6 +220,7 @@ int arena_arg_bad_reg(void *ctx)
>   	defined(__BPF_FEATURE_STACK_ARGUMENT)
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __failure __msg("arena pointer cannot be a stack argument")
>   int arena_arg_stack(void *ctx)
>   {
> @@ -223,6 +231,7 @@ int arena_arg_stack(void *ctx)
>   #else
>   SEC("syscall")
>   __arch_x86_64
> +__arch_arm64
>   __description("arena_arg_stack: not supported, dummy test")
>   __success
>   int arena_arg_stack(void *ctx)

Acked-by: Xu Kuohai <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.