> > On Nov 16, 2021, at 11:20 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > > Jing, > > On Wed, Nov 10 2021 at 13:01, Liu, Jing2 wrote: > > more thoughts. > >> Once we start passthrough the XFD MSR, we need to save/restore >> them at VM exit/entry time. If we immediately resume the guest >> without enabling interrupts/preemptions (exit fast-path), we have no >> issues. We don't need to save the MSR. > > Correct. > >> The question is how the host XFD MSR is restored while control is in >> KVM. >> >> The XSAVE(S) instruction saves the (guest) state component[x] as 0 or >> doesn't save when XFD[x] != 0. Accordingly, XRSTOR(S) cannot restore >> that (guest state). And it is possible that XFD != 0 and the guest is using >> extended feature at VM exit; > > You mean on creative guests which just keep AMX state alive and set > XFD[AMX] = 1 to later restore it to XFD[AMX] = 0? Typically a (usual) guest saves the AMX state for the previous process and sets XFD[AMX] = 1 for the next at context switch time, and a VM exit can happen anytime, e.g. right after XFD[AMX] = 1. But this case is okay because the state is already saved by the guest. If a (creative) guest wants to set XFD[AMX] = 1 for fun while keeping AMX state alive without saving the AXM state, it may lose the state after VM exit/entry. I think the right thing to do is to avoid such programming in the first place. Let me find out if we can add such notes in the programming references. --- Jun