diff options
author | Benjamin Weisenbeck <bweisenb@us.ibm.com> | 2013-10-21 17:28:15 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-10-22 14:03:41 -0500 |
commit | eccd80f75ad55a34842d052565dae624352541f3 (patch) | |
tree | 59ad767703695e0b83784c9cabc3bfd848a17eb1 /src/usr | |
parent | 18b730742cf95af60e2369d695b84bbb1b25594e (diff) | |
download | talos-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.C | 46 |
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; } |