Message ID | 1519797811-4560-1-git-send-email-wanpengli@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 28/02/2018 07:03, Wanpeng Li wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > Introduce kvm_get_msr_feature() to handle the msrs which are supported > by different vendors and sharing the same emulation logic. > > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Radim Krčmář <rkrcmar@redhat.com> > Cc: Liran Alon <liran.alon@oracle.com> > Cc: Nadav Amit <nadav.amit@gmail.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > --- > arch/x86/kvm/x86.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index d4985a9..efc8554 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -1062,13 +1062,25 @@ static u32 msr_based_features[] = { > > static unsigned int num_msr_based_features; > > +static int kvm_get_msr_feature(struct kvm_msr_entry *msr) > +{ > + switch (msr->index) { > + default: > + if (kvm_x86_ops->get_msr_feature(msr)) > + return 1; > + } > + return 0; > +} > + > static int do_get_msr_feature(struct kvm_vcpu *vcpu, unsigned index, u64 *data) > { > struct kvm_msr_entry msr; > + int r; > > msr.index = index; > - if (kvm_x86_ops->get_msr_feature(&msr)) > - return 1; > + r = kvm_get_msr_feature(&msr); > + if (r) > + return r; > > *data = msr.data; > > @@ -4538,7 +4550,7 @@ static void kvm_init_msr_list(void) > struct kvm_msr_entry msr; > > msr.index = msr_based_features[i]; > - if (kvm_x86_ops->get_msr_feature(&msr)) > + if (kvm_get_msr_feature(&msr)) > continue; > > if (j < i) > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
2018-02-28 14:03+0800, Wanpeng Li: > From: Wanpeng Li <wanpengli@tencent.com> > > Introduce kvm_get_msr_feature() to handle the msrs which are supported > by different vendors and sharing the same emulation logic. > > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Radim Krčmář <rkrcmar@redhat.com> > Cc: Liran Alon <liran.alon@oracle.com> > Cc: Nadav Amit <nadav.amit@gmail.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > --- Applied both, thanks.
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index d4985a9..efc8554 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1062,13 +1062,25 @@ static u32 msr_based_features[] = { static unsigned int num_msr_based_features; +static int kvm_get_msr_feature(struct kvm_msr_entry *msr) +{ + switch (msr->index) { + default: + if (kvm_x86_ops->get_msr_feature(msr)) + return 1; + } + return 0; +} + static int do_get_msr_feature(struct kvm_vcpu *vcpu, unsigned index, u64 *data) { struct kvm_msr_entry msr; + int r; msr.index = index; - if (kvm_x86_ops->get_msr_feature(&msr)) - return 1; + r = kvm_get_msr_feature(&msr); + if (r) + return r; *data = msr.data; @@ -4538,7 +4550,7 @@ static void kvm_init_msr_list(void) struct kvm_msr_entry msr; msr.index = msr_based_features[i]; - if (kvm_x86_ops->get_msr_feature(&msr)) + if (kvm_get_msr_feature(&msr)) continue; if (j < i)