Messages in this thread | | | Date | Fri, 26 Apr 2024 15:43:16 +0800 | From | "Yang, Weijiang" <> | Subject | Re: [PATCH 10/10] KVM: x86: Suppress userspace access failures on unsupported, "emulated" MSRs |
| |
On 4/26/2024 2:14 AM, Sean Christopherson wrote: > Extend KVM's suppression of userspace MSR access failures to MSRs that KVM > reports as emulated, but are ultimately unsupported, e.g. if the VMX MSRs > are emulated by KVM, but are unsupported given the vCPU model. > > Suggested-by: Weijiang Yang<weijiang.yang@intel.com> > Signed-off-by: Sean Christopherson<seanjc@google.com> > --- > arch/x86/kvm/x86.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 4c91189342ff..14cfa25ef0e7 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -491,7 +491,7 @@ static bool kvm_is_immutable_feature_msr(u32 msr) > return false; > } > > -static bool kvm_is_msr_to_save(u32 msr_index) > +static bool kvm_is_advertised_msr(u32 msr_index) > { > unsigned int i; > > @@ -500,6 +500,11 @@ static bool kvm_is_msr_to_save(u32 msr_index) > return true; > } > > + for (i = 0; i < num_emulated_msrs; i++) { > + if (emulated_msrs[i] == msr_index) > + return true; > + } > + > return false; > } > > @@ -529,11 +534,11 @@ static __always_inline int kvm_do_msr_access(struct kvm_vcpu *vcpu, u32 msr, > > /* > * Userspace is allowed to read MSRs, and write '0' to MSRs, that KVM > - * reports as to-be-saved, even if an MSR isn't fully supported. > + * advertises to userspace, even if an MSR isn't fully supported. > * Simply check that @data is '0', which covers both the write '0' case > * and all reads (in which case @data is zeroed on failure; see above). > */ > - if (host_initiated && !*data && kvm_is_msr_to_save(msr)) > + if (host_initiated && !*data && kvm_is_advertised_msr(msr)) > return 0; > > if (!ignore_msrs) {
Reviewed-by: Weijiang Yang <weijiang.yang@intel.com>
| |