Message ID | 20211006185619.364369-15-fallentree@fb.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | BPF |
Headers | show |
Series | selftests/bpf: Add parallelism to test_progs | expand |
On Wed, Oct 6, 2021 at 11:56 AM Yucong Sun <fallentree@fb.com> wrote: > > From: Yucong Sun <sunyucong@gmail.com> > > Change tests that often fails in parallel execution mode to serial. > > Signed-off-by: Yucong Sun <sunyucong@gmail.com> > --- I hope we'll be able to parallelise these tests over time. See some notes on cover letter for how to target this effort better. But here's another thought I had while thinking about this. Some tests are inherently testing unshareable resources, e.g., like XDP tests. So we might never be able to completely parallelize all the tests. But it probably will be too restrictive to just bunde all of them into the one "serial" group of tests. It's a good starting point, but I think we'll have to have something like "serialization" group, where we'll be able to mark a bunch of tests like "serial_xdp_<testname>" and each test with "serial_xdp_" prefix will run sequentially relative to each other, but they might run completely parallel to, say, "serial_perf_" tests. WDYT? > tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c | 2 +- > tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c | 2 +- > tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c | 2 +- > .../selftests/bpf/prog_tests/cgroup_attach_autodetach.c | 2 +- > tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c | 2 +- > .../testing/selftests/bpf/prog_tests/cgroup_attach_override.c | 2 +- > tools/testing/selftests/bpf/prog_tests/cgroup_link.c | 2 +- > tools/testing/selftests/bpf/prog_tests/check_mtu.c | 2 +- > tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c | 3 ++- > .../selftests/bpf/prog_tests/flow_dissector_load_bytes.c | 2 +- > .../testing/selftests/bpf/prog_tests/flow_dissector_reattach.c | 2 +- > tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c | 2 +- > tools/testing/selftests/bpf/prog_tests/kfree_skb.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c | 2 +- > tools/testing/selftests/bpf/prog_tests/modify_return.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/perf_buffer.c | 2 +- > tools/testing/selftests/bpf/prog_tests/perf_link.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/probe_user.c | 3 ++- > .../selftests/bpf/prog_tests/raw_tp_writable_test_run.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +- > .../selftests/bpf/prog_tests/send_signal_sched_switch.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c | 2 +- > tools/testing/selftests/bpf/prog_tests/snprintf_btf.c | 2 +- > tools/testing/selftests/bpf/prog_tests/sock_fields.c | 2 +- > tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 2 +- > tools/testing/selftests/bpf/prog_tests/timer.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/timer_mim.c | 2 +- > tools/testing/selftests/bpf/prog_tests/tp_attach_query.c | 2 +- > tools/testing/selftests/bpf/prog_tests/trace_printk.c | 2 +- > tools/testing/selftests/bpf/prog_tests/trace_vprintk.c | 2 +- > tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 3 ++- > tools/testing/selftests/bpf/prog_tests/xdp_attach.c | 2 +- > tools/testing/selftests/bpf/prog_tests/xdp_bonding.c | 2 +- > tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c | 2 +- > tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c | 2 +- > tools/testing/selftests/bpf/prog_tests/xdp_info.c | 2 +- > tools/testing/selftests/bpf/prog_tests/xdp_link.c | 2 +- > 38 files changed, 48 insertions(+), 38 deletions(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > index 85babb0487b3..b52ff8ce34db 100644 > --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > @@ -179,7 +179,7 @@ static void do_bpf_iter_setsockopt(struct bpf_iter_setsockopt *iter_skel, > free_fds(est_fds, nr_est); > } > [...]
On Fri, Oct 8, 2021 at 3:27 PM Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote: > > On Wed, Oct 6, 2021 at 11:56 AM Yucong Sun <fallentree@fb.com> wrote: > > > > From: Yucong Sun <sunyucong@gmail.com> > > > > Change tests that often fails in parallel execution mode to serial. > > > > Signed-off-by: Yucong Sun <sunyucong@gmail.com> > > --- > > I hope we'll be able to parallelise these tests over time. See some > notes on cover letter for how to target this effort better. But here's > another thought I had while thinking about this. > > Some tests are inherently testing unshareable resources, e.g., like > XDP tests. So we might never be able to completely parallelize all the > tests. But it probably will be too restrictive to just bunde all of > them into the one "serial" group of tests. It's a good starting point, > but I think we'll have to have something like "serialization" group, > where we'll be able to mark a bunch of tests like > "serial_xdp_<testname>" and each test with "serial_xdp_" prefix will > run sequentially relative to each other, but they might run completely > parallel to, say, "serial_perf_" tests. WDYT? I think someone was talking about being able to attach multiple XDP programs in the future? another approach I want to suggest is for each test to test for EBUSY/EEXIST error code on attach and simply sleep/retry, Then in the future when it doesn't return this error there is nothing to change on test side. > > > > tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c | 2 +- > > .../selftests/bpf/prog_tests/cgroup_attach_autodetach.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c | 2 +- > > .../testing/selftests/bpf/prog_tests/cgroup_attach_override.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/cgroup_link.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/check_mtu.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c | 3 ++- > > .../selftests/bpf/prog_tests/flow_dissector_load_bytes.c | 2 +- > > .../testing/selftests/bpf/prog_tests/flow_dissector_reattach.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/kfree_skb.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/modify_return.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/perf_buffer.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/perf_link.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/probe_user.c | 3 ++- > > .../selftests/bpf/prog_tests/raw_tp_writable_test_run.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +- > > .../selftests/bpf/prog_tests/send_signal_sched_switch.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/snprintf_btf.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/sock_fields.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/timer.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/timer_mim.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/tp_attach_query.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/trace_printk.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/trace_vprintk.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 3 ++- > > tools/testing/selftests/bpf/prog_tests/xdp_attach.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/xdp_bonding.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/xdp_info.c | 2 +- > > tools/testing/selftests/bpf/prog_tests/xdp_link.c | 2 +- > > 38 files changed, 48 insertions(+), 38 deletions(-) > > > > diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > index 85babb0487b3..b52ff8ce34db 100644 > > --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > @@ -179,7 +179,7 @@ static void do_bpf_iter_setsockopt(struct bpf_iter_setsockopt *iter_skel, > > free_fds(est_fds, nr_est); > > } > > > > [...]
On Fri, Oct 8, 2021 at 3:55 PM sunyucong@gmail.com <sunyucong@gmail.com> wrote: > > On Fri, Oct 8, 2021 at 3:27 PM Andrii Nakryiko > <andrii.nakryiko@gmail.com> wrote: > > > > On Wed, Oct 6, 2021 at 11:56 AM Yucong Sun <fallentree@fb.com> wrote: > > > > > > From: Yucong Sun <sunyucong@gmail.com> > > > > > > Change tests that often fails in parallel execution mode to serial. > > > > > > Signed-off-by: Yucong Sun <sunyucong@gmail.com> > > > --- > > > > I hope we'll be able to parallelise these tests over time. See some > > notes on cover letter for how to target this effort better. But here's > > another thought I had while thinking about this. > > > > Some tests are inherently testing unshareable resources, e.g., like > > XDP tests. So we might never be able to completely parallelize all the > > tests. But it probably will be too restrictive to just bunde all of > > them into the one "serial" group of tests. It's a good starting point, > > but I think we'll have to have something like "serialization" group, > > where we'll be able to mark a bunch of tests like > > "serial_xdp_<testname>" and each test with "serial_xdp_" prefix will > > run sequentially relative to each other, but they might run completely > > parallel to, say, "serial_perf_" tests. WDYT? > > I think someone was talking about being able to attach multiple XDP > programs in the future? > that's all built on top of single XDP attach point using a bunch of conventions, so that's not a solution here > another approach I want to suggest is for each test to test for > EBUSY/EEXIST error code on attach and simply sleep/retry, Then in the > future when it doesn't return this error there is nothing to change on > test side. This won't work reliably, sometimes test just makes some system-wide assumptions or modifications, it's not always resulting in EBUSY > > > > > > > tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c | 2 +- > > > .../selftests/bpf/prog_tests/cgroup_attach_autodetach.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c | 2 +- > > > .../testing/selftests/bpf/prog_tests/cgroup_attach_override.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/cgroup_link.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/check_mtu.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c | 3 ++- > > > .../selftests/bpf/prog_tests/flow_dissector_load_bytes.c | 2 +- > > > .../testing/selftests/bpf/prog_tests/flow_dissector_reattach.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/kfree_skb.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/modify_return.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/perf_buffer.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/perf_link.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/probe_user.c | 3 ++- > > > .../selftests/bpf/prog_tests/raw_tp_writable_test_run.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +- > > > .../selftests/bpf/prog_tests/send_signal_sched_switch.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/snprintf_btf.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/sock_fields.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/timer.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/timer_mim.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/tp_attach_query.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/trace_printk.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/trace_vprintk.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 3 ++- > > > tools/testing/selftests/bpf/prog_tests/xdp_attach.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/xdp_bonding.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/xdp_info.c | 2 +- > > > tools/testing/selftests/bpf/prog_tests/xdp_link.c | 2 +- > > > 38 files changed, 48 insertions(+), 38 deletions(-) > > > > > > diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > > index 85babb0487b3..b52ff8ce34db 100644 > > > --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > > +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c > > > @@ -179,7 +179,7 @@ static void do_bpf_iter_setsockopt(struct bpf_iter_setsockopt *iter_skel, > > > free_fds(est_fds, nr_est); > > > } > > > > > > > [...]
diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c index 85babb0487b3..b52ff8ce34db 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c @@ -179,7 +179,7 @@ static void do_bpf_iter_setsockopt(struct bpf_iter_setsockopt *iter_skel, free_fds(est_fds, nr_est); } -void test_bpf_iter_setsockopt(void) +void serial_test_bpf_iter_setsockopt(void) { struct bpf_iter_setsockopt *iter_skel = NULL; struct bpf_cubic *cubic_skel = NULL; diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c b/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c index 284d5921c345..eb8eeebe6935 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c @@ -3,7 +3,7 @@ #define nr_iters 2 -void test_bpf_obj_id(void) +void serial_test_bpf_obj_id(void) { const __u64 array_magic_value = 0xfaceb00c; const __u32 array_key = 0; diff --git a/tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c b/tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c index 876be0ecb654..621c57222191 100644 --- a/tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c +++ b/tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c @@ -363,7 +363,7 @@ static void test_shared(int parent_cgroup_fd, int child_cgroup_fd) cg_storage_multi_shared__destroy(obj); } -void test_cg_storage_multi(void) +void serial_test_cg_storage_multi(void) { int parent_cgroup_fd = -1, child_cgroup_fd = -1; diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_autodetach.c b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_autodetach.c index 70e94e783070..5de485c7370f 100644 --- a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_autodetach.c +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_autodetach.c @@ -21,7 +21,7 @@ static int prog_load(void) bpf_log_buf, BPF_LOG_BUF_SIZE); } -void test_cgroup_attach_autodetach(void) +void serial_test_cgroup_attach_autodetach(void) { __u32 duration = 0, prog_cnt = 4, attach_flags; int allow_prog[2] = {-1}; diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c index 20bb8831dda6..731bea84d8ed 100644 --- a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_multi.c @@ -74,7 +74,7 @@ static int prog_load_cnt(int verdict, int val) return ret; } -void test_cgroup_attach_multi(void) +void serial_test_cgroup_attach_multi(void) { __u32 prog_ids[4], prog_cnt = 0, attach_flags, saved_prog_id; int cg1 = 0, cg2 = 0, cg3 = 0, cg4 = 0, cg5 = 0, key = 0; diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c index 9e96f8d87fea..10d3c33821a7 100644 --- a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c @@ -23,7 +23,7 @@ static int prog_load(int verdict) bpf_log_buf, BPF_LOG_BUF_SIZE); } -void test_cgroup_attach_override(void) +void serial_test_cgroup_attach_override(void) { int drop_prog = -1, allow_prog = -1, foo = -1, bar = -1; __u32 duration = 0; diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_link.c b/tools/testing/selftests/bpf/prog_tests/cgroup_link.c index 9091524131d6..9e6e6aad347c 100644 --- a/tools/testing/selftests/bpf/prog_tests/cgroup_link.c +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_link.c @@ -24,7 +24,7 @@ int ping_and_check(int exp_calls, int exp_alt_calls) return 0; } -void test_cgroup_link(void) +void serial_test_cgroup_link(void) { struct { const char *path; diff --git a/tools/testing/selftests/bpf/prog_tests/check_mtu.c b/tools/testing/selftests/bpf/prog_tests/check_mtu.c index 012068f33a0a..f73e6e36b74d 100644 --- a/tools/testing/selftests/bpf/prog_tests/check_mtu.c +++ b/tools/testing/selftests/bpf/prog_tests/check_mtu.c @@ -195,7 +195,7 @@ static void test_check_mtu_tc(__u32 mtu, __u32 ifindex) test_check_mtu__destroy(skel); } -void test_check_mtu(void) +void serial_test_check_mtu(void) { __u32 mtu_lo; diff --git a/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c b/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c index 2839f4270a26..9cff14a23bb7 100644 --- a/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c +++ b/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c @@ -380,7 +380,8 @@ static void test_func_map_prog_compatibility(void) "./test_attach_probe.o"); } -void test_fexit_bpf2bpf(void) +/* NOTE: affect other tests, must run in serial mode */ +void serial_test_fexit_bpf2bpf(void) { if (test__start_subtest("target_no_callees")) test_target_no_callees(); diff --git a/tools/testing/selftests/bpf/prog_tests/flow_dissector_load_bytes.c b/tools/testing/selftests/bpf/prog_tests/flow_dissector_load_bytes.c index 0e8a4d2f023d..6093728497c7 100644 --- a/tools/testing/selftests/bpf/prog_tests/flow_dissector_load_bytes.c +++ b/tools/testing/selftests/bpf/prog_tests/flow_dissector_load_bytes.c @@ -2,7 +2,7 @@ #include <test_progs.h> #include <network_helpers.h> -void test_flow_dissector_load_bytes(void) +void serial_test_flow_dissector_load_bytes(void) { struct bpf_flow_keys flow_keys; __u32 duration = 0, retval, size; diff --git a/tools/testing/selftests/bpf/prog_tests/flow_dissector_reattach.c b/tools/testing/selftests/bpf/prog_tests/flow_dissector_reattach.c index 3931ede5c534..f0c6c226aba8 100644 --- a/tools/testing/selftests/bpf/prog_tests/flow_dissector_reattach.c +++ b/tools/testing/selftests/bpf/prog_tests/flow_dissector_reattach.c @@ -628,7 +628,7 @@ static void run_tests(int netns) } } -void test_flow_dissector_reattach(void) +void serial_test_flow_dissector_reattach(void) { int err, new_net, saved_net; diff --git a/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c b/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c index 67e86f8d8677..4ef4f284b462 100644 --- a/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c +++ b/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c @@ -49,7 +49,7 @@ static void close_perf_events(void) free(pfd_array); } -void test_get_branch_snapshot(void) +void serial_test_get_branch_snapshot(void) { struct get_branch_snapshot *skel = NULL; int err; diff --git a/tools/testing/selftests/bpf/prog_tests/kfree_skb.c b/tools/testing/selftests/bpf/prog_tests/kfree_skb.c index ddfb6bf97152..032a322d51f2 100644 --- a/tools/testing/selftests/bpf/prog_tests/kfree_skb.c +++ b/tools/testing/selftests/bpf/prog_tests/kfree_skb.c @@ -48,7 +48,8 @@ static void on_sample(void *ctx, int cpu, void *data, __u32 size) *(bool *)ctx = true; } -void test_kfree_skb(void) +/* TODO: fix kernel panic caused by this test in parallel mode */ +void serial_test_kfree_skb(void) { struct __sk_buff skb = {}; struct bpf_prog_test_run_attr tattr = { diff --git a/tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c b/tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c index 59adb4715394..7589c03fd26b 100644 --- a/tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c +++ b/tools/testing/selftests/bpf/prog_tests/migrate_reuseport.c @@ -541,7 +541,7 @@ static void run_test(struct migrate_reuseport_test_case *test_case, } } -void test_migrate_reuseport(void) +void serial_test_migrate_reuseport(void) { struct test_migrate_reuseport *skel; int i; diff --git a/tools/testing/selftests/bpf/prog_tests/modify_return.c b/tools/testing/selftests/bpf/prog_tests/modify_return.c index 97fec70c600b..b772fe30ce9b 100644 --- a/tools/testing/selftests/bpf/prog_tests/modify_return.c +++ b/tools/testing/selftests/bpf/prog_tests/modify_return.c @@ -53,7 +53,8 @@ static void run_test(__u32 input_retval, __u16 want_side_effect, __s16 want_ret) modify_return__destroy(skel); } -void test_modify_return(void) +/* TODO: conflict with get_func_ip_test */ +void serial_test_modify_return(void) { run_test(0 /* input_retval */, 1 /* want_side_effect */, diff --git a/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c b/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c index 2535788e135f..24d493482ffc 100644 --- a/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c +++ b/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c @@ -78,7 +78,8 @@ static void test_ns_current_pid_tgid_new_ns(void) return; } -void test_ns_current_pid_tgid(void) +/* TODO: use a different tracepoint */ +void serial_test_ns_current_pid_tgid(void) { if (test__start_subtest("ns_current_pid_tgid_root_ns")) test_current_pid_tgid(NULL); diff --git a/tools/testing/selftests/bpf/prog_tests/perf_buffer.c b/tools/testing/selftests/bpf/prog_tests/perf_buffer.c index 6490e9673002..6979aff4aab2 100644 --- a/tools/testing/selftests/bpf/prog_tests/perf_buffer.c +++ b/tools/testing/selftests/bpf/prog_tests/perf_buffer.c @@ -43,7 +43,7 @@ int trigger_on_cpu(int cpu) return 0; } -void test_perf_buffer(void) +void serial_test_perf_buffer(void) { int err, on_len, nr_on_cpus = 0, nr_cpus, i; struct perf_buffer_opts pb_opts = {}; diff --git a/tools/testing/selftests/bpf/prog_tests/perf_link.c b/tools/testing/selftests/bpf/prog_tests/perf_link.c index 74e5bd5f1c19..513b5349539c 100644 --- a/tools/testing/selftests/bpf/prog_tests/perf_link.c +++ b/tools/testing/selftests/bpf/prog_tests/perf_link.c @@ -23,7 +23,8 @@ static void burn_cpu(void) ++j; } -void test_perf_link(void) +/* TODO: often fails in concurrent mode */ +void serial_test_perf_link(void) { struct test_perf_link *skel = NULL; struct perf_event_attr attr; diff --git a/tools/testing/selftests/bpf/prog_tests/probe_user.c b/tools/testing/selftests/bpf/prog_tests/probe_user.c index 52fe157e2a90..abf890d066eb 100644 --- a/tools/testing/selftests/bpf/prog_tests/probe_user.c +++ b/tools/testing/selftests/bpf/prog_tests/probe_user.c @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 #include <test_progs.h> -void test_probe_user(void) +/* TODO: corrupts other tests uses connect() */ +void serial_test_probe_user(void) { const char *prog_name = "handle_sys_connect"; const char *obj_file = "./test_probe_user.o"; diff --git a/tools/testing/selftests/bpf/prog_tests/raw_tp_writable_test_run.c b/tools/testing/selftests/bpf/prog_tests/raw_tp_writable_test_run.c index 5c45424cac5f..ddefa1192e5d 100644 --- a/tools/testing/selftests/bpf/prog_tests/raw_tp_writable_test_run.c +++ b/tools/testing/selftests/bpf/prog_tests/raw_tp_writable_test_run.c @@ -3,7 +3,8 @@ #include <test_progs.h> #include <linux/nbd.h> -void test_raw_tp_writable_test_run(void) +/* NOTE: conflict with other tests. */ +void serial_test_raw_tp_writable_test_run(void) { __u32 duration = 0; char error[4096]; diff --git a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c index d40e9156c48d..3cfc910ab3c1 100644 --- a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c +++ b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c @@ -858,7 +858,7 @@ void test_map_type(enum bpf_map_type mt) cleanup(); } -void test_select_reuseport(void) +void serial_test_select_reuseport(void) { saved_tcp_fo = read_int_sysctl(TCP_FO_SYSCTL); if (saved_tcp_fo < 0) diff --git a/tools/testing/selftests/bpf/prog_tests/send_signal_sched_switch.c b/tools/testing/selftests/bpf/prog_tests/send_signal_sched_switch.c index 189a34a7addb..15dacfcfaa6d 100644 --- a/tools/testing/selftests/bpf/prog_tests/send_signal_sched_switch.c +++ b/tools/testing/selftests/bpf/prog_tests/send_signal_sched_switch.c @@ -25,7 +25,8 @@ static void *worker(void *p) return NULL; } -void test_send_signal_sched_switch(void) +/* NOTE: cause events loss */ +void serial_test_send_signal_sched_switch(void) { struct test_send_signal_kern *skel; pthread_t threads[THREAD_COUNT]; diff --git a/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c b/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c index 2b392590e8ca..547ae53cde74 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c @@ -105,7 +105,7 @@ static void do_test(void) close(listen_fd); } -void test_sk_storage_tracing(void) +void serial_test_sk_storage_tracing(void) { struct test_sk_storage_trace_itself *skel_itself; int err; diff --git a/tools/testing/selftests/bpf/prog_tests/snprintf_btf.c b/tools/testing/selftests/bpf/prog_tests/snprintf_btf.c index 76e1f5fe18fa..dd41b826be30 100644 --- a/tools/testing/selftests/bpf/prog_tests/snprintf_btf.c +++ b/tools/testing/selftests/bpf/prog_tests/snprintf_btf.c @@ -6,7 +6,7 @@ /* Demonstrate that bpf_snprintf_btf succeeds and that various data types * are formatted correctly. */ -void test_snprintf_btf(void) +void serial_test_snprintf_btf(void) { struct netif_receive_skb *skel; struct netif_receive_skb__bss *bss; diff --git a/tools/testing/selftests/bpf/prog_tests/sock_fields.c b/tools/testing/selftests/bpf/prog_tests/sock_fields.c index 577d619fb07e..fae40db4d81f 100644 --- a/tools/testing/selftests/bpf/prog_tests/sock_fields.c +++ b/tools/testing/selftests/bpf/prog_tests/sock_fields.c @@ -329,7 +329,7 @@ static void test(void) close(listen_fd); } -void test_sock_fields(void) +void serial_test_sock_fields(void) { struct bpf_link *egress_link = NULL, *ingress_link = NULL; int parent_cg_fd = -1, child_cg_fd = -1; diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c index 5c5979046523..102c73a00402 100644 --- a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c @@ -2037,7 +2037,7 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map, test_udp_unix_redir(skel, map, family); } -void test_sockmap_listen(void) +void serial_test_sockmap_listen(void) { struct test_sockmap_listen *skel; diff --git a/tools/testing/selftests/bpf/prog_tests/timer.c b/tools/testing/selftests/bpf/prog_tests/timer.c index 25f40e1b9967..0f4e49e622cd 100644 --- a/tools/testing/selftests/bpf/prog_tests/timer.c +++ b/tools/testing/selftests/bpf/prog_tests/timer.c @@ -39,7 +39,8 @@ static int timer(struct timer *timer_skel) return 0; } -void test_timer(void) +/* TODO: use pid filtering */ +void serial_test_timer(void) { struct timer *timer_skel = NULL; int err; diff --git a/tools/testing/selftests/bpf/prog_tests/timer_mim.c b/tools/testing/selftests/bpf/prog_tests/timer_mim.c index ced8f6cf347c..949a0617869d 100644 --- a/tools/testing/selftests/bpf/prog_tests/timer_mim.c +++ b/tools/testing/selftests/bpf/prog_tests/timer_mim.c @@ -52,7 +52,7 @@ static int timer_mim(struct timer_mim *timer_skel) return 0; } -void test_timer_mim(void) +void serial_test_timer_mim(void) { struct timer_mim_reject *timer_reject_skel = NULL; libbpf_print_fn_t old_print_fn = NULL; diff --git a/tools/testing/selftests/bpf/prog_tests/tp_attach_query.c b/tools/testing/selftests/bpf/prog_tests/tp_attach_query.c index fb095e5cd9af..8652d0a46c87 100644 --- a/tools/testing/selftests/bpf/prog_tests/tp_attach_query.c +++ b/tools/testing/selftests/bpf/prog_tests/tp_attach_query.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <test_progs.h> -void test_tp_attach_query(void) +void serial_test_tp_attach_query(void) { const int num_progs = 3; int i, j, bytes, efd, err, prog_fd[num_progs], pmu_fd[num_progs]; diff --git a/tools/testing/selftests/bpf/prog_tests/trace_printk.c b/tools/testing/selftests/bpf/prog_tests/trace_printk.c index e47835f0a674..3f7a7141265e 100644 --- a/tools/testing/selftests/bpf/prog_tests/trace_printk.c +++ b/tools/testing/selftests/bpf/prog_tests/trace_printk.c @@ -8,7 +8,7 @@ #define TRACEBUF "/sys/kernel/debug/tracing/trace_pipe" #define SEARCHMSG "testing,testing" -void test_trace_printk(void) +void serial_test_trace_printk(void) { int err = 0, iter = 0, found = 0; struct trace_printk__bss *bss; diff --git a/tools/testing/selftests/bpf/prog_tests/trace_vprintk.c b/tools/testing/selftests/bpf/prog_tests/trace_vprintk.c index 61a24e62e1a0..46101270cb1a 100644 --- a/tools/testing/selftests/bpf/prog_tests/trace_vprintk.c +++ b/tools/testing/selftests/bpf/prog_tests/trace_vprintk.c @@ -8,7 +8,7 @@ #define TRACEBUF "/sys/kernel/debug/tracing/trace_pipe" #define SEARCHMSG "1,2,3,4,5,6,7,8,9,10" -void test_trace_vprintk(void) +void serial_test_trace_vprintk(void) { int err = 0, iter = 0, found = 0; struct trace_vprintk__bss *bss; diff --git a/tools/testing/selftests/bpf/prog_tests/trampoline_count.c b/tools/testing/selftests/bpf/prog_tests/trampoline_count.c index d7f5a931d7f3..fc146671b20a 100644 --- a/tools/testing/selftests/bpf/prog_tests/trampoline_count.c +++ b/tools/testing/selftests/bpf/prog_tests/trampoline_count.c @@ -41,7 +41,8 @@ static struct bpf_link *load(struct bpf_object *obj, const char *name) return bpf_program__attach_trace(prog); } -void test_trampoline_count(void) +/* TODO: use different target function to run in concurrent mode */ +void serial_test_trampoline_count(void) { const char *fentry_name = "fentry/__set_task_comm"; const char *fexit_name = "fexit/__set_task_comm"; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_attach.c b/tools/testing/selftests/bpf/prog_tests/xdp_attach.c index 15ef3531483e..4c4057262cd8 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_attach.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_attach.c @@ -4,7 +4,7 @@ #define IFINDEX_LO 1 #define XDP_FLAGS_REPLACE (1U << 4) -void test_xdp_attach(void) +void serial_test_xdp_attach(void) { __u32 duration = 0, id1, id2, id0 = 0, len; struct bpf_object *obj1, *obj2, *obj3; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_bonding.c b/tools/testing/selftests/bpf/prog_tests/xdp_bonding.c index ad3ba81b4048..faa22b84f2ee 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_bonding.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_bonding.c @@ -519,7 +519,7 @@ static struct bond_test_case bond_test_cases[] = { { "xdp_bonding_xor_layer34", BOND_MODE_XOR, BOND_XMIT_POLICY_LAYER34, }, }; -void test_xdp_bonding(void) +void serial_test_xdp_bonding(void) { libbpf_print_fn_t old_print_fn; struct skeletons skeletons = {}; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c b/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c index 8755effd80b0..fd812bd43600 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_cpumap_attach.c @@ -7,7 +7,7 @@ #define IFINDEX_LO 1 -void test_xdp_cpumap_attach(void) +void serial_test_xdp_cpumap_attach(void) { struct test_xdp_with_cpumap_helpers *skel; struct bpf_prog_info info = {}; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c b/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c index c72af030ff10..d4e9a9972a67 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c @@ -72,7 +72,7 @@ void test_neg_xdp_devmap_helpers(void) } -void test_xdp_devmap_attach(void) +void serial_test_xdp_devmap_attach(void) { if (test__start_subtest("DEVMAP with programs in entries")) test_xdp_with_devmap_helpers(); diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_info.c b/tools/testing/selftests/bpf/prog_tests/xdp_info.c index d2d7a283d72f..4e2a4fd56f67 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_info.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_info.c @@ -4,7 +4,7 @@ #define IFINDEX_LO 1 -void test_xdp_info(void) +void serial_test_xdp_info(void) { __u32 len = sizeof(struct bpf_prog_info), duration = 0, prog_id; const char *file = "./xdp_dummy.o"; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_link.c b/tools/testing/selftests/bpf/prog_tests/xdp_link.c index 46eed0a33c23..983ab0b47d30 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_link.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_link.c @@ -6,7 +6,7 @@ #define IFINDEX_LO 1 -void test_xdp_link(void) +void serial_test_xdp_link(void) { __u32 duration = 0, id1, id2, id0 = 0, prog_fd1, prog_fd2, err; DECLARE_LIBBPF_OPTS(bpf_xdp_set_link_opts, opts, .old_fd = -1);