summaryrefslogtreecommitdiff
path: root/src/cpu/intel/common/hyperthreading.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/intel/common/hyperthreading.c')
-rw-r--r--src/cpu/intel/common/hyperthreading.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cpu/intel/common/hyperthreading.c b/src/cpu/intel/common/hyperthreading.c
index fce7576673..b9c17b6fa1 100644
--- a/src/cpu/intel/common/hyperthreading.c
+++ b/src/cpu/intel/common/hyperthreading.c
@@ -23,6 +23,14 @@ bool intel_ht_sibling(void)
if (!intel_ht_supported())
return false;
+ if (is_x2apic_mode()) {
+ if (cpuid_eax(0) >= 0xb) {
+ result = cpuid_ext(0xb, 0);
+ const uint32_t div = 1 << (result.eax & 0x1f);
+ return result.edx % div > 0;
+ }
+ }
+
apic_ids = 1;
if (cpuid_eax(0) >= 1)
apic_ids = (cpuid_ebx(1) >> 16) & 0xff;