From 8bbc07ef232c329d811ae920953a9858c5b1821e Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Wed, 14 Feb 2024 10:44:11 +0100 Subject: soc/intel/xeon_sp/spr: Don't leak memory Only call fill_pds() once to prevent leaking memory. Previously it was called for every active stack on every socket. Only call dump_pds() once to prevent spamming the console with the same information. Drop the return value since it's always returning success. Change-Id: Ifa9609e9da086dc9731556014ea9b320b270d776 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/c/coreboot/+/80547 Tested-by: build bot (Jenkins) Reviewed-by: Shuo Liu Reviewed-by: Arthur Heymans --- src/soc/intel/xeon_sp/include/soc/numa.h | 2 +- src/soc/intel/xeon_sp/spr/numa.c | 6 ++---- src/soc/intel/xeon_sp/uncore.c | 12 +++++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/soc/intel/xeon_sp/include/soc/numa.h b/src/soc/intel/xeon_sp/include/soc/numa.h index 6aaf1723a361..aba3f0926bc3 100644 --- a/src/soc/intel/xeon_sp/include/soc/numa.h +++ b/src/soc/intel/xeon_sp/include/soc/numa.h @@ -54,7 +54,7 @@ struct proximity_domains { extern struct proximity_domains pds; void dump_pds(void); -enum cb_err fill_pds(void); +void fill_pds(void); /* * Return the total size of memory regions in generic initiator affinity diff --git a/src/soc/intel/xeon_sp/spr/numa.c b/src/soc/intel/xeon_sp/spr/numa.c index 169f4f848b60..23f52c625f39 100644 --- a/src/soc/intel/xeon_sp/spr/numa.c +++ b/src/soc/intel/xeon_sp/spr/numa.c @@ -25,7 +25,7 @@ void dump_pds(void) } } -enum cb_err fill_pds(void) +void fill_pds(void) { uint8_t num_sockets = soc_get_num_cpus(); uint8_t num_cxlnodes = get_cxl_node_count(); @@ -72,7 +72,7 @@ enum cb_err fill_pds(void) /* If there are no CXL nodes, we are done */ if (num_cxlnodes == 0) - return CB_SUCCESS; + return; /* There are CXL nodes, fill in generic initiator domain after the processors pds */ uint8_t skt_id, cxl_id; @@ -98,8 +98,6 @@ enum cb_err fill_pds(void) } } } - - return CB_SUCCESS; } /* diff --git a/src/soc/intel/xeon_sp/uncore.c b/src/soc/intel/xeon_sp/uncore.c index de2d17500e3d..96855edd5a42 100644 --- a/src/soc/intel/xeon_sp/uncore.c +++ b/src/soc/intel/xeon_sp/uncore.c @@ -329,11 +329,13 @@ static void mmapvtd_read_resources(struct device *dev) int index = 0; if (CONFIG(SOC_INTEL_HAS_CXL)) { - /* Construct NUMA data structure. This is needed for CXL. */ - if (fill_pds() != CB_SUCCESS) - pds.num_pds = 0; - - dump_pds(); + static bool once; + if (!once) { + /* Construct NUMA data structure. This is needed for CXL. */ + fill_pds(); + dump_pds(); + once = true; + } } /* Read standard PCI resources. */ -- cgit v1.2.3