KVM: x86/mmu: Zap any compound page when collapsing sptes
authorSean Christopherson <sean.j.christopherson@intel.com>
Wed, 8 Jan 2020 20:24:45 +0000 (12:24 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 27 Jan 2020 19:00:07 +0000 (20:00 +0100)
Zap any compound page, e.g. THP or HugeTLB pages, when zapping sptes
that can potentially be converted to huge sptes after disabling dirty
logging on the associated memslot.  Note, this approach could result in
false positives, e.g. if a random compound page is mapped into the
guest, but mapping non-huge compound pages into the guest is far from
the norm, and toggling dirty logging is not a frequent operation.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c

index 6be0239..9090842 100644 (file)
@@ -5951,7 +5951,7 @@ restart:
                 */
                if (sp->role.direct && !kvm_is_reserved_pfn(pfn) &&
                    !kvm_is_zone_device_pfn(pfn) &&
-                   kvm_is_transparent_hugepage(pfn)) {
+                   PageCompound(pfn_to_page(pfn))) {
                        pte_list_remove(rmap_head, sptep);
 
                        if (kvm_available_flush_tlb_with_range())