[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <75bdc4cd-c3c4-465f-8c53-da7cdb2fb633@intel.com>
Date: Thu, 5 Feb 2026 08:37:51 -0800
From: Dave Hansen <dave.hansen@...el.com>
To: Sean Christopherson <seanjc@...gle.com>, Chao Gao <chao.gao@...el.com>
Cc: linux-coco@...ts.linux.dev, linux-kernel@...r.kernel.org,
kvm@...r.kernel.org, x86@...nel.org, reinette.chatre@...el.com,
ira.weiny@...el.com, kai.huang@...el.com, dan.j.williams@...el.com,
yilun.xu@...ux.intel.com, sagis@...gle.com, vannapurve@...gle.com,
paulmck@...nel.org, nik.borisov@...e.com, zhenzhong.duan@...el.com,
rick.p.edgecombe@...el.com, kas@...nel.org, dave.hansen@...ux.intel.com,
vishal.l.verma@...el.com, Farrah Chen <farrah.chen@...el.com>,
Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>,
Borislav Petkov <bp@...en8.de>, "H. Peter Anvin" <hpa@...or.com>
Subject: Re: [PATCH v3 07/26] x86/virt/seamldr: Introduce a wrapper for
P-SEAMLDR SEAMCALLs
On 2/5/26 08:29, Sean Christopherson wrote:
> No, this isn't the explanation. I found the explanation in the pseudocode for
> SEAMRET. The "successful VM-Entry" path says this:
>
> current-VMCS = current-VMCS.VMCS-link-pointer
> IF inP_SEAMLDR == 1; THEN
> If current-VMCS != FFFFFFFF_FFFFFFFFH; THEN
> Ensure data for VMCS referenced by current-VMC is in memory
> Initialize implementation-specific data in all VMCS referenced by current-VMCS
> Set launch state of VMCS referenced by current-VMCS to “clear”
> current-VMCS = FFFFFFFF_FFFFFFFFH
> FI;
> inP_SEAMLDR = 0
> FI;
Yes, in version 002 of the spec. It wasn't there in 001.
The basic problem is that the SEAM VMCSes need to get flushed when the
TDX module is being loaded. The TDX module never loads itself, thus the
"inP_SEAMLDR == 1" check. It sounds like there was already an existing
thing in microcode to just flush VMCSes and invalidate "current-VMCS".
It was much easier for microcode to just jump over to that existing
thing than to surgically target the SEAM VMCSes, or somehow avoid
zapping "current-VMCS". It makes total sense for the microcoders to have
gone this route.
I'm seeing if it can get changed back to the 001 version so we just
don't even have to deal with this whole mess.
Powered by blists - more mailing lists