Re: [PATCH v2 00/13] More parallel operations for the TDP MMU

Paolo Bonzini
2021-04-02T11:43:28Z

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