]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
KVM: VMX: support MSR_IA32_ARCH_CAPABILITIES as a feature MSR
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 25 Jun 2018 12:04:37 +0000 (14:04 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 11 Aug 2018 00:44:48 +0000 (20:44 -0400)
This lets userspace read the MSR_IA32_ARCH_CAPABILITIES and check that all
requested features are available on the host.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Orabug: 28220625
CVE: CVE-2018-3646

(cherry picked from commit cd28325249a1ca0d771557ce823e0308ad629f98)

Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Conflicts:
arch/x86/kvm/x86.c
Contextual: different content

arch/x86/kvm/x86.c

index 28265fb6357168f574bfa91a02218211eefca124..039ea0392285e0d5dfa60c1bba673b3e733090b4 100644 (file)
@@ -970,6 +970,7 @@ static const u32 emulated_msrs[] = {
  * can be used by a hypervisor to validate requested CPU features.
  */
 static u32 msr_based_features[] = {
+       MSR_IA32_ARCH_CAPABILITIES,
 };
 
 static unsigned int num_msr_based_features;
@@ -977,6 +978,9 @@ static unsigned int num_msr_based_features;
 static int kvm_get_msr_feature(struct kvm_msr_entry *msr)
 {
        switch (msr->index) {
+       case MSR_IA32_ARCH_CAPABILITIES:
+               rdmsrl_safe(msr->index, &msr->data);
+               break;
        default:
                if (kvm_x86_ops->get_msr_feature(msr))
                        return 1;