From 47e9c9b12017dcb6b2297d5453241defa438f753 Mon Sep 17 00:00:00 2001 From: Zane Shelley Date: Tue, 22 May 2018 12:49:10 -0500 Subject: PRD: TPS analyzeEccErrors() for Centaur Change-Id: I4bdc2aa63de4f59a32fbd962a42836e79b9b9601 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59184 Tested-by: Jenkins Server Reviewed-by: Caleb N. Palmer Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59518 --- src/usr/diag/prdf/plat/mem/prdfMemTps.H | 12 --------- src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C | 40 ++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTps.H b/src/usr/diag/prdf/plat/mem/prdfMemTps.H index 52e8d58bb..3c399953e 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTps.H +++ b/src/usr/diag/prdf/plat/mem/prdfMemTps.H @@ -156,18 +156,6 @@ class TpsEvent : public TdEntry #ifdef __HOSTBOOT_RUNTIME - /** - * @brief Does isolation for ECC attentions. - * @param i_eccAttns Mask of all currently active maintenance attentions. - * See enum MaintEccAttns for values. - * @param io_sc The step code data struct. - * @param o_done True if the procedure is complete or has aborted. - * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. - */ - uint32_t analyzeEcc( const uint32_t & i_eccAttns, - STEP_CODE_DATA_STRUCT & io_sc, - bool & o_done ); - /** * @brief Analyzes the counts that summarize the symbol CE counts. * @param i_badDqCount Number of nibbles with a bad DQ diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C index be5ffa43c..cd725ccf6 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C @@ -328,11 +328,11 @@ uint32_t __updateVpdSumAboveOne( CeCount i_sumAboveOneCount, //------------------------------------------------------------------------------ template <> -uint32_t TpsEvent::analyzeEcc( const uint32_t & i_eccAttns, +uint32_t TpsEvent::analyzeEccErrors( const uint32_t & i_eccAttns, STEP_CODE_DATA_STRUCT & io_sc, bool & o_done ) { - #define PRDF_FUNC "[TpsEvent::analyzeEcc] " + #define PRDF_FUNC "[TpsEvent::analyzeEccErrors] " uint32_t o_rc = SUCCESS; @@ -1119,10 +1119,10 @@ uint32_t TpsEvent::analyzePhase( STEP_CODE_DATA_STRUCT & io_sc, break; } - o_rc = analyzeEcc( eccAttns, io_sc, o_done ); + o_rc = analyzeEccErrors( eccAttns, io_sc, o_done ); if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC "analyzeEcc() failed." ); + PRDF_ERR( PRDF_FUNC "analyzeEccErrors() failed." ); break; } if ( o_done ) break; @@ -1235,6 +1235,28 @@ uint32_t TpsEvent::startNextPhase( STEP_CODE_DATA_STRUCT & io_sc ) // //############################################################################## +template<> +uint32_t TpsEvent::analyzeEccErrors( const uint32_t & i_eccAttns, + STEP_CODE_DATA_STRUCT & io_sc, + bool & o_done ) +{ + #define PRDF_FUNC "[TpsEvent::analyzeEccErrors] " + + uint32_t o_rc = SUCCESS; + + do + { + // TODO: handle MPE, RCE ETE, UE, etc. + + } while (0); + + return o_rc; + + #undef PRDF_FUNC +} + +//------------------------------------------------------------------------------ + template<> uint32_t TpsEvent::analyzePhase( STEP_CODE_DATA_STRUCT & io_sc, bool & o_done ) @@ -1257,7 +1279,15 @@ uint32_t TpsEvent::analyzePhase( STEP_CODE_DATA_STRUCT & io_sc, break; } - // TODO + // Analyze the ECC errors (not CEs), if needed. + o_rc = analyzeEccErrors( eccAttns, io_sc, o_done ); + if ( SUCCESS != o_rc ) + { + PRDF_ERR( PRDF_FUNC "analyzeEccErrors() failed on 0x%08x,0x%02x", + iv_chip->getHuid(), getKey() ); + break; + } + if ( o_done ) break; // abort the procedure. // Determine if the command stopped on the last address. bool lastAddr = false; -- cgit v1.2.1