[PATCH v8 00/11] Dynamic PAMT
Rick Edgecombe <[email protected]> Fri, 24 Jul 2026 17:22:50 -0700
| Newsgroups | dev.linux.lists.linux-coco,org.kernel.vger.kvm,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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/[email protected]/ [1] https://lore.kernel.org/lkml/[email protected]/ [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