]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86/pmu: Allow Host-Only/Guest-Only bits with nSVM and mediated PMU
authorJim Mattson <jmattson@google.com>
Wed, 27 May 2026 23:47:07 +0000 (23:47 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 28 May 2026 02:02:52 +0000 (19:02 -0700)
Now that KVM correctly handles Host-Only and Guest-Only bits in the
event selector MSRs, allow the guest to set them if the vCPU advertises
SVM and uses the mediated PMU.

Signed-off-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Yosry Ahmed <yosry@kernel.org>
Link: https://patch.msgid.link/20260527234711.4175166-14-yosry@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/pmu.c

index b892a25ea4ca9b4bfbdeadc23dd69277364f66a8..c18286545a7acdc6b6c7f36898bc2668793ca7d4 100644 (file)
@@ -213,7 +213,11 @@ static void amd_pmu_refresh(struct kvm_vcpu *vcpu)
        }
 
        pmu->counter_bitmask[KVM_PMC_GP] = BIT_ULL(48) - 1;
+
        pmu->reserved_bits = 0xfffffff000280000ull;
+       if (guest_cpu_cap_has(vcpu, X86_FEATURE_SVM) && kvm_vcpu_has_mediated_pmu(vcpu))
+               pmu->reserved_bits &= ~AMD64_EVENTSEL_HOST_GUEST_MASK;
+
        pmu->raw_event_mask = AMD64_RAW_EVENT_MASK;
        /* not applicable to AMD; but clean them to prevent any fall out */
        pmu->counter_bitmask[KVM_PMC_FIXED] = 0;