From d4b5ad0ce395c44432151bf1eb20adb78d4662a7 Mon Sep 17 00:00:00 2001 From: Felix Held Date: Tue, 25 Jan 2022 04:14:05 +0100 Subject: soc/amd/cezanne,picasso,sabrina: factor out get_threads_per_core This code is common to at least all Zen-based APUs (Picasso, Cezanne, Sabrina) and is also useful outside of the SoC-specific dynamic ACPI table generation code. Signed-off-by: Felix Held Change-Id: Ie96d4429fb6ed9223efed9b3c754e04052d7ca7c Reviewed-on: https://review.coreboot.org/c/coreboot/+/61357 Tested-by: build bot (Jenkins) Reviewed-by: Rob Barnes Reviewed-by: Chris Wang Reviewed-by: Eric Peers --- src/soc/amd/common/block/cpu/noncar/cpu.c | 7 +++++++ src/soc/amd/common/block/include/amdblocks/cpu.h | 1 + 2 files changed, 8 insertions(+) (limited to 'src/soc/amd/common') diff --git a/src/soc/amd/common/block/cpu/noncar/cpu.c b/src/soc/amd/common/block/cpu/noncar/cpu.c index 98926bff7e..b635cad750 100644 --- a/src/soc/amd/common/block/cpu/noncar/cpu.c +++ b/src/soc/amd/common/block/cpu/noncar/cpu.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include #include #include #include @@ -11,6 +12,12 @@ int get_cpu_count(void) return 1 + (cpuid_ecx(0x80000008) & 0xff); } +unsigned int get_threads_per_core(void) +{ + return 1 + ((cpuid_ebx(CPUID_EBX_CORE_ID) & CPUID_EBX_THREADS_MASK) + >> CPUID_EBX_THREADS_SHIFT); +} + void set_cstate_io_addr(void) { msr_t cst_addr; diff --git a/src/soc/amd/common/block/include/amdblocks/cpu.h b/src/soc/amd/common/block/include/amdblocks/cpu.h index 6576c3b993..de3fb84d12 100644 --- a/src/soc/amd/common/block/include/amdblocks/cpu.h +++ b/src/soc/amd/common/block/include/amdblocks/cpu.h @@ -5,6 +5,7 @@ void early_cache_setup(void); int get_cpu_count(void); +unsigned int get_threads_per_core(void); void set_cstate_io_addr(void); void write_resume_eip(void); -- cgit v1.2.3