From: Xu Yilun <yilun.xu@linux.intel.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: x86@kernel.org, kvm@vger.kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org, djbw@kernel.org, kas@kernel.org,
rick.p.edgecombe@intel.com, yilun.xu@intel.com,
xiaoyao.li@intel.com, sohil.mehta@intel.com,
adrian.hunter@intel.com, kishen.maloor@intel.com,
tony.lindgren@linux.intel.com, peter.fang@intel.com,
baolu.lu@linux.intel.com, zhenzhong.duan@intel.com,
dave.hansen@linux.intel.com, seanjc@google.com
Subject: Re: [PATCH v2 01/17] x86/virt/tdx: Embed version info in SEAMCALL leaf function definitions
Date: Mon, 22 Jun 2026 20:05:25 +0800 [thread overview]
Message-ID: <ajklBUw1bmo3HoGZ@yilunxu-OptiPlex-7050> (raw)
In-Reply-To: <bdde1a33-9513-4be3-87cb-044c034eddb1@intel.com>
> This is jumping the gun a bit in the changelog.
>
> What is a SEAMCALL leaf function?
>
> How does the version fit in?
I think the word "leaf function" is confusing, maybe I should say
"... SEAMCALL interface function definitions..."?
And I missed some more context explanation here:
SEAMCALL accepts parameters via CPU registers (RAX, RCX, RDX, ...),
where RAX selects the specific TDX module function to execute. According
to the TDX module SPEC, RAX is mainly composed of:
1. leaf number: selects the function.
2. version number: selects the function version. The newer version
defines more operations. It also defines additional parameters for
the rest of registers.
Newer version SEAMCALL uses the same leaf number as older versions,
with only the version number increased. Newer version SEAMCALLs are
guaranteed to be backward compatible.
[...]
> > The old TDX modules that only support TDH.VP.INIT v0 are all deprecated,
> > so only provide the latest (v1) definition.
>
> No, this isn't how this is going to work.
>
> What do we *NEED* from v1? Why churn the code if we don't *NEED*
> something from v1 and can live with v0?
Sorry for the confusing words, for this TDH.VP.INIT, kernel is now using
v1, we need v1 for virtual x2APIC. Maybe I should add "No functional change
intended."
> It has *ZERO* to do with the TDX module being deprecated or whatever.
Since newer version SEAMCALLs are always backward compatible. TDH.VP.INIT v0
is only needed when we need to support legacy modules that don't understand
TDH.VP.INIT v1. We don't support such legacy modules, so I meant to
eliminate TDH.VP.INIT v0 definition and reduce histroy burdens.
We have some previous discussion that leads to "kernel don't keep SEAMCALL
version at all":
https://lore.kernel.org/all/ca331aa3-6304-4e07-9ed9-94dc69726382@intel.com/
But I have trouble for not keeping versions for TDH.SYS.CONFIG/UPDATE (in
next patch). No public module supports TDH.SYS.CONFIG/UPDATE v1 so I can't
eliminate TDH.SYS.CONFIG/UPDATE v0. I'm GOOD we are now considering keep
aware of SEAMCALL versions at some level. Keeping in mind which module
is published is another burden...
[...]
> But that whole scheme falls apart the first time the kernel needs
> functionality from v2. You'll need:
>
> #define TDH_VP_INIT_V0 SEAMCALL_LEAF_VER(22, 0)
> #define TDH_VP_INIT_V1 SEAMCALL_LEAF_VER(22, 1)
>
> and then the calls will do:
>
> if (foo)
> return seamcall(TDH_VP_INIT_V0, &args);
> else
> return seamcall(TDH_VP_INIT_V1, &args);
>
> So this 100% goes down the road of needing #defines for *EACH* version.
TDH_VP_INIT_V0 has no use case in current code, so maybe not #define for
EACH version.
And we have 100+ SEAMCALLs in SPEC, 30+ is being used in Linux, 20+ is
comming, only 3 need versions now. I think making versioned definitions
for EACH of them is overkill.
I see you have another suggestion in next patch which avoids the
#defines. Let me continue in that patch.
> The whole seamcall RAX thing is one step too clever. I think Linux did
> the right thing:
>
> 5 common open sys_open
> 288 common openat sys_openat
> 437 common openat2 sys_openat2
>
> New ABI gets a new base number. No need for the other end of the ABI to
> know that 288 is arguably a later version of 5.
Yes, that's true.
>
> Ugh. But why is this patch even in here in the first place? Why is this
> even *ASSOCIATED* with DICE-based attestation? Isn't this completely
> orthogonal?
TDH.SYS.UPDATE/CONFIG is the second user of the version stuff. So as
required, fix the open code issue of the first existing user.
https://lore.kernel.org/all/62bec236-4716-4326-8342-1863ad8a3f24@intel.com/
Thanks,
Yilun
next prev parent reply other threads:[~2026-06-22 12:05 UTC|newest]
Thread overview: 98+ 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 [this message]
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
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-08-11 4:29 ` Peter Fang
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=ajklBUw1bmo3HoGZ@yilunxu-OptiPlex-7050 \
--to=yilun.xu@linux.intel.com \
--cc=adrian.hunter@intel.com \
--cc=baolu.lu@linux.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
all inboxes | Powered by JetHome®