From: Stanislav Lanci <pixo@xxxxxxxxxxxx> Populate threads/core_id/apic_ids/socket_id when CPUID_EXT3_TOPOEXT feature is supported. This is required to support hyperthreading feature on AMD CPUs. This is supported via CPUID_8000_001E extended functions. Signed-off-by: Stanislav Lanci <pixo@xxxxxxxxxxxx> Signed-off-by: Babu Moger <babu.moger@xxxxxxx> --- target/i386/cpu.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1485175..555ab83 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -3666,6 +3666,15 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, *edx = 0; } break; + case 0x8000001E: + if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_TOPOEXT) { + assert(cpu->core_id <= 255); + *eax = cpu->apic_id; + *ebx = (cs->nr_threads - 1) << 8 | cpu->core_id; + *ecx = cpu->socket_id; + *edx = 0; + } + break; case 0xC0000000: *eax = env->cpuid_xlevel2; *ebx = 0; -- 1.8.3.1