Linux Confidential Computing Development
 help / color / mirror / Atom feed
From: Xu Yilun <yilun.xu@linux.intel.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Cc: "linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"Gao, Chao" <chao.gao@intel.com>,
	"Xu, Yilun" <yilun.xu@intel.com>,
	"Duan, Zhenzhong" <zhenzhong.duan@intel.com>,
	"kas@kernel.org" <kas@kernel.org>,
	"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
	"Li, Xiaoyao" <xiaoyao.li@intel.com>,
	"Maloor, Kishen" <kishen.maloor@intel.com>,
	"Hunter, Adrian" <adrian.hunter@intel.com>,
	"tony.lindgren@linux.intel.com" <tony.lindgren@linux.intel.com>,
	"Mehta, Sohil" <sohil.mehta@intel.com>,
	"Fang, Peter" <peter.fang@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"artem.bityutskiy@linux.intel.com"
	<artem.bityutskiy@linux.intel.com>
Subject: Re: [PATCH 2/6] x86/virt/tdx: Configure add-on features on TDX module init and update
Date: Wed, 26 Aug 2026 13:15:49 +0800	[thread overview]
Message-ID: <ao52haB5N3dnSzr8@yilunxu-OptiPlex-7050> (raw)
In-Reply-To: <41f5a558ca67e2895fcb114c418f0e453e933974.camel@intel.com>

On Fri, Aug 21, 2026 at 10:01:16PM +0000, Edgecombe, Rick P wrote:
> On Fri, 2026-08-21 at 11:29 +0800, Xu Yilun wrote:
> > The TDX architecture identifies some features that must be explicitly
> > enabled when the kernel supports them. 
> > 
> 
> It sounds like this is saying that TDX module is demanding that the kernel
> enable these features if it can. I think it's not true.

The TDX architecture identifies some features that are off by default
but can be enabled by the host during TDX module initialization or
update.

> 
> > These add-on features affect
> > existing TDX systems: they may change existing feature behavior, reserve
> > more memory, or impact TDX initialization performance.
> > 
> 
> What are you trying to get at by saying they affect existing TDX systems? It's
> important that if a new module gains these features, an upgrade *doesn't* affect
> existing TDX systems. Are you trying to say instead that they *would* affect
> existing systems, so they are add-ons?

Yes. Previously Xiaoyao asked "why only these bits are add-on features
while the rest in TDX_FEATURES01 are not" [1], so I added these words.

[1] https://lore.kernel.org/lkml/823bf577-51a1-4a8a-b240-ef4a0d5573be@intel.com/

> 
> >  The kernel must
> > enable these add-on features at boot or post-update time.
> > 
> > TDISP, DICE-based quoting and TD migration are among those add-on
> > features, as their SEAMCALL leaves depend on a SEAMCALL execution
> > context built by the TDX module extensions. On the other hand, the TDX
> > architecture doesn't allow the extensions to be initialized if none of
> > these features are enabled.
> > 
> 
> So we have add-ons features and extensions. Some add-on features depend on
> extensions. And also, the extensions can't be initialized if the add-on features
> are not enabled? I'm not sure what you are trying to get at. That the kernel
> doesn't have the option to blindly initialize all extensions?
> 
> >  Add support for configuring add-on features,
> > as the prerequisite for enabling the extensions.
> 
> I kinda know how this stuff works and I'm still struggling to understand what
> you are trying to say...

I just try to explain why the add-on feature configuration patch appears
in this extensions series, because it is the prerequisite for extensions
enabling.

From your comment below, seems we don't have to explain this
prerequisite here. Maybe I should delete this part.

> 
> I think optional features are pretty common pattern that will be generally
> understood. So the only thing that needs explanation is that some optional (or
> add-on) features need extra memory to save state, etc. But actually, this patch
> doesn't deal with this, just turning on optional features.
> 
> > 
> > The TDX module extends TDH.SYS.CONFIG and TDH.SYS.UPDATE with new bitmap
> > parameters to specify which add-on features to enable. 
> > 
> 
> Because some other VMM was passing garbage in r9?

I think yes. On version0, r9 is ignored meaning architecturally VMM is
OK to fill any value in r9.

> Hmm, how does this work with other features0 bits?
> Like for dynamic PAMT is a feature0 bit, but we pass it in
> r8. But for add-on features that use extensions we pass it in r9?

I feel this is historical baggage in the ABI design.

> Or do we pass
> all features0 bits in r9 for when using v1 of TDH.SYS.CONFIG? The docs say:
> 
>    If the requested version in RAX is 1 or higher, R9 specifies TDX Module
>    feature enabling flags, formatted similarly to TDX_FEATURES0, readable by
>    TDH.SYS.RD*. A bit may be set to 1 if the corresponding TDX_FEATURES0 bit is
>    1.

No, there are two more rows in the table to specify: 

