• Sean Christopherson's avatar
    KVM: x86/mmu: Voluntarily reschedule as needed when zapping all sptes · 5d6317ca
    Sean Christopherson authored
    Call cond_resched_lock() when zapping all sptes to reschedule if needed
    or to release and reacquire mmu_lock in case of contention.  There is no
    need to flush or zap when temporarily dropping mmu_lock as zapping all
    sptes is done only when the owning userspace VMM has exited or when the
    VM is being destroyed, i.e. there is no interplay with memslots or MMIO
    generations to worry about.
    Be paranoid and restart the walk if mmu_lock is dropped to avoid any
    potential issues with consuming a stale iterator.  The overhead in doing
    so is negligible as at worst there will be a few root shadow pages at
    the head of the list, i.e. the iterator is essentially the head of the
    list already.
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>