From: Rick Edgecombe <rick.p.edgecombe@intel.com>
To: bp@alien8.de, dave.hansen@intel.com, hpa@zytor.com,
kas@kernel.org, kvm@vger.kernel.org, linux-coco@lists.linux.dev,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
mingo@redhat.com, nik.borisov@suse.com, pbonzini@redhat.com,
seanjc@google.com, tglx@kernel.org, vannapurve@google.com,
x86@kernel.org, chao.gao@intel.com, yan.y.zhao@intel.com,
kai.huang@intel.com, tony.lindgren@linux.intel.com,
binbin.wu@intel.com, sohil.mehta@intel.com
Cc: rick.p.edgecombe@intel.com
Subject: [PATCH v9 00/11] Dynamic PAMT
Date: Wed, 5 Aug 2026 19:08:39 -0700 [thread overview]
Message-ID: <20260806020850.1221381-1-rick.p.edgecombe@intel.com> (raw)
Hi,
This another revision of Dynamic PAMT TDX series. Like v7 and v8, it is
hopefully the last. Last time it got two non-functional nits from Sashiko
and two false positives. After some offlist discussion with Dave, I've
applied the nits and rebased on v7.2-rc6. There were no conflicts.
Everything else is the same.
Background
==========
Dynamic PAMT is a TDX feature that allows saving memory by allocating some
of its page tracking metadata dynamically, instead of statically at boot.
These static allocations take roughly 0.4% of system memory. The savings
are variable depending on system and TDX usage, but could be up to 100x.
For more Dynamic PAMT background, please refer to [1]. For more analysis
of the savings in different scenarios, see the v6 coverleter[0].
It occurred to me that since the Dynamic PAMT effort began, RAM has become
much more expensive. Consequently, this feature is even more valuable now.
It would be good to enable it for TDX users.
Optimization patch
==================
The past two revision I mentioned some considerations for whether to
include the get/put optimization patch. In v6 Dave had asked whether the
"x86/virt/tdx: Optimize tdx_pamt_get/put()" was really needed. Later we
discussed offline to keep the patch for the sake of maintaining
performance and being kind to KVM's efforts to fault under a shared lock.
However, now that the feature requires an opt-in, it could be for limited
use and not disturb any kernel upgraders. Then the optimization patch
actually does become more optional. So it was moved to the end.
On v7 that patch picked up a RB from Nikolay. I think it is still optional,
but I'd lean towards recommending it. But I'm ok either way, if we want to
discuss it more without holding up the basic support.
Base
====
This is based on v7.2-rc6. A branch can be found here: [2].
Testing
=======
This last version was tested in the usual suite, and also with the
optimization patch removed. The validation person who has worked on this
series added his Tested-by offlist. He has a special dynamic PAMT specific
test suite. Since there were not any changes which would be expected to
have functional impact I just did some regression testing with our standard
automated testing for this one. I left his Tested-by tags per his
preference.
[0] https://lore.kernel.org/lkml/20260526023515.288829-1-rick.p.edgecombe@intel.com/
[1] https://lore.kernel.org/lkml/20250918232224.2202592-1-rick.p.edgecombe@intel.com/
[2] https://github.com/intel-staging/tdx/tree/dpamt_v9
Kiryl Shutsemau (9):
x86/virt/tdx: Allocate page bitmap for Dynamic PAMT
x86/virt/tdx: Add tdx_alloc/free_control_page() helpers
x86/virt/tdx: Allocate refcounts for Dynamic PAMT memory
x86/virt/tdx: Handle multiple callers in tdx_pamt_get/put()
KVM: TDX: Allocate PAMT memory for TD and vCPU control structures
KVM: TDX: Get/put PAMT pages when (un)mapping private memory
x86/virt/tdx: Enable Dynamic PAMT
Documentation/x86: Add documentation for TDX's Dynamic PAMT
x86/virt/tdx: Optimize tdx_pamt_get/put()
Rick Edgecombe (2):
x86/virt/tdx: Simplify PAMT layout calculation
x86/tdx: Add APIs to support Dynamic PAMT ops from KVM's fault path
.../admin-guide/kernel-parameters.txt | 10 +
Documentation/arch/x86/tdx.rst | 28 ++
arch/x86/include/asm/kvm-x86-ops.h | 1 +
arch/x86/include/asm/kvm_host.h | 1 +
arch/x86/include/asm/tdx.h | 26 +
arch/x86/include/asm/tdx_global_metadata.h | 3 +
arch/x86/kvm/mmu/mmu.c | 4 +
arch/x86/kvm/vmx/tdx.c | 99 ++--
arch/x86/kvm/vmx/tdx.h | 2 +
arch/x86/virt/vmx/tdx/tdx.c | 452 +++++++++++++++---
arch/x86/virt/vmx/tdx/tdx.h | 2 +
arch/x86/virt/vmx/tdx/tdx_global_metadata.c | 23 +-
12 files changed, 559 insertions(+), 92 deletions(-)
--
2.54.0
next reply other threads:[~2026-08-06 2:09 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 2:08 Rick Edgecombe [this message]
2026-08-06 2:08 ` [PATCH v9 01/11] x86/virt/tdx: Simplify PAMT layout calculation Rick Edgecombe
2026-08-06 20:58 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 02/11] x86/virt/tdx: Allocate page bitmap for Dynamic PAMT Rick Edgecombe
2026-08-06 20:58 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 03/11] x86/virt/tdx: Add tdx_alloc/free_control_page() helpers Rick Edgecombe
2026-08-06 17:17 ` Dave Hansen
2026-08-06 17:20 ` Dave Hansen
2026-08-06 22:22 ` Edgecombe, Rick P
2026-08-06 22:42 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 04/11] x86/virt/tdx: Allocate refcounts for Dynamic PAMT memory Rick Edgecombe
2026-08-06 2:21 ` sashiko-bot
2026-08-06 22:02 ` Edgecombe, Rick P
2026-08-06 22:09 ` Dave Hansen
2026-08-06 20:56 ` Dave Hansen
2026-08-06 21:56 ` Edgecombe, Rick P
2026-08-06 2:08 ` [PATCH v9 05/11] x86/virt/tdx: Handle multiple callers in tdx_pamt_get/put() Rick Edgecombe
2026-08-06 22:17 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 06/11] KVM: TDX: Allocate PAMT memory for TD and vCPU control structures Rick Edgecombe
2026-08-06 22:19 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 07/11] x86/tdx: Add APIs to support Dynamic PAMT ops from KVM's fault path Rick Edgecombe
2026-08-06 22:19 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 08/11] KVM: TDX: Get/put PAMT pages when (un)mapping private memory Rick Edgecombe
2026-08-06 7:16 ` sashiko-bot
2026-08-06 21:54 ` Edgecombe, Rick P
2026-08-06 23:48 ` Dave Hansen
2026-08-06 2:08 ` [PATCH v9 09/11] x86/virt/tdx: Enable Dynamic PAMT Rick Edgecombe
2026-08-06 2:08 ` [PATCH v9 10/11] Documentation/x86: Add documentation for TDX's " Rick Edgecombe
2026-08-06 2:08 ` [PATCH v9 11/11] x86/virt/tdx: Optimize tdx_pamt_get/put() Rick Edgecombe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260806020850.1221381-1-rick.p.edgecombe@intel.com \
--to=rick.p.edgecombe@intel.com \
--cc=binbin.wu@intel.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=kai.huang@intel.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=nik.borisov@suse.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=sohil.mehta@intel.com \
--cc=tglx@kernel.org \
--cc=tony.lindgren@linux.intel.com \
--cc=vannapurve@google.com \
--cc=x86@kernel.org \
--cc=yan.y.zhao@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox