On Wed, Jul 3, 2024 at 11:48 PM Geliang Tang <geliang@xxxxxxxxxx> wrote: > > From: Geliang Tang <tanggeliang@xxxxxxxxxx> > > There are still some "ENOTSUPP" (-524) errors left when running BPF > selftests on a Loongarch platform since ASSERT_GE() are used there to > check the return values, not ASSERT_OK(): > > ''' > test_bpf_cookie:PASS:skel_open 0 nsec > #17/1 bpf_cookie/kprobe:OK > #17/2 bpf_cookie/multi_kprobe_link_api:OK > #17/3 bpf_cookie/multi_kprobe_attach_api:OK > #17/4 bpf_cookie/uprobe:OK > #17/5 bpf_cookie/multi_uprobe_attach_api:OK > #17/6 bpf_cookie/tracepoint:OK > #17/7 bpf_cookie/perf_event:OK > tracing_subtest:FAIL:fentry.link_create unexpected fentry.link_create: \ > actual -524 < expected 0 > #17/8 bpf_cookie/trampoline:FAIL > lsm_subtest:FAIL:lsm.link_create unexpected lsm.link_create: \ > actual -524 < expected 0 > #17/9 bpf_cookie/lsm:FAIL > #17/10 bpf_cookie/tp_btf:OK > #17/11 bpf_cookie/raw_tp:OK > #17 bpf_cookie:FAIL > ... ... > test_module_fentry_shadow:PASS:load_vmlinux_btf 0 nsec > test_module_fentry_shadow:PASS:get_bpf_testmod_btf_fd 0 nsec > test_module_fentry_shadow:PASS:btf_get_from_fd 0 nsec > test_module_fentry_shadow:PASS:btf_find_by_name 0 nsec > test_module_fentry_shadow:PASS:btf_find_by_name 0 nsec > test_module_fentry_shadow:PASS:bpf_prog_load 0 nsec > test_module_fentry_shadow:FAIL:bpf_link_create unexpected \ > bpf_link_create: actual -524 < expected 0 > #168 module_fentry_shadow:FAIL > ''' > > Just like in ASSERT_OK(), this patch skips ENOTSUPP (524) and ENOTSUP (95) > in ASSERT_GT() too. With this change, the new output of these selftests > look like: > > ''' > #17/1 bpf_cookie/kprobe:OK > #17/2 bpf_cookie/multi_kprobe_link_api:OK > #17/3 bpf_cookie/multi_kprobe_attach_api:OK > #17/4 bpf_cookie/uprobe:OK > #17/5 bpf_cookie/multi_uprobe_attach_api:OK > #17/6 bpf_cookie/tracepoint:OK > #17/7 bpf_cookie/perf_event:OK > #17/8 bpf_cookie/trampoline:SKIP > #17/9 bpf_cookie/lsm:SKIP > #17/10 bpf_cookie/tp_btf:SKIP > #17/11 bpf_cookie/raw_tp:SKIP > #17 bpf_cookie:OK (SKIP: 4/11) > ... ... > #168 module_fentry_shadow:SKIP > ''' > > Signed-off-by: Geliang Tang <tanggeliang@xxxxxxxxxx> > --- > tools/testing/selftests/bpf/test_progs.h | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selftests/bpf/test_progs.h > index 464aa12feada..8a5ce360aa1c 100644 > --- a/tools/testing/selftests/bpf/test_progs.h > +++ b/tools/testing/selftests/bpf/test_progs.h > @@ -294,9 +294,13 @@ int test__join_cgroup(const char *path); > typeof(actual) ___act = (actual); \ > typeof(expected) ___exp = (expected); \ > bool ___ok = ___act >= ___exp; \ > - CHECK(!___ok, (name), \ > - "unexpected %s: actual %lld < expected %lld\n", \ > - (name), (long long)(___act), (long long)(___exp)); \ > + if (___act == -ENOTSUPP || ___act == -ENOTSUP || \ > + errno == ENOTSUPP || errno == ENOTSUP) \ > + test__skip(); \ absolutely not, if ENOTSUP or ENOTSUPP is special for some tests, that should be handled explicitly. This is not correct in general and we should not just silently skip some test on such errors. > + else \ > + CHECK(!___ok, (name), \ > + "unexpected %s: actual %lld < expected %lld\n", \ > + (name), (long long)(___act), (long long)(___exp));\ > ___ok; \ > }) > > -- > 2.43.0 >