diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2018-06-20 10:27:43 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-06-22 10:41:00 -0400 |
commit | 630c378b8ddea3a9a42c2f909da2eb7f5e057a6c (patch) | |
tree | 993e8638cd31c5bdab180fdca6fa8c210258dd0e /src/usr/diag/prdf/plat | |
parent | 5a3703db513ae72f45a7f3a83ffae45f64b255fd (diff) | |
download | talos-hostboot-630c378b8ddea3a9a42c2f909da2eb7f5e057a6c.tar.gz talos-hostboot-630c378b8ddea3a9a42c2f909da2eb7f5e057a6c.zip |
PRD: reduce number of ways TPS can be banned
Currently, TPS can be banned via the TpsEvent construtor and through
MemTdCtlr::banTps(). This causes some confusion so the TpsEvent
contructor has been modified.
Change-Id: I8ef9e3fd21857ffdffdd358dc5627d2f42a227f7
CQ: SW433793
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/60970
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61035
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>
Diffstat (limited to 'src/usr/diag/prdf/plat')
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C | 10 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTps.H | 7 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C | 10 |
3 files changed, 10 insertions, 17 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C index 7c2748639..163e2ec86 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C @@ -672,9 +672,15 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, break; } - // Add a TPS procedure to the queue. - TdEntry * e = new TpsEvent<T>{ i_chip, rank, true }; + // Add a TPS request to the TD queue for additional analysis. It is + // unlikely the procedure will result in a repair because of the UE. + // However, we want to run TPS once just to see how bad the rank is. + TdEntry * e = new TpsEvent<T>{ i_chip, rank }; MemDbUtils::pushToQueue<T>( i_chip, e ); + + // Because of the UE, any further TPS requests will likely have no + // effect. So ban all subsequent requests. + MemDbUtils::banTps<T>( i_chip, rank ); } } while (0); diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTps.H b/src/usr/diag/prdf/plat/mem/prdfMemTps.H index 420664623..84130004c 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTps.H +++ b/src/usr/diag/prdf/plat/mem/prdfMemTps.H @@ -54,8 +54,8 @@ class TpsEvent : public TdEntry * @param i_rank Target rank. * @param i_ban True to ban all subsequent requests for TPS on this rank. */ - TpsEvent<T>( ExtensibleChip * i_chip, MemRank i_rank, bool i_ban = false ) : - TdEntry(TPS_EVENT, i_chip, i_rank), iv_ban(i_ban) + TpsEvent<T>( ExtensibleChip * i_chip, MemRank i_rank ) : + TdEntry(TPS_EVENT, i_chip, i_rank) { PRDF_ASSERT( nullptr != i_chip ); PRDF_ASSERT( T == i_chip->getType() ); @@ -208,9 +208,6 @@ class TpsEvent : public TdEntry private: // instance variables - /** True to ban all subsequent requests for TPS on this rank. */ - bool iv_ban = false; - #ifdef __HOSTBOOT_RUNTIME /** TPS false alarm (MBA only). Initially true when the object is created. * Will be set to false if any ECC errors are found during the procedure.*/ diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C index c7f5c678b..7857fa6c7 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C @@ -1146,12 +1146,6 @@ uint32_t TpsEvent<TYPE_MCA>::analyzePhase( STEP_CODE_DATA_STRUCT & io_sc, { // Clear the ECC FFDC for this master rank. MemDbUtils::resetEccFfdc<TYPE_MCA>( iv_chip, iv_rank, SLAVE_RANK ); - - if ( iv_ban ) - { - // Ban TPS on this rank. - MemDbUtils::banTps<TYPE_MCA>( iv_chip, iv_rank ); - } } return o_rc; @@ -1790,10 +1784,6 @@ uint32_t TpsEvent<TYPE_MBA>::analyzePhase( STEP_CODE_DATA_STRUCT & io_sc, { // Clear the ECC FFDC for this master rank. MemDbUtils::resetEccFfdc<TYPE_MBA>( iv_chip, iv_rank, SLAVE_RANK ); - - // Ban TPS on this rank, if needed. - if ( iv_ban ) MemDbUtils::banTps<TYPE_MBA>( iv_chip, iv_rank ); - } return o_rc; |