OSDN Git Service

KVM: nSVM: Check for CR0.CD and CR0.NW on VMRUN of nested guests
authorKrish Sadhukhan <krish.sadhukhan@oracle.com>
Thu, 9 Apr 2020 20:50:33 +0000 (16:50 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 21 Apr 2020 13:13:10 +0000 (09:13 -0400)
According to section "Canonicalization and Consistency Checks" in APM vol. 2,
the following guest state combination is illegal:

"CR0.CD is zero and CR0.NW is set"

Signed-off-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
Message-Id: <20200409205035.16830-2-krish.sadhukhan@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm/nested.c

index c628931..3e5bd73 100644 (file)
@@ -207,6 +207,10 @@ static bool nested_vmcb_checks(struct vmcb *vmcb)
        if ((vmcb->save.efer & EFER_SVME) == 0)
                return false;
 
+       if (((vmcb->save.cr0 & X86_CR0_CD) == 0) &&
+           (vmcb->save.cr0 & X86_CR0_NW))
+               return false;
+
        if ((vmcb->control.intercept & (1ULL << INTERCEPT_VMRUN)) == 0)
                return false;