• Makarand Sonare's avatar
    KVM: VMX: Dynamically enable/disable PML based on memslot dirty logging · a85863c2
    Makarand Sonare authored
    
    
    Currently, if enable_pml=1 PML remains enabled for the entire lifetime
    of the VM irrespective of whether dirty logging is enable or disabled.
    When dirty logging is disabled, all the pages of the VM are manually
    marked dirty, so that PML is effectively non-operational.  Setting
    the dirty bits is an expensive operation which can cause severe MMU
    lock contention in a performance sensitive path when dirty logging is
    disabled after a failed or canceled live migration.
    
    Manually setting dirty bits also fails to prevent PML activity if some
    code path clears dirty bits, which can incur unnecessary VM-Exits.
    
    In order to avoid this extra overhead, dynamically enable/disable PML
    when dirty logging gets turned on/off for the first/last memslot.
    
    Signed-off-by: default avatarMakarand Sonare <makarandsonare@google.com>
    Co-developed-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210213005015.1651772-12-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    a85863c2