]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86/mmu: Zap SPTEs on MTRR update iff guest MTRRs are honored
authorYan Zhao <yan.y.zhao@intel.com>
Fri, 14 Jul 2023 06:51:56 +0000 (14:51 +0800)
committerSean Christopherson <seanjc@google.com>
Mon, 9 Oct 2023 21:35:14 +0000 (14:35 -0700)
When guest MTRRs are updated, zap SPTEs and do zap range calcluation if and
only if KVM's MMU is honoring guest MTRRs, which is the only time that KVM
incorporates the guest's MTRR type into the final memtype.

Suggested-by: Chao Gao <chao.gao@intel.com>
Suggested-by: Sean Christopherson <seanjc@google.com>
Cc: Kai Huang <kai.huang@intel.com>
Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
Link: https://lore.kernel.org/r/20230714065156.20375-1-yan.y.zhao@intel.com
[sean: rephrase shortlog]
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/mtrr.c

index 3eb6e7f47e9634c144b448b435fc147eb48cb4ed..a67c28a56417ebc7672dc84db6ddd2169058f1ca 100644 (file)
@@ -320,7 +320,7 @@ static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr)
        struct kvm_mtrr *mtrr_state = &vcpu->arch.mtrr_state;
        gfn_t start, end;
 
-       if (!tdp_enabled || !kvm_arch_has_noncoherent_dma(vcpu->kvm))
+       if (!kvm_mmu_honors_guest_mtrrs(vcpu->kvm))
                return;
 
        if (!mtrr_is_enabled(mtrr_state) && msr != MSR_MTRRdefType)