summaryrefslogtreecommitdiffstats
path: root/src/usr/sbeio/sbe_psudd.C
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2016-09-06 09:14:23 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2016-09-08 12:03:13 -0400
commit263fd96f988d641967d0bd1e3537ac75caed254d (patch)
treef21ff9e45a24283bea5c80b12b4c80a89bb9d4ed /src/usr/sbeio/sbe_psudd.C
parent92ddefe702f52ab25c0da4d9e5f5fad5a56ab851 (diff)
downloadtalos-hostboot-263fd96f988d641967d0bd1e3537ac75caed254d.tar.gz
talos-hostboot-263fd96f988d641967d0bd1e3537ac75caed254d.zip
Temporarily force terminal RC on SBE errors
Until Hostboot has the infrastructure in place to collect all of the FFDC from a SBE failure, we will rely on the FSP code to collect the data. This requires Hostboot to terminate with a special RC to force this behavior. Change-Id: I94fba157826664b680a51790104932f97b671950 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29253 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Deepak Kodihalli <dkodihal@in.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/sbeio/sbe_psudd.C')
-rw-r--r--src/usr/sbeio/sbe_psudd.C31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/usr/sbeio/sbe_psudd.C b/src/usr/sbeio/sbe_psudd.C
index f298ddbf2..4f8e2015c 100644
--- a/src/usr/sbeio/sbe_psudd.C
+++ b/src/usr/sbeio/sbe_psudd.C
@@ -38,6 +38,7 @@
#include <targeting/common/targetservice.H>
#include <sbeio/sbeioreasoncodes.H>
#include "sbe_psudd.H"
+#include <initservice/initserviceif.H> //@todo-RTC:149454-Remove
trace_desc_t* g_trac_sbeio;
TRAC_INIT(&g_trac_sbeio, SBEIO_COMP_NAME, 6*KILOBYTE, TRACE::BUFFER_SLOW);
@@ -104,6 +105,36 @@ errlHndl_t performPsuChipOp(psuCommand * i_pPsuRequest,
mutex_unlock(&l_psuOpMux);
+ //@todo-RTC:144313-Remove when we have our FFDC in place
+ //Temporarily crash with a known RC so that HWSV collects the SBE FFDC
+ if( errl && (SBE_COMP_ID == errl->moduleId()) )
+ {
+ SBE_TRACF( "Forcing shutdown for FSP to collect FFDC" );
+
+ //commit the original error after pulling some data out
+ uint32_t orig_plid = errl->plid();
+ uint32_t orig_rc = errl->reasonCode();
+ uint32_t orig_mod = errl->moduleId();
+ ERRORLOG::errlCommit( errl, SBE_COMP_ID );
+ /*@
+ * @errortype
+ * @moduleid SBEIO_PSU
+ * @reasoncode SBEIO_HWSV_COLLECT_SBE_RC
+ * @userdata1 PLID of original error log
+ * @userdata2[00:31] Original RC
+ * @userdata2[32:63] Original Module Id
+ *
+ * @devdesc SBE error, force HWSV to collect FFDC
+ * @custdesc Firmware error communicating with boot device
+ */
+ errl = new ErrlEntry(ERRL_SEV_UNRECOVERABLE,
+ SBEIO_PSU,
+ SBEIO_HWSV_COLLECT_SBE_RC,
+ orig_plid,
+ TWO_UINT32_TO_UINT64(orig_rc,orig_mod));
+ INITSERVICE::doShutdown( SBEIO_HWSV_COLLECT_SBE_RC );
+ }
+
SBE_TRACD(EXIT_MRK "performPsuChipOp");
return errl;
OpenPOWER on IntegriCloud