[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e781cabc-90ee-48cf-9a09-116a8edace1e@citrix.com>
Date: Tue, 15 Apr 2025 23:12:49 +0100
From: Andrew Cooper <andrew.cooper3@...rix.com>
To: Sean Christopherson <seanjc@...gle.com>,
Ross Philipson <ross.philipson@...cle.com>
Cc: linux-kernel@...r.kernel.org, x86@...nel.org,
linux-integrity@...r.kernel.org, linux-doc@...r.kernel.org,
linux-crypto@...r.kernel.org, kexec@...ts.infradead.org,
linux-efi@...r.kernel.org, iommu@...ts.linux.dev,
dpsmith@...rtussolutions.com, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, hpa@...or.com, dave.hansen@...ux.intel.com, ardb@...nel.org,
mjg59@...f.ucam.org, James.Bottomley@...senpartnership.com,
peterhuewe@....de, jarkko@...nel.org, jgg@...pe.ca, luto@...capital.net,
nivedita@...m.mit.edu, herbert@...dor.apana.org.au, davem@...emloft.net,
corbet@....net, ebiederm@...ssion.com, dwmw2@...radead.org,
baolu.lu@...ux.intel.com, kanth.ghatraju@...cle.com,
trenchboot-devel@...glegroups.com
Subject: Re: [PATCH v13 09/19] x86: Secure Launch kernel early boot stub
On 11/04/2025 10:40 pm, Sean Christopherson wrote:
> On Thu, Apr 10, 2025, Ross Philipson wrote:
>> + * instruction can return for a number of reasons. Test to see if it returned
>> + * because the monitor was written to.
>> + */
>> + monitor
>> +
>> +1:
>> + mfence
>> + mwait
>> + movl (%eax), %edx
> Why load the value into EDX? At a glance, the value is never consumed.
>
>> + testl %edx, %edx
>> + jz 1b
> This usage of MONITOR/MWAIT is flawed. The monitor needs to be re-armed in each
> loop, otherwise mwait will be a glorified nop.
>
> More importantly, the exit condition needs to be checked before monitor,
after monitor and before mwait.
But yes, the prior logic was definitely wonky.
> even on
> the first iteration. In the (probably extremely unlikely) scenario that the write
> to wake the CPU arrives before MONITOR is executed, this CPU may get stuck waiting
> indefinitely.
>
> E.g. something like:
>
>
> 1:
> monitor
> cmpl (%eax), 0
$0
Luckily, this will fail to assemble, rather than dereferencing 0.
~Andrew
> jnz 2f
> mwait
> jmp 1b
> 2:
Powered by blists - more mailing lists