Re: [PATCH v2 05/17] x86/virt/tdx: Make TDX module initialize the extensions
From: Edgecombe, Rick P
Date: Mon Jul 27 2026 - 14:31:11 EST
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 <yilun.xu@xxxxxxxxxxxxxxx>
> Reviewed-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx>
> Reviewed-by: Tony Lindgren <tony.lindgren@xxxxxxxxxxxxxxx>
> Reviewed-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> ---
> 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)