Re: [GIT PULL] KVM: x86: MMU changes for 6.18

Paolo Bonzini
2025-09-30T17:34:04Z

On Sat, Sep 27, 2025 at 8:09 AM Sean Christopherson <seanjc@google.com> wrote:
>
> Recover TDP MMU NX huge pages under read lock, and fix two (interruptible)
> deadlocks in prefaulting and in the TDX anti-zero-step code (there's a
> selftest from Yan for the prefaulting case that I'll send along later).
>
> The following changes since commit c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9:
>
> Linux 6.17-rc2 (2025-08-17 15:22:10 -0700)
>
> are available in the Git repository at:
>
> https://github.com/kvm-x86/linux.git tags/kvm-x86-mmu-6.18
>
> for you to fetch changes up to 2bc2694fe20bf06eb73524426e3f4581d7b28923:
>
> KVM: TDX: Do not retry locally when the retry is caused by invalid memslot (2025-09-10 12:06:35 -0700)

Pulled, thanks.

> ----------------------------------------------------------------
> KVM x86 MMU changes for 6.18
>
> - Recover possible NX huge pages within the TDP MMU under read lock to
> reduce guest jitter when restoring NX huge pages.
>
> - Return -EAGAIN during prefault if userspace concurrently deletes/moves the
> relevant memslot to fix an issue where prefaulting could deadlock with the
> memslot update.
>
> - Don't retry in TDX's anti-zero-step mitigation if the target memslot is
> invalid, i.e. is being deleted or moved, to fix a deadlock scenario similar
> to the aforementioned prefaulting case.
>
> ----------------------------------------------------------------
> Sean Christopherson (2):
> KVM: x86/mmu: Return -EAGAIN if userspace deletes/moves memslot during prefault
> KVM: TDX: Do not retry locally when the retry is caused by invalid memslot
>
> Vipin Sharma (3):
> KVM: x86/mmu: Track possible NX huge pages separately for TDP vs. Shadow MMU
> KVM: x86/mmu: Rename kvm_tdp_mmu_zap_sp() to better indicate its purpose
> KVM: x86/mmu: Recover TDP MMU NX huge pages using MMU read lock
>
> arch/x86/include/asm/kvm_host.h | 39 ++++++----
> arch/x86/kvm/mmu/mmu.c | 165 ++++++++++++++++++++++++++--------------
> arch/x86/kvm/mmu/mmu_internal.h | 6 +-
> arch/x86/kvm/mmu/tdp_mmu.c | 49 +++++++++---
> arch/x86/kvm/mmu/tdp_mmu.h | 3 +-
> arch/x86/kvm/vmx/tdx.c | 11 +++
> virt/kvm/kvm_main.c | 1 +
> 7 files changed, 192 insertions(+), 82 deletions(-)
>