Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/61357 )
Change subject: soc/amd/cezanne,picasso,sabrina: factor out get_threads_per_core ......................................................................
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 felix-coreboot@felixheld.de Change-Id: Ie96d4429fb6ed9223efed9b3c754e04052d7ca7c Reviewed-on: https://review.coreboot.org/c/coreboot/+/61357 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Rob Barnes robbarnes@google.com Reviewed-by: Chris Wang chris.wang@amd.corp-partner.google.com Reviewed-by: Eric Peers epeers@google.com --- M src/soc/amd/cezanne/acpi.c M src/soc/amd/common/block/cpu/noncar/cpu.c M src/soc/amd/common/block/include/amdblocks/cpu.h M src/soc/amd/picasso/acpi.c M src/soc/amd/sabrina/acpi.c 5 files changed, 11 insertions(+), 9 deletions(-)
Approvals: build bot (Jenkins): Verified Chris Wang: Looks good to me, but someone else must approve Eric Peers: Looks good to me, but someone else must approve Rob Barnes: Looks good to me, approved
diff --git a/src/soc/amd/cezanne/acpi.c b/src/soc/amd/cezanne/acpi.c index d390ca4..47f05b4 100644 --- a/src/soc/amd/cezanne/acpi.c +++ b/src/soc/amd/cezanne/acpi.c @@ -320,9 +320,7 @@ }, };
- threads_per_core = ((cpuid_ebx(CPUID_EBX_CORE_ID) & CPUID_EBX_THREADS_MASK) - >> CPUID_EBX_THREADS_SHIFT) - + 1; + threads_per_core = get_threads_per_core(); pstate_count = get_pstate_info(pstate_values, pstate_xpss_values); logical_cores = get_cpu_count();
diff --git a/src/soc/amd/common/block/cpu/noncar/cpu.c b/src/soc/amd/common/block/cpu/noncar/cpu.c index 98926bf..b635cad 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 <amdblocks/cpu.h> +#include <cpu/amd/cpuid.h> #include <cpu/cpu.h> #include <cpu/x86/msr.h> #include <cpu/amd/msr.h> @@ -11,6 +12,12 @@ 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 6576c3b..de3fb84 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);
diff --git a/src/soc/amd/picasso/acpi.c b/src/soc/amd/picasso/acpi.c index fd95246..622aa16 100644 --- a/src/soc/amd/picasso/acpi.c +++ b/src/soc/amd/picasso/acpi.c @@ -316,9 +316,7 @@ }, };
- threads_per_core = ((cpuid_ebx(CPUID_EBX_CORE_ID) & CPUID_EBX_THREADS_MASK) - >> CPUID_EBX_THREADS_SHIFT) - + 1; + threads_per_core = get_threads_per_core(); pstate_count = get_pstate_info(pstate_values, pstate_xpss_values); logical_cores = get_cpu_count();
diff --git a/src/soc/amd/sabrina/acpi.c b/src/soc/amd/sabrina/acpi.c index ea67bcf..8fbe624 100644 --- a/src/soc/amd/sabrina/acpi.c +++ b/src/soc/amd/sabrina/acpi.c @@ -322,9 +322,7 @@ }, };
- threads_per_core = ((cpuid_ebx(CPUID_EBX_CORE_ID) & CPUID_EBX_THREADS_MASK) - >> CPUID_EBX_THREADS_SHIFT) - + 1; + threads_per_core = get_threads_per_core(); pstate_count = get_pstate_info(pstate_values, pstate_xpss_values); logical_cores = get_cpu_count();