diff options
author | Li Meng <shlimeng@cn.ibm.com> | 2019-03-08 08:09:18 -0600 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2019-04-12 13:57:21 -0500 |
commit | 186d6f22c2ad7044e315b5dec7c6be4ba84016b6 (patch) | |
tree | 0791f8b287224312fb4c5206bb128a78bf6b9c08 /src/import/chips/p9/procedures/hwp/memory/lib | |
parent | f53d3ff4139f81f984861c1e6249d396960c42df (diff) | |
download | talos-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>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib')
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) |