diff options
| author | Song Liu <song@kernel.org> | 2024-06-04 00:07:00 -0700 | 
|---|---|---|
| committer | Andrii Nakryiko <andrii@kernel.org> | 2024-06-04 11:17:54 -0700 | 
| commit | 61ce0ea7591fef2eb6e89ce40ffcc24fda4dbbc5 (patch) | |
| tree | 09649074f6ebde1305acef37c57614fa3b0e9d0d /tools/testing/selftests | |
| parent | 49df0019f36798d414e6b913bec30a3a0cd47c70 (diff) | |
selftests/bpf: Fix bpf_cookie and find_vma in nested VM
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
Diffstat (limited to 'tools/testing/selftests')
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/bpf_cookie.c | 2 | ||||
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/find_vma.c | 4 | 
2 files changed, 3 insertions, 3 deletions
| diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c index 4407ea428e77..070c52c312e5 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c @@ -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; diff --git a/tools/testing/selftests/bpf/prog_tests/find_vma.c b/tools/testing/selftests/bpf/prog_tests/find_vma.c index 5165b38f0e59..f7619e0ade10 100644 --- a/tools/testing/selftests/bpf/prog_tests/find_vma.c +++ b/tools/testing/selftests/bpf/prog_tests/find_vma.c @@ -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); | 
