[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250829000618.351013-1-seanjc@google.com>
Date: Thu, 28 Aug 2025 17:06:00 -0700
From: Sean Christopherson <seanjc@...gle.com>
To: Sean Christopherson <seanjc@...gle.com>, Paolo Bonzini <pbonzini@...hat.com>
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
Ira Weiny <ira.weiny@...el.com>, Kai Huang <kai.huang@...el.com>,
Michael Roth <michael.roth@....com>, Yan Zhao <yan.y.zhao@...el.com>,
Vishal Annapurve <vannapurve@...gle.com>, Rick Edgecombe <rick.p.edgecombe@...el.com>,
Ackerley Tng <ackerleytng@...gle.com>
Subject: [RFC PATCH v2 00/18] KVM: x86/mmu: TDX post-populate cleanups
New (still largely untested) version of the TDX post-populate cleanup series
to address locking issues between gmem and TDX's post-populate hook[*], with
a pile of related cleanups throw in to (hopefully) simplify future development,
e.g. for hugepage and in-place conversion.
RFC as this is compile tested only again, and there are substantial differences
relative to v1.
P.S. I wasn't intending this to be 6.18 material (at all), but with the change
in how TDH_MEM_PAGE_ADD is handled, I'm tempted to make a push to get this
in sooner than later so that in-flight development can benefit. Thoughts?
[*] http://lore.kernel.org/all/aG_pLUlHdYIZ2luh@google.com
v2:
- Collect a few reviews (and ignore some because the patches went away).
[Rick, Kai, Ira]
- Move TDH_MEM_PAGE_ADD under mmu_lock and drop nr_premapped. [Yan, Rick]
- Force max_level = PG_LEVEL_4K straightaway. [Yan]
- s/kvm_tdp_prefault_page/kvm_tdp_page_prefault. [Rick]
- Use Yan's version of "Say no to pinning!". [Yan, Rick]
- Tidy up helpers and macros to reduce boilerplate and copy+pate code, and
to eliminate redundant/dead code (e.g. KVM_BUG_ON() the same error
multiple times).
- KVM_BUG_ON() if TDH_MR_EXTEND fails (I convinced myself it can't).
v1: https://lore.kernel.org/all/20250827000522.4022426-1-seanjc@google.com
Sean Christopherson (17):
KVM: TDX: Drop PROVE_MMU=y sanity check on to-be-populated mappings
KVM: x86/mmu: Add dedicated API to map guest_memfd pfn into TDP MMU
Revert "KVM: x86/tdp_mmu: Add a helper function to walk down the TDP
MMU"
KVM: x86/mmu: Rename kvm_tdp_map_page() to kvm_tdp_page_prefault()
KVM: TDX: Return -EIO, not -EINVAL, on a KVM_BUG_ON() condition
KVM: TDX: Fold tdx_sept_drop_private_spte() into
tdx_sept_remove_private_spte()
KVM: x86/mmu: Drop the return code from
kvm_x86_ops.remove_external_spte()
KVM: TDX: Avoid a double-KVM_BUG_ON() in tdx_sept_zap_private_spte()
KVM: TDX: Use atomic64_dec_return() instead of a poor equivalent
KVM: TDX: Fold tdx_mem_page_record_premap_cnt() into its sole caller
KVM: TDX: Bug the VM if extended the initial measurement fails
KVM: TDX: ADD pages to the TD image while populating mirror EPT
entries
KVM: TDX: Fold tdx_sept_zap_private_spte() into
tdx_sept_remove_private_spte()
KVM: TDX: Combine KVM_BUG_ON + pr_tdx_error() into TDX_BUG_ON()
KVM: TDX: Derive error argument names from the local variable names
KVM: TDX: Assert that mmu_lock is held for write when removing S-EPT
entries
KVM: TDX: Add macro to retry SEAMCALLs when forcing vCPUs out of guest
Yan Zhao (1):
KVM: TDX: Drop superfluous page pinning in S-EPT management
arch/x86/include/asm/kvm_host.h | 4 +-
arch/x86/kvm/mmu.h | 3 +-
arch/x86/kvm/mmu/mmu.c | 66 ++++-
arch/x86/kvm/mmu/tdp_mmu.c | 45 +---
arch/x86/kvm/vmx/tdx.c | 460 +++++++++++---------------------
arch/x86/kvm/vmx/tdx.h | 8 +-
6 files changed, 234 insertions(+), 352 deletions(-)
base-commit: ecbcc2461839e848970468b44db32282e5059925
--
2.51.0.318.gd7df087d1a-goog
Powered by blists - more mailing lists