Skip to content

Commit

Permalink
PRD: analysis for hard CEs during Memory Diagnostics
Browse files Browse the repository at this point in the history
Change-Id: If00a493bba83ecb9620170da1ace10eb60a04083
RTC: 169935
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36881
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: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37049
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
  • Loading branch information
zane131 committed Feb 27, 2017
1 parent 1ec7136 commit 2457176
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C
Expand Up @@ -34,6 +34,7 @@
#include <prdfMemMark.H>
#include <prdfMemoryMru.H>
#include <prdfMemScrubUtils.H>
#include <prdfMemUtils.H>
#include <prdfMemVcm.H>
#include <prdfP9McaExtraSig.H>
#include <UtilHash.H> // for Util::hashString
Expand Down Expand Up @@ -192,11 +193,28 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, const MemRank & i_rank,
{
io_sc.service_data->AddSignatureList( trgt, PRDFSIG_MaintHARD_CTE );

// TODO RTC 169935
// - Query the per-symbol counters for the hard CE symbol (there
// should be only one).
// - Add the symbol to the callout list (via MemoryMru).
// - Add a TPS procedure to the queue.
// Query the per-symbol counters for the hard CE symbol.
MemUtils::MaintSymbols symData; MemSymbol junk;
o_rc = MemUtils::collectCeStats<T>( i_chip, i_rank, symData, junk );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "MemUtils::collectCeStats(0x%08x,m%ds%d) "
"failed", i_chip->GetId(), i_rank.getMaster(),
i_rank.getSlave() );
break;
}

// The command will have finished at the end of the rank so there
// may be more than one symbol. Add all to the callout list.
for ( auto & s : symData )
{
MemoryMru memmru ( trgt, i_rank, s.symbol );
io_sc.service_data->SetCallout( memmru );
}

// Add a TPS procedure to the queue.
TdEntry * e = new TpsEvent<T>{ i_chip, i_rank };
io_queue.push( e );
}
else // Nothing found.
{
Expand Down

0 comments on commit 2457176

Please sign in to comment.