• Sean Christopherson's avatar
    KVM: x86/mmu: Track the number of TDP MMU pages, but not the actual pages · d25ceb92
    Sean Christopherson authored
    Track the number of TDP MMU "shadow" pages instead of tracking the pages
    themselves. With the NX huge page list manipulation moved out of the common
    linking flow, elminating the list-based tracking means the happy path of
    adding a shadow page doesn't need to acquire a spinlock and can instead
    inc/dec an atomic.
    
    Keep the tracking as the WARN during TDP MMU teardown on leaked shadow
    pages is very, very useful for detecting KVM bugs.
    
    Tracking the number of pages will also make it trivial to expose the
    counter to userspace as a stat in the future, which may or may not be
    desirable.
    
    Note, the TDP MMU needs to use a separate counter (and stat if that ever
    comes to be) from the existing n_used_mmu_pages. The TDP MMU doesn't bother
    supporting the shrinker nor does it honor KVM_SET_NR_MMU_PAGES (because the
    TDP MMU consumes so few pages relative to shadow paging), and including TDP
    MMU pages in that counter would break both the shrinker and shadow MMUs,
    e.g. if a VM is using nested TDP.
    
    Cc: Yan Zhao <yan.y.zhao@intel.com>
    Reviewed-by: default avatarMingwei Zhang <mizhang@google.com>
    Reviewed-by: default avatarDavid Matlack <dmatlack@google.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Reviewed-by: default avatarYan Zhao <yan.y.zhao@intel.com>
    Message-Id: <20221019165618.927057-6-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    d25ceb92
tdp_mmu.c 57.3 KB