On 13/10/21 08:15, Liu, Jing2 wrote:
After KVM passthrough XFD to guest, when vmexit opening irq window and KVM is interrupted, kernel softirq path can call kernel_fpu_begin() to touch xsave state. This function does XSAVES. If guest XFD[18] is 1, and with guest AMX state in register, then guest AMX state is lost by XSAVES.
Yes, the host value of XFD (which is zero) has to be restored after vmexit. See how KVM already handles SPEC_CTRL.
Passthrough of XFD is only enabled after the guest has caused an #NM vmexit and the full XSAVE state has been dynamically allocated, therefore it is always possible to do an XSAVES even from atomic context.
Paolo