Re: [PATCH v2 2/8] x86/mtrr: support setting MTRR state for software defined MTRRs

From: Dave Hansen
Date: Mon Feb 13 2023 - 10:27:42 EST


On 2/13/23 07:11, Borislav Petkov wrote:
> On Mon, Feb 13, 2023 at 04:03:07PM +0100, Borislav Petkov wrote:
>>> Wouldn't !cpu_feature_enabled(X86_FEATURE_HYPERVISOR) be enough?
>>>
>>> I'm not sure we won't need that for TDX guests, too.
>> See, that's the problem. I wanna have it simple too. Lemme check with
>> dhansen.
> He says MTRRs are enabled in TDX guests: "X86_FEATURE_MTRR is fixed to
> 1 in TDX guests."
>
> So we will have to do the more finer-grained check I guess.

Yes, TDX guests see MTRRs as being supported. But, the TDX module also
appears to inject a #VE for all RDMSR or WRMSR's to the MTRRs. That
makes them effectively useless.

I actually don't know what the heck TDX guests are supposed to do if
they feel like mucking with the MSRs. The architecture (CPUID) is
essentially telling them: "Sure, go ahead MTRRs are fiiiiiiine". But
the TDX module is sitting there throwing exceptions (#VE) if the guest
tries to touch MTRRs.

It sounds like there are some guest<->host ABIs on Xen to help the
guests do this. But I don't see anything in the TDX "GHCI" about it.