Re: [PATCHv6 07/30] x86/traps: Add #VE support for TDX guest

From: Thomas Gleixner
Date: Fri Mar 18 2022 - 10:19:46 EST


On Thu, Mar 17 2022 at 21:21, Peter Zijlstra wrote:
> On Thu, Mar 17, 2022 at 08:33:54PM +0300, Kirill A. Shutemov wrote:
>> - in NMI entry code (asm_exc_nmi()) before NMI nesting is safe:
>> + for NMI from user mode, before switched to thread stack
>> + for NMI from kernel, up to end_repead_nmi
>>
>> After that points #VE is safe.
>
> In what way is it guaranteed that #VE isn't raised in those places? What
> does an auditor / future coder looking to changes things, need to
> consider to keep this so.
>
> From vague memories #VE can be raised on any memop, loading the stack
> address in the syscall-gap is a memop. What makes that special? Can we
> get a comment _there_ to explain how this is safe such that we can keep
> it so?
>
> Same for the NMI path I suppose.

#VE is raised by HLT, CPUID, I/O-Port access, MSR read/write, EPT violations

So in the hairy places:

- HLT: No business
- I/O Ports: That would be outright stupid to use

- CPUID: Should never be used - Emphasis on should :)
- MSRs: Same as CPUID

- EPT: Well....

Thanks,

Thomas