summaryrefslogtreecommitdiffstats
path: root/src/usr/fsiscom/fsiscom.C
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-02-28 13:14:36 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-03 12:14:05 -0600
commitf3c513e40abb822d78c0a83d7bf874d30eb733a1 (patch)
treea2e316a63c5f04b9a84bdd4ad7a72a62faf4a3c0 /src/usr/fsiscom/fsiscom.C
parent4c1eb65cfcec7141d464ba12d4d39dae638c4ef9 (diff)
downloadtalos-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.C46
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"
OpenPOWER on IntegriCloud