summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2021-11-03 16:03:45 +0100
committerPatrick Georgi <pgeorgi@google.com>2021-11-05 12:39:12 +0000
commit81beeae96034af5a4112180fba6e3a9a7ce4b42f (patch)
tree78a1faad649f919caf6a92514af9d518f476c8a8
parentd453da268dbbb1c3b758904c62b3d1a0f8754a08 (diff)
soc/intel/denverton_ns: Refactor `detect_num_cpus_via_cpuid()`
Rewrite level type check and use unsigned types. In addition, also use unsigned types in the `get_cpu_count()` function. Change-Id: I63f236f0f94f9412ec03ae25781befe619cf7c1f Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/58913 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
-rw-r--r--src/soc/intel/denverton_ns/cpu.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/soc/intel/denverton_ns/cpu.c b/src/soc/intel/denverton_ns/cpu.c
index 44cb297c6a..126a1c651f 100644
--- a/src/soc/intel/denverton_ns/cpu.c
+++ b/src/soc/intel/denverton_ns/cpu.c
@@ -162,21 +162,20 @@ static void get_smm_info(uintptr_t *perm_smbase, size_t *perm_smsize,
*smm_save_state_size = sizeof(em64t100_smm_state_save_area_t);
}
-static int detect_num_cpus_via_cpuid(void)
+static unsigned int detect_num_cpus_via_cpuid(void)
{
- register int ecx = 0;
- struct cpuid_result leaf_b;
+ unsigned int ecx = 0;
while (1) {
- leaf_b = cpuid_ext(0xb, ecx);
+ const struct cpuid_result leaf_b = cpuid_ext(0xb, ecx);
/* Processor doesn't have hyperthreading so just determine the
- * number of cores by from level type (ecx[15:8] == * 2). */
- if ((leaf_b.ecx & 0xff00) == 0x0200)
- break;
+ number of cores from level type (ecx[15:8] == 2). */
+ if ((leaf_b.ecx >> 8 & 0xff) == 2)
+ return leaf_b.ebx & 0xffff;
+
ecx++;
}
- return (leaf_b.ebx & 0xffff);
}
static int detect_num_cpus_via_mch(void)
@@ -209,11 +208,11 @@ static int detect_num_cpus_via_mch(void)
/* Find CPU topology */
int get_cpu_count(void)
{
- int num_cpus = detect_num_cpus_via_mch();
+ unsigned int num_cpus = detect_num_cpus_via_mch();
- if (num_cpus <= 0 || num_cpus > CONFIG_MAX_CPUS) {
+ if (num_cpus == 0 || num_cpus > CONFIG_MAX_CPUS) {
num_cpus = detect_num_cpus_via_cpuid();
- printk(BIOS_DEBUG, "Number of Cores (CPUID): %d.\n", num_cpus);
+ printk(BIOS_DEBUG, "Number of Cores (CPUID): %u.\n", num_cpus);
}
return num_cpus;
}