On 26/11/2014 14:53, Radim Krčmář wrote: >>> > > get_xsave = native_xrstor(guest_xsave); xsave(aligned_userspace_buffer) >>> > > set_xsave = xrstor(aligned_userspace_buffer); native_xsave(guest_xsave) >>> > > >>> > > Could that work? >> > >> > It could, though it is more like >> > >> > get_fpu() >> > native_xrstor(guest_xsave) >> > xsave(buffer) >> > put_fpu() >> > >> > and vice versa. Also, the userspace buffer is mos likely not aligned, >> > so you need some kind of bounce buffer. It can be done if the CPUID >> > turns out to be a bottleneck, apart from that it'd most likely be slower. > Yeah, it was mostly making this code more future-proof ... it is easier > to convince xsave.h to export its structures if CPUID is the problem. > (I still see some hope for Linux, so performance isn't my primary goal.) > > I'm quite interested in CPUID now though, so I'll try to benchmark it, > someday. I'm not sure what is more future proof. :) I wonder if native_xrstor could be a problem the day XRSTORS actually sets/restores MSRs as the processor documentation promises. We do not need that to pass them to userspace via KVM_GET/SET_XSAVE because we have KVM_GET/SET_MSR for that, but it may cause problems if get_xsave uses XRSTORS and thus sets the MSRs to unanticipated values. Difficult to say without more information on Intel's plans. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html