Re: [RFC v2-fix 1/1] x86/tdx: Handle in-kernel MMIO

From: Andi Kleen
Date: Tue May 18 2021 - 13:28:04 EST



On 5/18/2021 9:10 AM, Andi Kleen wrote:

For now we only handle a subset of instructions that the kernel
uses for MMIO operations. User-space access triggers SIGBUS.
How do you know which instructions the kernel uses?
They're all in MMIO macros.
I've heard exactly the opposite from the TDX team in the past. What I
remember was a claim that one can not just leverage the MMIO macros as a
single point to avoid MMIO.  I remember being told that not all code in
the kernel that does MMIO uses these macros.  APIC MMIO's were called
out as a place that does not use the MMIO macros.

Yes x86 APIC has its own macros, but we don't use the MMIO based APIC, only X2APIC in TDX.

I must correct myself here. We actually use #VE to handle MSRs, or at least those that are not context switched by the TDX module. So there can be #VE nested in NMI in normal operation, since MSR accesses in NMI can happen.

I don't think it needs any changes to the code -- this should all work -- but we need to update the commit log to document this case.


-Andi