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)