Re: [PATCH v2 05/17] x86/virt/tdx: Make TDX module initialize the extensions
"Edgecombe, Rick P" <[email protected]> Mon, 27 Jul 2026 18:30:48 +0000
| Newsgroups | dev.linux.lists.linux-coco,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 2026-06-18 at 16:13 +0800, Xu Yilun wrote: > After providing all required memory to TDX module, initialize TDX > module extensions via TDH.EXT.INIT, so extension SEAMCALLs can be used. Pretty thin. Maybe some info that it is (apparently) a global init. Probably some very short background on what extensions are extension seamcalls are. > > Signed-off-by: Xu Yilun <[email protected]> > Reviewed-by: Xiaoyao Li <[email protected]> > Reviewed-by: Tony Lindgren <[email protected]> > Reviewed-by: Adrian Hunter <[email protected]> > --- > arch/x86/virt/vmx/tdx/tdx.h | 1 + > arch/x86/virt/vmx/tdx/tdx.c | 22 +++++++++++++++++++++- > 2 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/virt/vmx/tdx/tdx.h b/arch/x86/virt/vmx/tdx/tdx.h > index a100634087e7..2deb0a5c902e 100644 > --- a/arch/x86/virt/vmx/tdx/tdx.h > +++ b/arch/x86/virt/vmx/tdx/tdx.h > @@ -63,6 +63,7 @@ > #define TDH_SYS_SHUTDOWN 52 > #define TDH_SYS_UPDATE_V0 53 > #define TDH_SYS_UPDATE SEAMCALL_LEAF_VER(TDH_SYS_UPDATE_V0, > 1) > +#define TDH_EXT_INIT 60 > #define TDH_EXT_MEM_ADD 61 > #define TDH_SYS_DISABLE 69 > > diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c > index dab17822c1c6..900928de373a 100644 > --- a/arch/x86/virt/vmx/tdx/tdx.c > +++ b/arch/x86/virt/vmx/tdx/tdx.c > @@ -1167,6 +1167,22 @@ static __init int init_tdmrs(struct tdmr_info_list > *tdmr_list) > return 0; > } > > +/* Initialize TDX module extensions for extension SEAMCALLs */ > +static __init int tdx_ext_init(void) > +{ > + struct tdx_module_args args = {}; > + u64 r; > + > + do { > + r = seamcall(TDH_EXT_INIT, &args); > + } while (r == TDX_INTERRUPTED_RESUMABLE); > + > + if (r != TDX_SUCCESS) > + return -EFAULT; > + > + return 0; > +} > + > #define HPA_LIST_INFO_FIRST_ENTRY GENMASK_U64(11, 3) > #define HPA_LIST_INFO_PFN GENMASK_U64(51, 12) > #define HPA_LIST_INFO_LAST_ENTRY GENMASK_U64(63, 55) > @@ -1285,7 +1301,11 @@ static __init int init_tdx_module_extensions(void) > if (!sysinfo_ext.ext_required) > return 0; > > - return tdx_ext_mem_setup(sysinfo_ext.memory_pool_required_pages); > + ret = tdx_ext_mem_setup(sysinfo_ext.memory_pool_required_pages); > + if (ret) > + return ret; > + > + return tdx_ext_init(); > } > > static __init int init_tdx_module(void)