On Monday, December 20, 2021 5:04 PM, Paolo Bonzini wrote: > On 12/17/21 16:29, Jing Liu wrote: > > +/* for KVM_CAP_XSAVE and KVM_CAP_XSAVE2 */ > > struct kvm_xsave { > > + /* > > + * KVM_GET_XSAVE only uses the first 4096 bytes. > > + * > > + * KVM_GET_XSAVE2 must have the size match what is returned by > > + * KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2). > > + * > > + * KVM_SET_XSAVE uses the extra field if guest_fpu::fpstate::size > > + * exceeds 4096 bytes. > > KVM_GET_XSAVE2 and KVM_SET_XSAVE respectively write and read as many > bytes as are returned by KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2), when > invoked on the vm file descriptor. Currently, > KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2) will only return a value that is > greater than 4096 bytes if any dynamic features have been enabled with > ``arch_prctl()``; this however may change in the future. Would this make people think that KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2) doesn’t return the value (i.e. return 0) if it is smaller than 4096? (i.e. KVM_GET_XSAVE2 doesn't work with size < 4096, which isn’t true) I plan to just reword a bit: Currently, KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2) will only return a size value, and the value is greater than 4096 bytes if any dynamic features have been enabled with ``arch_prctl()``. More types of values could be returned in the future. Thanks, Wei