summaryrefslogtreecommitdiffstats
path: root/src/import/chips/centaur
diff options
context:
space:
mode:
authorLouis Stermole <stermole@us.ibm.com>2018-10-09 14:53:26 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-10-17 11:02:57 -0500
commit81faecc96e9706d82a890d60b29e7b291336a956 (patch)
treece018993fa45ccede6396b7d261ad62b8ccaaf65 /src/import/chips/centaur
parent3f02abe6d443cd3568e59d1f2b4d558cccb90749 (diff)
downloadtalos-hostboot-81faecc96e9706d82a890d60b29e7b291336a956.tar.gz
talos-hostboot-81faecc96e9706d82a890d60b29e7b291336a956.zip
Change training_adv sanity check fail to a recovered fail for p9c
Change-Id: I76f6738e2c07b9a9fdd92b6b915d6088ff24c7a5 CQ:SW447904 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67245 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67251 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/centaur')
-rwxr-xr-xsrc/import/chips/centaur/procedures/hwp/memory/p9c_mss_generic_shmoo.C49
1 files changed, 38 insertions, 11 deletions
diff --git a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_generic_shmoo.C b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_generic_shmoo.C
index 6f0a1c057..41b3ac822 100755
--- a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_generic_shmoo.C
+++ b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_generic_shmoo.C
@@ -516,6 +516,42 @@ extern "C"
}
///
+ /// @brief Parse error map error log helper
+ /// @param[in] i_target the MBA target
+ /// @param[in] i_memory_health '1' if MCBIST failed, '0' otherwise
+ /// @param[in] i_faulted_port the port index of the last fail
+ /// @param[in] i_faulted_rank the rank index of the last fail
+ /// @param[in] i_faulted_dimm the DIMM index of the last fail
+ /// @return FAPI2_RC_SUCCESS after logging any errors
+ ///
+ fapi2::ReturnCode parse_error_map_error_helper(const fapi2::Target<fapi2::TARGET_TYPE_MBA>& i_target,
+ const uint8_t i_memory_health,
+ const uint8_t i_faulted_port,
+ const uint8_t i_faulted_rank,
+ const uint8_t i_faulted_dimm)
+ {
+ // Callout the last faulted port & DIMM if we found any new bad bits
+ FAPI_ASSERT((i_memory_health == 0),
+ fapi2::CEN_MSS_GENERIC_SHMOO_MCBIST_FAILED().
+ set_MBA_TARGET(i_target).
+ set_MBA_PORT_NUMBER(i_faulted_port).
+ set_MBA_DIMM_NUMBER(i_faulted_dimm),
+ "generic_shmoo:sanity_check failed !! MCBIST failed on %s initial run, port=%d rank=%d dimm=%d",
+ mss::c_str(i_target),
+ i_faulted_port,
+ i_faulted_rank,
+ i_faulted_dimm);
+
+ return fapi2::FAPI2_RC_SUCCESS;
+
+ fapi_try_exit:
+ // We're here, so we took a fail - log it as recovered, so we get callouts for PRD but don't fail out of training_adv
+ fapi2::logError(fapi2::current_err, fapi2::FAPI2_ERRL_SEV_RECOVERED);
+ fapi2::current_err = fapi2::FAPI2_RC_SUCCESS;
+ return fapi2::FAPI2_RC_SUCCESS;
+ }
+
+ ///
/// @brief parse the MCBIST error map and report spd if any bad bit found
/// @param[in] i_target Centaur input mba
/// @return FAPI2_RC_SUCCESS iff succesful
@@ -603,17 +639,8 @@ extern "C"
//////////////// changed the check condition ... The error call out need to gard the dimm=l_faulted_dimm(0 or 1) //// port=l_faulted_port(0 or 1) target=i_target ...
#ifdef __HOSTBOOT_MODULE
- // In firmware, post an error log and callout the last faulted port & DIMM if we found any new bad bits
- FAPI_ASSERT_NOEXIT((l_memory_health == 0),
- fapi2::CEN_MSS_GENERIC_SHMOO_MCBIST_FAILED().
- set_MBA_TARGET(i_target).
- set_MBA_PORT_NUMBER(l_faulted_port).
- set_MBA_DIMM_NUMBER(l_faulted_dimm),
- "generic_shmoo:sanity_check failed !! MCBIST failed on %s initial run, port=%d rank=%d dimm=%d",
- mss::c_str(i_target),
- l_faulted_port,
- l_faulted_rank,
- l_faulted_dimm);
+ // In firmware, post a recovered error log and callout the last faulted port & DIMM if we found any new bad bits
+ FAPI_TRY( parse_error_map_error_helper(i_target, l_memory_health, l_faulted_port, l_faulted_rank, l_faulted_dimm) );
#else
// In Cronus, assert and halt only if we found more than one bad nibble on a given rank
FAPI_ASSERT((l_count == 0),
OpenPOWER on IntegriCloud