[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v9 5/7] i386: Add support for CPUID_8000_001E for AM
From: |
Babu Moger |
Subject: |
[Qemu-devel] [PATCH v9 5/7] i386: Add support for CPUID_8000_001E for AMD |
Date: |
Mon, 14 May 2018 11:41:54 -0500 |
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: Babu Moger <address@hidden>
Tested-by: Geoffrey McRae <address@hidden>
---
include/hw/i386/topology.h | 6 ++++++
target/i386/cpu.c | 8 ++++++++
2 files changed, 14 insertions(+)
diff --git a/include/hw/i386/topology.h b/include/hw/i386/topology.h
index 1ebaee0f76..4af746e50c 100644
--- a/include/hw/i386/topology.h
+++ b/include/hw/i386/topology.h
@@ -145,4 +145,10 @@ static inline apic_id_t x86_apicid_from_cpu_idx(unsigned
nr_cores,
return apicid_from_topo_ids(nr_cores, nr_threads, &topo);
}
+/* Definitions used on CPUID Leaf 0x8000001E */
+#define EXTENDED_APIC_ID(threads, socket_id, core_id, thread_id) \
+ ((threads) ? \
+ ((socket_id << 6) | (core_id << 1) | thread_id) : \
+ ((socket_id << 6) | core_id))
+
#endif /* HW_I386_TOPOLOGY_H */
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index c06a9f5ebe..18a7872b7d 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -4071,6 +4071,14 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,
uint32_t count,
break;
}
break;
+ case 0x8000001E:
+ assert(cpu->core_id <= 255);
+ *eax = EXTENDED_APIC_ID((cs->nr_threads - 1),
+ cpu->socket_id, cpu->core_id, cpu->thread_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;
--
2.17.0
- [Qemu-devel] [PATCH v9 0/7] i386: Enable TOPOEXT to support hyperthreading on AMD CPU, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 1/7] pc: add 2.13 machine types, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 3/7] i386: Populate AMD Processor Cache Information for cpuid 0x8000001D, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 2/7] i386: Add new property to control cache info, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 4/7] i386: Clean up cache CPUID code, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 5/7] i386: Add support for CPUID_8000_001E for AMD,
Babu Moger <=
- [Qemu-devel] [PATCH v9 7/7] i386: Remove generic SMT thread check, Babu Moger, 2018/05/14
- [Qemu-devel] [PATCH v9 6/7] i386: Enable TOPOEXT feature on AMD EPYC CPU, Babu Moger, 2018/05/14