From 1727a9dce6775a4ea77a611e9ea51cac1d093519 Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Mon, 11 Feb 2019 12:01:18 +0000 Subject: [PATCH 1/4] selftests: bpf: add "alu32" to .gitignore "alu32" is a build dir and contains various files for BPF sub-register code-gen testing. This patch tells git to ignore it. Suggested-by: Yonghong Song Reviewed-by: Jakub Kicinski Signed-off-by: Jiong Wang Signed-off-by: Alexei Starovoitov --- tools/testing/selftests/bpf/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/bpf/.gitignore b/tools/testing/selftests/bpf/.gitignore index dd093bd91aa9..e47168d1257d 100644 --- a/tools/testing/selftests/bpf/.gitignore +++ b/tools/testing/selftests/bpf/.gitignore @@ -29,3 +29,4 @@ test_netcnt test_section_names test_tcpnotify_user test_libbpf +alu32 From 4836b4637ef080c2764c44ee40ed354cdb991d79 Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Mon, 11 Feb 2019 12:01:19 +0000 Subject: [PATCH 2/4] selftests: bpf: extend sub-register mode compilation to all bpf object files At the moment, we only do extra sub-register mode compilation on bpf object files used by "test_progs". These object files are really loaded and executed. This patch further extends sub-register mode compilation to all bpf object files, even those without corresponding runtime tests. Because this could help testing LLVM sub-register code-gen, kernel bpf selftest has much more C testcases with reasonable size and complexity compared with LLVM testsuite which only contains unit tests. There were some file duplication inside BPF_OBJ_FILES_DUAL_COMPILE which is removed now. Reviewed-by: Jakub Kicinski Signed-off-by: Jiong Wang Signed-off-by: Alexei Starovoitov --- tools/testing/selftests/bpf/Makefile | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index c7e1e3255448..f2c11474f762 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -36,20 +36,14 @@ BPF_OBJ_FILES = \ get_cgroup_id_kern.o socket_cookie_prog.o test_select_reuseport_kern.o \ test_skb_cgroup_id_kern.o bpf_flow.o netcnt_prog.o test_xdp_vlan.o \ xdp_dummy.o test_map_in_map.o test_spin_lock.o test_map_lock.o \ - test_sock_fields_kern.o - -# Objects are built with default compilation flags and with sub-register -# code-gen enabled. -BPF_OBJ_FILES_DUAL_COMPILE = \ - test_pkt_access.o test_pkt_access.o test_xdp.o test_adjust_tail.o \ - test_l4lb.o test_l4lb_noinline.o test_xdp_noinline.o test_tcp_estats.o \ + test_pkt_access.o test_xdp.o test_adjust_tail.o test_l4lb.o \ + test_l4lb_noinline.o test_xdp_noinline.o test_tcp_estats.o \ test_obj_id.o test_pkt_md_access.o test_tracepoint.o \ - test_stacktrace_map.o test_stacktrace_map.o test_stacktrace_build_id.o \ - test_stacktrace_build_id.o test_get_stack_rawtp.o \ - test_get_stack_rawtp.o test_tracepoint.o test_sk_lookup_kern.o \ - test_queue_map.o test_stack_map.o + test_stacktrace_map.o test_stacktrace_build_id.o \ + test_get_stack_rawtp.o test_sk_lookup_kern.o test_queue_map.o \ + test_stack_map.o test_sock_fields_kern.o -TEST_GEN_FILES = $(BPF_OBJ_FILES) $(BPF_OBJ_FILES_DUAL_COMPILE) +TEST_GEN_FILES = $(BPF_OBJ_FILES) # Also test sub-register code-gen if LLVM + kernel both has eBPF v3 processor # support which is the first version to contain both ALU32 and JMP32 @@ -59,7 +53,7 @@ SUBREG_CODEGEN := $(shell echo "int cal(int a) { return a > 0; }" | \ $(LLC) -mattr=+alu32 -mcpu=probe 2>&1 | \ grep 'if w') ifneq ($(SUBREG_CODEGEN),) -TEST_GEN_FILES += $(patsubst %.o,alu32/%.o, $(BPF_OBJ_FILES_DUAL_COMPILE)) +TEST_GEN_FILES += $(patsubst %.o,alu32/%.o, $(BPF_OBJ_FILES)) endif # Order correspond to 'make run_tests' order From bd4aed0ee73ca873bef3cb3ec746dd796f03df28 Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Mon, 11 Feb 2019 12:01:20 +0000 Subject: [PATCH 3/4] selftests: bpf: centre kernel bpf objects under new subdir "progs" At the moment, all kernel bpf objects are listed under BPF_OBJ_FILES. Listing them manually sometimes causing patch conflict when people are adding new testcases simultaneously. It is better to centre all the related source files under a subdir "progs", then auto-generate the object file list. Suggested-by: Alexei Starovoitov Reviewed-by: Jakub Kicinski Signed-off-by: Jiong Wang Signed-off-by: Alexei Starovoitov --- tools/testing/selftests/bpf/Makefile | 26 ++++--------------- .../selftests/bpf/{ => progs}/bpf_flow.c | 0 .../selftests/bpf/{ => progs}/connect4_prog.c | 0 .../selftests/bpf/{ => progs}/connect6_prog.c | 0 .../selftests/bpf/{ => progs}/dev_cgroup.c | 0 .../bpf/{ => progs}/get_cgroup_id_kern.c | 0 .../selftests/bpf/{ => progs}/netcnt_prog.c | 0 .../bpf/{ => progs}/sample_map_ret0.c | 0 .../selftests/bpf/{ => progs}/sample_ret0.c | 0 .../selftests/bpf/{ => progs}/sendmsg4_prog.c | 0 .../selftests/bpf/{ => progs}/sendmsg6_prog.c | 0 .../bpf/{ => progs}/socket_cookie_prog.c | 0 .../bpf/{ => progs}/sockmap_parse_prog.c | 0 .../bpf/{ => progs}/sockmap_tcp_msg_prog.c | 0 .../bpf/{ => progs}/sockmap_verdict_prog.c | 0 .../bpf/{ => progs}/test_adjust_tail.c | 0 .../bpf/{ => progs}/test_btf_haskv.c | 0 .../selftests/bpf/{ => progs}/test_btf_nokv.c | 0 .../bpf/{ => progs}/test_get_stack_rawtp.c | 0 .../selftests/bpf/{ => progs}/test_l4lb.c | 0 .../bpf/{ => progs}/test_l4lb_noinline.c | 0 .../bpf/{ => progs}/test_lirc_mode2_kern.c | 0 .../bpf/{ => progs}/test_lwt_seg6local.c | 0 .../bpf/{ => progs}/test_map_in_map.c | 0 .../selftests/bpf/{ => progs}/test_map_lock.c | 0 .../selftests/bpf/{ => progs}/test_obj_id.c | 0 .../bpf/{ => progs}/test_pkt_access.c | 0 .../bpf/{ => progs}/test_pkt_md_access.c | 0 .../bpf/{ => progs}/test_queue_map.c | 0 .../{ => progs}/test_select_reuseport_kern.c | 0 .../bpf/{ => progs}/test_sk_lookup_kern.c | 0 .../bpf/{ => progs}/test_skb_cgroup_id_kern.c | 0 .../bpf/{ => progs}/test_sock_fields_kern.c | 0 .../bpf/{ => progs}/test_sockhash_kern.c | 0 .../bpf/{ => progs}/test_sockmap_kern.c | 0 .../bpf/{ => progs}/test_spin_lock.c | 0 .../bpf/{ => progs}/test_stack_map.c | 0 .../{ => progs}/test_stacktrace_build_id.c | 0 .../bpf/{ => progs}/test_stacktrace_map.c | 0 .../bpf/{ => progs}/test_tcp_estats.c | 0 .../bpf/{ => progs}/test_tcpbpf_kern.c | 0 .../bpf/{ => progs}/test_tcpnotify_kern.c | 0 .../bpf/{ => progs}/test_tracepoint.c | 0 .../bpf/{ => progs}/test_tunnel_kern.c | 0 .../selftests/bpf/{ => progs}/test_xdp.c | 0 .../selftests/bpf/{ => progs}/test_xdp_meta.c | 0 .../bpf/{ => progs}/test_xdp_noinline.c | 0 .../bpf/{ => progs}/test_xdp_redirect.c | 0 .../selftests/bpf/{ => progs}/test_xdp_vlan.c | 0 .../selftests/bpf/{ => progs}/xdp_dummy.c | 0 50 files changed, 5 insertions(+), 21 deletions(-) rename tools/testing/selftests/bpf/{ => progs}/bpf_flow.c (100%) rename tools/testing/selftests/bpf/{ => progs}/connect4_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/connect6_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/dev_cgroup.c (100%) rename tools/testing/selftests/bpf/{ => progs}/get_cgroup_id_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/netcnt_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sample_map_ret0.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sample_ret0.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sendmsg4_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sendmsg6_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/socket_cookie_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sockmap_parse_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sockmap_tcp_msg_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/sockmap_verdict_prog.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_adjust_tail.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_btf_haskv.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_btf_nokv.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_get_stack_rawtp.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_l4lb.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_l4lb_noinline.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_lirc_mode2_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_lwt_seg6local.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_map_in_map.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_map_lock.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_obj_id.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_pkt_access.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_pkt_md_access.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_queue_map.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_select_reuseport_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_sk_lookup_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_skb_cgroup_id_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_sock_fields_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_sockhash_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_sockmap_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_spin_lock.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_stack_map.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_stacktrace_build_id.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_stacktrace_map.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_tcp_estats.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_tcpbpf_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_tcpnotify_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_tracepoint.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_tunnel_kern.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_xdp.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_xdp_meta.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_xdp_noinline.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_xdp_redirect.c (100%) rename tools/testing/selftests/bpf/{ => progs}/test_xdp_vlan.c (100%) rename tools/testing/selftests/bpf/{ => progs}/xdp_dummy.c (100%) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index f2c11474f762..575746e63544 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -25,24 +25,7 @@ TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test test_socket_cookie test_cgroup_storage test_select_reuseport test_section_names \ test_netcnt test_tcpnotify_user test_sock_fields -BPF_OBJ_FILES = \ - test_xdp_redirect.o test_xdp_meta.o sockmap_parse_prog.o \ - sockmap_verdict_prog.o dev_cgroup.o sample_ret0.o \ - test_tcpnotify_kern.o sample_map_ret0.o test_tcpbpf_kern.o \ - sockmap_tcp_msg_prog.o connect4_prog.o connect6_prog.o \ - test_btf_haskv.o test_btf_nokv.o test_sockmap_kern.o \ - test_tunnel_kern.o test_sockhash_kern.o test_lwt_seg6local.o \ - sendmsg4_prog.o sendmsg6_prog.o test_lirc_mode2_kern.o \ - get_cgroup_id_kern.o socket_cookie_prog.o test_select_reuseport_kern.o \ - test_skb_cgroup_id_kern.o bpf_flow.o netcnt_prog.o test_xdp_vlan.o \ - xdp_dummy.o test_map_in_map.o test_spin_lock.o test_map_lock.o \ - test_pkt_access.o test_xdp.o test_adjust_tail.o test_l4lb.o \ - test_l4lb_noinline.o test_xdp_noinline.o test_tcp_estats.o \ - test_obj_id.o test_pkt_md_access.o test_tracepoint.o \ - test_stacktrace_map.o test_stacktrace_build_id.o \ - test_get_stack_rawtp.o test_sk_lookup_kern.o test_queue_map.o \ - test_stack_map.o test_sock_fields_kern.o - +BPF_OBJ_FILES = $(patsubst %.c,%.o, $(notdir $(wildcard progs/*.c))) TEST_GEN_FILES = $(BPF_OBJ_FILES) # Also test sub-register code-gen if LLVM + kernel both has eBPF v3 processor @@ -184,7 +167,8 @@ $(ALU32_BUILD_DIR)/test_progs_32: test_progs.c $(ALU32_BUILD_DIR) \ $(CC) $(CFLAGS) -o $(ALU32_BUILD_DIR)/test_progs_32 $< \ trace_helpers.c $(OUTPUT)/libbpf.a $(LDLIBS) -$(ALU32_BUILD_DIR)/%.o: %.c $(ALU32_BUILD_DIR) $(ALU32_BUILD_DIR)/test_progs_32 +$(ALU32_BUILD_DIR)/%.o: progs/%.c $(ALU32_BUILD_DIR) \ + $(ALU32_BUILD_DIR)/test_progs_32 $(CLANG) $(CLANG_FLAGS) \ -O2 -target bpf -emit-llvm -c $< -o - | \ $(LLC) -march=bpf -mattr=+alu32 -mcpu=$(CPU) $(LLC_FLAGS) \ @@ -196,7 +180,7 @@ endif # Have one program compiled without "-target bpf" to test whether libbpf loads # it successfully -$(OUTPUT)/test_xdp.o: test_xdp.c +$(OUTPUT)/test_xdp.o: progs/test_xdp.c $(CLANG) $(CLANG_FLAGS) \ -O2 -emit-llvm -c $< -o - | \ $(LLC) -march=bpf -mcpu=$(CPU) $(LLC_FLAGS) -filetype=obj -o $@ @@ -204,7 +188,7 @@ ifeq ($(DWARF2BTF),y) $(BTF_PAHOLE) -J $@ endif -$(OUTPUT)/%.o: %.c +$(OUTPUT)/%.o: progs/%.c $(CLANG) $(CLANG_FLAGS) \ -O2 -target bpf -emit-llvm -c $< -o - | \ $(LLC) -march=bpf -mcpu=$(CPU) $(LLC_FLAGS) -filetype=obj -o $@ diff --git a/tools/testing/selftests/bpf/bpf_flow.c b/tools/testing/selftests/bpf/progs/bpf_flow.c similarity index 100% rename from tools/testing/selftests/bpf/bpf_flow.c rename to tools/testing/selftests/bpf/progs/bpf_flow.c diff --git a/tools/testing/selftests/bpf/connect4_prog.c b/tools/testing/selftests/bpf/progs/connect4_prog.c similarity index 100% rename from tools/testing/selftests/bpf/connect4_prog.c rename to tools/testing/selftests/bpf/progs/connect4_prog.c diff --git a/tools/testing/selftests/bpf/connect6_prog.c b/tools/testing/selftests/bpf/progs/connect6_prog.c similarity index 100% rename from tools/testing/selftests/bpf/connect6_prog.c rename to tools/testing/selftests/bpf/progs/connect6_prog.c diff --git a/tools/testing/selftests/bpf/dev_cgroup.c b/tools/testing/selftests/bpf/progs/dev_cgroup.c similarity index 100% rename from tools/testing/selftests/bpf/dev_cgroup.c rename to tools/testing/selftests/bpf/progs/dev_cgroup.c diff --git a/tools/testing/selftests/bpf/get_cgroup_id_kern.c b/tools/testing/selftests/bpf/progs/get_cgroup_id_kern.c similarity index 100% rename from tools/testing/selftests/bpf/get_cgroup_id_kern.c rename to tools/testing/selftests/bpf/progs/get_cgroup_id_kern.c diff --git a/tools/testing/selftests/bpf/netcnt_prog.c b/tools/testing/selftests/bpf/progs/netcnt_prog.c similarity index 100% rename from tools/testing/selftests/bpf/netcnt_prog.c rename to tools/testing/selftests/bpf/progs/netcnt_prog.c diff --git a/tools/testing/selftests/bpf/sample_map_ret0.c b/tools/testing/selftests/bpf/progs/sample_map_ret0.c similarity index 100% rename from tools/testing/selftests/bpf/sample_map_ret0.c rename to tools/testing/selftests/bpf/progs/sample_map_ret0.c diff --git a/tools/testing/selftests/bpf/sample_ret0.c b/tools/testing/selftests/bpf/progs/sample_ret0.c similarity index 100% rename from tools/testing/selftests/bpf/sample_ret0.c rename to tools/testing/selftests/bpf/progs/sample_ret0.c diff --git a/tools/testing/selftests/bpf/sendmsg4_prog.c b/tools/testing/selftests/bpf/progs/sendmsg4_prog.c similarity index 100% rename from tools/testing/selftests/bpf/sendmsg4_prog.c rename to tools/testing/selftests/bpf/progs/sendmsg4_prog.c diff --git a/tools/testing/selftests/bpf/sendmsg6_prog.c b/tools/testing/selftests/bpf/progs/sendmsg6_prog.c similarity index 100% rename from tools/testing/selftests/bpf/sendmsg6_prog.c rename to tools/testing/selftests/bpf/progs/sendmsg6_prog.c diff --git a/tools/testing/selftests/bpf/socket_cookie_prog.c b/tools/testing/selftests/bpf/progs/socket_cookie_prog.c similarity index 100% rename from tools/testing/selftests/bpf/socket_cookie_prog.c rename to tools/testing/selftests/bpf/progs/socket_cookie_prog.c diff --git a/tools/testing/selftests/bpf/sockmap_parse_prog.c b/tools/testing/selftests/bpf/progs/sockmap_parse_prog.c similarity index 100% rename from tools/testing/selftests/bpf/sockmap_parse_prog.c rename to tools/testing/selftests/bpf/progs/sockmap_parse_prog.c diff --git a/tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c similarity index 100% rename from tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c rename to tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c diff --git a/tools/testing/selftests/bpf/sockmap_verdict_prog.c b/tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c similarity index 100% rename from tools/testing/selftests/bpf/sockmap_verdict_prog.c rename to tools/testing/selftests/bpf/progs/sockmap_verdict_prog.c diff --git a/tools/testing/selftests/bpf/test_adjust_tail.c b/tools/testing/selftests/bpf/progs/test_adjust_tail.c similarity index 100% rename from tools/testing/selftests/bpf/test_adjust_tail.c rename to tools/testing/selftests/bpf/progs/test_adjust_tail.c diff --git a/tools/testing/selftests/bpf/test_btf_haskv.c b/tools/testing/selftests/bpf/progs/test_btf_haskv.c similarity index 100% rename from tools/testing/selftests/bpf/test_btf_haskv.c rename to tools/testing/selftests/bpf/progs/test_btf_haskv.c diff --git a/tools/testing/selftests/bpf/test_btf_nokv.c b/tools/testing/selftests/bpf/progs/test_btf_nokv.c similarity index 100% rename from tools/testing/selftests/bpf/test_btf_nokv.c rename to tools/testing/selftests/bpf/progs/test_btf_nokv.c diff --git a/tools/testing/selftests/bpf/test_get_stack_rawtp.c b/tools/testing/selftests/bpf/progs/test_get_stack_rawtp.c similarity index 100% rename from tools/testing/selftests/bpf/test_get_stack_rawtp.c rename to tools/testing/selftests/bpf/progs/test_get_stack_rawtp.c diff --git a/tools/testing/selftests/bpf/test_l4lb.c b/tools/testing/selftests/bpf/progs/test_l4lb.c similarity index 100% rename from tools/testing/selftests/bpf/test_l4lb.c rename to tools/testing/selftests/bpf/progs/test_l4lb.c diff --git a/tools/testing/selftests/bpf/test_l4lb_noinline.c b/tools/testing/selftests/bpf/progs/test_l4lb_noinline.c similarity index 100% rename from tools/testing/selftests/bpf/test_l4lb_noinline.c rename to tools/testing/selftests/bpf/progs/test_l4lb_noinline.c diff --git a/tools/testing/selftests/bpf/test_lirc_mode2_kern.c b/tools/testing/selftests/bpf/progs/test_lirc_mode2_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_lirc_mode2_kern.c rename to tools/testing/selftests/bpf/progs/test_lirc_mode2_kern.c diff --git a/tools/testing/selftests/bpf/test_lwt_seg6local.c b/tools/testing/selftests/bpf/progs/test_lwt_seg6local.c similarity index 100% rename from tools/testing/selftests/bpf/test_lwt_seg6local.c rename to tools/testing/selftests/bpf/progs/test_lwt_seg6local.c diff --git a/tools/testing/selftests/bpf/test_map_in_map.c b/tools/testing/selftests/bpf/progs/test_map_in_map.c similarity index 100% rename from tools/testing/selftests/bpf/test_map_in_map.c rename to tools/testing/selftests/bpf/progs/test_map_in_map.c diff --git a/tools/testing/selftests/bpf/test_map_lock.c b/tools/testing/selftests/bpf/progs/test_map_lock.c similarity index 100% rename from tools/testing/selftests/bpf/test_map_lock.c rename to tools/testing/selftests/bpf/progs/test_map_lock.c diff --git a/tools/testing/selftests/bpf/test_obj_id.c b/tools/testing/selftests/bpf/progs/test_obj_id.c similarity index 100% rename from tools/testing/selftests/bpf/test_obj_id.c rename to tools/testing/selftests/bpf/progs/test_obj_id.c diff --git a/tools/testing/selftests/bpf/test_pkt_access.c b/tools/testing/selftests/bpf/progs/test_pkt_access.c similarity index 100% rename from tools/testing/selftests/bpf/test_pkt_access.c rename to tools/testing/selftests/bpf/progs/test_pkt_access.c diff --git a/tools/testing/selftests/bpf/test_pkt_md_access.c b/tools/testing/selftests/bpf/progs/test_pkt_md_access.c similarity index 100% rename from tools/testing/selftests/bpf/test_pkt_md_access.c rename to tools/testing/selftests/bpf/progs/test_pkt_md_access.c diff --git a/tools/testing/selftests/bpf/test_queue_map.c b/tools/testing/selftests/bpf/progs/test_queue_map.c similarity index 100% rename from tools/testing/selftests/bpf/test_queue_map.c rename to tools/testing/selftests/bpf/progs/test_queue_map.c diff --git a/tools/testing/selftests/bpf/test_select_reuseport_kern.c b/tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_select_reuseport_kern.c rename to tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c diff --git a/tools/testing/selftests/bpf/test_sk_lookup_kern.c b/tools/testing/selftests/bpf/progs/test_sk_lookup_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_sk_lookup_kern.c rename to tools/testing/selftests/bpf/progs/test_sk_lookup_kern.c diff --git a/tools/testing/selftests/bpf/test_skb_cgroup_id_kern.c b/tools/testing/selftests/bpf/progs/test_skb_cgroup_id_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_skb_cgroup_id_kern.c rename to tools/testing/selftests/bpf/progs/test_skb_cgroup_id_kern.c diff --git a/tools/testing/selftests/bpf/test_sock_fields_kern.c b/tools/testing/selftests/bpf/progs/test_sock_fields_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_sock_fields_kern.c rename to tools/testing/selftests/bpf/progs/test_sock_fields_kern.c diff --git a/tools/testing/selftests/bpf/test_sockhash_kern.c b/tools/testing/selftests/bpf/progs/test_sockhash_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_sockhash_kern.c rename to tools/testing/selftests/bpf/progs/test_sockhash_kern.c diff --git a/tools/testing/selftests/bpf/test_sockmap_kern.c b/tools/testing/selftests/bpf/progs/test_sockmap_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_sockmap_kern.c rename to tools/testing/selftests/bpf/progs/test_sockmap_kern.c diff --git a/tools/testing/selftests/bpf/test_spin_lock.c b/tools/testing/selftests/bpf/progs/test_spin_lock.c similarity index 100% rename from tools/testing/selftests/bpf/test_spin_lock.c rename to tools/testing/selftests/bpf/progs/test_spin_lock.c diff --git a/tools/testing/selftests/bpf/test_stack_map.c b/tools/testing/selftests/bpf/progs/test_stack_map.c similarity index 100% rename from tools/testing/selftests/bpf/test_stack_map.c rename to tools/testing/selftests/bpf/progs/test_stack_map.c diff --git a/tools/testing/selftests/bpf/test_stacktrace_build_id.c b/tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c similarity index 100% rename from tools/testing/selftests/bpf/test_stacktrace_build_id.c rename to tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c diff --git a/tools/testing/selftests/bpf/test_stacktrace_map.c b/tools/testing/selftests/bpf/progs/test_stacktrace_map.c similarity index 100% rename from tools/testing/selftests/bpf/test_stacktrace_map.c rename to tools/testing/selftests/bpf/progs/test_stacktrace_map.c diff --git a/tools/testing/selftests/bpf/test_tcp_estats.c b/tools/testing/selftests/bpf/progs/test_tcp_estats.c similarity index 100% rename from tools/testing/selftests/bpf/test_tcp_estats.c rename to tools/testing/selftests/bpf/progs/test_tcp_estats.c diff --git a/tools/testing/selftests/bpf/test_tcpbpf_kern.c b/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_tcpbpf_kern.c rename to tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c diff --git a/tools/testing/selftests/bpf/test_tcpnotify_kern.c b/tools/testing/selftests/bpf/progs/test_tcpnotify_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_tcpnotify_kern.c rename to tools/testing/selftests/bpf/progs/test_tcpnotify_kern.c diff --git a/tools/testing/selftests/bpf/test_tracepoint.c b/tools/testing/selftests/bpf/progs/test_tracepoint.c similarity index 100% rename from tools/testing/selftests/bpf/test_tracepoint.c rename to tools/testing/selftests/bpf/progs/test_tracepoint.c diff --git a/tools/testing/selftests/bpf/test_tunnel_kern.c b/tools/testing/selftests/bpf/progs/test_tunnel_kern.c similarity index 100% rename from tools/testing/selftests/bpf/test_tunnel_kern.c rename to tools/testing/selftests/bpf/progs/test_tunnel_kern.c diff --git a/tools/testing/selftests/bpf/test_xdp.c b/tools/testing/selftests/bpf/progs/test_xdp.c similarity index 100% rename from tools/testing/selftests/bpf/test_xdp.c rename to tools/testing/selftests/bpf/progs/test_xdp.c diff --git a/tools/testing/selftests/bpf/test_xdp_meta.c b/tools/testing/selftests/bpf/progs/test_xdp_meta.c similarity index 100% rename from tools/testing/selftests/bpf/test_xdp_meta.c rename to tools/testing/selftests/bpf/progs/test_xdp_meta.c diff --git a/tools/testing/selftests/bpf/test_xdp_noinline.c b/tools/testing/selftests/bpf/progs/test_xdp_noinline.c similarity index 100% rename from tools/testing/selftests/bpf/test_xdp_noinline.c rename to tools/testing/selftests/bpf/progs/test_xdp_noinline.c diff --git a/tools/testing/selftests/bpf/test_xdp_redirect.c b/tools/testing/selftests/bpf/progs/test_xdp_redirect.c similarity index 100% rename from tools/testing/selftests/bpf/test_xdp_redirect.c rename to tools/testing/selftests/bpf/progs/test_xdp_redirect.c diff --git a/tools/testing/selftests/bpf/test_xdp_vlan.c b/tools/testing/selftests/bpf/progs/test_xdp_vlan.c similarity index 100% rename from tools/testing/selftests/bpf/test_xdp_vlan.c rename to tools/testing/selftests/bpf/progs/test_xdp_vlan.c diff --git a/tools/testing/selftests/bpf/xdp_dummy.c b/tools/testing/selftests/bpf/progs/xdp_dummy.c similarity index 100% rename from tools/testing/selftests/bpf/xdp_dummy.c rename to tools/testing/selftests/bpf/progs/xdp_dummy.c From 64e39ee2c84bd8eac1bd3ea370c4ada5163befac Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Mon, 11 Feb 2019 12:01:21 +0000 Subject: [PATCH 4/4] selftests: bpf: relax sub-register mode compilation criteria Sub-register mode compilation was enabled only when there are eBPF "v3" processor supports at both compilation time inside LLVM and runtime inside kernel. Given separation betwen build and test server could be often, this patch removes the runtime support criteria. Suggested-by: Alexei Starovoitov Signed-off-by: Jiong Wang Signed-off-by: Alexei Starovoitov --- tools/testing/selftests/bpf/Makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 575746e63544..c3edf47da05d 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -28,12 +28,11 @@ TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test BPF_OBJ_FILES = $(patsubst %.c,%.o, $(notdir $(wildcard progs/*.c))) TEST_GEN_FILES = $(BPF_OBJ_FILES) -# Also test sub-register code-gen if LLVM + kernel both has eBPF v3 processor -# support which is the first version to contain both ALU32 and JMP32 -# instructions. +# Also test sub-register code-gen if LLVM has eBPF v3 processor support which +# contains both ALU32 and JMP32 instructions. SUBREG_CODEGEN := $(shell echo "int cal(int a) { return a > 0; }" | \ $(CLANG) -target bpf -O2 -emit-llvm -S -x c - -o - | \ - $(LLC) -mattr=+alu32 -mcpu=probe 2>&1 | \ + $(LLC) -mattr=+alu32 -mcpu=v3 2>&1 | \ grep 'if w') ifneq ($(SUBREG_CODEGEN),) TEST_GEN_FILES += $(patsubst %.o,alu32/%.o, $(BPF_OBJ_FILES))