summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cpu/intel/model_206ax/acpi.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/cpu/intel/model_206ax/acpi.c b/src/cpu/intel/model_206ax/acpi.c
index 13ee20a728..b24f411f00 100644
--- a/src/cpu/intel/model_206ax/acpi.c
+++ b/src/cpu/intel/model_206ax/acpi.c
@@ -13,20 +13,10 @@
#include "model_206ax.h"
#include "chip.h"
-static int get_cores_per_package(void)
+static int get_logical_cores_per_package(void)
{
- struct cpuinfo_x86 c;
- struct cpuid_result result;
- int cores = 1;
-
- get_fms(&c, cpuid_eax(1));
- if (c.x86 != 6)
- return 1;
-
- result = cpuid_ext(0xb, 1);
- cores = result.ebx & 0xff;
-
- return cores;
+ msr_t msr = rdmsr(MSR_CORE_THREAD_COUNT);
+ return msr.lo & 0xffff;
}
static void generate_cstate_entries(acpi_cstate_t *cstates,
@@ -288,7 +278,7 @@ void generate_cpu_entries(const struct device *device)
{
int coreID, cpuID, pcontrol_blk = PMB0_BASE, plen = 6;
int totalcores = dev_count_cpu();
- int cores_per_package = get_cores_per_package();
+ int cores_per_package = get_logical_cores_per_package();
int numcpus = totalcores/cores_per_package;
printk(BIOS_DEBUG, "Found %d CPU(s) with %d core(s) each.\n",