From: Zhao Liu Date: Fri, 27 Jun 2025 03:51:27 +0000 (+0800) Subject: i386/cpu: Mark CPUID 0x80000007[EBX] as reserved for Intel X-Git-Tag: v10.1.0-rc0~21^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c52c470baba1a2cc2d96e14c9f845ec3d2ea8c4;p=thirdparty%2Fqemu.git i386/cpu: Mark CPUID 0x80000007[EBX] as reserved for Intel Per SDM, 80000007H EAX Reserved = 0. EBX Reserved = 0. ECX Reserved = 0. EDX Bits 07-00: Reserved = 0. Bit 08: Invariant TSC available if 1. Bits 31-09: Reserved = 0. EAX/EBX/ECX in CPUID 0x80000007 leaf are reserved for Intel. At present, EAX is reserved for AMD, too. And AMD hasn't used ECX in QEMU. So these 2 registers are both left as 0. Therefore, only fix the EBX and excode it as 0 for Intel. Signed-off-by: Zhao Liu Reviewed-by: Tao Su Link: https://lore.kernel.org/r/20250627035129.2755537-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- diff --git a/target/i386/cpu.c b/target/i386/cpu.c index ae508fa962..533c9d9abc 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8376,7 +8376,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, } case 0x80000007: *eax = 0; - *ebx = env->features[FEAT_8000_0007_EBX]; + if (cpu->vendor_cpuid_only_v2 && IS_INTEL_CPU(env)) { + *ebx = 0; + } else { + *ebx = env->features[FEAT_8000_0007_EBX]; + } *ecx = 0; *edx = env->features[FEAT_8000_0007_EDX]; break;