RE: [patch 5/6] x86/fpu: Provide fpu_update_guest_xcr0/xfd()

From: Tian, Kevin
Date: Wed Dec 15 2021 - 20:00:45 EST


> From: Paolo Bonzini
> Sent: Wednesday, December 15, 2021 6:41 PM
>
> On 12/15/21 11:27, Paolo Bonzini wrote:
> > On 12/15/21 11:09, Thomas Gleixner wrote:
> >> Lets assume the restore order is XSTATE, XCR0, XFD:
> >>
> >>       XSTATE has everything in init state, which means the default
> >>       buffer is good enough
> >>
> >>       XCR0 has everything enabled including AMX, so the buffer is
> >>       expanded
> >>
> >>       XFD has AMX disable set, which means the buffer expansion was
> >>       pointless
> >>
> >> If we go there, then we can just use a full expanded buffer for KVM
> >> unconditionally and be done with it. That spares a lot of code.
> >
> > If we decide to use a full expanded buffer as soon as KVM_SET_CPUID2 is
> > done, that would work for me.
>
> Off-list, Thomas mentioned doing it even at vCPU creation as long as the
> prctl has been called. That is also okay and even simpler.

Make sense. It also avoids the #GP thing in the emulation path if just due
to reallocation error.

We'll follow this direction to do a quick update/test.

>
> There's also another important thing that hasn't been mentioned so far:
> KVM_GET_SUPPORTED_CPUID should _not_ include the dynamic bits in
> CPUID[0xD] if they have not been requested with prctl. It's okay to
> return the AMX bit, but not the bit in CPUID[0xD].
>

will do.

Thanks
Kevin