summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2016-12-08 13:12:54 -0600
committerZane C. Shelley <zshelle@us.ibm.com>2016-12-09 13:46:51 -0500
commit276ef3b2888634ac21a2bed2bf2c853f7687c1d5 (patch)
treebe5952ecd5b480b16cf0b2326e3b7ab582591c64 /src/usr/diag/prdf/plat/mem
parent33311a98cae4fbabbf94483e27803d3cfdf74484 (diff)
downloadtalos-hostboot-276ef3b2888634ac21a2bed2bf2c853f7687c1d5.tar.gz
talos-hostboot-276ef3b2888634ac21a2bed2bf2c853f7687c1d5.zip
PRD: fixed error handling for getSlaveRanks()/getMasterRanks()
getSlaveRanks() calls getMasterRanks() for each DIMM select, which will assert if it does not find any master ranks on the DIMM select. The issue is that it is possible for only one of the DIMM selects to have configured ranks. So the code will assert when getSlaveRanks() iterates on the non-configured DIMM select. Change-Id: I233a5cbf6ac8df2f64a0ab4ea153e3d0d93bfc4a Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33612 Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33643 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/plat/mem')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H4
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfP9Mca.C3
2 files changed, 6 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
index c6c85a874..9ba20c280 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
@@ -167,6 +167,8 @@ inline TdRankList<TARGETING::TYPE_MCBIST>::TdRankList( ExtensibleChip * i_chip )
{
std::vector<MemRank> rankList;
getSlaveRanks<TYPE_MCA>( mcaChip->getTrgt(), rankList );
+ PRDF_ASSERT( !rankList.empty() ); // target configured with no ranks
+
for ( auto & rank : rankList )
{
iv_list.push_back( TdRankListEntry(mcaChip, rank) );
@@ -186,6 +188,8 @@ inline TdRankList<TARGETING::TYPE_MBA>::TdRankList( ExtensibleChip * i_chip )
std::vector<MemRank> rankList;
getSlaveRanks<TYPE_MBA>( i_chip->getTrgt(), rankList );
+ PRDF_ASSERT( !rankList.empty() ); // target configured with no ranks
+
for ( auto & rank : rankList )
{
iv_list.push_back( TdRankListEntry(i_chip, rank) );
diff --git a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
index 97b966acc..4a1f69b7d 100644
--- a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
+++ b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
@@ -81,6 +81,7 @@ int32_t RcdParityError( ExtensibleChip * i_mcaChip,
std::vector<MemRank> list;
getSlaveRanks<TYPE_MCA>( i_mcaChip->getTrgt(), list );
+ PRDF_ASSERT( !list.empty() ); // target configured with no ranks
for ( auto & r : list )
{
@@ -88,7 +89,7 @@ int32_t RcdParityError( ExtensibleChip * i_mcaChip,
uint32_t rc = mcbdb->getTdCtlr()->handleTdEvent( io_sc, entry );
if ( SUCCESS != rc )
{
- PRDF_ERR( PRDF_FUNC "handleTdEvent(m%ds%s) failed on 0x%08x",
+ PRDF_ERR( PRDF_FUNC "handleTdEvent() failed on 0x%08x",
i_mcaChip->getHuid() );
continue; // Try the other ranks.
OpenPOWER on IntegriCloud