selftests/bpf: Fix bpf_cookie and find_vma in nested VM
authorSong Liu <song@kernel.org>
Tue, 4 Jun 2024 07:07:00 +0000 (00:07 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 4 Jun 2024 18:17:54 +0000 (11:17 -0700)
bpf_cookie and find_vma are flaky in nested VMs, which is used by some CI
systems. It turns out these failures are caused by unreliable perf event
in nested VM. Fix these by:

  1. Use PERF_COUNT_SW_CPU_CLOCK in find_vma;
  2. Increase sample_freq in bpf_cookie.

Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240604070700.3032142-1-song@kernel.org
tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
tools/testing/selftests/bpf/prog_tests/find_vma.c

index 4407ea4..070c52c 100644 (file)
@@ -451,7 +451,7 @@ static void pe_subtest(struct test_bpf_cookie *skel)
        attr.type = PERF_TYPE_SOFTWARE;
        attr.config = PERF_COUNT_SW_CPU_CLOCK;
        attr.freq = 1;
-       attr.sample_freq = 1000;
+       attr.sample_freq = 10000;
        pfd = syscall(__NR_perf_event_open, &attr, -1, 0, -1, PERF_FLAG_FD_CLOEXEC);
        if (!ASSERT_GE(pfd, 0, "perf_fd"))
                goto cleanup;
index 5165b38..f7619e0 100644 (file)
@@ -29,8 +29,8 @@ static int open_pe(void)
 
        /* create perf event */
        attr.size = sizeof(attr);
-       attr.type = PERF_TYPE_HARDWARE;
-       attr.config = PERF_COUNT_HW_CPU_CYCLES;
+       attr.type = PERF_TYPE_SOFTWARE;
+       attr.config = PERF_COUNT_SW_CPU_CLOCK;
        attr.freq = 1;
        attr.sample_freq = 1000;
        pfd = syscall(__NR_perf_event_open, &attr, 0, -1, -1, PERF_FLAG_FD_CLOEXEC);