From: Xu Yilun <yilun.xu@linux.intel.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Cc: "Gao, Chao" <chao.gao@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"Li, Xiaoyao" <xiaoyao.li@intel.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
"Hunter, Adrian" <adrian.hunter@intel.com>,
"kas@kernel.org" <kas@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Xu, Yilun" <yilun.xu@intel.com>,
"tony.lindgren@linux.intel.com" <tony.lindgren@linux.intel.com>,
"seanjc@google.com" <seanjc@google.com>,
"Mehta, Sohil" <sohil.mehta@intel.com>,
"djbw@kernel.org" <djbw@kernel.org>,
"Duan, Zhenzhong" <zhenzhong.duan@intel.com>,
"Fang, Peter" <peter.fang@intel.com>,
"Maloor, Kishen" <kishen.maloor@intel.com>,
"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH v2 06/17] x86/virt/tdx: Re-initialize the extensions on runtime TDX module update
Date: Thu, 30 Jul 2026 19:10:02 +0800 [thread overview]
Message-ID: <amsxCvZUpNwxeDK4@yilunxu-OptiPlex-7050> (raw)
In-Reply-To: <603e7857a2036b0fef86dcf8ad0ab97e0232188c.camel@intel.com>
On Mon, Jul 27, 2026 at 06:37:39PM +0000, Edgecombe, Rick P wrote:
> On Mon, 2026-06-29 at 16:12 +0800, Chao Gao wrote:
> > Will tdx_ext_init() return an error if more memory is needed?
> >
> > If yes, we can leave this check to the module. And with ext_required
> > removed (per my earlier comment), this function simplifies to:
> >
> > int update_tdx_module_extensions(void)
> > {
> > if (!(tdx_sysinfo.features.tdx_features0 & TDX_FEATURES0_EXT))
> > return 0;
> >
> > return tdx_ext_init();
> > }
>
> Oh, it can be simplified and not share so much with the init side. Please ignore
> my other question.
It can't be simplified like that. If extensions are supported but no
extension feature is configured at boot up time. tdx_ext_init() would
fail and the runtime update failed.
I've found issue in my implementation. If extensions are required at
boot up time but somehow not required after update, the code just skip
tdx_ext_init() and the update succeed, but after that the extension
features will break.
IOW, we should not update the metadata, we should follow the boot up
time metadata to ensure no feature changes. We should store the
extension metadata in global tdx_sysinfo, and that eliminate the
duplicate code.
----8<----
diff --git a/arch/x86/include/asm/tdx_global_metadata.h b/arch/x86/include/asm/tdx_global_metadata.h
index b3442b7c88bb..43b8761c0854 100644
--- a/arch/x86/include/asm/tdx_global_metadata.h
+++ b/arch/x86/include/asm/tdx_global_metadata.h
@@ -44,17 +44,18 @@ struct tdx_sys_info_handoff {
u16 module_hv;
};
+struct tdx_sys_info_ext {
+ u32 memory_pool_required_pages;
+ bool ext_required;
+};
+
struct tdx_sys_info {
struct tdx_sys_info_version version;
struct tdx_sys_info_features features;
struct tdx_sys_info_tdmr tdmr;
struct tdx_sys_info_td_ctrl td_ctrl;
struct tdx_sys_info_td_conf td_conf;
-};
-
-struct tdx_sys_info_ext {
- u32 memory_pool_required_pages;
- bool ext_required;
+ struct tdx_sys_info_ext ext;
};
#endif
diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
index f03141f51840..90fbd22acb5e 100644
--- a/arch/x86/virt/vmx/tdx/tdx.c
+++ b/arch/x86/virt/vmx/tdx/tdx.c
@@ -1304,13 +1304,13 @@ static int tdx_ext_init(void)
static __init int init_tdx_module_extensions(void)
{
- struct tdx_sys_info_ext sysinfo_ext;
+ struct tdx_sys_info_ext *sysinfo_ext = &tdx_sysinfo.ext;
int ret;
if (!(tdx_sysinfo.features.tdx_features0 & TDX_FEATURES0_EXT))
return 0;
- ret = get_tdx_sys_info_ext(&sysinfo_ext);
+ ret = get_tdx_sys_info_ext(sysinfo_ext);
if (ret)
return ret;
@@ -1319,10 +1319,10 @@ static __init int init_tdx_module_extensions(void)
* extensions are configured via TDH.SYS.CONFIG. If none, skip the
* initialization.
*/
- if (!sysinfo_ext.ext_required)
+ if (!sysinfo_ext->ext_required)
return 0;
- ret = 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;
@@ -1330,23 +1330,14 @@ static __init int init_tdx_module_extensions(void)
}
/*
- * Mostly the same flow as init_tdx_module_extensions(), but won't check and
- * add more memory. Let the extensions re-initialization fail when more memory
- * is actually needed.
+ * Don't update the extensions metadata, just follow the requirement originated
+ * on TDX module initialization. Let the extensions re-initialization fail when
+ * more memory is needed, or when the ext_required is accidentally flipped after
+ * update.
*/
static int update_tdx_module_extensions(void)
{
- struct tdx_sys_info_ext sysinfo_ext;
- int ret;
-
- if (!(tdx_sysinfo.features.tdx_features0 & TDX_FEATURES0_EXT))
- return 0;
-
- ret = get_tdx_sys_info_ext(&sysinfo_ext);
- if (ret)
- return ret;
-
- if (!sysinfo_ext.ext_required)
+ if (!tdx_sysinfo.ext.ext_required)
return 0;
return tdx_ext_init();
next prev parent reply other threads:[~2026-07-30 11:10 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-18 8:13 [PATCH v2 00/17] Enable DICE-based TDX Quoting Extension Xu Yilun
2026-06-18 8:13 ` [PATCH v2 01/17] x86/virt/tdx: Embed version info in SEAMCALL leaf function definitions Xu Yilun
2026-06-18 14:45 ` Dave Hansen
2026-06-22 12:05 ` Xu Yilun
2026-06-18 8:13 ` [PATCH v2 02/17] x86/virt/tdx: Configure add-on features on TDX module init and update Xu Yilun
2026-06-18 15:04 ` Dave Hansen
2026-06-22 13:15 ` Xu Yilun
2026-06-24 12:00 ` Xu Yilun
2026-06-24 22:10 ` Peter Fang
2026-06-25 6:33 ` Xu Yilun
2026-06-23 8:43 ` Chao Gao
2026-06-25 10:50 ` Xu Yilun
2026-07-24 8:15 ` Xiaoyao Li
2026-07-27 10:48 ` Xu Yilun
2026-07-27 17:50 ` Edgecombe, Rick P
2026-07-28 16:29 ` Xu Yilun
2026-06-18 8:13 ` [PATCH v2 03/17] x86/virt/tdx: Detect if the extensions initialization is required Xu Yilun
2026-06-25 5:19 ` Tony Lindgren
2026-06-25 10:57 ` Xu Yilun
2026-07-27 17:51 ` Edgecombe, Rick P
2026-06-29 6:33 ` Chao Gao
2026-06-30 11:10 ` Xu Yilun
2026-07-24 8:44 ` Xiaoyao Li
2026-07-27 12:43 ` Xu Yilun
2026-07-24 8:42 ` Xiaoyao Li
2026-07-27 12:38 ` Xu Yilun
2026-07-27 17:56 ` Edgecombe, Rick P
2026-07-29 3:50 ` Xu Yilun
2026-07-29 13:48 ` Edgecombe, Rick P
2026-07-29 17:08 ` Xu Yilun
2026-07-29 22:55 ` Edgecombe, Rick P
2026-06-18 8:13 ` [PATCH v2 04/17] x86/virt/tdx: Add extra memory to TDX module for the extensions Xu Yilun
2026-06-29 7:56 ` Chao Gao
2026-06-30 10:27 ` Xu Yilun
2026-07-27 18:16 ` Edgecombe, Rick P
2026-07-29 11:07 ` Xu Yilun
2026-06-18 8:13 ` [PATCH v2 05/17] x86/virt/tdx: Make TDX module initialize " Xu Yilun
2026-07-27 18:30 ` Edgecombe, Rick P
2026-06-18 8:13 ` [PATCH v2 06/17] x86/virt/tdx: Re-initialize the extensions on runtime TDX module update Xu Yilun
2026-06-29 8:12 ` Chao Gao
2026-06-30 11:14 ` Xu Yilun
2026-07-27 18:37 ` Edgecombe, Rick P
2026-07-30 11:10 ` Xu Yilun [this message]
2026-07-30 16:01 ` Xu Yilun
2026-07-30 18:41 ` Edgecombe, Rick P
2026-07-31 2:30 ` Xu Yilun
2026-07-27 18:36 ` Edgecombe, Rick P
2026-06-18 8:13 ` [PATCH v2 07/17] x86/virt/tdx: Initialize Quoting extension Xu Yilun
2026-06-29 8:33 ` Chao Gao
2026-06-30 5:20 ` Peter Fang
2026-06-18 8:13 ` [PATCH v2 08/17] x86/virt/tdx: Prepare Quote buffer during extension bringup Xu Yilun
2026-06-25 6:08 ` Tony Lindgren
2026-06-30 4:12 ` Peter Fang
2026-07-01 19:56 ` Dave Hansen
2026-07-08 9:25 ` Peter Fang
2026-07-08 7:52 ` Nikolay Borisov
2026-07-13 10:19 ` Peter Fang
2026-06-18 8:13 ` [PATCH v2 09/17] x86/virt/tdx: Add interface to check Quoting availability Xu Yilun
2026-06-25 6:09 ` Tony Lindgren
2026-06-18 8:13 ` [PATCH v2 10/17] x86/virt/tdx: Move tdx_tdr_pa() up in the file Xu Yilun
2026-06-25 6:10 ` Tony Lindgren
2026-06-18 8:13 ` [PATCH v2 11/17] x86/virt/tdx: Add interface to generate a Quote Xu Yilun
2026-06-25 6:05 ` Tony Lindgren
2026-06-30 4:22 ` Peter Fang
2026-06-18 8:13 ` [PATCH v2 12/17] x86/virt/tdx: Reinitialize the Quoting extension after TDX module update Xu Yilun
2026-06-25 6:12 ` Tony Lindgren
2026-07-27 18:33 ` Edgecombe, Rick P
2026-06-18 8:13 ` [PATCH v2 13/17] x86/virt/tdx: Enable Quoting extension Xu Yilun
2026-06-25 6:13 ` Tony Lindgren
2026-06-18 8:13 ` [PATCH v2 14/17] x86/tdx: Move and rename Quote request structure Xu Yilun
2026-06-25 6:15 ` Tony Lindgren
2026-06-18 8:13 ` [PATCH v2 15/17] KVM: TDX: Factor out userspace return path from tdx_get_quote() Xu Yilun
2026-06-25 6:16 ` Tony Lindgren
2026-06-18 8:13 ` [PATCH v2 16/17] KVM: TDX: Add in-kernel Quote generation Xu Yilun
2026-06-25 18:01 ` Sean Christopherson
2026-06-29 10:03 ` Peter Fang
2026-06-30 0:42 ` Sean Christopherson
2026-06-30 23:33 ` Edgecombe, Rick P
2026-07-01 0:24 ` Dan Williams (nvidia)
2026-07-01 17:25 ` Sean Christopherson
2026-07-01 18:45 ` Edgecombe, Rick P
2026-07-04 5:43 ` Peter Fang
2026-07-06 17:57 ` Sean Christopherson
2026-07-08 20:47 ` Dave Hansen
2026-07-08 21:16 ` Sean Christopherson
2026-07-08 22:09 ` Peter Fang
2026-07-08 22:28 ` Sean Christopherson
2026-07-08 23:38 ` Edgecombe, Rick P
2026-07-10 9:01 ` Nikolay Borisov
2026-07-10 9:38 ` Peter Fang
2026-07-08 21:37 ` Sean Christopherson
2026-07-10 12:52 ` Peter Fang
2026-07-10 14:48 ` Sean Christopherson
2026-07-10 22:59 ` Peter Fang
2026-06-18 8:13 ` [PATCH v2 17/17] KVM: TDX: Support event-notify interrupts only with userspace Quoting Xu Yilun
2026-06-25 6:28 ` Tony Lindgren
2026-06-30 6:36 ` Peter Fang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=amsxCvZUpNwxeDK4@yilunxu-OptiPlex-7050 \
--to=yilun.xu@linux.intel.com \
--cc=adrian.hunter@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=chao.gao@intel.com \
--cc=dave.hansen@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=djbw@kernel.org \
--cc=kas@kernel.org \
--cc=kishen.maloor@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=peter.fang@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=seanjc@google.com \
--cc=sohil.mehta@intel.com \
--cc=tony.lindgren@linux.intel.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
--cc=yilun.xu@intel.com \
--cc=zhenzhong.duan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox