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

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
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -677,10 +677,17 @@ static inline int __do_cpuid_func(struct kvm_cpuid_entry2 *entry, u32 function,
				goto out;

			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;

			entry[i].ecx = 0;
			entry[i].edx = 0;
			++*nent;