summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Silver <bsilver@us.ibm.com>2016-05-06 13:24:29 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-05-12 14:14:06 -0400
commit34cd3b8289c1575c8866d5835584f609d72f9ca1 (patch)
tree7bee181fcc2c155f19722936bfaedd73b01fefaf
parent01cfd3d73a8b7347b901c01c387bad00a387a3a3 (diff)
downloadtalos-hostboot-34cd3b8289c1575c8866d5835584f609d72f9ca1.tar.gz
talos-hostboot-34cd3b8289c1575c8866d5835584f609d72f9ca1.zip
Change init cal error checking as apb fir register changed
Change-Id: I661b2c88ee4e2584dcbcffe327f13ddb4cc230ef Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24202 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24203 Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C46
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/phy_cntrl.H4
2 files changed, 6 insertions, 44 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
index a2564e032..9ccedfb2e 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
@@ -490,64 +490,22 @@ fapi2::ReturnCode process_initial_cal_errors( const fapi2::Target<TARGET_TYPE_MC
{
typedef pcTraits<TARGET_TYPE_MCA> TT;
- static const uint64_t init_cal_err_mask = 0x7FF;
- static const uint64_t init_cal_pc_err_mask = 0xF800;
-
uint64_t l_errors = 0;
uint64_t l_rank_pairs = 0;
- fapi2::buffer<uint64_t> l_fir_data;
fapi2::buffer<uint64_t> l_err_data;
fapi2::Target<TARGET_TYPE_DIMM> l_failed_dimm;
- FAPI_TRY( mss::apb::read_fir_err1(i_target, l_fir_data) );
- FAPI_DBG("initial cal FIR: 0x%016llx", uint64_t(l_fir_data));
-
- // If we have no errors, lets get out of here.
- if (l_fir_data == 0)
- {
- return fapi2::current_err;
- }
-
- // We have bits to check ...
-
- // If we have PC error status bits on, lets handle those.
- if ((l_fir_data & init_cal_pc_err_mask) != 0)
- {
- FAPI_TRY( pc::read_error_status0(i_target, l_err_data) );
- // Hm ... I don't see any explict error code for this - not sure if I should break
- // out all the possible failures.
- FAPI_ASSERT( l_err_data == 0,
- fapi2::MSS_DRAMINIT_TRAINING_PHY_CONTROL_ERROR()
- .set_PORT_POSITION(mss::fapi_pos(i_target))
- .set_TARGET_IN_ERROR(i_target),
- "PHY reported a control error during initial calibration port: %s, pc_error_status0 err: 0x%016llx",
- mss::c_str(i_target), uint64_t(l_err_data)
- );
-
- // If we're here, odd things are happening. We saw an error in the FIR, but we don't see
- // and error in the PC_ERROR_STATUS0 register. So note it and carry on.
- FAPI_ERR("FIR lit after initial cal: 0x%016lx but nothing in PC_ERROR_STATUS0 (0x%016lx)", l_fir_data, l_err_data);
- }
-
- // If we have no init cal error bits, get out
- if ((l_fir_data & init_cal_err_mask) == 0)
- {
- return fapi2::current_err;
- }
-
- // If we're here, we have initial cal errors
FAPI_TRY( pc::read_init_cal_error(i_target, l_err_data) );
- l_err_data.extractToRight<TT::INIT_CAL_ERROR_WR_LEVEL, 11>(l_errors);
+ l_err_data.extractToRight<TT::INIT_CAL_ERROR_WR_LEVEL, TT::CAL_ERROR_FIELD_LEN>(l_errors);
l_err_data.extractToRight<TT::INIT_CAL_ERROR_RANK_PAIR, TT::INIT_CAL_ERROR_RANK_PAIR_LEN>(l_rank_pairs);
FAPI_DBG("initial cal err: 0x%016llx, rp: 0x%016llx (0x%016llx)", l_errors, l_rank_pairs, uint64_t(l_err_data));
if ((l_rank_pairs == 0) || (l_errors == 0))
{
- FAPI_INF("Initial CAL FIR is 0x%016llx but missing info in the error register: 0x%016llx",
- l_fir_data, l_err_data);
+ FAPI_DBG("Initial cal - no errors reported");
return fapi2::current_err;
}
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/phy_cntrl.H b/src/import/chips/p9/procedures/hwp/memory/lib/phy/phy_cntrl.H
index e4c9f4da2..3c6df4529 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/phy_cntrl.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/phy_cntrl.H
@@ -84,6 +84,10 @@ class pcTraits<fapi2::TARGET_TYPE_MCA>
INIT_CAL_ERROR_VREF = MCA_DDRPHY_PC_INIT_CAL_ERROR_P0_VREF,
INIT_CAL_ERROR_RANK_PAIR = MCA_DDRPHY_PC_INIT_CAL_ERROR_P0_RANK_PAIR,
INIT_CAL_ERROR_RANK_PAIR_LEN = MCA_DDRPHY_PC_INIT_CAL_ERROR_P0_RANK_PAIR_LEN,
+
+ // How many bits are in the field running from INIT_CAL_ERROR_WR_LEVEL to INIT_CAL_ERROR_VREF
+ // Needed to pull the entire field out of the register.
+ CAL_ERROR_FIELD_LEN = 11,
};
};
OpenPOWER on IntegriCloud