• Takuya Yoshikawa's avatar
    KVM: x86: Optimize mmio spte zapping when creating/moving memslot · 982b3394
    Takuya Yoshikawa authored
    
    
    When we create or move a memory slot, we need to zap mmio sptes.
    Currently, zap_all() is used for this and this is causing two problems:
     - extra page faults after zapping mmu pages
     - long mmu_lock hold time during zapping mmu pages
    
    For the latter, Marcelo reported a disastrous mmu_lock hold time during
    hot-plug, which made the guest unresponsive for a long time.
    
    This patch takes a simple way to fix these problems: do not zap mmu
    pages unless they are marked mmio cached.  On our test box, this took
    only 50us for the 4GB guest and we did not see ms of mmu_lock hold time
    any more.
    
    Note that we still need to do zap_all() for other cases.  So another
    work is also needed: Xiao's work may be the one.
    
    Reviewed-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: default avatarTakuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
    Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
    982b3394