From: "Huang, Kai" <kai.huang@intel.com>
To: "yilun.xu@linux.intel.com" <yilun.xu@linux.intel.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"Li, Xiaoyao" <xiaoyao.li@intel.com>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"kas@kernel.org" <kas@kernel.org>,
"Xu, Yilun" <yilun.xu@intel.com>,
"Verma, Vishal L" <vishal.l.verma@intel.com>,
"Jiang, Dave" <dave.jiang@intel.com>,
"Duan, Zhenzhong" <zhenzhong.duan@intel.com>,
"Gao, Chao" <chao.gao@intel.com>,
"Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"x86@kernel.org" <x86@kernel.org>,
"dan.j.williams@intel.com" <dan.j.williams@intel.com>
Subject: Re: [PATCH v2 10/31] x86/virt/tdx: Add extra memory to TDX Module for Extensions
Date: Fri, 24 Apr 2026 08:09:16 +0000 [thread overview]
Message-ID: <668a903ba2dccff2d641ac15b74deacc95ef19a6.camel@intel.com> (raw)
In-Reply-To: <aereVy8zVb2be2hh@yilunxu-OptiPlex-7050>
On Fri, 2026-04-24 at 11:07 +0800, Xu Yilun wrote:
> On Thu, Apr 23, 2026 at 10:29:31PM +0000, Huang, Kai wrote:
> > On Thu, 2026-04-23 at 17:05 +0000, Edgecombe, Rick P wrote:
> > > On Thu, 2026-04-23 at 00:59 +0000, Huang, Kai wrote:
> > > > Ditto here. I don't think we should introduce any more cond_resched().
> > > >
> > > > Btw, I think technically we can reuse the seamcall_ir_resched() you introduced
> > > > later, albeit in which a local '_args' is used as a copy of the original 'args',
> > > > but that has no harm for the case where we can just use the 'args' to loop.
> > > >
> > > > I am wondering whether we can just use that here, or we just get rid of that
> > > > helper (then open retry by the callers of these SEAMCALL wrappers), since there
> > > > will be more cases where we need to manually set 'resume=1' in the SEAMCALL
> > > > input 'args' when retrying TDX_INTERRUPTED_RESUMABLE.
> > >
> > > I kind of like the latter option to open code more of this stuff. The stacks of
> > > seamcall wrapper macros is already too much.
> >
> > Agreed.
> >
> > And SEAMCALL *users* can actually come up with their own version of wrapper(s)
> > to do the retry. E.g., currently seamcall_ir_resched() is only used for IOMMU
> > SEAMCALLs, and we can put this wrapper in the IOMMU code or coco/tdx-host.
>
> After we have introduced TDX Module Extension, irq preemptable
> EXT-SEAMCALLs become a common concept.
>
It has been a concept since before the EXT-SEAMCALLs actually. For instance,
TDX live migration using blocking export doesn't need any opt-in via module
extension (only the non-blocking way needs), but the SEAMCALLs to export/import
TD/vCPU/memory are all interruptible.
In fact, they had the "latency requirement" behind the INTERRUPT_RESUMABLE in
mind at the very beginning. It's just at that point all SEAMCALLs were not that
heavy.
> It is irq preemptable so that the
> secure world remembers and resumes the context, no need for host to
> remind via resume lag.
The fact is the aforementioned live migration related export/import SEAMCALLs
(there are 8 at least, but maybe more) all requires the explicit setting of
'resume=1' (plus using the SEAMCALL output as input for retry). I don't know
the story behind this, though. There might be some tricky thing here for the
module to remember and manage (e.g., migration has a concept of "migration
stream", and the resume is per-stream).
>
> Today there are 3 EXT-SEAMCALLs, TDH_SPDM_CONNECT/DISCONNECT/MNG,
> irq preemption handling is a general requirement for them, and I think
> it is still true for any further EXT-SEAMCALLs.
>
> So I think a general helper for EXT-SEAMCALLs makes sense.
Yes conceptually I agree, but not need to distinguish EXT-SEAMCALLs or not IMHO.
The problem is there isn't a common rule to follow.
E.g., let's say "the module can remember thus no resume flag is needed", how
about the SEAMCALL inputs? Can the "output" args be directly used as input for
retry, or the original input should always be used?
Not to mention there's existing SEAMCALLs which require explicitly setting
'resume=1'.
I believe we can use some smart hack to implement a common one to cover all
cases above, but I am not sure whether it's worth to do (maybe we can have a try
to see how does it look like, though, I think).
Given the SEAMCALLs for TDX Connect seem to follow one rule to retry, and live
migration SEAMCALLs follow another rule, it seems for now the simplest way is to
introduce the needed retry helper in the layer of SEAMCALL *user* (TDX Connect
and migration).
> TDH.IOMMU.SETUP, however, is another case. It is not a EXT-SEAMCALL but
> happened to follow the same irq-retry handling process. To avoid code
> duplication we have:
>
> /*
> * seamcall_ret_ir_exec() aliases seamcall_ret_ir_resched() for
> * documentation purposes. It documents the TDX Module extension
> * seamcalls that are long running / hard-irq preemptible flows that
> * generate events. The calls using seamcall_ret_ir_resched() are long
> * running flows, that periodically yield.
> */
> #define seamcall_ret_ir_exec seamcall_ret_ir_resched
>
> TDH.IOMMU.SETUP uses seamcall_ret_ir_resched(), and EXT-SEAMCALLs use
> seamcall_ret_ir_exec().
>
> How do you think?
Sorry I don't quite get. What does "exec" postfix mean?
From patch 25, they are all in TDX core, so I don't quite get why we need to
distinguish EXT-SEAMCALLs vs normal ones. IMHO it's an additional layer which
doesn't actually help address any problem.
Btw, we should really get rid of the "resched()" postfix from the function name
since cond_resched() is no longer needed and possibility of rescheduling is
implied pretty much all places in the kernel code now (except some special code
such as code in IRQ context).
next prev parent reply other threads:[~2026-04-24 8:09 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-27 16:01 [PATCH v2 00/31] PCI/TSM: PCIe Link Encryption Establishment via TDX platform services Xu Yilun
2026-03-27 16:01 ` [PATCH v2 01/31] x86/tdx: Move all TDX error defines into <asm/shared/tdx_errno.h> Xu Yilun
2026-03-27 23:37 ` Edgecombe, Rick P
2026-03-28 1:16 ` Dan Williams
2026-03-30 7:07 ` Xu Yilun
2026-03-30 7:10 ` Xu Yilun
2026-03-31 0:01 ` Dave Hansen
2026-03-27 16:01 ` [PATCH v2 02/31] x86/virt/tdx: Move bit definitions of TDX_FEATURES0 to public header Xu Yilun
2026-03-27 23:45 ` Edgecombe, Rick P
2026-03-30 8:07 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 03/31] x86/virt/tdx: Add tdx_page_array helpers for new TDX Module objects Xu Yilun
2026-03-28 1:35 ` Edgecombe, Rick P
2026-03-30 10:25 ` Xu Yilun
2026-03-30 23:25 ` Edgecombe, Rick P
2026-03-31 6:25 ` Tony Lindgren
2026-04-01 7:25 ` Tony Lindgren
2026-03-30 15:47 ` Xu Yilun
2026-03-30 23:57 ` Edgecombe, Rick P
2026-03-31 10:11 ` Xu Yilun
2026-03-30 13:31 ` Nikolay Borisov
2026-03-31 13:31 ` Xu Yilun
2026-04-12 2:53 ` Dan Williams
2026-04-16 9:05 ` Xu Yilun
2026-04-17 23:36 ` Dan Williams
2026-04-19 9:20 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 04/31] x86/virt/tdx: Support allocating contiguous pages for tdx_page_array Xu Yilun
2026-03-30 13:48 ` Nikolay Borisov
2026-03-31 13:37 ` Xu Yilun
2026-04-18 0:05 ` Dan Williams
2026-03-27 16:01 ` [PATCH v2 05/31] x86/virt/tdx: Extend tdx_page_array to support IOMMU_MT Xu Yilun
2026-03-30 23:54 ` Edgecombe, Rick P
2026-03-31 14:19 ` Xu Yilun
2026-04-01 0:17 ` Edgecombe, Rick P
2026-04-08 4:29 ` Xu Yilun
2026-04-14 9:57 ` Xu Yilun
2026-04-16 5:07 ` Xu Yilun
2026-04-17 23:58 ` Dan Williams
2026-04-19 8:33 ` Xu Yilun
2026-04-21 21:51 ` Dan Williams
2026-04-23 11:15 ` Xu Yilun
2026-04-02 0:05 ` Huang, Kai
2026-04-08 6:16 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 06/31] x86/virt/tdx: Read global metadata for TDX Module Extensions/Connect Xu Yilun
2026-03-30 14:23 ` Nikolay Borisov
2026-03-31 14:23 ` Xu Yilun
2026-04-01 21:36 ` Huang, Kai
2026-04-08 6:17 ` Xu Yilun
2026-04-21 22:19 ` Dan Williams
2026-04-23 11:58 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 07/31] x86/virt/tdx: Embed version info in SEAMCALL leaf function definitions Xu Yilun
2026-03-27 16:01 ` [PATCH v2 08/31] x86/virt/tdx: Configure TDX Module with optional TDX Connect feature Xu Yilun
2026-03-31 10:38 ` Nikolay Borisov
2026-04-08 7:21 ` Xu Yilun
2026-04-01 10:13 ` Huang, Kai
2026-04-08 7:12 ` Xu Yilun
2026-04-08 8:33 ` Huang, Kai
2026-04-01 23:42 ` Huang, Kai
2026-04-01 23:53 ` Edgecombe, Rick P
2026-04-02 0:40 ` Huang, Kai
2026-04-02 0:48 ` Dave Hansen
2026-04-02 1:06 ` Huang, Kai
2026-04-22 1:19 ` Dan Williams
2026-04-23 15:49 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 09/31] x86/virt/tdx: Move tdx_clflush_page() up in the file Xu Yilun
2026-03-27 16:01 ` [PATCH v2 10/31] x86/virt/tdx: Add extra memory to TDX Module for Extensions Xu Yilun
2026-03-30 23:36 ` Edgecombe, Rick P
2026-03-31 11:00 ` Nikolay Borisov
2026-04-08 7:28 ` Xu Yilun
2026-04-23 0:59 ` Huang, Kai
2026-04-23 16:41 ` Xu Yilun
2026-04-23 21:55 ` Huang, Kai
2026-04-23 17:05 ` Edgecombe, Rick P
2026-04-23 22:29 ` Huang, Kai
2026-04-24 3:07 ` Xu Yilun
2026-04-24 8:09 ` Huang, Kai [this message]
2026-04-24 9:10 ` Huang, Kai
2026-04-24 10:41 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 11/31] x86/virt/tdx: Make TDX Module initialize Extensions Xu Yilun
2026-03-30 23:25 ` Edgecombe, Rick P
2026-03-31 14:58 ` Xu Yilun
2026-04-01 11:42 ` Huang, Kai
2026-04-08 8:24 ` Xu Yilun
2026-04-08 21:24 ` Huang, Kai
2026-04-09 0:49 ` Edgecombe, Rick P
2026-04-09 1:29 ` Huang, Kai
2026-03-27 16:01 ` [PATCH v2 12/31] x86/virt/tdx: Enable the Extensions after basic TDX Module init Xu Yilun
2026-03-27 16:01 ` [PATCH v2 13/31] x86/virt/tdx: Extend tdx_clflush_page() to handle compound pages Xu Yilun
2026-03-27 16:01 ` [PATCH v2 14/31] PCI/TSM: Report active IDE streams per host bridge Xu Yilun
2026-03-27 16:01 ` [PATCH v2 15/31] coco/tdx-host: Introduce a "tdx_host" device Xu Yilun
2026-03-27 16:01 ` [PATCH v2 16/31] coco/tdx-host: Support Link TSM for TDX host Xu Yilun
2026-03-27 16:01 ` [PATCH v2 17/31] acpi: Add KEYP support to fw_table parsing Xu Yilun
2026-03-27 16:01 ` [PATCH v2 18/31] iommu/vt-d: Cache max domain ID to avoid redundant calculation Xu Yilun
2026-04-09 7:02 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 19/31] iommu/vt-d: Reserve the MSB domain ID bit for the TDX module Xu Yilun
2026-03-28 16:57 ` kernel test robot
2026-03-31 7:20 ` Baolu Lu
2026-04-08 12:07 ` Xu Yilun
2026-04-09 5:48 ` Baolu Lu
2026-03-28 19:58 ` kernel test robot
2026-04-09 7:16 ` Tian, Kevin
2026-04-22 6:00 ` Xu Yilun
2026-04-24 6:49 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 20/31] x86/virt/tdx: Add a helper to loop on TDX_INTERRUPTED_RESUMABLE Xu Yilun
2026-04-09 7:21 ` Tian, Kevin
2026-04-22 6:04 ` Xu Yilun
2026-04-24 6:57 ` Tian, Kevin
2026-04-23 0:29 ` Huang, Kai
2026-03-27 16:01 ` [PATCH v2 21/31] x86/virt/tdx: Add SEAMCALL wrappers for trusted IOMMU setup and clear Xu Yilun
2026-04-09 7:30 ` Tian, Kevin
2026-04-22 6:32 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 22/31] iommu/vt-d: Export a helper to do function for each dmar_drhd_unit Xu Yilun
2026-04-09 7:49 ` Tian, Kevin
2026-04-22 6:33 ` Xu Yilun
2026-04-24 6:50 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 23/31] coco/tdx-host: Setup all trusted IOMMUs on TDX Connect init Xu Yilun
2026-04-09 7:51 ` Tian, Kevin
2026-04-22 9:27 ` Xu Yilun
2026-04-24 6:54 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 24/31] coco/tdx-host: Add a helper to exchange SPDM messages through DOE Xu Yilun
2026-04-09 7:56 ` Tian, Kevin
2026-04-22 9:41 ` Xu Yilun
2026-04-24 7:01 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 25/31] x86/virt/tdx: Add SEAMCALL wrappers for SPDM management Xu Yilun
2026-04-09 7:59 ` Tian, Kevin
2026-04-22 9:46 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 26/31] mm: Add __free() support for __free_page() Xu Yilun
2026-03-27 16:01 ` [PATCH v2 27/31] coco/tdx-host: Implement SPDM session setup Xu Yilun
2026-04-02 11:29 ` Nikolay Borisov
2026-04-22 9:53 ` Xu Yilun
2026-03-27 16:01 ` [PATCH v2 28/31] coco/tdx-host: Parse ACPI KEYP table to init IDE for PCI host bridges Xu Yilun
2026-03-27 16:01 ` [PATCH v2 29/31] x86/virt/tdx: Add SEAMCALL wrappers for IDE stream management Xu Yilun
2026-03-27 16:01 ` [PATCH v2 30/31] coco/tdx-host: Implement IDE stream setup/teardown Xu Yilun
2026-04-09 8:02 ` Tian, Kevin
2026-04-22 9:57 ` Xu Yilun
2026-04-24 7:05 ` Tian, Kevin
2026-03-27 16:01 ` [PATCH v2 31/31] coco/tdx-host: Finally enable SPDM session and IDE Establishment Xu Yilun
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=668a903ba2dccff2d641ac15b74deacc95ef19a6.camel@intel.com \
--to=kai.huang@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=chao.gao@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=rick.p.edgecombe@intel.com \
--cc=vishal.l.verma@intel.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
--cc=yilun.xu@intel.com \
--cc=yilun.xu@linux.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