soc/intel/xeon_sp: Move proximity domain setting up

Move proximity domain setting up to ahead of attach_iio_stacks()
so that proximity domain info could be ready before
attach_iio_stacks()/create_xeonsp_domains().

For example in SPR, is_iio_cxl_stack_res() refers to proximity
domain info, and it will be called in create_xeonsp_domains().

TEST=Build and boot on intel/archercity

No significant boot log difference except for proximity domain
dump info display are moved ahead (with correct contents).

Change-Id: I594f0ec0c23e3b62c3bdd917ebf6e45be6e4069e
Signed-off-by: Shuo Liu <shuo.liu@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82267
Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Shuo Liu
2024-05-10 04:35:41 +08:00
committed by Lean Sheng Tan
parent a839eb116b
commit 0f87730a94
8 changed files with 21 additions and 15 deletions

View File

@@ -12,6 +12,7 @@
#include <intelblocks/p2sb.h>
#include <soc/acpi.h>
#include <soc/chip_common.h>
#include <soc/numa.h>
#include <soc/pch.h>
#include <soc/soc_pch.h>
#include <soc/ramstage.h>
@@ -167,6 +168,7 @@ static void chip_init(void *data)
printk(BIOS_DEBUG, "coreboot: calling fsp_silicon_init\n");
fsp_silicon_init();
setup_pds();
attach_iio_stacks();
override_hpet_ioapic_bdf();

View File

@@ -4,6 +4,7 @@
#include <intelblocks/pmclib.h>
#include <soc/pm.h>
#include <soc/chip_common.h>
#include <soc/numa.h>
#include <soc/ramstage.h>
#include "chip.h"
@@ -38,6 +39,7 @@ static void chip_init(void *data)
printk(BIOS_DEBUG, "coreboot: calling fsp_silicon_init\n");
fsp_silicon_init();
setup_pds();
attach_iio_stacks();
pch_enable_ioapic();

View File

@@ -57,9 +57,7 @@ struct proximity_domains {
extern struct proximity_domains pds;
void dump_pds(void);
void fill_pds(void);
void fill_pd_distances(void);
void setup_pds(void);
/*
* Return the total size of memory regions in generic initiator affinity

View File

@@ -11,7 +11,7 @@
#include <soc/util.h>
#include <types.h>
void dump_pds(void)
static void dump_pds(void)
{
printk(BIOS_DEBUG, "====== Proximity Domain Dump ======\n");
printk(BIOS_DEBUG, "number of proximity domains: %d\n", pds.num_pds);
@@ -25,7 +25,7 @@ void dump_pds(void)
}
}
void fill_pds(void)
static void fill_pds(void)
{
uint8_t num_sockets = soc_get_num_cpus();
uint8_t num_cxlnodes = get_cxl_node_count();
@@ -151,7 +151,7 @@ uint32_t memory_to_pd(const struct SystemMemoryMapElement *mem)
#define PD_DISTANCE_MAX 0xFF
#define PD_DISTANCE_IO_EXTRA 0x01
void fill_pd_distances(void)
static void fill_pd_distances(void)
{
for (int i = 0; i < pds.num_pds; i++) {
for (int j = 0; j < pds.num_pds; j++) {
@@ -173,3 +173,10 @@ void fill_pd_distances(void)
}
}
}
void setup_pds(void)
{
fill_pds();
fill_pd_distances();
dump_pds();
}

View File

@@ -7,6 +7,7 @@
#include <intelblocks/acpi.h>
#include <soc/acpi.h>
#include <soc/chip_common.h>
#include <soc/numa.h>
#include <soc/pch.h>
#include <soc/soc_pch.h>
#include <soc/ramstage.h>
@@ -42,6 +43,7 @@ static void soc_init(void *data)
printk(BIOS_DEBUG, "coreboot: calling fsp_silicon_init\n");
fsp_silicon_init();
setup_pds();
attach_iio_stacks();
override_hpet_ioapic_bdf();

View File

@@ -125,6 +125,7 @@ static void chip_init(void *data)
printk(BIOS_DEBUG, "coreboot: calling fsp_silicon_init\n");
fsp_silicon_init();
setup_pds();
attach_iio_stacks();
override_hpet_ioapic_bdf();

View File

@@ -90,6 +90,9 @@ bool is_ioat_iio_stack_res(const STACK_RES *res)
*/
bool is_iio_cxl_stack_res(const STACK_RES *res)
{
/* pds should be setup ahead of this call */
assert(pds.num_pds);
for (uint8_t i = 0; i < pds.num_pds; i++) {
if (pds.pds[i].pd_type == PD_TYPE_PROCESSOR)
continue;

View File

@@ -336,15 +336,6 @@ static void mmapvtd_read_resources(struct device *dev)
{
int index = 0;
static bool once;
if (!once) {
/* Construct NUMA data structure. This is needed for CXL. */
fill_pds();
fill_pd_distances();
dump_pds();
once = true;
}
/* Read standard PCI resources. */
pci_dev_read_resources(dev);