Re: [PATCH bpf-next v3] selftests/bpf: Consolidate kernel modules into common directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/11/24 11:52, Toke Høiland-Jørgensen wrote:
> The selftests build four kernel modules which use copy-pasted Makefile
> targets. This is a bit messy, and doesn't scale so well when we add more
> modules, so let's consolidate these rules into a single rule generated
> for each module name, and move the module sources into a single
> directory.
> 
> To avoid parallel builds of the different modules stepping on each
> other's toes during the 'modpost' phase of the Kbuild 'make modules', we
> annotate the module copy target as .NOTPARALLEL, which makes all
> its *dependencies* execute sequentially regardless of whether make is
> doing parallel builds or not. This means the recursive make calls into
> the test_kmods directory will be serialised, and when the first one
> actually builds all four modules in the subdirectory, make will
> correctly skip the three other calls, so we end up with just one build
> of the subdir modules.
> 
> Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx>

Acked-by: Viktor Malik <vmalik@xxxxxxxxxx>

Viktor

> ---
> Changes in v3:
> - Use .NOTPARALLEL annotation instead of creating a modules.built file
> - Link to v2: https://lore.kernel.org/r/20241107-bpf-selftests-mod-compile-v2-1-ef781fe9ca95@xxxxxxxxxx
> 
> Changes in v2:
> - Rebase on bpf-next, incorporating Viktor's EXTRA_CFLAGS patch
> - A few small adjustments to the module Makefile recipe
> - Link to v1: https://lore.kernel.org/r/20241031-bpf-selftests-mod-compile-v1-1-1a63af2385f1@xxxxxxxxxx
> ---
>  tools/testing/selftests/bpf/Makefile               | 63 +++++++---------------
>  .../selftests/bpf/bpf_test_modorder_x/Makefile     | 19 -------
>  .../selftests/bpf/bpf_test_modorder_y/Makefile     | 19 -------
>  .../testing/selftests/bpf/bpf_test_no_cfi/Makefile | 19 -------
>  tools/testing/selftests/bpf/bpf_testmod/Makefile   | 20 -------
>  .../testing/selftests/bpf/prog_tests/core_reloc.c  |  2 +-
>  tools/testing/selftests/bpf/progs/bad_struct_ops.c |  2 +-
>  tools/testing/selftests/bpf/progs/cb_refs.c        |  2 +-
>  tools/testing/selftests/bpf/progs/epilogue_exit.c  |  4 +-
>  .../selftests/bpf/progs/epilogue_tailcall.c        |  4 +-
>  tools/testing/selftests/bpf/progs/iters_testmod.c  |  2 +-
>  tools/testing/selftests/bpf/progs/jit_probe_mem.c  |  2 +-
>  .../selftests/bpf/progs/kfunc_call_destructive.c   |  2 +-
>  .../testing/selftests/bpf/progs/kfunc_call_fail.c  |  2 +-
>  .../testing/selftests/bpf/progs/kfunc_call_race.c  |  2 +-
>  .../testing/selftests/bpf/progs/kfunc_call_test.c  |  2 +-
>  .../selftests/bpf/progs/kfunc_call_test_subprog.c  |  2 +-
>  .../testing/selftests/bpf/progs/local_kptr_stash.c |  2 +-
>  tools/testing/selftests/bpf/progs/map_kptr.c       |  2 +-
>  tools/testing/selftests/bpf/progs/map_kptr_fail.c  |  2 +-
>  tools/testing/selftests/bpf/progs/missed_kprobe.c  |  2 +-
>  .../selftests/bpf/progs/missed_kprobe_recursion.c  |  2 +-
>  tools/testing/selftests/bpf/progs/nested_acquire.c |  2 +-
>  tools/testing/selftests/bpf/progs/pro_epilogue.c   |  4 +-
>  .../selftests/bpf/progs/pro_epilogue_goto_start.c  |  4 +-
>  tools/testing/selftests/bpf/progs/sock_addr_kern.c |  2 +-
>  .../selftests/bpf/progs/struct_ops_detach.c        |  2 +-
>  .../selftests/bpf/progs/struct_ops_forgotten_cb.c  |  2 +-
>  .../selftests/bpf/progs/struct_ops_maybe_null.c    |  2 +-
>  .../bpf/progs/struct_ops_maybe_null_fail.c         |  2 +-
>  .../selftests/bpf/progs/struct_ops_module.c        |  2 +-
>  .../selftests/bpf/progs/struct_ops_multi_pages.c   |  2 +-
>  .../selftests/bpf/progs/struct_ops_nulled_out_cb.c |  2 +-
>  .../bpf/progs/test_kfunc_param_nullable.c          |  2 +-
>  .../selftests/bpf/progs/test_module_attach.c       |  2 +-
>  .../selftests/bpf/progs/test_tp_btf_nullable.c     |  2 +-
>  .../testing/selftests/bpf/progs/unsupported_ops.c  |  2 +-
>  tools/testing/selftests/bpf/progs/wq.c             |  2 +-
>  tools/testing/selftests/bpf/progs/wq_failures.c    |  2 +-
>  .../bpf/{bpf_testmod => test_kmods}/.gitignore     |  0
>  tools/testing/selftests/bpf/test_kmods/Makefile    | 21 ++++++++
>  .../bpf_test_modorder_x.c                          |  0
>  .../bpf_test_modorder_y.c                          |  0
>  .../bpf_test_no_cfi.c                              |  0
>  .../bpf_testmod-events.h                           |  0
>  .../bpf/{bpf_testmod => test_kmods}/bpf_testmod.c  |  0
>  .../bpf/{bpf_testmod => test_kmods}/bpf_testmod.h  |  0
>  .../bpf_testmod_kfunc.h                            |  0
>  48 files changed, 79 insertions(+), 158 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> index edef5df08cb2536260f8910b2ebd2b89dbd0ebd2..66c2f95b61ca5d0dcf5b8007bf09e5e4f0870780 100644
> --- a/tools/testing/selftests/bpf/Makefile
> +++ b/tools/testing/selftests/bpf/Makefile
> @@ -152,13 +152,15 @@ TEST_PROGS_EXTENDED := with_addr.sh \
>  	with_tunnels.sh ima_setup.sh verify_sig_setup.sh \
>  	test_xdp_vlan.sh test_bpftool.py
>  
> +TEST_KMODS := bpf_testmod.ko bpf_test_no_cfi.ko bpf_test_modorder_x.ko \
> +	bpf_test_modorder_y.ko
> +TEST_KMOD_TARGETS = $(addprefix $(OUTPUT)/,$(TEST_KMODS))
> +
>  # Compile but not part of 'make run_tests'
>  TEST_GEN_PROGS_EXTENDED = \
>  	flow_dissector_load test_flow_dissector test_tcp_check_syncookie_user \
> -	test_lirc_mode2_user xdping test_cpp runqslower bench bpf_testmod.ko \
> -	xskxceiver xdp_redirect_multi xdp_synproxy veristat xdp_hw_metadata \
> -	xdp_features bpf_test_no_cfi.ko bpf_test_modorder_x.ko \
> -	bpf_test_modorder_y.ko
> +	test_lirc_mode2_user xdping test_cpp runqslower bench xskxceiver \
> +	xdp_redirect_multi xdp_synproxy veristat xdp_hw_metadata xdp_features
>  
>  TEST_GEN_FILES += liburandom_read.so urandom_read sign-file uprobe_multi
>  
> @@ -173,8 +175,9 @@ override define CLEAN
>  	$(Q)$(RM) -r $(TEST_GEN_PROGS)
>  	$(Q)$(RM) -r $(TEST_GEN_PROGS_EXTENDED)
>  	$(Q)$(RM) -r $(TEST_GEN_FILES)
> +	$(Q)$(RM) -r $(TEST_KMODS)
>  	$(Q)$(RM) -r $(EXTRA_CLEAN)
> -	$(Q)$(MAKE) -C bpf_testmod clean
> +	$(Q)$(MAKE) -C test_kmods clean
>  	$(Q)$(MAKE) docs-clean
>  endef
>  
> @@ -240,7 +243,7 @@ endif
>  # to build individual tests.
>  # NOTE: Semicolon at the end is critical to override lib.mk's default static
>  # rule for binaries.
> -$(notdir $(TEST_GEN_PROGS)						\
> +$(notdir $(TEST_GEN_PROGS) $(TEST_KMODS)				\
>  	 $(TEST_GEN_PROGS_EXTENDED)): %: $(OUTPUT)/% ;
>  
>  # sort removes libbpf duplicates when not cross-building
> @@ -294,37 +297,16 @@ $(OUTPUT)/sign-file: ../../../../scripts/sign-file.c
>  		  $< -o $@ \
>  		  $(shell $(PKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
>  
> -$(OUTPUT)/bpf_testmod.ko: $(VMLINUX_BTF) $(RESOLVE_BTFIDS) $(wildcard bpf_testmod/Makefile bpf_testmod/*.[ch])
> -	$(call msg,MOD,,$@)
> -	$(Q)$(RM) bpf_testmod/bpf_testmod.ko # force re-compilation
> -	$(Q)$(MAKE) $(submake_extras) -C bpf_testmod \
> -		RESOLVE_BTFIDS=$(RESOLVE_BTFIDS)     \
> +$(addprefix test_kmods/,$(TEST_KMODS)): $(VMLINUX_BTF) $(RESOLVE_BTFIDS) $(wildcard test_kmods/Makefile test_kmods/*.[ch])
> +	$(Q)$(RM) test_kmods/*.ko test_kmods/*.mod.o # force re-compilation
> +	$(Q)$(MAKE) $(submake_extras) -C test_kmods	\
> +		RESOLVE_BTFIDS=$(RESOLVE_BTFIDS)	\
>  		EXTRA_CFLAGS='' EXTRA_LDFLAGS=''
> -	$(Q)cp bpf_testmod/bpf_testmod.ko $@
>  
> -$(OUTPUT)/bpf_test_no_cfi.ko: $(VMLINUX_BTF) $(RESOLVE_BTFIDS) $(wildcard bpf_test_no_cfi/Makefile bpf_test_no_cfi/*.[ch])
> +.NOTPARALLEL: $(TEST_KMOD_TARGETS)
> +$(TEST_KMOD_TARGETS): $(addprefix test_kmods/,$(TEST_KMODS))
>  	$(call msg,MOD,,$@)
> -	$(Q)$(RM) bpf_test_no_cfi/bpf_test_no_cfi.ko # force re-compilation
> -	$(Q)$(MAKE) $(submake_extras) -C bpf_test_no_cfi \
> -		RESOLVE_BTFIDS=$(RESOLVE_BTFIDS)	 \
> -		EXTRA_CFLAGS='' EXTRA_LDFLAGS=''
> -	$(Q)cp bpf_test_no_cfi/bpf_test_no_cfi.ko $@
> -
> -$(OUTPUT)/bpf_test_modorder_x.ko: $(VMLINUX_BTF) $(RESOLVE_BTFIDS) $(wildcard bpf_test_modorder_x/Makefile bpf_test_modorder_x/*.[ch])
> -	$(call msg,MOD,,$@)
> -	$(Q)$(RM) bpf_test_modorder_x/bpf_test_modorder_x.ko # force re-compilation
> -	$(Q)$(MAKE) $(submake_extras) -C bpf_test_modorder_x \
> -		RESOLVE_BTFIDS=$(RESOLVE_BTFIDS)	     \
> -		EXTRA_CFLAGS='' EXTRA_LDFLAGS=''
> -	$(Q)cp bpf_test_modorder_x/bpf_test_modorder_x.ko $@
> -
> -$(OUTPUT)/bpf_test_modorder_y.ko: $(VMLINUX_BTF) $(RESOLVE_BTFIDS) $(wildcard bpf_test_modorder_y/Makefile bpf_test_modorder_y/*.[ch])
> -	$(call msg,MOD,,$@)
> -	$(Q)$(RM) bpf_test_modorder_y/bpf_test_modorder_y.ko # force re-compilation
> -	$(Q)$(MAKE) $(submake_extras) -C bpf_test_modorder_y \
> -		RESOLVE_BTFIDS=$(RESOLVE_BTFIDS)	     \
> -		EXTRA_CFLAGS='' EXTRA_LDFLAGS=''
> -	$(Q)cp bpf_test_modorder_y/bpf_test_modorder_y.ko $@
> +	$(Q)cp test_kmods/$(@F) $@
>  
>  
>  DEFAULT_BPFTOOL := $(HOST_SCRATCH_DIR)/sbin/bpftool
> @@ -749,14 +731,12 @@ TRUNNER_EXTRA_SOURCES := test_progs.c		\
>  			 json_writer.c 		\
>  			 flow_dissector_load.h	\
>  			 ip_check_defrag_frags.h
> -TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko	\
> -		       $(OUTPUT)/bpf_test_no_cfi.ko			\
> -		       $(OUTPUT)/bpf_test_modorder_x.ko		\
> -		       $(OUTPUT)/bpf_test_modorder_y.ko		\
> +TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read				\
>  		       $(OUTPUT)/liburandom_read.so			\
>  		       $(OUTPUT)/xdp_synproxy				\
>  		       $(OUTPUT)/sign-file				\
>  		       $(OUTPUT)/uprobe_multi				\
> +		       $(TEST_KMOD_TARGETS)				\
>  		       ima_setup.sh 					\
>  		       verify_sig_setup.sh				\
>  		       $(wildcard progs/btf_dump_test_case_*.c)		\
> @@ -883,12 +863,9 @@ $(OUTPUT)/uprobe_multi: uprobe_multi.c uprobe_multi.ld
>  
>  EXTRA_CLEAN := $(SCRATCH_DIR) $(HOST_SCRATCH_DIR)			\
>  	prog_tests/tests.h map_tests/tests.h verifier/tests.h		\
> -	feature bpftool 						\
> +	feature bpftool $(TEST_KMOD_TARGETS)				\
>  	$(addprefix $(OUTPUT)/,*.o *.d *.skel.h *.lskel.h *.subskel.h	\
> -			       no_alu32 cpuv4 bpf_gcc bpf_testmod.ko	\
> -			       bpf_test_no_cfi.ko			\
> -			       bpf_test_modorder_x.ko			\
> -			       bpf_test_modorder_y.ko			\
> +			       no_alu32 cpuv4 bpf_gcc			\
>  			       liburandom_read.so)			\
>  	$(OUTPUT)/FEATURE-DUMP.selftests
>  
> diff --git a/tools/testing/selftests/bpf/bpf_test_modorder_x/Makefile b/tools/testing/selftests/bpf/bpf_test_modorder_x/Makefile
> deleted file mode 100644
> index 40b25b98ad1b622c6a5c3c00d0625595349bb677..0000000000000000000000000000000000000000
> --- a/tools/testing/selftests/bpf/bpf_test_modorder_x/Makefile
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -BPF_TESTMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> -KDIR ?= $(abspath $(BPF_TESTMOD_DIR)/../../../../..)
> -
> -ifeq ($(V),1)
> -Q =
> -else
> -Q = @
> -endif
> -
> -MODULES = bpf_test_modorder_x.ko
> -
> -obj-m += bpf_test_modorder_x.o
> -
> -all:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) modules
> -
> -clean:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) clean
> -
> diff --git a/tools/testing/selftests/bpf/bpf_test_modorder_y/Makefile b/tools/testing/selftests/bpf/bpf_test_modorder_y/Makefile
> deleted file mode 100644
> index 52c3ab9d84e29c794f57c1f75be03b46d80d4a06..0000000000000000000000000000000000000000
> --- a/tools/testing/selftests/bpf/bpf_test_modorder_y/Makefile
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -BPF_TESTMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> -KDIR ?= $(abspath $(BPF_TESTMOD_DIR)/../../../../..)
> -
> -ifeq ($(V),1)
> -Q =
> -else
> -Q = @
> -endif
> -
> -MODULES = bpf_test_modorder_y.ko
> -
> -obj-m += bpf_test_modorder_y.o
> -
> -all:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) modules
> -
> -clean:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) clean
> -
> diff --git a/tools/testing/selftests/bpf/bpf_test_no_cfi/Makefile b/tools/testing/selftests/bpf/bpf_test_no_cfi/Makefile
> deleted file mode 100644
> index ed5143b79edf790b5d4e7213507110e2c6fb4886..0000000000000000000000000000000000000000
> --- a/tools/testing/selftests/bpf/bpf_test_no_cfi/Makefile
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -BPF_TEST_NO_CFI_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> -KDIR ?= $(abspath $(BPF_TEST_NO_CFI_DIR)/../../../../..)
> -
> -ifeq ($(V),1)
> -Q =
> -else
> -Q = @
> -endif
> -
> -MODULES = bpf_test_no_cfi.ko
> -
> -obj-m += bpf_test_no_cfi.o
> -
> -all:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TEST_NO_CFI_DIR) modules
> -
> -clean:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TEST_NO_CFI_DIR) clean
> -
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/Makefile b/tools/testing/selftests/bpf/bpf_testmod/Makefile
> deleted file mode 100644
> index 15cb36c4483ac3b970d93d2e4467cd290917c361..0000000000000000000000000000000000000000
> --- a/tools/testing/selftests/bpf/bpf_testmod/Makefile
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -BPF_TESTMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> -KDIR ?= $(abspath $(BPF_TESTMOD_DIR)/../../../../..)
> -
> -ifeq ($(V),1)
> -Q =
> -else
> -Q = @
> -endif
> -
> -MODULES = bpf_testmod.ko
> -
> -obj-m += bpf_testmod.o
> -CFLAGS_bpf_testmod.o = -I$(src)
> -
> -all:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) modules
> -
> -clean:
> -	+$(Q)make -C $(KDIR) M=$(BPF_TESTMOD_DIR) clean
> -
> diff --git a/tools/testing/selftests/bpf/prog_tests/core_reloc.c b/tools/testing/selftests/bpf/prog_tests/core_reloc.c
> index 1c682550e0e7caa3872970bda26e0a4b3d638a6c..e10ea92c3fe224fc4c7b60c7108e890a524b469a 100644
> --- a/tools/testing/selftests/bpf/prog_tests/core_reloc.c
> +++ b/tools/testing/selftests/bpf/prog_tests/core_reloc.c
> @@ -2,7 +2,7 @@
>  #define _GNU_SOURCE
>  #include <test_progs.h>
>  #include "progs/core_reloc_types.h"
> -#include "bpf_testmod/bpf_testmod.h"
> +#include "test_kmods/bpf_testmod.h"
>  #include <linux/limits.h>
>  #include <sys/mman.h>
>  #include <sys/syscall.h>
> diff --git a/tools/testing/selftests/bpf/progs/bad_struct_ops.c b/tools/testing/selftests/bpf/progs/bad_struct_ops.c
> index b7e175cd0af0cbc51a16a7d695b52828c40ad0a0..b3f77b4561c8281363b5a083368e5f12dc13d758 100644
> --- a/tools/testing/selftests/bpf/progs/bad_struct_ops.c
> +++ b/tools/testing/selftests/bpf/progs/bad_struct_ops.c
> @@ -3,7 +3,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/cb_refs.c b/tools/testing/selftests/bpf/progs/cb_refs.c
> index 56c764df8196793155d69967ca1c4a28099d2540..5d6fc7f01ebb69e26351f3811ac1551a9e72a414 100644
> --- a/tools/testing/selftests/bpf/progs/cb_refs.c
> +++ b/tools/testing/selftests/bpf/progs/cb_refs.c
> @@ -2,7 +2,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  struct map_value {
>  	struct prog_test_ref_kfunc __kptr *ptr;
> diff --git a/tools/testing/selftests/bpf/progs/epilogue_exit.c b/tools/testing/selftests/bpf/progs/epilogue_exit.c
> index 33d3a57bee903ea40aa009cef9b69c354fd6e2c2..35fec7c75bef9a59998ee9fe985ab64b63c2e133 100644
> --- a/tools/testing/selftests/bpf/progs/epilogue_exit.c
> +++ b/tools/testing/selftests/bpf/progs/epilogue_exit.c
> @@ -4,8 +4,8 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/epilogue_tailcall.c b/tools/testing/selftests/bpf/progs/epilogue_tailcall.c
> index 7275dd594de0636e7e5d6460bc7813d24539149d..153514691ba4bc5ce24f81f51d23bffdd9773214 100644
> --- a/tools/testing/selftests/bpf/progs/epilogue_tailcall.c
> +++ b/tools/testing/selftests/bpf/progs/epilogue_tailcall.c
> @@ -4,8 +4,8 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/iters_testmod.c b/tools/testing/selftests/bpf/progs/iters_testmod.c
> index df1d3db60b1b12c36c9d56b0ade990f94f95fca6..9e4b45201e692721ddda6a25a866f44ac05fe6a0 100644
> --- a/tools/testing/selftests/bpf/progs/iters_testmod.c
> +++ b/tools/testing/selftests/bpf/progs/iters_testmod.c
> @@ -4,7 +4,7 @@
>  #include "bpf_experimental.h"
>  #include <bpf/bpf_helpers.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/jit_probe_mem.c b/tools/testing/selftests/bpf/progs/jit_probe_mem.c
> index f9789e66829732f174892f4ed85a6db9687f6bf2..82190d79de375642d09416dd971cf2c84ccfcd11 100644
> --- a/tools/testing/selftests/bpf/progs/jit_probe_mem.c
> +++ b/tools/testing/selftests/bpf/progs/jit_probe_mem.c
> @@ -3,7 +3,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  static struct prog_test_ref_kfunc __kptr *v;
>  long total_sum = -1;
> diff --git a/tools/testing/selftests/bpf/progs/kfunc_call_destructive.c b/tools/testing/selftests/bpf/progs/kfunc_call_destructive.c
> index 7632d9ecb253ba37d3e85a97cc6a19adc1b08112..b9670e9a6e3df53d1178eb05b437f298ac314fd2 100644
> --- a/tools/testing/selftests/bpf/progs/kfunc_call_destructive.c
> +++ b/tools/testing/selftests/bpf/progs/kfunc_call_destructive.c
> @@ -1,7 +1,7 @@
>  // SPDX-License-Identifier: GPL-2.0
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  SEC("tc")
>  int kfunc_destructive_test(void)
> diff --git a/tools/testing/selftests/bpf/progs/kfunc_call_fail.c b/tools/testing/selftests/bpf/progs/kfunc_call_fail.c
> index 08fae306539c591d89201ec10b9ae7b258eab8a5..a1963497f0bff99a21c305a861ddcc35d16c7d66 100644
> --- a/tools/testing/selftests/bpf/progs/kfunc_call_fail.c
> +++ b/tools/testing/selftests/bpf/progs/kfunc_call_fail.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2021 Facebook */
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  struct syscall_test_args {
>  	__u8 data[16];
> diff --git a/tools/testing/selftests/bpf/progs/kfunc_call_race.c b/tools/testing/selftests/bpf/progs/kfunc_call_race.c
> index d532af07decf954ca168335446daf1a3e34c81b6..48f64827cd934d678ff5ced4369408187df0233e 100644
> --- a/tools/testing/selftests/bpf/progs/kfunc_call_race.c
> +++ b/tools/testing/selftests/bpf/progs/kfunc_call_race.c
> @@ -1,7 +1,7 @@
>  // SPDX-License-Identifier: GPL-2.0
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  SEC("tc")
>  int kfunc_call_fail(struct __sk_buff *ctx)
> diff --git a/tools/testing/selftests/bpf/progs/kfunc_call_test.c b/tools/testing/selftests/bpf/progs/kfunc_call_test.c
> index f502f755f56793d7c0bfa241f0cb79539e1960c4..8b86113a0126162d7ce891ee213927b4e778f612 100644
> --- a/tools/testing/selftests/bpf/progs/kfunc_call_test.c
> +++ b/tools/testing/selftests/bpf/progs/kfunc_call_test.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2021 Facebook */
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  SEC("tc")
>  int kfunc_call_test4(struct __sk_buff *skb)
> diff --git a/tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c b/tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
> index 2380c75e74ce2c8e9914e4304cbddbcdccd54d3c..8e150e85b50d286d34c7e569cfadfc294cc52dd3 100644
> --- a/tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
> +++ b/tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
> @@ -1,6 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0
>  /* Copyright (c) 2021 Facebook */
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  extern const int bpf_prog_active __ksym;
>  int active_res = -1;
> diff --git a/tools/testing/selftests/bpf/progs/local_kptr_stash.c b/tools/testing/selftests/bpf/progs/local_kptr_stash.c
> index b092a72b2c9df567d8cec37bb9d8645310383670..d736506a4c807feb842dbc749a76c6c51b3270a6 100644
> --- a/tools/testing/selftests/bpf/progs/local_kptr_stash.c
> +++ b/tools/testing/selftests/bpf/progs/local_kptr_stash.c
> @@ -6,7 +6,7 @@
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_core_read.h>
>  #include "../bpf_experimental.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  struct plain_local;
>  
> diff --git a/tools/testing/selftests/bpf/progs/map_kptr.c b/tools/testing/selftests/bpf/progs/map_kptr.c
> index ab0ce1d01a4a714c6271e36e8831fc5ffadbb553..edaba481db9d83fb47b255c90369f8dde5448449 100644
> --- a/tools/testing/selftests/bpf/progs/map_kptr.c
> +++ b/tools/testing/selftests/bpf/progs/map_kptr.c
> @@ -2,7 +2,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  struct map_value {
>  	struct prog_test_ref_kfunc __kptr_untrusted *unref_ptr;
> diff --git a/tools/testing/selftests/bpf/progs/map_kptr_fail.c b/tools/testing/selftests/bpf/progs/map_kptr_fail.c
> index 450bb373b179fc91b028568ee6d787d85147ecbb..c2a6bd392e480e2d32659e94c6904d26ad1ebafe 100644
> --- a/tools/testing/selftests/bpf/progs/map_kptr_fail.c
> +++ b/tools/testing/selftests/bpf/progs/map_kptr_fail.c
> @@ -4,7 +4,7 @@
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_core_read.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  struct map_value {
>  	char buf[8];
> diff --git a/tools/testing/selftests/bpf/progs/missed_kprobe.c b/tools/testing/selftests/bpf/progs/missed_kprobe.c
> index 7f9ef701f5dee65eb71a4c5236bdf6e570e4ed50..51a4fe64c9175f6aa6f4e0210cb1bbf74b8e4f37 100644
> --- a/tools/testing/selftests/bpf/progs/missed_kprobe.c
> +++ b/tools/testing/selftests/bpf/progs/missed_kprobe.c
> @@ -2,7 +2,7 @@
>  #include "vmlinux.h"
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/missed_kprobe_recursion.c b/tools/testing/selftests/bpf/progs/missed_kprobe_recursion.c
> index 8ea71cbd6c45160c5c58d61592967489ba9df4ba..c4bf679a987634c711970cf01ce0b041f3f05697 100644
> --- a/tools/testing/selftests/bpf/progs/missed_kprobe_recursion.c
> +++ b/tools/testing/selftests/bpf/progs/missed_kprobe_recursion.c
> @@ -2,7 +2,7 @@
>  #include "vmlinux.h"
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/nested_acquire.c b/tools/testing/selftests/bpf/progs/nested_acquire.c
> index 8e521a21d995957cd42216418c2607c91c2d5b5f..49ad7b9adf566fc608502649ae5a2885a61f50e6 100644
> --- a/tools/testing/selftests/bpf/progs/nested_acquire.c
> +++ b/tools/testing/selftests/bpf/progs/nested_acquire.c
> @@ -4,7 +4,7 @@
>  #include <bpf/bpf_tracing.h>
>  #include <bpf/bpf_helpers.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/pro_epilogue.c b/tools/testing/selftests/bpf/progs/pro_epilogue.c
> index 44bc3f06b4b612b5520f4cec07c61700beb7949d..d97d6e07ef5c156d1c94c6d7b199c50e3ac293e6 100644
> --- a/tools/testing/selftests/bpf/progs/pro_epilogue.c
> +++ b/tools/testing/selftests/bpf/progs/pro_epilogue.c
> @@ -4,8 +4,8 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/pro_epilogue_goto_start.c b/tools/testing/selftests/bpf/progs/pro_epilogue_goto_start.c
> index 3529e53be35501b19a47626ee5c50895a02e67f1..6048d79be48bfce0555827b8d5ca6678617d3050 100644
> --- a/tools/testing/selftests/bpf/progs/pro_epilogue_goto_start.c
> +++ b/tools/testing/selftests/bpf/progs/pro_epilogue_goto_start.c
> @@ -4,8 +4,8 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/sock_addr_kern.c b/tools/testing/selftests/bpf/progs/sock_addr_kern.c
> index 8386bb15ccdc19728cba21cff5f96403903aff7d..84ad515eafd6c84e2762af06de0e598ede70435b 100644
> --- a/tools/testing/selftests/bpf/progs/sock_addr_kern.c
> +++ b/tools/testing/selftests/bpf/progs/sock_addr_kern.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Google LLC */
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  SEC("syscall")
>  int init_sock(struct init_sock_args *args)
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_detach.c b/tools/testing/selftests/bpf/progs/struct_ops_detach.c
> index d7fdcabe7d905a439ddfb15a42a92ca29511a706..284a5b008e0c4a6a3eab026f4a366dda7e82a45d 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_detach.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_detach.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_forgotten_cb.c b/tools/testing/selftests/bpf/progs/struct_ops_forgotten_cb.c
> index 3c822103bd405b693373824b006c239a85b3a6fa..d8cc99f5c2e2f9832cdc0da18df00a445cc6be40 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_forgotten_cb.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_forgotten_cb.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c b/tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c
> index b450f72e744ad22a78d98bc3b539527abc7e01c6..ccab3935aa425ec8ff9c7d0aa4cb6ce77fc547f7 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_maybe_null.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c b/tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c
> index 6283099ec383a38bb11c47c6c8f9d51c6dd220e0..8b5515f4f724e8f12fd8f170acbdcd5fb11cb96b 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_maybe_null_fail.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_module.c b/tools/testing/selftests/bpf/progs/struct_ops_module.c
> index 4c56d4a9d9f410b42430bd58cd4a0011047e58c7..71c420c3a5a6c7ad8fca16fd3e6432b36027811c 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_module.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_module.c
> @@ -3,7 +3,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c b/tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c
> index 9efcc6e4d3566d9814933d0d9a3568a3f10d41b7..5b23ea817f1f90d9db1333e00031bdb669509029 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c
> @@ -3,7 +3,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/struct_ops_nulled_out_cb.c b/tools/testing/selftests/bpf/progs/struct_ops_nulled_out_cb.c
> index fa2021388485d67192e8b60f29803f206cda7521..5d0937fa07be20face0300cfebacd387f79ac66f 100644
> --- a/tools/testing/selftests/bpf/progs/struct_ops_nulled_out_cb.c
> +++ b/tools/testing/selftests/bpf/progs/struct_ops_nulled_out_cb.c
> @@ -2,7 +2,7 @@
>  /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/test_kfunc_param_nullable.c b/tools/testing/selftests/bpf/progs/test_kfunc_param_nullable.c
> index 7ac7e1de34d811865ca187a200bc6f213d482511..0ad1bf1ede8dc7f83f2e922d918ce40d196b64a4 100644
> --- a/tools/testing/selftests/bpf/progs/test_kfunc_param_nullable.c
> +++ b/tools/testing/selftests/bpf/progs/test_kfunc_param_nullable.c
> @@ -4,7 +4,7 @@
>  #include <bpf/bpf_helpers.h>
>  #include "bpf_misc.h"
>  #include "bpf_kfuncs.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  SEC("tc")
>  int kfunc_dynptr_nullable_test1(struct __sk_buff *skb)
> diff --git a/tools/testing/selftests/bpf/progs/test_module_attach.c b/tools/testing/selftests/bpf/progs/test_module_attach.c
> index cc1a012d038f1ddca8c982a88b9ef15802f39610..fb07f5773888b05f0c653bc168769c85c99811fb 100644
> --- a/tools/testing/selftests/bpf/progs/test_module_attach.c
> +++ b/tools/testing/selftests/bpf/progs/test_module_attach.c
> @@ -5,7 +5,7 @@
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
>  #include <bpf/bpf_core_read.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  __u32 raw_tp_read_sz = 0;
>  
> diff --git a/tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c b/tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c
> index 5aaf2b065f86c25a00936548d3f76eb3e69848b1..3bce838e92d5a1bfd6b4cc1e5a900e4715bf0170 100644
> --- a/tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c
> +++ b/tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c
> @@ -3,7 +3,7 @@
>  #include "vmlinux.h"
>  #include <bpf/bpf_helpers.h>
>  #include <bpf/bpf_tracing.h>
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  #include "bpf_misc.h"
>  
>  SEC("tp_btf/bpf_testmod_test_nullable_bare")
> diff --git a/tools/testing/selftests/bpf/progs/unsupported_ops.c b/tools/testing/selftests/bpf/progs/unsupported_ops.c
> index 9180365a3568f8f5d04682704ae08588bcdc2025..8aa2e0dd624e4b8d83a9377ae3b4adfd62bc350b 100644
> --- a/tools/testing/selftests/bpf/progs/unsupported_ops.c
> +++ b/tools/testing/selftests/bpf/progs/unsupported_ops.c
> @@ -4,7 +4,7 @@
>  #include <vmlinux.h>
>  #include <bpf/bpf_tracing.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod.h"
> +#include "../test_kmods/bpf_testmod.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/wq.c b/tools/testing/selftests/bpf/progs/wq.c
> index f8d3ae0c29aeb3da58c604f6a2eb6aeb3c90e365..2f1ba08c293e26c48e0866ea00ff73b8517faab3 100644
> --- a/tools/testing/selftests/bpf/progs/wq.c
> +++ b/tools/testing/selftests/bpf/progs/wq.c
> @@ -5,7 +5,7 @@
>  #include "bpf_experimental.h"
>  #include <bpf/bpf_helpers.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/progs/wq_failures.c b/tools/testing/selftests/bpf/progs/wq_failures.c
> index 25b51a72fe0fe6d0f1253e22e204aaf6c1946fc6..4240211a19001fbbe0860da761121917a91049f5 100644
> --- a/tools/testing/selftests/bpf/progs/wq_failures.c
> +++ b/tools/testing/selftests/bpf/progs/wq_failures.c
> @@ -5,7 +5,7 @@
>  #include "bpf_experimental.h"
>  #include <bpf/bpf_helpers.h>
>  #include "bpf_misc.h"
> -#include "../bpf_testmod/bpf_testmod_kfunc.h"
> +#include "../test_kmods/bpf_testmod_kfunc.h"
>  
>  char _license[] SEC("license") = "GPL";
>  
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/.gitignore b/tools/testing/selftests/bpf/test_kmods/.gitignore
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_testmod/.gitignore
> rename to tools/testing/selftests/bpf/test_kmods/.gitignore
> diff --git a/tools/testing/selftests/bpf/test_kmods/Makefile b/tools/testing/selftests/bpf/test_kmods/Makefile
> new file mode 100644
> index 0000000000000000000000000000000000000000..d4e50c4509c93af82de376caa08771ad266c09b3
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/test_kmods/Makefile
> @@ -0,0 +1,21 @@
> +TEST_KMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> +KDIR ?= $(abspath $(TEST_KMOD_DIR)/../../../../..)
> +
> +ifeq ($(V),1)
> +Q =
> +else
> +Q = @
> +endif
> +
> +MODULES = bpf_testmod.ko bpf_test_no_cfi.ko bpf_test_modorder_x.ko \
> +	bpf_test_modorder_y.ko
> +
> +$(foreach m,$(MODULES),$(eval obj-m += $(m:.ko=.o)))
> +
> +CFLAGS_bpf_testmod.o = -I$(src)
> +
> +all:
> +	$(Q)$(MAKE) -C $(KDIR) M=$(TEST_KMOD_DIR) modules
> +
> +clean:
> +	$(Q)$(MAKE) -C $(KDIR) M=$(TEST_KMOD_DIR) clean
> diff --git a/tools/testing/selftests/bpf/bpf_test_modorder_x/bpf_test_modorder_x.c b/tools/testing/selftests/bpf/test_kmods/bpf_test_modorder_x.c
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_test_modorder_x/bpf_test_modorder_x.c
> rename to tools/testing/selftests/bpf/test_kmods/bpf_test_modorder_x.c
> diff --git a/tools/testing/selftests/bpf/bpf_test_modorder_y/bpf_test_modorder_y.c b/tools/testing/selftests/bpf/test_kmods/bpf_test_modorder_y.c
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_test_modorder_y/bpf_test_modorder_y.c
> rename to tools/testing/selftests/bpf/test_kmods/bpf_test_modorder_y.c
> diff --git a/tools/testing/selftests/bpf/bpf_test_no_cfi/bpf_test_no_cfi.c b/tools/testing/selftests/bpf/test_kmods/bpf_test_no_cfi.c
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_test_no_cfi/bpf_test_no_cfi.c
> rename to tools/testing/selftests/bpf/test_kmods/bpf_test_no_cfi.c
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h b/tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
> rename to tools/testing/selftests/bpf/test_kmods/bpf_testmod-events.h
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
> rename to tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.h
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
> rename to tools/testing/selftests/bpf/test_kmods/bpf_testmod.h
> diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod_kfunc.h b/tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h
> similarity index 100%
> rename from tools/testing/selftests/bpf/bpf_testmod/bpf_testmod_kfunc.h
> rename to tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h
> 
> ---
> base-commit: a2b4a9cddae87e6ff605cf0d2014c749cfbaf14e
> change-id: 20241030-bpf-selftests-mod-compile-64938d1ae5f6
> 





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux