Re: [PATCH 0/7] KVM: TDX: TD vcpu enter/exit
From: Binbin Wu
Date: Sun Nov 24 2024 - 20:26:50 EST
On 11/22/2024 4:14 AM, Adrian Hunter wrote:
[...]
- tdx_vcpu_enter_exit() calls guest_state_enter_irqoff()
and guest_state_exit_irqoff() which comments say should be
called from non-instrumentable code but noinst was removed
at Sean's suggestion:
https://lore.kernel.org/all/Zg8tJspL9uBmMZFO@xxxxxxxxxx/
noinstr is also needed to retain NMI-blocking by avoiding
instrumented code that leads to an IRET which unblocks NMIs.
A later patch set will deal with NMI VM-exits.
In https://lore.kernel.org/all/Zg8tJspL9uBmMZFO@xxxxxxxxxx, Sean mentioned:
"The reason the VM-Enter flows for VMX and SVM need to be noinstr is they do things
like load the guest's CR2, and handle NMI VM-Exits with NMIs blocks. None of
that applies to TDX. Either that, or there are some massive bugs lurking due to
missing code."
I don't understand why handle NMI VM-Exits with NMIs blocks doesn't apply to
TDX. IIUIC, similar to VMX, TDX also needs to handle the NMI VM-exit in the
noinstr section to avoid the unblock of NMIs due to instrumentation-induced
fault.