diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2016-09-06 09:14:23 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2016-09-08 12:03:13 -0400 |
commit | 263fd96f988d641967d0bd1e3537ac75caed254d (patch) | |
tree | f21ff9e45a24283bea5c80b12b4c80a89bb9d4ed /src/usr/sbeio/sbe_fifodd.C | |
parent | 92ddefe702f52ab25c0da4d9e5f5fad5a56ab851 (diff) | |
download | talos-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_fifodd.C')
-rw-r--r-- | src/usr/sbeio/sbe_fifodd.C | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/usr/sbeio/sbe_fifodd.C b/src/usr/sbeio/sbe_fifodd.C index 1b1dfdc21..3066dc890 100644 --- a/src/usr/sbeio/sbe_fifodd.C +++ b/src/usr/sbeio/sbe_fifodd.C @@ -37,6 +37,7 @@ #include <targeting/common/targetservice.H> #include <sbeio/sbeioreasoncodes.H> #include "sbe_fifodd.H" +#include <initservice/initserviceif.H> //@todo-RTC:149454-Remove extern trace_desc_t* g_trac_sbeio; @@ -94,6 +95,36 @@ errlHndl_t performFifoChipOp(TARGETING::Target * i_target, mutex_unlock(&l_fifoOpMux); + //@todo-RTC:149454-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_FIFO + * @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_FIFO, + 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 "performFifoChipOp"); return errl; |