KVM: x86: Refresh PMU after writes to MSR_IA32_PERF_CAPABILITIES
authorSean Christopherson <seanjc@google.com>
Wed, 27 Jul 2022 23:34:22 +0000 (23:34 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 10 Aug 2022 19:08:30 +0000 (15:08 -0400)
Refresh the PMU if userspace modifies MSR_IA32_PERF_CAPABILITIES.  KVM
consumes the vCPU's PERF_CAPABILITIES when enumerating PEBS support, but
relies on CPUID updates to refresh the PMU.  I.e. KVM will do the wrong
thing if userspace stuffs PERF_CAPABILITIES _after_ setting guest CPUID.

Opportunistically fix a curly-brace indentation.

Fixes: c59a1f106f5c ("KVM: x86/pmu: Add IA32_PEBS_ENABLE MSR emulation for extended PEBS")
Cc: Like Xu <like.xu.linux@gmail.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220727233424.2968356-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index 924016d..132d662 100644 (file)
@@ -3546,9 +3546,9 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
                        return 1;
 
                vcpu->arch.perf_capabilities = data;
-
+               kvm_pmu_refresh(vcpu);
                return 0;
-               }
+       }
        case MSR_EFER:
                return set_efer(vcpu, msr_info);
        case MSR_K7_HWCR: