• David Matlack's avatar
    KVM: x86/mmu: Split huge pages mapped by the TDP MMU during KVM_CLEAR_DIRTY_LOG · cb00a70b
    David Matlack authored
    When using KVM_DIRTY_LOG_INITIALLY_SET, huge pages are not
    write-protected when dirty logging is enabled on the memslot. Instead
    they are write-protected once userspace invokes KVM_CLEAR_DIRTY_LOG for
    the first time and only for the specific sub-region being cleared.
    
    Enhance KVM_CLEAR_DIRTY_LOG to also try to split huge pages prior to
    write-protecting to avoid causing write-protection faults on vCPU
    threads. This also allows userspace to smear the cost of huge page
    splitting across multiple ioctls, rather than splitting the entire
    memslot as is the case when initially-all-set is not used.
    Signed-off-by: default avatarDavid Matlack <dmatlack@google.com>
    Message-Id: <20220119230739.2234394-17-dmatlack@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    cb00a70b
tdp_mmu.c 49.3 KB