On Tue, May 31, 2022, Paolo Bonzini wrote: > Whenever an MSR is part of KVM_GET_MSR_INDEX_LIST, it has to be always > retrievable and settable with KVM_GET_MSR and KVM_SET_MSR. Accept > the PMU MSRs unconditionally in intel_is_valid_msr, if the access was > host-initiated. ...so that userspace can explode in intel_get_msr() or intel_set_msr(). Selftests that regurgitate MSRs are still failing. The below "fixes" the issue, but I don't know that it's actually a good idea. I also haven't tried AMD. diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index 515ab6594333..fcb5224028a6 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -401,7 +401,7 @@ static int intel_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) return 0; } - return 1; + return !msr_info->host_initiated; } static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) @@ -497,7 +497,7 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) return 0; } - return 1; + return !msr_info->host_initiated; } static void setup_fixed_pmc_eventsel(struct kvm_pmu *pmu)