Linux Confidential Computing Development
 help / color / mirror / Atom feed
* [PATCH v8 00/11] Dynamic PAMT
@ 2026-07-25  0:22 Rick Edgecombe
  2026-07-25  0:22 ` [PATCH v8 01/11] x86/virt/tdx: Simplify PAMT layout calculation Rick Edgecombe
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Rick Edgecombe @ 2026-07-25  0:22 UTC (permalink / raw)
  To: bp, dave.hansen, hpa, kas, kvm, linux-coco, linux-doc,
	linux-kernel, mingo, nik.borisov, pbonzini, seanjc, tglx,
	vannapurve, x86, chao.gao, yan.y.zhao, kai.huang, tony.lindgren,
	binbin.wu, sohil.mehta
  Cc: rick.p.edgecombe

Hi,

This another revision of Dynamic PAMT TDX series. Like v7, it is also 
hopefully the last. Last time it got a few nits, acks and RBs. It also got 
the acks needed from Sean. (thanks) So this is all set to be taken through 
tip.

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
==================
Last time 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 in v7 and
here.

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-rc4. A branch can be found here: [2].

Testing
=======
This series 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.


[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_v8


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


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-07-25  0:23 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-25  0:22 [PATCH v8 00/11] Dynamic PAMT Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 01/11] x86/virt/tdx: Simplify PAMT layout calculation Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 02/11] x86/virt/tdx: Allocate page bitmap for Dynamic PAMT Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 03/11] x86/virt/tdx: Add tdx_alloc/free_control_page() helpers Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 04/11] x86/virt/tdx: Allocate refcounts for Dynamic PAMT memory Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 05/11] x86/virt/tdx: Handle multiple callers in tdx_pamt_get/put() Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 06/11] KVM: TDX: Allocate PAMT memory for TD and vCPU control structures Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 07/11] x86/tdx: Add APIs to support Dynamic PAMT ops from KVM's fault path Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 08/11] KVM: TDX: Get/put PAMT pages when (un)mapping private memory Rick Edgecombe
2026-07-25  0:22 ` [PATCH v8 09/11] x86/virt/tdx: Enable Dynamic PAMT Rick Edgecombe
2026-07-25  0:23 ` [PATCH v8 10/11] Documentation/x86: Add documentation for TDX's " Rick Edgecombe
2026-07-25  0:23 ` [PATCH v8 11/11] x86/virt/tdx: Optimize tdx_pamt_get/put() Rick Edgecombe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox