i386/cpu: Mark EBX/ECX/EDX in CPUID 0x80000000 leaf as reserved for Intel
Per SDM,
80000000H EAX Maximum Input Value for Extended Function CPUID Information.
EBX Reserved.
ECX Reserved.
EDX Reserved.
EBX/ECX/EDX in CPUID 0x80000000 leaf are reserved. Intel is using 0x0
leaf to encode vendor.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Tao Su <tao1.su@linux.intel.com>
Link: https://lore.kernel.org/r/20250627035129.2755537-2-zhao1.liu@intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
8113b7f0e6
commit
a539cd2614
1 changed files with 9 additions and 3 deletions
|
|
@ -8280,9 +8280,15 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
|||
break;
|
||||
case 0x80000000:
|
||||
*eax = env->cpuid_xlevel;
|
||||
*ebx = env->cpuid_vendor1;
|
||||
*edx = env->cpuid_vendor2;
|
||||
*ecx = env->cpuid_vendor3;
|
||||
|
||||
if (cpu->vendor_cpuid_only_v2 &&
|
||||
(IS_INTEL_CPU(env) || IS_ZHAOXIN_CPU(env))) {
|
||||
*ebx = *ecx = *edx = 0;
|
||||
} else {
|
||||
*ebx = env->cpuid_vendor1;
|
||||
*edx = env->cpuid_vendor2;
|
||||
*ecx = env->cpuid_vendor3;
|
||||
}
|
||||
break;
|
||||
case 0x80000001:
|
||||
*eax = env->cpuid_version;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue