Messages in this thread | | | Date | Thu, 04 Dec 2014 16:49:10 +0100 | From | Paolo Bonzini <> | Subject | Re: [PATCH v2 2/4] kvm: cpuid: fix the size of xsaves area |
| |
On 04/12/2014 14:14, Radim Krčmář wrote: > 2014-12-04 19:11+0800, Wanpeng Li: >> The section of CPUID(EAX=0xd, ECX=1) in the spec which commit >> f5c2290cd01e (KVM: cpuid: mask more bits in leaf 0xd and subleaves) >> mentioned is older than SDM. >> >> EBX: Bits 31-00: The size in bytes of the XSAVE area containing all >> states enabled by XCR0|IA32_XSS. > > Well, CPUs without XSAVES return 0 there, so we would emulate them > incorrectly ... (I don't mind much, it is reserved.)
I agree it should stay to 0 if !XSAVES && !XSAVEC.
For !XSAVEC && XSAVES there's no silicon, so we have some leeway.
>> The the value of EBX should represent the size of XCR0 related XSAVE >> area since IA32_XSS is not used currently. > > True, but 'supported' is not the state of XCR0, just its supremum. > EBX should be set in kvm_update_cpuid(), like [3/4] does. > (We can safely drop [2/4].)
Still, it's nice to be consistent and return a plausible value to userspace for KVM_GET_SUPPORTED_CPUID.
Paolo
| |