Skip to content

Commit

Permalink
selftests/bpf: Skip the second half of get_branch_snapshot in vm
Browse files Browse the repository at this point in the history
VMs running on upstream 5.12+ kernel support LBR. However,
bpf_get_branch_snapshot couldn't stop the LBR before too many entries
are flushed. Skip the hit/waste test for VMs before we find a proper fix
for LBR in VM.

Fixes: 025bd7c ("selftests/bpf: Add test for bpf_get_branch_snapshot")
Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211007050231.728496-1-songliubraving@fb.com
  • Loading branch information
Song Liu authored and Andrii Nakryiko committed Oct 8, 2021
1 parent 0eb4ef8 commit aa67fdb
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,30 @@
static int *pfd_array;
static int cpu_cnt;

static bool is_hypervisor(void)
{
char *line = NULL;
bool ret = false;
size_t len;
FILE *fp;

fp = fopen("/proc/cpuinfo", "r");
if (!fp)
return false;

while (getline(&line, &len, fp) != -1) {
if (!strncmp(line, "flags", 5)) {
if (strstr(line, "hypervisor") != NULL)
ret = true;
break;
}
}

free(line);
fclose(fp);
return ret;
}

static int create_perf_events(void)
{
struct perf_event_attr attr = {0};
Expand Down Expand Up @@ -83,6 +107,16 @@ void test_get_branch_snapshot(void)
goto cleanup;
}

if (is_hypervisor()) {
/* As of today, LBR in hypervisor cannot be stopped before
* too many entries are flushed. Skip the hit/waste test
* for now in hypervisor until we optimize the LBR in
* hypervisor.
*/
test__skip();
goto cleanup;
}

ASSERT_GT(skel->bss->test1_hits, 6, "find_looptest_in_lbr");

/* Given we stop LBR in software, we will waste a few entries.
Expand Down

0 comments on commit aa67fdb

Please sign in to comment.