On 10/22/2022 4:26 PM, Paolo Bonzini wrote:
Several fields of CPUID.8000001EH (ExtendedApicId in EAX[31:0], CoreId in EBX[7:0], NodeId in ECX[7:0]) vary on each processor, and it is simply impossible to fit the right values in the KVM_GET_SUPPORTED_CPUID API, in such a way that they can be passed to KVM_SET_CPUID2. The most likely way to avoid confusion in the guest is to zero out all the values. Userspace will most likely override it anyway if it want to present a specific topology to the guest. This patch essentially reverts commit 382409b4c43e ("kvm: x86: Include CPUID leaf 0x8000001e in kvm's supported CPUID").
Reviewed-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx>
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> --- arch/x86/kvm/cpuid.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index a0292ba650df..380b71600a9e 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -1193,6 +1193,9 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) entry->ebx = entry->ecx = entry->edx = 0; break; case 0x8000001e: + /* Different on each processor, just hide it. */ + entry->eax = entry->ebx = entry->ecx = 0; + entry->edx = 0; break; case 0x8000001F: if (!kvm_cpu_cap_has(X86_FEATURE_SEV)) {