Linux Confidential Computing Development
 help / color / mirror / Atom feed
From: Artem Bityutskiy <dedekind1@gmail.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
	"seanjc@google.com" <seanjc@google.com>
Cc: "linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
	 "x86@kernel.org"	 <x86@kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	 "kas@kernel.org"	 <kas@kernel.org>,
	"binbin.wu@linux.intel.com" <binbin.wu@linux.intel.com>,
	 "Li, Xiaoyao" <xiaoyao.li@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	 "sathyanarayanan.kuppuswamy@linux.intel.com"	
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	"bp@alien8.de" <bp@alien8.de>,
	 "kvm@vger.kernel.org"	 <kvm@vger.kernel.org>,
	"tglx@kernel.org" <tglx@kernel.org>,
	"hpa@zytor.com"	 <hpa@zytor.com>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"Fang, Peter"	 <peter.fang@intel.com>
Subject: Re: [PATCH v3 0/4] tdx-guest: Make Quote buffer size dynamic
Date: Fri, 14 Aug 2026 08:45:55 +0300	[thread overview]
Message-ID: <8b432c8731167e97432b2e917d0b1c855fedf47c.camel@gmail.com> (raw)
In-Reply-To: <4ad451969522eecb445289ca74a88ee73d51336d.camel@intel.com>

On Thu, 2026-08-13 at 20:14 +0000, Edgecombe, Rick P wrote:
> > 3. Why freezing TD report size
> > 
> > Linux supports 1024-byte TD reports via the `TDX_CMD_GET_REPORT0`
> > ioctl. It is already full, no more TD evidence fits, and changing TD
> > report size would require a new ioctl.
> > 
> > Also, as I understand it, based on TDX feature requests from customers,
> > there may be a need to increase TD report size more often and more
> > significantly than one would expect.
> > 
> > Therefore, for DICE-based attestation the TDX module adds new TD
> > evidence in the quote instead of expanding the TD report.
> > 
> > Is this the cleanest approach? Maybe not. 
> > 
> 
> I was thinking the cleanest, time-travel facilitated, approach would be to have
> the "report" really just be a replay protection thing and not include any TD
> details. Then the quote could add everything it needed in the final format
> location. So no re-verifying and shuffling things between formats. But since
> that didn't work for SGX based attestation, the report has extra stuff due to
> legacy. But from Linux's POV, going forward we can consider the report as really
> an oversized replay protection blob and forget about the TD details in it. Isn't
> it a pretty clean separation of concerns? And for Linux (guest), the benefit
> shows up in not having to increase TD report size since it has really only one
> job.

Replay attack protection is a binding value between the remote party
and the final quote. It must sit in final quote. It only needs to exist
in the TD report because of the 2-flow design.

But why DICE-based attestation uses 2-flow design? Could TD run a
TDCALL[TDG.GET.QUOTE2] or something directly. No concept of TD report
would be needed. That would be my current vision of "cleanest".

But the approach that was taken is to minimize software changes. Within
that tradeoff, keeping the 2-step flow, preserving the TD report format
and size absolutely intact, and adding the extra information in the
quote is arguably a clean practical path.

Is this the cleanest in some absolute sense? No.
Is it acceptable? I would say yes.

> > 
> > 4. Migration-specific case
> > 
> > For the normal user attestation path, the TD report is TD-scoped. For
> > migration, the report is effectively platform-scoped, just because the
> > migration flow does not need TD-specific evidence.
> > 
> > I would say that clean design is when Linux does not need to know this
> > and care about this specific case: be able to treat all TD reports as
> > per-TD.
> 
> I was hoping you could chime in about the thing you mentioned off-list regarding
> *when* the quote operation is needed for migration. As in, what stage of the TD
> lifecycle and how it fits into a KVM VM TD scoped ioctl.

The first step in TDX live migration is `TDH.MIG.SETUP` seamcall. It
is called multiple times on both the source and destination hosts.
The TDX  module keeps the setup session state and drives the protocol
by telling the VMM what to do next through exit codes.

Each call follows the same pattern:
1. The VMM calls `TDH.MIG.SETUP` for the source TD or the destination
   TD.
2. The TDX module reads the optional input buffer and may produce an
   output buffer.
3. The exit code tells the VMM what to do before the next call.

One of the possible exit codes is TDX_MIG_SETUP_GET_QUOTE. It means:
deliver me the quote. The output buffer contains the TD report.

The idea was to pass this directly to QEMU. QEMU would call the
proposed "get quote" ioctl on the TD under migration, and provide the
TD report from `TDH.MIG.SETUP` on ioctl input. QEMU would not need to
care about the scope rules and would just treat the TD report as
belonging to the TD under migration.

The ioctl would then run TDH.GET.QUOTE with TDR for the TD under
migration. The seamcall would handle the scope logic internally. It
would be an internal TDX module detail.

Did you mean this or something else?

  reply	other threads:[~2026-08-14  5:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 12:29 [PATCH v3 0/4] tdx-guest: Make Quote buffer size dynamic Peter Fang
2026-07-29 12:29 ` [PATCH v3 1/4] x86/tdx: Add helper to query maximum TD Quote size Peter Fang
2026-07-29 12:29 ` [PATCH v3 2/4] virt: tdx-guest: Calculate the Quote buffer size safely Peter Fang
2026-07-29 18:29   ` Kuppuswamy Sathyanarayanan
2026-07-29 12:29 ` [PATCH v3 3/4] virt: tdx-guest: Use a variable to store the Quote buffer size Peter Fang
2026-07-29 18:47   ` Kuppuswamy Sathyanarayanan
2026-07-29 12:29 ` [PATCH v3 4/4] virt: tdx-guest: Allocate Quote buffer dynamically Peter Fang
2026-07-29 21:21 ` [PATCH v3 0/4] tdx-guest: Make Quote buffer size dynamic Edgecombe, Rick P
2026-08-11 22:40   ` Edgecombe, Rick P
2026-08-12 14:08     ` Sean Christopherson
2026-08-12 16:02       ` Edgecombe, Rick P
2026-08-12 16:43         ` Sean Christopherson
2026-08-12 17:22           ` Edgecombe, Rick P
2026-08-12 22:37             ` Peter Fang
2026-08-12 22:47               ` Edgecombe, Rick P
2026-08-12 23:10                 ` Sean Christopherson
2026-08-12 23:30                   ` Edgecombe, Rick P
2026-08-13 19:32                     ` Artem Bityutskiy
2026-08-13 20:14                       ` Edgecombe, Rick P
2026-08-14  5:45                         ` Artem Bityutskiy [this message]
2026-08-14  7:37                           ` Peter Fang
2026-08-12 23:27                 ` Peter Fang
2026-08-12 21:02         ` 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=8b432c8731167e97432b2e917d0b1c855fedf47c.camel@gmail.com \
    --to=dedekind1@gmail.com \
    --cc=binbin.wu@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=kas@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peter.fang@intel.com \
    --cc=rick.p.edgecombe@intel.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=tglx@kernel.org \
    --cc=x86@kernel.org \
    --cc=xiaoyao.li@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