Re: [patch 13/31] x86/fpu: Move KVMs FPU swapping to FPU core

Paolo Bonzini
2021-10-14T11:33:59Z

On 14/10/21 13:21, Liu, Jing2 wrote:
> Got it, the principle is once XCR0[n]=1 and XFD[n]=0, then guest is allowed
> to use the dynamic XSAVE state, thus KVM must prepare all things well
> before. This probably happens shortly after guest #NM.
>
> Only one thing: it seems we assume that vcpu->arch.xfd is guest runtime
> value. And before guest initializes XFD, KVM provides
> vcpu->arch.xfd[18]=1, right? But the spec asks XFD reset value as zero.
> If so, between guest init XCR0 to 1 and init XFD to 1, it's XCR0[n]=1 and
> XFD[n]=0. If a guest never init XFD and directly use dynamic state...
>
> Or do we want to provide guest a XFD[18]=1 value at the very beginning?

On reset the guest value has to be zero. For Linux, which we control,
we probably want to write the bit in XFD before XSETBV. For other OSes
there's nothing we can do, but hopefully they make similar considerations.

Paolo