• Sean Christopherson's avatar
    KVM: x86/mmu: Use a dedicated bit to track shadow/MMU-present SPTEs · edea7c4f
    Sean Christopherson authored
    Introduce MMU_PRESENT to explicitly track which SPTEs are "present" from
    the MMU's perspective.  Checking for shadow-present SPTEs is a very
    common operation for the MMU, particularly in hot paths such as page
    faults.  With the addition of "removed" SPTEs for the TDP MMU,
    identifying shadow-present SPTEs is quite costly especially since it
    requires checking multiple 64-bit values.
    
    On 64-bit KVM, this reduces the footprint of kvm.ko's .text by ~2k bytes.
    On 32-bit KVM, this increases the footprint by ~200 bytes, but only
    because gcc now inlines several more MMU helpers, e.g. drop_parent_pte().
    
    We now need to drop bit 11, used for the MMU_PRESENT flag, from
    the set of bits used to store the generation number in MMIO SPTEs.
    Otherwise MMIO SPTEs with bit 11 set would get false positives for
    is_shadow_present_spte() and lead to a variety of fireworks, from oopses
    to likely hangs of the host kernel.
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210225204749.1512652-21-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    edea7c4f
spte.c 10.8 KB