mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
selftests/bpf: Remove the old test_bpf module
The instruction tests of the test_bpf module live in the BPF selftests now, as the jit_insns test of test_progs, which BPF CI runs on every architecture it covers, and its skb_segment tests have a KUnit successor in net/core/net_test.c. Remove the module together with its Kconfig entry, the test_kmod.sh and test_bpf.sh wrappers of the bpf and net selftests, the config fragments and defconfigs that enabled it, as well as all other references to it and symbol exports in core kernel. For archs wanting to support BPF JITs, it's time they move over to the BPF selftests for proper coverage. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20261013171230.523677-19-daniel@iogearbox.net Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
This commit is contained in:
parent
54e8bde13a
commit
4532e525b2
|
|
@ -374,9 +374,10 @@ developers in order to get the feature implemented in a timely manner.
|
|||
Please refer to the git log (``arch/*/net/``) to locate the necessary
|
||||
people for helping out.
|
||||
|
||||
Also always make sure to add BPF test cases (e.g. test_bpf.c and
|
||||
test_verifier.c) for new instructions, so that they can receive
|
||||
broad test coverage and help run-time testing the various BPF JITs.
|
||||
Also always make sure to add BPF test cases (e.g. the jit_insns test
|
||||
in test_progs and test_verifier.c) for new instructions, so that they
|
||||
can receive broad test coverage and help run-time testing the various
|
||||
BPF JITs.
|
||||
|
||||
In case of new BPF instructions, once the changes have been accepted
|
||||
into the Linux kernel, please implement support into LLVM's BPF back
|
||||
|
|
@ -514,10 +515,11 @@ A: If you run a kernel ``xyz``, then always run the BPF kernel selftests
|
|||
from that kernel ``xyz`` as well. Do not expect that the BPF selftest
|
||||
from the latest mainline tree will pass all the time.
|
||||
|
||||
In particular, test_bpf.c and test_verifier.c have a large number of
|
||||
test cases and are constantly updated with new BPF test sequences, or
|
||||
existing ones are adapted to verifier changes e.g. due to verifier
|
||||
becoming smarter and being able to better track certain things.
|
||||
In particular, test_verifier.c and the instruction tests in test_progs
|
||||
have a large number of test cases and are constantly updated with new
|
||||
BPF test sequences, or existing ones are adapted to verifier changes
|
||||
e.g. due to verifier becoming smarter and being able to better track
|
||||
certain things.
|
||||
|
||||
LLVM
|
||||
====
|
||||
|
|
|
|||
|
|
@ -656,16 +656,11 @@ from eBPF instruction set.
|
|||
Testing
|
||||
-------
|
||||
|
||||
Next to the BPF toolchain, the kernel also ships a test module that contains
|
||||
various test cases for classic and eBPF that can be executed against
|
||||
the BPF interpreter and JIT compiler. It can be found in lib/test_bpf.c and
|
||||
enabled via Kconfig::
|
||||
|
||||
CONFIG_TEST_BPF=m
|
||||
|
||||
After the module has been built and installed, the test suite can be executed
|
||||
via insmod or modprobe against 'test_bpf' module. Results of the test cases
|
||||
including timings in nsec can be found in the kernel log (dmesg).
|
||||
Next to the BPF toolchain, the BPF selftests under tools/testing/selftests/bpf
|
||||
ship instruction tests in test_progs, see jit_insns, which runs the eBPF
|
||||
instructions over a range of operand magnitudes and signs, register
|
||||
combinations, memory offsets and jump offsets against the BPF interpreter
|
||||
or the JIT compiler, depending on the net.core.bpf_jit_enable setting.
|
||||
|
||||
Misc
|
||||
----
|
||||
|
|
|
|||
|
|
@ -4981,7 +4981,6 @@ F: include/uapi/linux/filter.h
|
|||
F: kernel/bpf/
|
||||
F: kernel/trace/bpf_trace.c
|
||||
F: lib/buildid.c
|
||||
F: lib/test_bpf.c
|
||||
F: net/bpf/
|
||||
F: net/core/filter.c
|
||||
F: net/sched/act_bpf.c
|
||||
|
|
|
|||
|
|
@ -576,7 +576,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -531,7 +531,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -554,7 +554,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -523,7 +523,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -533,7 +533,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -552,7 +552,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -639,7 +639,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -523,7 +523,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -524,7 +524,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -542,7 +542,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -520,7 +520,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -521,7 +521,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_WORKQUEUE=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
CONFIG_TEST_SYSCTL=m
|
||||
|
|
|
|||
|
|
@ -442,7 +442,6 @@ CONFIG_TEST_IDA=m
|
|||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_TEST_BLACKHOLE_DEV=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
CONFIG_TEST_FIRMWARE=m
|
||||
|
|
|
|||
|
|
@ -927,6 +927,5 @@ CONFIG_INTERVAL_TREE_TEST=m
|
|||
CONFIG_PERCPU_TEST=m
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_PAGE_TABLE_CHECK=y
|
||||
CONFIG_PAGE_TABLE_CHECK_ENFORCED=y
|
||||
|
|
|
|||
|
|
@ -851,4 +851,3 @@ CONFIG_LKDTM=m
|
|||
CONFIG_KPROBES_SANITY_TEST=m
|
||||
CONFIG_PERCPU_TEST=m
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_TEST_BPF=m
|
||||
|
|
|
|||
|
|
@ -172,7 +172,6 @@ struct bpf_prog *bpf_prog_alloc(unsigned int size, gfp_t gfp_extra_flags)
|
|||
}
|
||||
return prog;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_prog_alloc);
|
||||
|
||||
int bpf_prog_alloc_jited_linfo(struct bpf_prog *prog)
|
||||
{
|
||||
|
|
@ -1681,7 +1680,6 @@ noinline u64 __bpf_call_base(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__bpf_call_base);
|
||||
|
||||
/* All UAPI available opcodes. */
|
||||
#define BPF_INSN_MAP(INSN_2, INSN_3) \
|
||||
|
|
@ -2747,7 +2745,6 @@ struct bpf_prog *bpf_prog_select_runtime(struct bpf_prog *fp, int *err)
|
|||
{
|
||||
return __bpf_prog_select_runtime(NULL, fp, err);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_prog_select_runtime);
|
||||
|
||||
static unsigned int __bpf_prog_ret1(const void *ctx,
|
||||
const struct bpf_insn *insn)
|
||||
|
|
@ -3138,7 +3135,6 @@ void bpf_prog_free(struct bpf_prog *fp)
|
|||
INIT_WORK(&aux->work, bpf_prog_free_deferred);
|
||||
schedule_work(&aux->work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_prog_free);
|
||||
|
||||
/* RNG for unprivileged user space with separated state from prandom_u32(). */
|
||||
static DEFINE_PER_CPU(struct rnd_state, bpf_user_rnd_state);
|
||||
|
|
|
|||
|
|
@ -2638,19 +2638,6 @@ config TEST_WORKQUEUE
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
config TEST_BPF
|
||||
tristate "Test BPF filter functionality"
|
||||
depends on m && NET
|
||||
help
|
||||
This builds the "test_bpf" module that runs various test vectors
|
||||
against the BPF interpreter or BPF JIT compiler depending on the
|
||||
current setting. This is in particular useful for BPF JIT compiler
|
||||
development, but also to run regression tests against changes in
|
||||
the interpreter code. It also enables test stubs for eBPF maps and
|
||||
verifier used by user space verifier testsuite.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config FIND_BIT_BENCHMARK
|
||||
tristate "Test find_bit functions"
|
||||
help
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ obj-y += kstrtox.o
|
|||
obj-$(CONFIG_FIND_BIT_BENCHMARK) += find_bit_benchmark.o
|
||||
obj-$(CONFIG_REGION_ALLOC_BENCHMARK) += region_alloc_benchmark.o
|
||||
obj-$(CONFIG_FIND_BIT_BENCHMARK_RUST) += find_bit_benchmark_rust.o
|
||||
obj-$(CONFIG_TEST_BPF) += test_bpf.o
|
||||
test_dhry-objs := dhry_1.o dhry_2.o dhry_run.o
|
||||
obj-$(CONFIG_TEST_DHRY) += test_dhry.o
|
||||
obj-$(CONFIG_TEST_FIRMWARE) += test_firmware.o
|
||||
|
|
|
|||
15934
lib/test_bpf.c
15934
lib/test_bpf.c
File diff suppressed because it is too large
Load Diff
|
|
@ -394,9 +394,6 @@ static void probe_kernel_image_config(const char *define_prefix)
|
|||
/* xt_bpf module for passing BPF programs to netfilter */
|
||||
{ "CONFIG_NETFILTER_XT_MATCH_BPF", },
|
||||
|
||||
/* test_bpf module for BPF tests */
|
||||
{ "CONFIG_TEST_BPF", },
|
||||
|
||||
/* Misc configs useful in BPF C programs */
|
||||
/* jiffies <-> sec conversion for bpf_jiffies64() helper */
|
||||
{ "CONFIG_HZ", true, }
|
||||
|
|
|
|||
|
|
@ -38,8 +38,7 @@ TEST_FILES = xsk_prereqs.sh $(wildcard progs/btf_dump_test_case_*.c) \
|
|||
bpftool_btf_dump_unsorted.expected
|
||||
|
||||
# Order correspond to 'make run_tests' order
|
||||
TEST_PROGS := test_kmod.sh \
|
||||
test_bpftool_build.sh \
|
||||
TEST_PROGS := test_bpftool_build.sh \
|
||||
test_doc_build.sh \
|
||||
test_xsk.sh \
|
||||
test_xdp_features.sh
|
||||
|
|
|
|||
|
|
@ -124,7 +124,6 @@ CONFIG_SAMPLE_LIVEPATCH=m
|
|||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITYFS=y
|
||||
CONFIG_SYN_COOKIES=y
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_UDMABUF=y
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# Usage:
|
||||
# ./test_kmod.sh [module_param]...
|
||||
# Ex.: ./test_kmod.sh test_range=1,3
|
||||
# All the parameters are passed to the kernel module.
|
||||
|
||||
# Kselftest framework requirement - SKIP code is 4.
|
||||
ksft_skip=4
|
||||
|
||||
msg="skip all tests:"
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo $msg please run this as root >&2
|
||||
exit $ksft_skip
|
||||
fi
|
||||
|
||||
if [ "$building_out_of_srctree" ]; then
|
||||
# We are in linux-build/kselftest/bpf
|
||||
OUTPUT=../../
|
||||
else
|
||||
# We are in linux/tools/testing/selftests/bpf
|
||||
OUTPUT=../../../../
|
||||
fi
|
||||
|
||||
test_run()
|
||||
{
|
||||
sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null
|
||||
sysctl -w net.core.bpf_jit_harden=$2 2>&1 > /dev/null
|
||||
|
||||
echo "[ JIT enabled:$1 hardened:$2 ]"
|
||||
shift 2
|
||||
dmesg -C
|
||||
if [ -f ${OUTPUT}/lib/test_bpf.ko ]; then
|
||||
insmod ${OUTPUT}/lib/test_bpf.ko "$@" 2> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
rc=1
|
||||
fi
|
||||
else
|
||||
# Use modprobe dry run to check for missing test_bpf module
|
||||
if ! /sbin/modprobe -q -n test_bpf "$@"; then
|
||||
echo "test_bpf: [SKIP]"
|
||||
elif /sbin/modprobe -q test_bpf "$@"; then
|
||||
echo "test_bpf: ok"
|
||||
else
|
||||
echo "test_bpf: [FAIL]"
|
||||
rc=1
|
||||
fi
|
||||
fi
|
||||
rmmod test_bpf 2> /dev/null
|
||||
dmesg | grep FAIL
|
||||
}
|
||||
|
||||
test_save()
|
||||
{
|
||||
JE=`sysctl -n net.core.bpf_jit_enable`
|
||||
JH=`sysctl -n net.core.bpf_jit_harden`
|
||||
}
|
||||
|
||||
test_restore()
|
||||
{
|
||||
sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null
|
||||
sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null
|
||||
}
|
||||
|
||||
rc=0
|
||||
test_save
|
||||
test_run 0 0 "$@"
|
||||
test_run 1 0 "$@"
|
||||
test_run 1 1 "$@"
|
||||
test_run 1 2 "$@"
|
||||
test_restore
|
||||
exit $rc
|
||||
|
|
@ -104,7 +104,6 @@ TEST_PROGS := \
|
|||
stress_reuseport_listen.sh \
|
||||
tcp_ecmp_failover.sh \
|
||||
tcp_fastopen_backup_key.sh \
|
||||
test_bpf.sh \
|
||||
test_bridge_backup_port.sh \
|
||||
test_bridge_neigh_suppress.sh \
|
||||
test_ingress_egress_chaining.sh \
|
||||
|
|
|
|||
|
|
@ -127,7 +127,6 @@ CONFIG_TAP=m
|
|||
CONFIG_TCP_CONG_DCTCP=y
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
CONFIG_TEST_BLACKHOLE_DEV=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_TLS=m
|
||||
CONFIG_TRACEPOINTS=y
|
||||
CONFIG_TUN=y
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Runs bpf test using test_bpf kernel module
|
||||
|
||||
if /sbin/modprobe -q test_bpf ; then
|
||||
/sbin/modprobe -q -r test_bpf;
|
||||
echo "test_bpf: ok";
|
||||
else
|
||||
echo "test_bpf: [FAIL]";
|
||||
exit 1;
|
||||
fi
|
||||
Loading…
Reference in New Issue
Block a user