diff mbox series

KVM: selftest: Add family and model check for zen4 in PMU filter test

Message ID 20240501152451.4458-1-manali.shukla@amd.com (mailing list archive)
State New
Headers show
Series KVM: selftest: Add family and model check for zen4 in PMU filter test | expand

Commit Message

Manali Shukla May 1, 2024, 3:24 p.m. UTC
PMU event filter test fails on zen4 architecture because of
unavailability of family and model check for zen4 in use_amd_pmu().
So, add family and model check for zen4 architecture in use_amd_pmu().

Signed-off-by: Manali Shukla <manali.shukla@amd.com>
---
 .../testing/selftests/kvm/x86_64/pmu_event_filter_test.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Sean Christopherson May 1, 2024, 3:32 p.m. UTC | #1
On Wed, May 01, 2024, Manali Shukla wrote:
> PMU event filter test fails on zen4 architecture because of
> unavailability of family and model check for zen4 in use_amd_pmu().
> So, add family and model check for zen4 architecture in use_amd_pmu().

Is there a less ugly way to detect that 0xc2,0 == "branch instructions retired"?
E.g. can we instead check for v2 PMU support, or are there no guarantees going
forward?  Pivoting on FMS is so painful :-(
diff mbox series

Patch

diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
index 3c85d1ae9893..c212ca4ffa72 100644
--- a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
+++ b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
@@ -374,6 +374,12 @@  static bool is_zen3(uint32_t family, uint32_t model)
 	return family == 0x19 && model <= 0x0f;
 }
 
+static bool is_zen4(uint32_t family, uint32_t model)
+{
+	return family == 0x19 && ((model >= 0x10 && model <= 0x1f) ||
+		(model >= 0xa0 && model <= 0xaf));
+}
+
 /*
  * Determining AMD support for a PMU event requires consulting the AMD
  * PPR for the CPU or reference material derived therefrom. The AMD
@@ -390,7 +396,8 @@  static bool use_amd_pmu(void)
 	return host_cpu_is_amd &&
 		(is_zen1(family, model) ||
 		 is_zen2(family, model) ||
-		 is_zen3(family, model));
+		 is_zen3(family, model) ||
+		 is_zen4(family, model));
 }
 
 /*