> From: Wang, Wei W <wei.w.wang@xxxxxxxxx> > Sent: Wednesday, December 29, 2021 10:58 AM > > > > Reuse KVM_SET_XSAVE for both old/new formats by reimplementing it to > > > do properly-sized memdup_user() based on the guest fpu container. > > > > I'm confused, the first sentence says KVM_SET_XSAVE isn't suitable, the > > second says it can be reused with minimal effort. > > Probably "doesn't support" sounds better than "isn't suitable" above. But > plan to reword a bit: > > With KVM_CAP_XSAVE, userspace uses a hardcoded 4KB buffer to get/set > xstate data from/to > KVM. This doesn't work when dynamic features (e.g. AMX) are used by the > guest, as KVM uses > a full expanded xstate buffer for the guest fpu emulation, which is larger > than 4KB. > > Add KVM_CAP_XSAVE2, and userspace gets the required xstate buffer size > from KVM via > KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2). KVM_SET_XSAVE is extended > with the support to > work with larger xstate data size passed from userspace. KVM_GET_XSAVE2 > is preferred to > extending KVM_GET_XSAVE to work with large buffer size for backward- > compatible considerations. > (Link: https://lkml.org/lkml/2021/12/15/510) > > Also, update the api doc with the new KVM_GET_XSAVE2 ioctl. > Revised to: -- With KVM_CAP_XSAVE, userspace uses a hardcoded 4KB buffer to get/set xstate data from/to KVM. This doesn't work when dynamic xfeatures (e.g. AMX) are exposed to the guest as they require a larger buffer size. Introduce a new capability (KVM_CAP_XSAVE2). Userspace VMM gets the required xstate buffer size via KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2). KVM_SET_XSAVE is extended to work with both legacy and new capabilities by doing properly-sized memdup_user() based on the guest fpu container. KVM_GET_XSAVE is kept for backward-compatible reason. Instead, KVM_GET_XSAVE2 is introduced under KVM_CAP_XSAVE2 as the preferred interface for getting xstate buffer (4KB or larger size) from KVM. (Link: https://lkml.org/lkml/2021/12/15/510) Also, update the api doc with the new KVM_GET_XSAVE2 ioctl -- Thanks Kevin