Commit 27746aaf authored by Matt Bobrowski's avatar Matt Bobrowski Committed by Alexei Starovoitov
Browse files

selftests/bpf: skip test_perf_branches_hw() on unsupported platforms



Gracefully skip the test_perf_branches_hw subtest on platforms that
do not support LBR or require specialized perf event attributes
to enable branch sampling.

For example, AMD's Milan (Zen 3) supports BRS rather than traditional
LBR. This requires specific configurations (attr.type = PERF_TYPE_RAW,
attr.config = RETIRED_TAKEN_BRANCH_INSTRUCTIONS) that differ from the
generic setup used within this test. Notably, it also probably doesn't
hold much value to special case perf event configurations for selected
micro architectures.

Fixes: 67306f84 ("selftests/bpf: Add bpf_read_branch_records() selftest")
Signed-off-by: default avatarMatt Bobrowski <mattbobrowski@google.com>
Acked-by: default avatarSong Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20251120142059.2836181-1-mattbobrowski@google.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 878ee3c3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -116,11 +116,11 @@ static void test_perf_branches_hw(void)
	pfd = syscall(__NR_perf_event_open, &attr, -1, 0, -1, PERF_FLAG_FD_CLOEXEC);

	/*
	 * Some setups don't support branch records (virtual machines, !x86),
	 * so skip test in this case.
	 * Some setups don't support LBR (virtual machines, !x86, AMD Milan Zen
	 * 3 which only supports BRS), so skip test in this case.
	 */
	if (pfd < 0) {
		if (errno == ENOENT || errno == EOPNOTSUPP) {
		if (errno == ENOENT || errno == EOPNOTSUPP || errno == EINVAL) {
			printf("%s:SKIP:no PERF_SAMPLE_BRANCH_STACK\n",
			       __func__);
			test__skip();