From bdfa35315fc4b01dcd5ee0fee958c529ad4dacb7 Mon Sep 17 00:00:00 2001 From: Wonkyu Kim Date: Mon, 22 Mar 2021 20:08:11 -0700 Subject: [PATCH] cpu/intel/common: use lapicid api Use lapicid api to support both x2apic mode and apic mode BUG=None BRANCH=None TEST=boot to OS and check apic mode cat /proc/cpuinfo | grep "apicid" Signed-off-by: Wonkyu Kim Change-Id: I5ca5b09ae67941adcc07dfafdfe4ba78b0f81009 Reviewed-on: https://review.coreboot.org/c/coreboot/+/51725 Reviewed-by: Patrick Georgi Tested-by: build bot (Jenkins) --- src/cpu/intel/common/hyperthreading.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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;