On 02/04/21 01:37, Ben Gardon wrote:
Now that the TDP MMU is able to handle page faults in parallel, it's a
relatively small change to expand to other operations. This series allows
zapping a range of GFNs, reclaiming collapsible SPTEs (when disabling
dirty logging), and enabling dirty logging to all happen under the MMU
lock in read mode.

This is partly a cleanup + rewrite of the last few patches of the parallel
page faults series. I've incorporated feedback from Sean and Paolo, but
the patches have changed so much that I'm sending this as a separate
series.

Ran kvm-unit-tests + selftests on an SMP kernel + Intel Skylake, with the
TDP MMU enabled and disabled. This series introduces no new failures or
warnings.

I know this will conflict horribly with the patches from Sean's series
which were just queued, and I'll send a v2 to fix those conflicts +
address any feedback on this v1.

Changelog
v2:
--      Rebased patches on top of kvm/queue to incorporate Sean's recent
        TLB flushing changes
--      Dropped patch 5: "KVM: x86/mmu: comment for_each_tdp_mmu_root
        requires MMU write lock" as the following patch to protect the roots
        list with RCU adds lockdep which makes the comment somewhat redundant.

Ben Gardon (13):
   KVM: x86/mmu: Re-add const qualifier in
     kvm_tdp_mmu_zap_collapsible_sptes
   KVM: x86/mmu: Move kvm_mmu_(get|put)_root to TDP MMU
   KVM: x86/mmu: use tdp_mmu_free_sp to free roots
   KVM: x86/mmu: Merge TDP MMU put and free root
   KVM: x86/mmu: Refactor yield safe root iterator
   KVM: x86/mmu: Make TDP MMU root refcount atomic
   KVM: x86/mmu: handle cmpxchg failure in kvm_tdp_mmu_get_root
   KVM: x86/mmu: Protect the tdp_mmu_roots list with RCU
   KVM: x86/mmu: Allow zap gfn range to operate under the mmu read lock
   KVM: x86/mmu: Allow zapping collapsible SPTEs to use MMU read lock
   KVM: x86/mmu: Allow enabling / disabling dirty logging under MMU read
     lock
   KVM: x86/mmu: Fast invalidation for TDP MMU
   KVM: x86/mmu: Tear down roots in fast invalidation thread

  arch/x86/include/asm/kvm_host.h |  21 +-
  arch/x86/kvm/mmu/mmu.c          | 115 +++++++---
  arch/x86/kvm/mmu/mmu_internal.h |  27 +--
  arch/x86/kvm/mmu/tdp_mmu.c      | 375 +++++++++++++++++++++++---------
  arch/x86/kvm/mmu/tdp_mmu.h      |  28 ++-
  include/linux/kvm_host.h        |   2 +-
  6 files changed, 407 insertions(+), 161 deletions(-)


Applied to kvm/mmu-notifier-queue, thanks.

Paolo

Reply via email to