• Paolo Bonzini's avatar
    Merge branch 'kvm-memslot-zap-quirk' into HEAD · 55f50b2f
    Paolo Bonzini authored
    Today whenever a memslot is moved or deleted, KVM invalidates the entire
    page tables and generates fresh ones based on the new memslot layout.
    
    This behavior traditionally was kept because of a bug which was never
    fully investigated and caused VM instability with assigned GeForce
    GPUs.  It generally does not have a huge overhead, because the old
    MMU is able to reuse cached page tables and the new one is more
    scalabale and can resolve EPT violations/nested page faults in parallel,
    but it has worse performance if the guest frequently deletes and
    adds small memslots, and it's entirely not viable for TDX.  This is
    because TDX requires re-accepting of private pages after page dropping.
    
    For non-TDX VMs, this series therefore introduces the
    KVM_X86_QUIRK_SLOT_ZAP_ALL quirk, enabling users to control the behavior
    of memslot zapping when a memslot is moved/deleted.  The quirk is turned
    on by default, leading to the zapping of all SPTEs when a memslot is
    moved/deleted; users however have the option to turn off the quirk,
    which limits the zapping only to those SPTEs hat lie within the range
    of memslot being moved/deleted.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    55f50b2f
mmu.c 214 KB