From: Chao Gao <chao.gao@intel.com>
To: Kiryl Shutsemau <kas@kernel.org>
Cc: <linux-kernel@vger.kernel.org>, <linux-coco@lists.linux.dev>,
<kvm@vger.kernel.org>, <binbin.wu@linux.intel.com>,
<dan.j.williams@intel.com>, <dave.hansen@linux.intel.com>,
<ira.weiny@intel.com>, <kai.huang@intel.com>,
<nik.borisov@suse.com>, <paulmck@kernel.org>,
<pbonzini@redhat.com>, <reinette.chatre@intel.com>,
<rick.p.edgecombe@intel.com>, <sagis@google.com>,
<seanjc@google.com>, <tony.lindgren@linux.intel.com>,
<vannapurve@google.com>, <vishal.l.verma@intel.com>,
<yilun.xu@linux.intel.com>, Thomas Gleixner <tglx@kernel.org>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
<x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH v5 08/22] x86/virt/seamldr: Allocate and populate a module update request
Date: Wed, 18 Mar 2026 16:50:34 +0800 [thread overview]
Message-ID: <abpnWkENgaWoofZV@intel.com> (raw)
In-Reply-To: <abkvOYQIi2RvEYh8@thinkstation>
>> + ptr = sig;
>> + for (i = 0; i < sig_size / SZ_4K; i++) {
>> + /*
>> + * Don't assume @sig is page-aligned although it is 4KB-aligned.
>> + * Always add the in-page offset to get the physical address.
>> + */
>
>I don't follow this. If @sig is 4k aligned in VA, it is page aligned.
Dan's concern was that PAGE_SIZE is not guaranteed to be 4096.
I agree that PAGE_SIZE is 4K on x86 today. But to address that concern, I saw
two options:
1. Add WARN_ON_ONCE(PAGE_SIZE != SZ_4K), or
2. Handle it as in the code above.
I didn't find existing code using option 1 in x86, so I chose option 2.
>
>If you want to handle case when @sig is not 4k aligned, than this is
>broken. You need to bump ptr to the next 4k boundary, not by 4k.
@sig is 4KB aligned.
<snip>
>> +static struct seamldr_params *init_seamldr_params(const u8 *data, u32 size)
>> +{
>> + const struct tdx_blob *blob = (const void *)data;
>> + int module_size, sig_size;
>> + const void *sig, *module;
>> +
>> + /* Ensure the size is valid otherwise reading any field from the blob may overflow. */
>> + if (size <= sizeof(struct tdx_blob) || size <= blob->offset_of_module)
>> + return ERR_PTR(-EINVAL);
>> +
>> + if (blob->version != TDX_BLOB_VERSION_1) {
>> + pr_err("unsupported blob version: %x\n", blob->version);
>> + return ERR_PTR(-EINVAL);
>> + }
>> +
>> + /* Split the blob into a sigstruct and a module. */
>> + sig = blob->data;
>> + sig_size = blob->offset_of_module - sizeof(struct tdx_blob);
>> + module = data + blob->offset_of_module;
>> + module_size = size - blob->offset_of_module;
>> +
>> + if (sig_size <= 0 || module_size <= 0 || blob->length != size)
>> + return ERR_PTR(-EINVAL);
>
>Maybe add a comment somewhere that block->offset_of_module is relative
>to start of struct tdx_blob, not blob->data and blob->length includes
>length of struct tdx_blob.
>
>It can be either way and it is better to give a reader a hint.
Sure. Will do.
next prev parent reply other threads:[~2026-03-18 8:50 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-15 13:58 [PATCH v5 00/22] Runtime TDX module update support Chao Gao
2026-03-15 13:58 ` [PATCH v5 01/22] x86/virt/tdx: Move low level SEAMCALL helpers out of <asm/tdx.h> Chao Gao
2026-03-16 12:41 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 02/22] coco/tdx-host: Introduce a "tdx_host" device Chao Gao
2026-03-16 12:48 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 03/22] coco/tdx-host: Expose TDX module version Chao Gao
2026-03-16 12:54 ` Kiryl Shutsemau
2026-03-18 21:37 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 04/22] x86/virt/seamldr: Introduce a wrapper for P-SEAMLDR SEAMCALLs Chao Gao
2026-03-16 13:05 ` Kiryl Shutsemau
2026-03-17 0:43 ` Chao Gao
2026-03-17 9:59 ` Kiryl Shutsemau
2026-03-18 7:13 ` Xiaoyao Li
2026-03-18 9:34 ` Chao Gao
2026-03-19 3:02 ` Xiaoyao Li
2026-03-19 7:14 ` Chao Gao
2026-03-18 21:38 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 05/22] x86/virt/seamldr: Retrieve P-SEAMLDR information Chao Gao
2026-03-16 13:12 ` Kiryl Shutsemau
2026-03-17 1:05 ` Chao Gao
2026-03-17 10:00 ` Kiryl Shutsemau
2026-03-18 7:53 ` Xiaoyao Li
2026-03-18 8:57 ` Chao Gao
2026-03-18 21:40 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 06/22] coco/tdx-host: Expose P-SEAMLDR information via sysfs Chao Gao
2026-03-17 10:06 ` Kiryl Shutsemau
2026-03-17 15:34 ` Dave Hansen
2026-03-18 6:54 ` Chao Gao
2026-03-18 8:20 ` Xiaoyao Li
2026-03-18 9:10 ` Chao Gao
2026-03-18 9:28 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 07/22] coco/tdx-host: Implement firmware upload sysfs ABI for TDX module updates Chao Gao
2026-03-17 10:20 ` Kiryl Shutsemau
2026-03-18 8:28 ` Chao Gao
2026-03-18 21:45 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 08/22] x86/virt/seamldr: Allocate and populate a module update request Chao Gao
2026-03-17 10:59 ` Kiryl Shutsemau
2026-03-18 8:50 ` Chao Gao [this message]
2026-03-18 10:58 ` Kiryl Shutsemau
2026-03-19 7:24 ` Chao Gao
2026-03-19 12:58 ` Kiryl Shutsemau
2026-03-18 21:36 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 09/22] x86/virt/seamldr: Introduce skeleton for TDX module updates Chao Gao
2026-03-18 22:11 ` Huang, Kai
2026-03-19 13:15 ` Kiryl Shutsemau
2026-03-20 8:10 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 10/22] x86/virt/seamldr: Abort updates if errors occurred midway Chao Gao
2026-03-19 13:19 ` Kiryl Shutsemau
2026-03-20 8:12 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 11/22] x86/virt/seamldr: Shut down the current TDX module Chao Gao
2026-03-19 13:24 ` Kiryl Shutsemau
2026-03-20 8:21 ` Chao Gao
2026-03-23 1:33 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 12/22] x86/virt/tdx: Reset software states during TDX module shutdown Chao Gao
2026-03-16 9:06 ` Huang, Kai
2026-03-17 8:27 ` Chao Gao
2026-03-17 11:08 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 13/22] x86/virt/seamldr: Install a new TDX module Chao Gao
2026-03-19 13:32 ` Kiryl Shutsemau
2026-03-23 2:14 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 14/22] x86/virt/seamldr: Do TDX per-CPU initialization after updates Chao Gao
2026-03-19 13:33 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 15/22] x86/virt/tdx: Restore TDX module state Chao Gao
2026-03-19 13:37 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 16/22] x86/virt/tdx: Update tdx_sysinfo and check features post-update Chao Gao
2026-03-19 13:43 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 17/22] x86/virt/tdx: Avoid updates during update-sensitive operations Chao Gao
2026-03-19 14:00 ` Kiryl Shutsemau
2026-03-20 8:00 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 18/22] coco/tdx-host: Don't expose P-SEAMLDR features on CPUs with erratum Chao Gao
2026-03-19 14:02 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 19/22] x86/virt/tdx: Enable TDX module runtime updates Chao Gao
2026-03-19 14:03 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 20/22] coco/tdx-host: Document TDX module update compatibility criteria Chao Gao
2026-03-19 14:04 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 21/22] x86/virt/tdx: Document TDX module update Chao Gao
2026-03-19 14:05 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 22/22] x86/virt/seamldr: Log TDX module update failures Chao Gao
2026-03-19 14:06 ` Kiryl Shutsemau
2026-03-20 8:31 ` Chao Gao
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=abpnWkENgaWoofZV@intel.com \
--to=chao.gao@intel.com \
--cc=binbin.wu@linux.intel.com \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=ira.weiny@intel.com \
--cc=kai.huang@intel.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=nik.borisov@suse.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=reinette.chatre@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=sagis@google.com \
--cc=seanjc@google.com \
--cc=tglx@kernel.org \
--cc=tony.lindgren@linux.intel.com \
--cc=vannapurve@google.com \
--cc=vishal.l.verma@intel.com \
--cc=x86@kernel.org \
--cc=yilun.xu@linux.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.