According to SPEC, for other feature0 bits whose value is in TDX_FEATURES0,
they must be 0. for bits not in TDX_FEATURES0, they are ignored.

> 
> I wonder why they didn't just use the many reserved bits 63:17 of r8 for new
> features instead of this new seamcall version...

I guess they want to re-use TDX_FEATURES0, they don't want to make new
definition of every bit for each add-on feature. But let me check with
module team.

> 
> > The bitmap
> > uses the same feature bits as TDX_FEATURES0. Add a
> > get_tdx_addon_features0() helper to return the bitmap of the add-on
> > features that the module & kernel both support. Initially, this helper
> > returns 0. It will be updated to return specific feature bits as full
> > kernel support lands. Pass this extra bitmap to TDH.SYS.CONFIG helper.
> > 
> > The TDX module requires SEAMCALL leaf version 1 for TDH.SYS.CONFIG and
> > TDH.SYS.UPDATE when passing the new bitmap parameter. A previous
> > change [1] supports the versioned SEAMCALL leaves by adding a "version"
> > field in struct tdx_module_args. Set the version field to 1 if any bit
> > is set in this bitmap.
> > 
> > Compatible updates keep the reported features unchanged across updates,
> > so that existing TDX users can continue to operate without disruption.
> > To adhere to this
> > 
> 
> Compatible updates keep from disturbing the kernel. So the kernel shouldn't need
> to adhere to anything. Just say the kernel doesn't need to re-fetch it.

Good to me.

> 
> > , provide TDH.SYS.UPDATE with the same bitmap returned
> > by get_tdx_addon_features0(). This works because the module supported
> > feature bits are cached at boot and never refreshed after updates, so
> > the returned bitmap always matches the initial TDH.SYS.CONFIG input.
> 
> 

  reply	other threads:[~2026-08-26  5:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-21  3:29 [PATCH 0/6] Enable TDX module extensions Xu Yilun
2026-08-21  3:29 ` [PATCH 1/6] x86/virt/tdx: Wrap TDH.SYS.CONFIG/UPDATE operations in helpers Xu Yilun
2026-08-21 20:53   ` Edgecombe, Rick P
2026-08-24  4:52     ` Xu Yilun
2026-08-26 13:57   ` Nikolay Borisov
2026-08-21  3:29 ` [PATCH 2/6] x86/virt/tdx: Configure add-on features on TDX module init and update Xu Yilun
2026-08-21 14:38   ` Dave Hansen
2026-08-21 21:18     ` Edgecombe, Rick P
2026-08-24  6:37     ` Xu Yilun
2026-08-24 15:15       ` Dave Hansen
2026-08-24 18:34         ` Xu Yilun
2026-08-21 22:01   ` Edgecombe, Rick P
2026-08-26  5:15     ` Xu Yilun [this message]
2026-08-21  3:29 ` [PATCH 3/6] x86/virt/tdx: Detect if the extensions initialization is required Xu Yilun
2026-08-21 15:22   ` Kiryl Shutsemau
2026-08-21 22:22     ` Edgecombe, Rick P
2026-08-24 12:16       ` Kiryl Shutsemau
2026-08-21  3:29 ` [PATCH 4/6] x86/virt/tdx: Add extra memory to TDX module for the extensions Xu Yilun
2026-08-21 15:44   ` Kiryl Shutsemau
2026-08-24  9:18     ` Xu Yilun
2026-08-24 12:22       ` Kiryl Shutsemau
2026-08-28  7:46       ` Xu Yilun
2026-09-02 10:54         ` Kiryl Shutsemau
2026-09-03 10:40           ` Xu Yilun
2026-09-03 11:00             ` Kiryl Shutsemau
2026-09-03 15:05               ` Xu Yilun
2026-08-21  3:29 ` [PATCH 5/6] x86/virt/tdx: Make TDX module initialize " Xu Yilun
2026-08-21 23:55   ` Edgecombe, Rick P
2026-08-24 17:14     ` Xu Yilun
2026-08-24 17:43       ` Edgecombe, Rick P
2026-08-25  9:53         ` Xu Yilun
2026-08-24 17:58       ` Edgecombe, Rick P
2026-08-25 10:02         ` Xu Yilun
2026-08-21  3:29 ` [PATCH 6/6] x86/virt/tdx: Re-initialize the extensions on runtime TDX module update Xu Yilun
2026-08-22  0:01   ` Edgecombe, Rick P
2026-08-25 15:39     ` Xu Yilun
2026-08-25  8:35   ` Tony Lindgren

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=ao52haB5N3dnSzr8@yilunxu-OptiPlex-7050 \
    --to=yilun.xu@linux.intel.com \
    --cc=adrian.hunter@intel.com \
    --cc=artem.bityutskiy@linux.intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=chao.gao@intel.com \
    --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=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