From dfd724f98e9b0e1e4b83fe345d77db9b31eba1c3 Mon Sep 17 00:00:00 2001 From: Brian Silver Date: Mon, 15 Aug 2016 12:39:58 -0500 Subject: Change eff_memory_size to account for non-initialized attrs Change-Id: I1584de8060e884f10acc249c7a57b956ef3ce1ca Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28262 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: ANDRE A. MARIN Reviewed-by: Dean Sanner Reviewed-by: Jennifer A. Stofer Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28266 Tested-by: FSP CI Jenkins Reviewed-by: Stephen M. Cprek --- .../hwp/memory/lib/eff_config/memory_size.C | 27 +++++++++------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/memory_size.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/memory_size.C index 28d035b18..0120de737 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/memory_size.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/memory_size.C @@ -53,14 +53,16 @@ namespace mss template<> fapi2::ReturnCode eff_memory_size( const fapi2::Target& i_target, uint64_t& o_size ) { - uint32_t l_sizes[MAX_DIMM_PER_PORT]; + // Don't try to get cute and read the attributes once and loop over the array. + // Cronus honors initToZero which would work, but HB might not and so we might get + // crap in some of the attributes (which we shouldn't access as there's no DIMM there) + uint32_t l_sizes = 0; o_size = 0; - FAPI_TRY( mss::eff_dimm_size(i_target, &(l_sizes[0])) ); - - for (size_t i = 0; i < MAX_DIMM_PER_PORT; ++i) + for (const auto& d : mss::find_targets(i_target)) { - o_size += l_sizes[i]; + FAPI_TRY( mss::eff_dimm_size(d, l_sizes) ); + o_size += l_sizes; } fapi_try_exit: @@ -78,18 +80,11 @@ fapi2::ReturnCode eff_memory_size( const fapi2::Target(i_target)) + for (const auto& p : mss::find_targets(i_target)) { - uint32_t l_sizes[PORTS_PER_MCS][MAX_DIMM_PER_PORT]; - FAPI_TRY( mss::eff_dimm_size(mcs, &(l_sizes[0][0])) ); - - for (size_t i = 0; i < PORTS_PER_MCS; ++i) - { - for (size_t j = 0; j < MAX_DIMM_PER_PORT; ++j) - { - o_size += l_sizes[i][j]; - } - } + uint64_t l_size = 0; + FAPI_TRY( eff_memory_size(p, l_size) ); + o_size += l_size; } fapi_try_exit: -- cgit v1.2.1