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/hwas | |
parent | 4c1eb65cfcec7141d464ba12d4d39dae638c4ef9 (diff) | |
download | blackbird-hostboot-f3c513e40abb822d78c0a83d7bf874d30eb733a1.tar.gz blackbird-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/hwas')
-rw-r--r-- | src/usr/hwas/hwasPlat.C | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/usr/hwas/hwasPlat.C b/src/usr/hwas/hwasPlat.C index f690dddd6..4a80846ed 100644 --- a/src/usr/hwas/hwasPlat.C +++ b/src/usr/hwas/hwasPlat.C @@ -42,6 +42,7 @@ #include <hwas/common/hwas_reasoncodes.H> #include <targeting/common/utilFilter.H> +#include <fsi/fsiif.H> namespace HWAS { @@ -95,6 +96,52 @@ errlHndl_t platReadIDEC(const TargetHandle_t &i_target) DEVICE_FSI_ADDRESS(0x01028)); } + //Look for a totally dead chip + if( (errl == NULL) + && ((id_ec & 0xFFFFFFFF00000000) == 0xFFFFFFFF00000000) ) + { + HWAS_ERR("All FFs for chipid read on %.8X",TARGETING::get_huid(i_target)); + /*@ + * @errortype + * @moduleid HWAS::MOD_PLAT_READIDEC + * @reasoncode HWAS::RC_BAD_CHIPID + * @userdata1 Target HUID + * @userdata2 <unused> + * @devdesc platReadIDEC> Invalid chipid from hardware (all FFs) + */ + errl = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + HWAS::MOD_PLAT_READIDEC, + HWAS::RC_BAD_CHIPID, + TARGETING::get_huid(i_target), + 0); + + // 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 + errl->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE, + HWAS::SRCI_PRIORITY_HIGH); + + // callout this chip as Medium and deconfigure it + errl->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, + errl, + i_target ); + FSI::getFsiFFDC( FSI::FFDC_READWRITE_FAIL, + errl, + i_target ); + FSI::getFsiFFDC( FSI::FFDC_PIB_FAIL, + errl, + i_target ); + + } + if (errl == NULL) { // no error, so we got a valid ID/EC value back // EC - nibbles 0,2 |