• Ben Gardon's avatar
    KVM: x86/MMU: Zap non-leaf SPTEs when disabling dirty logging · 5ba7c4c6
    Ben Gardon authored
    Currently disabling dirty logging with the TDP MMU is extremely slow.
    On a 96 vCPU / 96G VM backed with gigabyte pages, it takes ~200 seconds
    to disable dirty logging with the TDP MMU, as opposed to ~4 seconds with
    the shadow MMU.
    
    When disabling dirty logging, zap non-leaf parent entries to allow
    replacement with huge pages instead of recursing and zapping all of the
    child, leaf entries. This reduces the number of TLB flushes required.
    and reduces the disable dirty log time with the TDP MMU to ~3 seconds.
    
    Opportunistically add a WARN() to catch GFNs that are mapped at a
    higher level than their max level.
    Signed-off-by: default avatarBen Gardon <bgardon@google.com>
    Message-Id: <20220525230904.1584480-1-bgardon@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    5ba7c4c6
tdp_mmu.c 57.6 KB