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)