summaryrefslogtreecommitdiffstats
path: root/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C
diff options
context:
space:
mode:
authorLuke Mulkey <lwmulkey@us.ibm.com>2017-08-30 12:58:56 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-09-07 14:43:18 -0400
commitaa61cd08a65bc8877ee5f3602b76057527264140 (patch)
treec16ef8f37903e2bb6809af8a92ac24d13a96533a /src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C
parent1b9e43559ad5e83d9a08c179ebf371cab1467db7 (diff)
downloadtalos-hostboot-aa61cd08a65bc8877ee5f3602b76057527264140.tar.gz
talos-hostboot-aa61cd08a65bc8877ee5f3602b76057527264140.zip
Fix mb_interleave to allow single MBA operation
Change-Id: I6811192fff46c36b7160c726456a687e3a7619a5 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45407 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: JEREMY R. NEATON <jrneaton@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45413 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C')
-rw-r--r--src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C
index bd25f80bc..28494ee81 100644
--- a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C
+++ b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_eff_mb_interleave.C
@@ -97,7 +97,7 @@ extern "C" {
uint8_t l_mba = 0;
uint8_t l_cur_mba_port = 0;
uint8_t l_cur_mba_dimm = 0;
- uint8_t l_side, l_port, l_slot = 0;
+ uint8_t l_side = 0, l_port = 0, l_slot = 0;
uint8_t l_hadadeconfig[MAX_MBA_PER_CEN] = {0};
uint8_t l_mss_derived_mba_cacheline_interleave_mode = 0;
uint8_t l_mss_mba_addr_interleave_bit = 0;
@@ -126,30 +126,31 @@ extern "C" {
const auto l_mba_chiplets = i_cen_target.getChildren<fapi2::TARGET_TYPE_MBA>();
+ for(const auto& mba_i : l_mba_chiplets)
+ {
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, mba_i, l_mba));
+ l_target_dimm_array[l_mba] = mba_i.getChildren<fapi2::TARGET_TYPE_DIMM>();
+
+ for (const auto& l_dimm : l_target_dimm_array[l_mba])
+ {
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MBA_PORT, l_dimm, l_cur_mba_port));
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MBA_DIMM, l_dimm, l_cur_mba_dimm));
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_EFF_DIMM_SIZE, mba_i, l_eff_dimm_size));
+
+ FAPI_INF("Loading up information about dimm for mba %d port %d dimm %d", l_mba, l_cur_mba_port, l_cur_mba_dimm);
+ FAPI_INF("DIMM size is eff_dimm_size[%d][%d] = %d", l_cur_mba_port, l_cur_mba_dimm,
+ l_eff_dimm_size[l_cur_mba_port][l_cur_mba_dimm]);
+
+ FAPI_TRY(l_dimm_array[l_mba][l_cur_mba_port][l_cur_mba_dimm].load(l_dimm,
+ l_eff_dimm_size[l_cur_mba_port][l_cur_mba_dimm]));
+ } // Each DIMM off this MBA
+ } // Each MBA
+
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MRW_STRICT_MBA_PLUG_RULE_CHECKING, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
l_attr_mrw_strict_mba_plug_rule_checking));
if(l_attr_mrw_strict_mba_plug_rule_checking == fapi2::ENUM_ATTR_CEN_MRW_STRICT_MBA_PLUG_RULE_CHECKING_TRUE)
{
- for(const auto& mba_i : l_mba_chiplets)
- {
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, mba_i, l_mba));
- l_target_dimm_array[l_mba] = mba_i.getChildren<fapi2::TARGET_TYPE_DIMM>();
-
- for (const auto& l_dimm : l_target_dimm_array[l_mba])
- {
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MBA_PORT, l_dimm, l_cur_mba_port));
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MBA_DIMM, l_dimm, l_cur_mba_dimm));
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_EFF_DIMM_SIZE, mba_i, l_eff_dimm_size));
-
- FAPI_INF("Loading up information about dimm for mba %d port %d dimm %d", l_mba, l_cur_mba_port, l_cur_mba_dimm);
- FAPI_INF("DIMM size is eff_dimm_size[%d][%d] = %d", l_cur_mba_port, l_cur_mba_dimm,
- l_eff_dimm_size[l_cur_mba_port][l_cur_mba_dimm]);
-
- FAPI_TRY(l_dimm_array[l_mba][l_cur_mba_port][l_cur_mba_dimm].load(l_dimm,
- l_eff_dimm_size[l_cur_mba_port][l_cur_mba_dimm]));
- } // Each DIMM off this MBA
- } // Each MBA
// - Logical DIMMs are considered to be identical if they have the following attributes in common: Module Type (RDIMM or LRDIMM),
// Architecture (DDR3 vs DDR4), Device Density, Number of Ranks, Device Width, Module Width, and Thermal Sensor.
OpenPOWER on IntegriCloud