KVM: x86: skip host CPUID call for hypervisor leaves
Hypervisor leaves are always synthesized by __do_cpuid_func; just return zeroes and do not ask the host. Even on nested virtualization, a value from another hypervisor would be bogus, because all hypercalls and MSRs are processed by KVM. Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
9d68c6f60e
commit
2746a6b72a
@ -712,9 +712,17 @@ static struct kvm_cpuid_entry2 *do_host_cpuid(struct kvm_cpuid_array *array,
|
||||
|
||||
entry = &array->entries[array->nent++];
|
||||
|
||||
memset(entry, 0, sizeof(*entry));
|
||||
entry->function = function;
|
||||
entry->index = index;
|
||||
entry->flags = 0;
|
||||
switch (function & 0xC0000000) {
|
||||
case 0x40000000:
|
||||
/* Hypervisor leaves are always synthesized by __do_cpuid_func. */
|
||||
return entry;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cpuid_count(entry->function, entry->index,
|
||||
&entry->eax, &entry->ebx, &entry->ecx, &entry->edx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user