diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2024-02-14 10:44:11 +0100 |
---|---|---|
committer | Lean Sheng Tan <sheng.tan@9elements.com> | 2024-02-18 07:51:51 +0000 |
commit | 8bbc07ef232c329d811ae920953a9858c5b1821e (patch) | |
tree | 1599969180aa5add3c3b14645c6487b0c344e074 /src/soc | |
parent | eba383c20ce8f6f98981afbc40137571519a8571 (diff) |
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 <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80547
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/intel/xeon_sp/include/soc/numa.h | 2 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/spr/numa.c | 6 | ||||
-rw-r--r-- | 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 6aaf1723a3..aba3f0926b 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 169f4f848b..23f52c625f 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 de2d17500e..96855edd5a 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. */ |