KVM: vmx: obey KVM_QUIRK_CD_NW_CLEARED
authorXiao Guangrong <guangrong.xiao@intel.com>
Wed, 15 Jul 2015 19:25:56 +0000 (03:25 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 23 Jul 2015 06:23:01 +0000 (08:23 +0200)
OVMF depends on WB to boot fast, because it only clears caches after
it has set up MTRRs---which is too late.

Let's do writeback if CR0.CD is set to make it happy, similar to what
SVM is already doing.

Signed-off-by: Xiao Guangrong <guangrong.xiao@intel.com>
Tested-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx.c

index 5b4e9384717a17257ea20ef47031dd5f158273a2..e9e1fc517ab592e69993afb934472360c7393ee1 100644 (file)
@@ -8650,7 +8650,10 @@ static u64 vmx_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio)
 
        if (kvm_read_cr0(vcpu) & X86_CR0_CD) {
                ipat = VMX_EPT_IPAT_BIT;
-               cache = MTRR_TYPE_UNCACHABLE;
+               if (kvm_check_has_quirk(vcpu->kvm, KVM_QUIRK_CD_NW_CLEARED))
+                       cache = MTRR_TYPE_WRBACK;
+               else
+                       cache = MTRR_TYPE_UNCACHABLE;
                goto exit;
        }