diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2014-02-28 13:14:36 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-03-03 12:14:05 -0600 |
commit | f3c513e40abb822d78c0a83d7bf874d30eb733a1 (patch) | |
tree | a2e316a63c5f04b9a84bdd4ad7a72a62faf4a3c0 /src/usr/fsiscom/fsiscom.C | |
parent | 4c1eb65cfcec7141d464ba12d4d39dae638c4ef9 (diff) | |
download | talos-hostboot-f3c513e40abb822d78c0a83d7bf874d30eb733a1.tar.gz talos-hostboot-f3c513e40abb822d78c0a83d7bf874d30eb733a1.zip |
Improve FSI PIB2OPB Error Recovery
Modified which error bits are checked in the PIB2OPB status as
well as changing a few error reset functions.
Change-Id: I27676947983f0b66c940d68bbd5f134912749ad9
CQ: SW248395
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9238
Tested-by: Jenkins Server
Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/fsiscom/fsiscom.C')
-rw-r--r-- | src/usr/fsiscom/fsiscom.C | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/usr/fsiscom/fsiscom.C b/src/usr/fsiscom/fsiscom.C index ea3631d05..4d390360a 100644 --- a/src/usr/fsiscom/fsiscom.C +++ b/src/usr/fsiscom/fsiscom.C @@ -67,19 +67,49 @@ void pib_error_handler( TARGETING::Target* i_target, //Add this target to the FFDC ERRORLOG::ErrlUserDetailsTarget(i_target,"SCOM Target").addToLog(i_errlog); - //Add the callouts for the specific PCB/PIB error - uint32_t pib_error = i_status >> 12; - PIB::addFruCallouts( i_target, - pib_error, - i_errlog ); - - //Grab the PIB2OPB Status reg for a Resource Occupied error - if( pib_error == PIB::PIB_RESOURCE_OCCUPIED ) //piberr=001 + //Look for a totally dead chip + if( i_status == 0xFFFFFFFF ) { + // if things are this broken then chances are there are bigger + // problems, we can just make some guesses on what to call out + + // make code the highest since there are other issues + i_errlog->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE, + HWAS::SRCI_PRIORITY_HIGH); + + // callout this chip as Medium and deconfigure it + i_errlog->addHwCallout( i_target, + HWAS::SRCI_PRIORITY_LOW, + HWAS::DECONFIG, + HWAS::GARD_NULL ); + + // grab all the FFDC we can think of + FSI::getFsiFFDC( FSI::FFDC_OPB_FAIL_SLAVE, + i_errlog, + i_target ); + FSI::getFsiFFDC( FSI::FFDC_READWRITE_FAIL, + i_errlog, + i_target ); FSI::getFsiFFDC( FSI::FFDC_PIB_FAIL, i_errlog, i_target ); } + else + { + //Add the callouts for the specific PCB/PIB error + uint32_t pib_error = i_status >> 12; + PIB::addFruCallouts( i_target, + pib_error, + i_errlog ); + + //Grab the PIB2OPB Status reg for a Resource Occupied error + if( pib_error == PIB::PIB_RESOURCE_OCCUPIED ) //piberr=001 + { + FSI::getFsiFFDC( FSI::FFDC_PIB_FAIL, + i_errlog, + i_target ); + } + } //Recovery sequence from Markus // if SCOM fails and FSI Master displays "MasterTimeOut" |