Paolo Bonzini <pbonzini@xxxxxxxxxx> writes:
Hypervisor leaves are always synthesized by __do_cpuid_func. Just return
zeroes and do not ask the host, it would return a bogus value anyway if
it were used.
Why always bogus? Nested virtualization is a thing, isn't it? :-) It
is, however, true that __do_cpuid_func() will throw the result away.
FWIW, 0x40000XXX leaves are not the only ones where we don't use
do_host_cpuid() result at all, e.g. I can see that we also return
constant values for 0x3, 0x5, 0x6, 0xC0000002 - 0xC0000004.
Out of pure curiosity, what's the motivation for the patch? We seem to
only use __do_cpuid_func() to serve KVM_GET_SUPPORTED_CPUID/KVM_GET_EMULATED_CPUID,
not for kvm_emulate_cpuid() so these few CPUID calls we save here should
not give us any performace gain..
+
+ default:
+ break;
+ }
cpuid_count(entry->function, entry->index,
&entry->eax, &entry->ebx, &entry->ecx, &entry->edx);
The patch seems to be correct, so
Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>