Commit 91001d40 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: x86: Warn on zero-size save state for valid CPUID 0xD.N sub-leaf

WARN if the save state size for a valid XCR0-managed sub-leaf is zero,
which would indicate a KVM or CPU bug.  Add a comment to explain why KVM
WARNs so the reader doesn't have to tease out the relevant bits from
Intel's SDM and KVM's XCR0/XSS code.
Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 1893c941
...@@ -677,10 +677,17 @@ static inline int __do_cpuid_func(struct kvm_cpuid_entry2 *entry, u32 function, ...@@ -677,10 +677,17 @@ static inline int __do_cpuid_func(struct kvm_cpuid_entry2 *entry, u32 function,
goto out; goto out;
do_host_cpuid(&entry[i], function, idx); do_host_cpuid(&entry[i], function, idx);
if (entry[i].eax == 0)
continue; /*
if (WARN_ON_ONCE(entry[i].ecx & 1)) * The @supported check above should have filtered out
* invalid sub-leafs as well as sub-leafs managed by
* IA32_XSS MSR. Only XCR0-managed sub-leafs should
* reach this point, and they should have a non-zero
* save state size.
*/
if (WARN_ON_ONCE(!entry[i].eax || (entry[i].ecx & 1)))
continue; continue;
entry[i].ecx = 0; entry[i].ecx = 0;
entry[i].edx = 0; entry[i].edx = 0;
++*nent; ++*nent;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment