From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
To: "sathyanarayanan.kuppuswamy@linux.intel.com"
<sathyanarayanan.kuppuswamy@linux.intel.com>,
"kas@kernel.org" <kas@kernel.org>,
"Fang, Peter" <peter.fang@intel.com>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
Cc: "seanjc@google.com" <seanjc@google.com>,
"bp@alien8.de" <bp@alien8.de>, "x86@kernel.org" <x86@kernel.org>,
"binbin.wu@linux.intel.com" <binbin.wu@linux.intel.com>,
"hpa@zytor.com" <hpa@zytor.com>,
"mingo@redhat.com" <mingo@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Li, Xiaoyao" <xiaoyao.li@intel.com>,
"tglx@kernel.org" <tglx@kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"Bityutskiy, Artem" <artem.bityutskiy@intel.com>,
"tony.lindgren@linux.intel.com" <tony.lindgren@linux.intel.com>
Subject: Re: [PATCH v5 5/6] x86/tdx: Add a helper to query maximum Quote size
Date: Mon, 28 Sep 2026 18:35:11 +0000 [thread overview]
Message-ID: <8c573cf624eab4c76098f1ccc21afc3e9e40849c.camel@intel.com> (raw)
In-Reply-To: <20260928100913.2265687-6-peter.fang@intel.com>
On Mon, 2026-09-28 at 03:08 -0700, Peter Fang wrote:
> TDX attestation report ("Quote") sizes can grow with newer crypto
> algorithms, so guests can no longer rely on a fixed-size buffer for the
> Quote.
>
> The TDX module added a new ABI that reports the largest possible Quote
> size via a metadata field [1]. Add a helper to query the size instead of
> exposing tdg_vm_rd() directly, as it can read arbitrary metadata fields.
>
> The reported size covers every Quote type the platform can produce,
> including SGX-based Quotes.
>
> Thanks to Xu Yilun for suggesting this in an off-list discussion.
Suggesting what?
>
> AI was used under supervision to collect/apply feedback, review code and
> workshop logs.
>
> [1] Intel TDX Module ABI Definitions, August 2026, TD-scope metadata
> field "TD_QUOTE_MAX_SIZE"
>
> Signed-off-by: Peter Fang <peter.fang@intel.com>
> ---
> v5:
> - Drop unused EXPORT_SYMBOL_GPL(). [Dave]
> - Use an error code to report failure. [Dave]
> - Drop the u32 cast. [Dave]
> - Replace the kernel-doc comment with a one-liner. [Dave]
> - Drop the RB tags, as the code changed substantially.
> v4:
> - Update the TDCS_QUOTE_MAX_SIZE encoding to 0x9010000200000007. [1]
> - Provide documentation for the metadata field. [Rick, Kiryl]
> - Document that the reported size covers every Quote type. [Xiaoyao]
> - Document that a module update does not change the reported size.
> [Tony]
> - Add Tony's Reviewed-by.
> v3:
> - No code changes. Add Binbin's Reviewed-by.
> v2:
> - Keep the explicit (u32) cast to document the metadata field width.
> [Binbin]
> - Note that Xu Yilun's suggestion was made in an off-list discussion.
> [Sathya]
> - Drop the Assisted-by tags, as the code was not written by AI.
> ---
> arch/x86/coco/tdx/tdx.c | 16 ++++++++++++++++
> arch/x86/include/asm/shared/tdx.h | 1 +
> arch/x86/include/asm/tdx.h | 2 ++
> 3 files changed, 19 insertions(+)
>
> diff --git a/arch/x86/coco/tdx/tdx.c b/arch/x86/coco/tdx/tdx.c
> index bcaf4180a8db..323e1efc78ea 100644
> --- a/arch/x86/coco/tdx/tdx.c
> +++ b/arch/x86/coco/tdx/tdx.c
> @@ -198,6 +198,22 @@ u64 tdx_hcall_get_quote(void *buf, size_t size)
> }
> EXPORT_SYMBOL_GPL(tdx_hcall_get_quote);
>
> +/*
> + * Ask the TDX module what the largest possible Quote might be.
How about adding the "largest on the host platform" detail to this comment.
> + */
> +int tdx_get_max_quote_size(u64 *max_quote_size)
> +{
> + u64 err;
> +
> + err = tdg_vm_rd(TDCS_QUOTE_MAX_SIZE, max_quote_size);
> +
> + /* Old modules do not support this. Tell the caller. */
> + if (err)
> + return -EINVAL;
> +
> + return 0;
> +}
> +
> static void __noreturn tdx_panic(const char *msg)
> {
> struct tdx_module_args args = {
> diff --git a/arch/x86/include/asm/shared/tdx.h b/arch/x86/include/asm/shared/tdx.h
> index f20e91d7ac35..6f106d4b1a58 100644
> --- a/arch/x86/include/asm/shared/tdx.h
> +++ b/arch/x86/include/asm/shared/tdx.h
> @@ -50,6 +50,7 @@
> /* TDX TD-Scope Metadata. To be used by TDG.VM.WR and TDG.VM.RD */
> #define TDCS_CONFIG_FLAGS 0x1110000300000016
> #define TDCS_TD_CTLS 0x1110000300000017
> +#define TDCS_QUOTE_MAX_SIZE 0x9010000200000007
> #define TDCS_NOTIFY_ENABLES 0x9100000000000010
> #define TDCS_TOPOLOGY_ENUM_CONFIGURED 0x9100000000000019
>
> diff --git a/arch/x86/include/asm/tdx.h b/arch/x86/include/asm/tdx.h
> index a3c37d61e676..6a465827d8f9 100644
> --- a/arch/x86/include/asm/tdx.h
> +++ b/arch/x86/include/asm/tdx.h
> @@ -83,6 +83,8 @@ int tdx_mcall_extend_rtmr(u8 index, u8 *data);
>
> u64 tdx_hcall_get_quote(void *buf, size_t size);
>
> +int tdx_get_max_quote_size(u64 *max_quote_size);
> +
> void __init tdx_dump_attributes(u64 td_attr);
> void __init tdx_dump_td_ctls(u64 td_ctls);
>
next prev parent reply other threads:[~2026-09-28 18:35 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 10:08 [PATCH v5 0/6] tdx-guest: Make Quote buffer size dynamic Peter Fang
2026-09-28 10:08 ` [PATCH v5 1/6] x86/tdx: Take the Quote buffer as a generic pointer Peter Fang
2026-09-28 19:04 ` Edgecombe, Rick P
2026-09-28 20:37 ` Peter Fang
2026-09-28 20:10 ` Kuppuswamy Sathyanarayanan
2026-09-28 10:08 ` [PATCH v5 2/6] virt: tdx-guest: Give the Quote buffer an explicit type Peter Fang
2026-09-28 19:14 ` Edgecombe, Rick P
2026-09-28 20:16 ` Kuppuswamy Sathyanarayanan
2026-09-29 2:13 ` Binbin Wu
2026-09-29 7:41 ` Peter Fang
2026-09-29 7:43 ` Binbin Wu
2026-09-28 10:08 ` [PATCH v5 3/6] virt: tdx-guest: Calculate the Quote buffer size safely Peter Fang
2026-09-28 15:50 ` Dave Hansen
2026-09-28 20:53 ` Peter Fang
2026-09-28 10:08 ` [PATCH v5 4/6] virt: tdx-guest: Add a helper for the Quote buffer size Peter Fang
2026-09-28 16:13 ` Dave Hansen
2026-09-28 19:13 ` Edgecombe, Rick P
2026-09-29 10:32 ` Peter Fang
2026-09-29 15:45 ` Edgecombe, Rick P
2026-09-29 16:03 ` Peter Fang
2026-09-29 10:08 ` Peter Fang
2026-09-28 18:23 ` Edgecombe, Rick P
2026-09-29 16:38 ` Peter Fang
2026-09-28 10:08 ` [PATCH v5 5/6] x86/tdx: Add a helper to query maximum Quote size Peter Fang
2026-09-28 18:35 ` Edgecombe, Rick P [this message]
2026-09-28 21:00 ` Peter Fang
2026-09-28 18:50 ` Edgecombe, Rick P
2026-09-28 21:13 ` Peter Fang
2026-09-28 21:25 ` Edgecombe, Rick P
2026-09-28 21:25 ` Edgecombe, Rick P
2026-09-28 22:47 ` Peter Fang
2026-09-28 23:01 ` Peter Fang
2026-09-29 10:40 ` Peter Fang
2026-09-28 20:32 ` Kuppuswamy Sathyanarayanan
2026-09-29 9:18 ` Peter Fang
2026-09-29 14:18 ` Dave Hansen
2026-09-29 15:38 ` Peter Fang
2026-09-28 10:08 ` [PATCH v5 6/6] virt: tdx-guest: Make the Quote buffer size dynamic Peter Fang
2026-09-28 20:37 ` Kuppuswamy Sathyanarayanan
2026-09-29 7:23 ` 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=8c573cf624eab4c76098f1ccc21afc3e9e40849c.camel@intel.com \
--to=rick.p.edgecombe@intel.com \
--cc=artem.bityutskiy@intel.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=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=seanjc@google.com \
--cc=tglx@kernel.org \
--cc=tony.lindgren@linux.intel.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.