verif_scale_pyperf600 loads pyperf600.bpf.o, a large scale case produced by partial LLVM unrolling. On some kernel/toolchain combinations, the verifier rejects it with -E2BIG: The sequence of 8193 jumps is too complex. This hits the verifier jump sequence complexity limit (8192). Treat -E2BIG for this test as SKIP rather than FAIL. Other pyperf600 variants are unaffected. Signed-off-by: Sun Jian --- .../bpf/prog_tests/bpf_verif_scale.c | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c b/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c index 73f669014b69..181acdddea1c 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c @@ -112,13 +112,33 @@ void test_verif_scale_pyperf180() void test_verif_scale_pyperf600() { + libbpf_print_fn_t old_print_fn = NULL; + int err; + /* partial unroll. llvm will unroll loop ~150 times. * C loop count -> 600. * Asm loop count -> 4. * 16k insns in loop body. * Total of 5 such loops. Total program size ~82k insns. */ - scale_test("pyperf600.bpf.o", BPF_PROG_TYPE_RAW_TRACEPOINT, false); + + if (env.verifier_stats) { + test__force_log(); + old_print_fn = libbpf_set_print(libbpf_debug_print); + } + + err = check_load("pyperf600.bpf.o", BPF_PROG_TYPE_RAW_TRACEPOINT); + + if (env.verifier_stats) + libbpf_set_print(old_print_fn); + + if (err == -E2BIG) { + test__skip(); + return; + } + + ASSERT_OK(err, "expect_success"); + } void test_verif_scale_pyperf600_bpf_loop(void) base-commit: 11439c4635edd669ae435eec308f4ab8a0804808 -- 2.43.0