[缺陷描述]: kernelselftest:bpf目录编译失败,导致net.udpgro_bench.sh测试用例失败; 从2023.6.16晚上的任务出现此问题; 可能与此提交有关:https://gitee.com/anolis/cloud-kernel/pulls/1762/files 失败日志如下: # ./udpgro_bench.sh Missing xdp_dummy helper. Build bpf selftest first bpf目录编译失败日志如下: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c: In function ‘test_load’: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:35:50: error: ‘struct <anonymous>’ has no member named ‘ops’ 35 | link = bpf_map__attach_struct_ops(smc_skel->maps.ops); | ^ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c: In function ‘test_update’: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:54:50: error: ‘struct <anonymous>’ has no member named ‘accept’ 54 | link = bpf_map__attach_struct_ops(smc_skel->maps.accept); | ^ In file included from /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:5: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:59:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 59 | ASSERT_EQ(smc_skel->bss->accept_cnt, 1, "accept_cnt"); | ^~ ./test_progs.h:135:9: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:59:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 59 | ASSERT_EQ(smc_skel->bss->accept_cnt, 1, "accept_cnt"); | ^~ ./test_progs.h:135:27: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:61:8: warning: implicit declaration of function ‘bpf_link__update_map’; did you mean ‘bpf_link_update’? [-Wimplicit-function-declaration] 61 | err = bpf_link__update_map(link, smc_skel->maps.drop); | ^~~~~~~~~~~~~~~~~~~~ | bpf_link_update /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:61:49: error: ‘struct <anonymous>’ has no member named ‘drop’ 61 | err = bpf_link__update_map(link, smc_skel->maps.drop); | ^ In file included from /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:5: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:65:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 65 | ASSERT_EQ(smc_skel->bss->accept_cnt, 1, "accept_cnt"); | ^~ ./test_progs.h:135:9: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:65:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 65 | ASSERT_EQ(smc_skel->bss->accept_cnt, 1, "accept_cnt"); | ^~ ./test_progs.h:135:27: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:66:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 66 | ASSERT_EQ(smc_skel->bss->drop_cnt, 1, "drop_cnt"); | ^~ ./test_progs.h:135:9: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:66:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 66 | ASSERT_EQ(smc_skel->bss->drop_cnt, 1, "drop_cnt"); | ^~ ./test_progs.h:135:27: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c: In function ‘test_ref’: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:83:50: error: ‘struct <anonymous>’ has no member named ‘accept’ 83 | link = bpf_map__attach_struct_ops(smc_skel->maps.accept); | ^ In file included from /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:5: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:94:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 94 | ASSERT_EQ(smc_skel->bss->accept_release_cnt, 1, "accept_release_cnt"); | ^~ ./test_progs.h:135:9: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/prog_tests/bpf_smc.c:94:20: error: ‘struct bpf_smc’ has no member named ‘bss’ 94 | ASSERT_EQ(smc_skel->bss->accept_release_cnt, 1, "accept_release_cnt"); | ^~ ./test_progs.h:135:27: note: in definition of macro ‘ASSERT_EQ’ 135 | typeof(actual) ___act = (actual); \ | ^~~~~~ make: *** [Makefile:403: /root/rpmbuild/BUILD/kernel-5.10.134-966.git.a81fa9db4.al8/linux-5.10.134-966.git.a81fa9db4.al8.aarch64/tools/testing/selftests/bpf/bpf_smc.test.o] Error 1 [复现概率]: 必现 [复现环境]: 内核: 5.10.134-966.git.a81fa9db4.al8.aarch64 # cat /etc/os-release NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)" ID="alinux" ID_LIKE="rhel fedora centos" VERSION_ID="3" PLATFORM_ID="platform:al8" PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)" ANSI_COLOR="0;31" HOME_URL="https://www.aliyun.com/" CPU信息: # lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per cluster: 4 Socket(s): 4 Cluster(s): 1 NUMA node(s): 1 Vendor ID: HiSilicon BIOS Vendor ID: Alibaba Cloud Model: 0 Model name: Kunpeng-920 BIOS Model name: virt-rhel7.6.0 Stepping: 0x1 BogoMIPS: 200.00 NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm 内存信息: # free -h total used free shared buff/cache available Mem: 15Gi 513Mi 13Gi 4.0Mi 1.7Gi 14Gi Swap: 0B 0B 0B [复现步骤]: 下载当前内核 对应的kernel*src.rpm, rpm -ivh kernel*.src.rpm which yum-builddep || yum install -y yum-utils which rpmbuild || yum install -y rpm-build yum-builddep -y $rpmbuild_dir/SPECS/kernel.spec rpmbuild -bp $rpmbuild_dir/SPECS/kernel.spec cd /root/rpmbuild/BUILD/kernel*/linux*/tools/testing/selftests cd bpf make [预期结果]: 用例执行成功 [实际结果]: bpf目录编译失败,导致用例执行失败
[Anolis8.8][aarch64][社区nightly]kernel-selftests测试套bpf目录编译同样失败,也导致了bpf相关用例均未执行,且导致net目录下udpgro_bench.sh和udpgro.sh用例失败,日志如下: # cd run/kernel-selftests/net [root@qibo-anolis8-nightly-func-arm-4 net]# ./udpgro_bench.sh Missing xdp_dummy helper. Build bpf selftest first [root@qibo-anolis8-nightly-func-arm-4 net]# ./udpgro.sh Missing xdp_dummy helper. Build bpf selftest first
Anck-5.10-15版本有同样失败; 内核:5.10.134-15_rc1.al8.aarch64
Anolis8 Anck-5.10-15版本存在同样的kernel-selftests bpf目录编译失败问题 # uname -r 5.10.134-15_rc1.an8.x86_64
已知问题,使用了for社区的patch,修复中。
The PR Link: https://gitee.com/anolis/cloud-kernel/pulls/1768
https://gitee.com/anolis/cloud-kernel/pulls/1768 已完成修复。
最新的nightly内核,此用例已经pass,问题修复,故closed此缺陷; net.udpgro_bench.sh Pass net.udpgro.sh Pass