diff mbox series

[kvm-unit-tests] x86/pmu: Truncate reserved bits for emulated test of full width writes

Message ID 20230607212111.1579831-1-seanjc@google.com (mailing list archive)
State New, archived
Headers show
Series [kvm-unit-tests] x86/pmu: Truncate reserved bits for emulated test of full width writes | expand

Commit Message

Sean Christopherson June 7, 2023, 9:21 p.m. UTC
Mask off reserved bits when stuffing PMCs with full-width writes in the
forced emulation subtest, otherwise the test may fail due to attempting
to set reserved bits.

Cc: Like Xu <like.xu.linux@gmail.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 x86/pmu.c | 5 +++++
 1 file changed, 5 insertions(+)


base-commit: 02d8befe99f8205d4caea402d8b0800354255681

Comments

Sean Christopherson June 7, 2023, 9:56 p.m. UTC | #1
On Wed, Jun 07, 2023, Sean Christopherson wrote:
> Mask off reserved bits when stuffing PMCs with full-width writes in the
> forced emulation subtest, otherwise the test may fail due to attempting
> to set reserved bits.
> 
> Cc: Like Xu <like.xu.linux@gmail.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---

Gah, Like already posted a fix, I just misread his patch at first glance.

https://lore.kernel.org/all/20221226075412.61167-3-likexu@tencent.com
diff mbox series

Patch

diff --git a/x86/pmu.c b/x86/pmu.c
index 72c2c9cf..d92bd8ad 100644
--- a/x86/pmu.c
+++ b/x86/pmu.c
@@ -498,6 +498,11 @@  static void check_emulated_instr(void)
 
 	brnch_start = -EXPECTED_BRNCH;
 	instr_start = -EXPECTED_INSTR;
+
+	if (pmu_use_full_writes()) {
+		brnch_start &= (1ull << pmu.gp_counter_width) - 1;
+		instr_start &= (1ull << pmu.gp_counter_width) - 1;
+	}
 	wrmsr(MSR_GP_COUNTERx(0), brnch_start);
 	wrmsr(MSR_GP_COUNTERx(1), instr_start);
 	// KVM_FEP is a magic prefix that forces emulation so