• Sean Christopherson's avatar
    KVM: x86/mmu: Drop RCU after processing each root in MMU notifier hooks · a151acec
    Sean Christopherson authored
    Drop RCU protection after processing each root when handling MMU notifier
    hooks that aren't the "unmap" path, i.e. aren't zapping.  Temporarily
    drop RCU to let RCU do its thing between roots, and to make it clear that
    there's no special behavior that relies on holding RCU across all roots.
    
    Currently, the RCU protection is completely superficial, it's necessary
    only to make rcu_dereference() of SPTE pointers happy.  A future patch
    will rely on holding RCU as a proxy for vCPUs in the guest, e.g. to
    ensure shadow pages aren't freed before all vCPUs do a TLB flush (or
    rather, acknowledge the need for a flush), but in that case RCU needs to
    be held until the flush is complete if and only if the flush is needed
    because a shadow page may have been removed.  And except for the "unmap"
    path, MMU notifier events cannot remove SPs (don't toggle PRESENT bit,
    and can't change the PFN for a SP).
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Reviewed-by: default avatarBen Gardon <bgardon@google.com>
    Message-Id: <20220226001546.360188-10-seanjc@google.com>
    Reviewed-by: default avatarMingwei Zhang <mizhang@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    a151acec
tdp_mmu.c 51.5 KB