summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorRick Edgecombe <rick.p.edgecombe@intel.com>2026-09-04 14:58:33 -0700
committerDave Hansen <dave.hansen@linux.intel.com>2026-09-04 15:06:02 -0700
commitad52ce8389d9f3708bfaa301e194550f582eb2b5 (patch)
tree71b0dfe67fb4a4264b04392636c763974075784c /scripts/Makefile.thinlto
parenteadde434aa9da1f43804c7097ba360dda8ccd9ef (diff)
downloadlinux-next-ad52ce8389d9f3708bfaa301e194550f582eb2b5.tar.gz
linux-next-ad52ce8389d9f3708bfaa301e194550f582eb2b5.zip
x86/virt/tdx: Add __tdx_pamt_get/put() helpers
Add helpers to use when allocating or preparing pages that are handed to the TDX module for use as control/S-EPT pages, and thus need Dynamic PAMT (DPAMT) adjustments. The TDX module tracks some state for each page of physical memory that it might use. It calls this state the PAMT. It includes separate state for each page size a physical page could be utilized at within the TDX module (1GB, 2MB, 4KB). In DPAMT, only the 4KB page size state is allocated dynamically. KVM will need to hand pages to the TDX module that it will use at 4KB granularity. So these pages will need DPAMT backing added before they are used by the TDX module, and removed afterwards. Create __tdx_pamt_get/put() to handle installing DPAMT 4KB backing for pages that are already allocated (such as KVM's use of S-EPT page tables or guest private memory). Have them take a pfn instead of a struct page, as future changes will want to use these helpers for guest pages which are tracked by PFN. Also add __tdx_alloc_control_page() and __tdx_free_control_page() to handle both page allocation and DPAMT installation. Make them behave like normal alloc/free functions where allocation can fail in the case of no memory, but free (with any necessary DPAMT release) always succeeds. Do this so they can eventually support the existing TDX flows that require teardowns to succeed. Don't CLFLUSH the DPAMT pages handed to the TDX module, as is done for some other SEAMCALLs, as the TDX docs specify that this is only needed on "TD private memory or TD control structure page". Since these allocations will be easily user triggerable, account the memory. Only one pair of DPAMT pages is required for each 2MB-aligned physical region, so multiple callers could trip over each other if they try to manage the shared backing for two separate 4KB pages contained in one. To build the logic up iteratively, don't do anything to handle pages from the same 2MB region yet. Functionality to handle this will be added before DPAMT can be enabled. AI was used under supervision to collect/apply feedback, split patches, review code and workshop logs. Based on a patch originally by Kiryl Shutsemau. Co-developed-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Chao Gao <chao.gao@intel.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Reviewed-by: Tony Lindgren <tony.lindgren@linux.intel.com> Reviewed-by: Vishal Annapurve <vannapurve@google.com> Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com> Acked-by: Sohil Mehta <sohil.mehta@intel.com> Tested-by: Hongyu Ning <hongyu.ning@linux.intel.com> Link: https://patch.msgid.link/20260904215841.303070-4-rick.p.edgecombe@intel.com
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions