summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2013-10-21 17:28:15 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-10-22 14:03:41 -0500
commiteccd80f75ad55a34842d052565dae624352541f3 (patch)
tree59ad767703695e0b83784c9cabc3bfd848a17eb1 /src/usr
parent18b730742cf95af60e2369d695b84bbb1b25594e (diff)
downloadtalos-hostboot-eccd80f75ad55a34842d052565dae624352541f3.tar.gz
talos-hostboot-eccd80f75ad55a34842d052565dae624352541f3.zip
PRD: Added some null checks in cleanupSecondaryFirBits
Change-Id: Id4e842e558e93aeb2ff40c5c6d7fe06ee5faf26f CQ: SW230093 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/6779 Tested-by: Jenkins Server Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/6802
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
index 9f2b9860d..cb098117e 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
@@ -329,30 +329,34 @@ int32_t cleanupSecondaryFirBits( ExtensibleChip * i_chip,
//In case of spare deployed attention for DMI bus, we need to clear
// secondary MBIFIR[10] and MCIFIR[10] bits.
- if ( i_busType == TYPE_MCS )
+ do
{
- mcsTgt = getConnectedChild( i_chip->GetChipHandle(),
- TYPE_MCS,
- i_busPos);
- mcsChip = ( ExtensibleChip * )systemPtr->GetChip( mcsTgt );
- mbChip = getMcsDataBundle( mcsChip )->getMembChip();
- if (mbChip)
+ if ( i_busType == TYPE_MCS )
+ {
+ mcsTgt = getConnectedChild( i_chip->GetChipHandle(),
+ TYPE_MCS,
+ i_busPos);
+ if (!mcsTgt) break;
+ mcsChip = ( ExtensibleChip * )systemPtr->GetChip( mcsTgt );
+ if (!mcsChip) break;
+ mbChip = getMcsDataBundle( mcsChip )->getMembChip();
+ if (!mbChip) break;
mbTgt = mbChip->GetChipHandle();
-
- }
- else if ( i_busType == TYPE_MEMBUF )
- {
- mbTgt = i_chip->GetChipHandle();
- mcsChip = getMembufDataBundle( i_chip )->getMcsChip();
- if (mcsChip)
+ if (!mbTgt) break;
+ }
+ else if ( i_busType == TYPE_MEMBUF )
+ {
+ mbTgt = i_chip->GetChipHandle();
+ if (!mbTgt) break;
+ mcsChip = getMembufDataBundle( i_chip )->getMcsChip();
+ if (!mcsChip) break;
mcsTgt = mcsChip->GetChipHandle();
- mbChip = i_chip;
- }
+ if (!mcsTgt) break;
+ mbChip = i_chip;
+ }
- if ( ( NULL != mcsChip ) && ( NULL != mbChip ))
- {
SCAN_COMM_REGISTER_CLASS * mciFir =
- mcsChip->getRegister( "MCIFIR" );
+ mcsChip->getRegister( "MCIFIR" );
int32_t rc = mciFir->Read();
if ( SUCCESS != rc )
{
@@ -367,7 +371,7 @@ int32_t cleanupSecondaryFirBits( ExtensibleChip * i_chip,
}
SCAN_COMM_REGISTER_CLASS * mbiFir =
- mbChip->getRegister( "MBIFIR" );
+ mbChip->getRegister( "MBIFIR" );
rc = mbiFir->Read();
if ( SUCCESS != rc )
{
@@ -380,7 +384,7 @@ int32_t cleanupSecondaryFirBits( ExtensibleChip * i_chip,
mbiFir->ClearBit(10);
l_rc |= mbiFir->Write();
}
- }
+ } while (0);
return l_rc;
}
OpenPOWER on IntegriCloud