soc/intel/xeon_sp: Reduce code differences

Use get_platform_thread_count() instead of duplicated
get_thread_count(), that is also less precise.

Change-Id: I70c095c284aab6898b8351e82243f534963f333b
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84845
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Patrick Rudolph 2024-10-23 18:10:28 +02:00 committed by Lean Sheng Tan
commit b4a4a76a71
3 changed files with 3 additions and 49 deletions

View file

@ -173,22 +173,6 @@ static void pre_mp_init(void)
x86_mtrr_check();
}
static int get_thread_count(void)
{
unsigned int num_phys = 0, num_virts = 0;
cpu_read_topology(&num_phys, &num_virts);
printk(BIOS_SPEW, "Detected %u cores and %u threads\n", num_phys, num_virts);
/*
* Currently we do not know a way to figure out how many CPUs we have total
* on multi-socketed. So we pretend all sockets are populated with CPUs with
* same thread/core fusing.
* TODO: properly figure out number of active sockets OR refactor MPinit code
* to remove requirements of having to know total number of CPUs in advance.
*/
return num_virts * CONFIG_MAX_SOCKET;
}
static void post_mp_init(void)
{
/* Set Max Ratio */
@ -203,7 +187,7 @@ static void post_mp_init(void)
static const struct mp_ops mp_ops = {
.pre_mp_init = pre_mp_init,
.get_cpu_count = get_thread_count,
.get_cpu_count = get_platform_thread_count,
.get_smm_info = get_smm_info,
.pre_mp_smm_init = smm_southbridge_clear_state,
.relocation_handler = smm_relocation_handler,

View file

@ -63,21 +63,6 @@ static void pre_mp_init(void)
x86_mtrr_check();
}
static int get_thread_count(void)
{
unsigned int num_phys = 0, num_virts = 0;
/*
* This call calculates the thread count which is corresponding to num_virts
* (logical cores), while num_phys is corresponding to physical cores (in SMT
* system, one physical core has multiple threads, a.k.a. logical cores).
* Hence num_phys is not actually used.
*/
cpu_read_topology(&num_phys, &num_virts);
printk(BIOS_SPEW, "Detected %u cores and %u threads\n", num_phys, num_virts);
return num_virts * soc_get_num_cpus();
}
static void post_mp_init(void)
{
if (CONFIG(HAVE_SMI_HANDLER))
@ -86,7 +71,7 @@ static void post_mp_init(void)
static const struct mp_ops mp_ops = {
.pre_mp_init = pre_mp_init,
.get_cpu_count = get_thread_count,
.get_cpu_count = get_platform_thread_count,
#if CONFIG(HAVE_SMI_HANDLER)
.get_smm_info = get_smm_info,
.pre_mp_smm_init = smm_southbridge_clear_state,

View file

@ -220,21 +220,6 @@ static void pre_mp_init(void)
x86_mtrr_check();
}
static int get_thread_count(void)
{
unsigned int num_phys = 0, num_virts = 0;
/*
* This call calculates the thread count which is corresponding to num_virts
* (logical cores), while num_phys is corresponding to physical cores (in SMT
* system, one physical core has multiple threads, a.k.a. logical cores).
* Hence num_phys is not actually used.
*/
cpu_read_topology(&num_phys, &num_virts);
printk(BIOS_SPEW, "Detected %u cores and %u threads\n", num_phys, num_virts);
return num_virts * soc_get_num_cpus();
}
static void post_mp_init(void)
{
/* Set Max Ratio */
@ -249,7 +234,7 @@ static void post_mp_init(void)
static const struct mp_ops mp_ops = {
.pre_mp_init = pre_mp_init,
.get_cpu_count = get_thread_count,
.get_cpu_count = get_platform_thread_count,
#if CONFIG(HAVE_SMI_HANDLER)
.get_smm_info = get_smm_info,
.pre_mp_smm_init = smm_southbridge_clear_state,