All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next v2] selftests/bpf: skip the second half of get_branch_snapshot in vm
@ 2021-10-07  5:02 Song Liu
  2021-10-08  5:00 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 2+ messages in thread
From: Song Liu @ 2021-10-07  5:02 UTC (permalink / raw)
  To: bpf, netdev; +Cc: ast, daniel, andrii, kernel-team, Song Liu

VMs running on latest 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: 025bd7c753aa ("selftests/bpf: Add test for bpf_get_branch_snapshot")
Signed-off-by: Song Liu <songliubraving@fb.com>

---
Changes v1 => v2:
1. Move the is_hypervisor() check to later in the test, so that we still
   Run the first half of the test in vm
2. Use strncmp instead of strstr. (Andrii)
3. Fix the Fixes tag. (Andrii)
---
 .../bpf/prog_tests/get_branch_snapshot.c      | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c b/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c
index 67e86f8d86775..e4f92feb7b32c 100644
--- a/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c
+++ b/tools/testing/selftests/bpf/prog_tests/get_branch_snapshot.c
@@ -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};
@@ -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.
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH bpf-next v2] selftests/bpf: skip the second half of get_branch_snapshot in vm
  2021-10-07  5:02 [PATCH bpf-next v2] selftests/bpf: skip the second half of get_branch_snapshot in vm Song Liu
@ 2021-10-08  5:00 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-10-08  5:00 UTC (permalink / raw)
  To: Song Liu; +Cc: bpf, netdev, ast, daniel, andrii, kernel-team

Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Wed, 6 Oct 2021 22:02:31 -0700 you wrote:
> VMs running on latest 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: 025bd7c753aa ("selftests/bpf: Add test for bpf_get_branch_snapshot")
> Signed-off-by: Song Liu <songliubraving@fb.com>
> 
> [...]

Here is the summary with links:
  - [bpf-next,v2] selftests/bpf: skip the second half of get_branch_snapshot in vm
    https://git.kernel.org/bpf/bpf-next/c/aa67fdb46436

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-10-08  5:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-07  5:02 [PATCH bpf-next v2] selftests/bpf: skip the second half of get_branch_snapshot in vm Song Liu
2021-10-08  5:00 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.