Merge tag 'kvm-x86-mmu-6.4' of https://github.com/kvm-x86/linux into HEAD
[linux-block.git] / arch / x86 / kvm / vmx / nested.c
index 06b2c24d5a745fdde1840e489216640942488344..d91c08f04dd5d1129dab8f6ed8da64af14c854ee 100644 (file)
@@ -358,6 +358,7 @@ static bool nested_ept_root_matches(hpa_t root_hpa, u64 root_eptp, u64 eptp)
 static void nested_ept_invalidate_addr(struct kvm_vcpu *vcpu, gpa_t eptp,
                                       gpa_t addr)
 {
+       unsigned long roots = 0;
        uint i;
        struct kvm_mmu_root_info *cached_root;
 
@@ -368,8 +369,10 @@ static void nested_ept_invalidate_addr(struct kvm_vcpu *vcpu, gpa_t eptp,
 
                if (nested_ept_root_matches(cached_root->hpa, cached_root->pgd,
                                            eptp))
-                       vcpu->arch.mmu->invlpg(vcpu, addr, cached_root->hpa);
+                       roots |= KVM_MMU_ROOT_PREVIOUS(i);
        }
+       if (roots)
+               kvm_mmu_invalidate_addr(vcpu, vcpu->arch.mmu, addr, roots);
 }
 
 static void nested_ept_inject_page_fault(struct kvm_vcpu *vcpu,