summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas
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/hwas
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/hwas')
-rw-r--r--src/usr/hwas/hwasPlat.C47
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
OpenPOWER on IntegriCloud