Skip to content
  • Kai Huang's avatar
    KVM: x86/mmu: Avoid unnecessary page table allocation in kvm_tdp_mmu_map() · ff76d506
    Kai Huang authored
    
    
    In kvm_tdp_mmu_map(), while iterating TDP MMU page table entries, it is
    possible SPTE has already been frozen by another thread but the frozen
    is not done yet, for instance, when another thread is still in middle of
    zapping large page.  In this case, the !is_shadow_present_pte() check
    for old SPTE in tdp_mmu_for_each_pte() may hit true, and in this case
    allocating new page table is unnecessary since tdp_mmu_set_spte_atomic()
    later will return false and page table will need to be freed.  Add
    is_removed_spte() check before allocating new page table to avoid this.
    
    Signed-off-by: default avatarKai Huang <kai.huang@intel.com>
    Message-Id: <20210429041226.50279-1-kai.huang@intel.com>
    Reviewed-by: default avatarBen Gardon <bgardon@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    ff76d506