summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-06-20 10:27:43 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-06-22 10:41:00 -0400
commit630c378b8ddea3a9a42c2f909da2eb7f5e057a6c (patch)
tree993e8638cd31c5bdab180fdca6fa8c210258dd0e /src/usr/diag/prdf/plat
parent5a3703db513ae72f45a7f3a83ffae45f64b255fd (diff)
downloadtalos-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.C10
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTps.H7
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C10
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;
OpenPOWER on IntegriCloud