• Avi Kivity's avatar
    KVM: MMU: Don't use RCU for lockless shadow walking · c142786c
    Avi Kivity authored
    Using RCU for lockless shadow walking can increase the amount of memory
    in use by the system, since RCU grace periods are unpredictable.  We also
    have an unconditional write to a shared variable (reader_counter), which
    isn't good for scaling.
    
    Replace that with a scheme similar to x86's get_user_pages_fast(): disable
    interrupts during lockless shadow walk to force the freer
    (kvm_mmu_commit_zap_page()) to wait for the TLB flush IPI to find the
    processor with interrupts enabled.
    
    We also add a new vcpu->mode, READING_SHADOW_PAGE_TABLES, to prevent
    kvm_flush_remote_tlbs() from avoiding the IPI.
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    c142786c
mmu.c 97.3 KB