Skip to content

Commit

Permalink
PRD: reduce number of ways TPS can be banned
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
zane131 committed Jun 22, 2018
1 parent 5a3703d commit 630c378
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 20 deletions.
11 changes: 8 additions & 3 deletions src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C
Original file line number Diff line number Diff line change
Expand Up @@ -836,10 +836,11 @@ uint32_t analyzeFetchUe( ExtensibleChip * i_chip,

#ifdef __HOSTBOOT_RUNTIME

// Add a TPS request to the TD queue and ban any further TPS requests
// for this rank.
// 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.
MemRank rank = addr.getRank();
MemDbUtils::pushToQueue<T>(i_chip, new TpsEvent<T>(i_chip, rank, true));
MemDbUtils::pushToQueue<T>( i_chip, new TpsEvent<T>(i_chip, rank) );
o_rc = MemDbUtils::handleTdEvent<T>( i_chip, io_sc );
if ( SUCCESS != o_rc )
{
Expand All @@ -848,6 +849,10 @@ uint32_t analyzeFetchUe( ExtensibleChip * i_chip,
break;
}

// Because of the UE, any further TPS requests will likely have no
// effect. So ban all subsequent requests.
MemDbUtils::banTps<T>( i_chip, rank );

#endif // __HOSTBOOT_RUNTIME

} while (0);
Expand Down
10 changes: 8 additions & 2 deletions src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
7 changes: 2 additions & 5 deletions src/usr/diag/prdf/plat/mem/prdfMemTps.H
Original file line number Diff line number Diff line change
Expand Up @@ -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() );
Expand Down Expand Up @@ -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.*/
Expand Down
10 changes: 0 additions & 10 deletions src/usr/diag/prdf/plat/mem/prdfMemTps_rt.C
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 630c378

Please sign in to comment.