summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLi Meng <shlimeng@cn.ibm.com>2019-03-08 08:09:18 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-04-12 13:57:21 -0500
commit186d6f22c2ad7044e315b5dec7c6be4ba84016b6 (patch)
tree0791f8b287224312fb4c5206bb128a78bf6b9c08
parentf53d3ff4139f81f984861c1e6249d396960c42df (diff)
downloadtalos-hostboot-186d6f22c2ad7044e315b5dec7c6be4ba84016b6.tar.gz
talos-hostboot-186d6f22c2ad7044e315b5dec7c6be4ba84016b6.zip
Fixes for LRDIMM dual drop DB training
Change-Id: I917477dce989a44467f88aad73b7db525ad62cbb Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/73059 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/73116 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H4
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/pba.C6
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C8
3 files changed, 13 insertions, 5 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
index 4f1b2525f..d2bffc509 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
@@ -176,6 +176,8 @@ inline fapi2::ReturnCode insert_function_space_select(const uint64_t i_func_spac
const std::vector< cw_info >::iterator& i_iterator,
std::vector< cw_info >& io_vector)
{
+ // we use this function for PBA so we need to go with the PBA safe value
+ constexpr uint64_t PBA_SAFE_DELAY = 255;
FAPI_ASSERT(i_func_space <= MAX_FUNC_SPACE,
fapi2::MSS_LRDIMM_INSERT_FUNC_SPACE_OUT_OF_RANGE()
.set_MAX_FUNC_SPACE(MAX_FUNC_SPACE)
@@ -184,7 +186,7 @@ inline fapi2::ReturnCode insert_function_space_select(const uint64_t i_func_spac
i_func_space, MAX_FUNC_SPACE);
{
constexpr uint64_t FUNC_SPACE_LEN = 8;
- cw_info l_info( FUNC_SPACE_0, FUNC_SPACE_SELECT_CW, i_func_space, mss::tmrd(), FUNC_SPACE_LEN, cw_info::BCW );
+ cw_info l_info( FUNC_SPACE_0, FUNC_SPACE_SELECT_CW, i_func_space, PBA_SAFE_DELAY, FUNC_SPACE_LEN, cw_info::BCW );
io_vector.insert(i_iterator, l_info);
}
return fapi2::FAPI2_RC_SUCCESS;
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/pba.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/pba.C
index 710fe2cd8..c1cab4997 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/pba.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/pba.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -206,8 +206,8 @@ fapi2::ReturnCode execute_commands( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
l_program.iv_instructions.push_back(mss::ccs::des_command<fapi2::TARGET_TYPE_MCBIST>());
// Makes a copy of the vector, so we can do the function space swaps correctly
- auto l_bcws = convert_to_rcws(i_bcws, commands::BCW_DELAY);
-
+ auto l_bcws = i_bcws;
+ FAPI_TRY(insert_function_space_select(l_bcws));
FAPI_TRY(control_word_engine(i_target,
l_bcws,
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C
index 2af5b7a15..8994a75d0 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -654,6 +654,12 @@ fapi2::ReturnCode mrep::run( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_targ
"Failed get_ranks_in_pair in mrep::run %s",
mss::c_str(i_target) );
+ // Disable all rank of 2 dimm's before training
+ for (const auto& l_dimm : l_dimms)
+ {
+ FAPI_TRY(set_rank_presence(l_dimm, RANK_PRESENCE_MASK));
+ }
+
// Loops over all ranks within this rank pair
// MREP is a buffer to DRAM calibration step, so we need to calibrate all ranks seperately
for (const auto& l_rank : l_ranks)
OpenPOWER on IntegriCloud