On Tue, Jan 28, 2025 at 05:06:03PM -0800, Eduard Zingerman wrote: > On Sat, 2025-01-25 at 02:19 +0000, Peilin Ye wrote: > > All new tests depend on the pre-defined __BPF_FEATURE_LOAD_ACQ_STORE_REL > > feature macro, which implies -mcpu>=v4. > > This restriction would mean that tests are skipped on BPF CI, as it > currently runs using llvm 17 and 18. Instead, I suggest using some > macro hiding an inline assembly as below: > > asm volatile (".8byte %[insn];" > : > : [insn]"i"(*(long *)&(BPF_RAW_INSN(...))) > : /* correct clobbers here */); > > See the usage of the __imm_insn() macro in the test suite. I see, I'll do this in v2. > Also, "BPF_ATOMIC loads from R%d %s is not allowed\n" and > "BPF_ATOMIC stores into R%d %s is not allowed\n" > situations are not tested. Thanks! > > --- a/tools/testing/selftests/bpf/prog_tests/atomics.c > > +++ b/tools/testing/selftests/bpf/prog_tests/atomics.c > > @@ -162,6 +162,56 @@ static void test_xchg(struct atomics_lskel *skel) > > ASSERT_EQ(skel->bss->xchg32_result, 1, "xchg32_result"); > > } > > Nit: Given the tests in verifier_load_acquire.c and verifier_store_release.c > that use __retval annotation, are these tests really necessary? > (assuming that verifier_store_release.c tests are modified to read > stored location into r0 before exit). > > > +static void test_load_acquire(struct atomics_lskel *skel) Ah, right. I'll drop them and modify verifier_store_release.c accordingly. > > --- a/tools/testing/selftests/bpf/progs/arena_atomics.c > > +++ b/tools/testing/selftests/bpf/progs/arena_atomics.c > [...] > > > +SEC("raw_tp/sys_enter") > > +int load_acquire(const void *ctx) > > +{ > > + if (pid != (bpf_get_current_pid_tgid() >> 32)) > > + return 0; > > Nit: This check is not needed, since bpf_prog_test_run_opts() is used > to run the tests. Got it! Thanks, Peilin Ye