summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/sbeio/sbeioreasoncodes.H1
-rw-r--r--src/usr/sbeio/common/sbe_retry_handler.C51
2 files changed, 43 insertions, 9 deletions
diff --git a/src/include/usr/sbeio/sbeioreasoncodes.H b/src/include/usr/sbeio/sbeioreasoncodes.H
index 25822912d..a17b2576a 100644
--- a/src/include/usr/sbeio/sbeioreasoncodes.H
+++ b/src/include/usr/sbeio/sbeioreasoncodes.H
@@ -126,6 +126,7 @@ enum sbeioReasonCode
SBEIO_MORE_FFDC_THAN_EXPECTED = SBEIO_COMP_ID | 0x5B,
SBEIO_EXCEED_MAX_SIDE_SWITCHES = SBEIO_COMP_ID | 0x5C,
SBEIO_EXCEED_MAX_SIDE_BOOTS = SBEIO_COMP_ID | 0x5D,
+ SBEIO_SLAVE_FAILED_TO_BOOT = SBEIO_COMP_ID | 0x5E,
// SBE Vital Attention error codes
SBEIO_SBE_RC_VALUE_INFO = SBEIO_COMP_ID | 0x60,
diff --git a/src/usr/sbeio/common/sbe_retry_handler.C b/src/usr/sbeio/common/sbe_retry_handler.C
index 103fe05ca..5e74233a7 100644
--- a/src/usr/sbeio/common/sbe_retry_handler.C
+++ b/src/usr/sbeio/common/sbe_retry_handler.C
@@ -185,6 +185,35 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
#ifndef __HOSTBOOT_RUNTIME
if(INITSERVICE::spBaseServicesEnabled())
{
+ if(iv_initialPowerOn)
+ {
+ // If this is the initial power on there will be no logs that point out this fail
+ // so we need to create one now
+ /*@
+ * @errortype ERRL_SEV_UNRECOVERABLE
+ * @moduleid SBEIO_EXTRACT_RC_HANDLER
+ * @reasoncode SBEIO_SLAVE_FAILED_TO_BOOT
+ * @userdata1 Bool to describe if FFDC data is found
+ * @userdata2 HUID of proc
+ * @devdesc There was a problem attempting to boot SBE
+ * on the slave processor
+ * @custdesc Processor Error
+ */
+ l_errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ SBEIO_EXTRACT_RC_HANDLER,
+ SBEIO_SLAVE_FAILED_TO_BOOT,
+ this->iv_ffdcSetAction,
+ TARGETING::get_huid(i_target));
+
+ l_errl->collectTrace( "ISTEPS_TRACE", 256);
+ l_errl->collectTrace( SBEIO_COMP_NAME, 256);
+ // Set the PLID of the error log to master PLID
+ // if the master PLID is set
+ updatePlids(l_errl);
+
+ errlCommit(l_errl, SBEIO_COMP_ID);
+ }
// This function will TI Hostboot so don't expect to return
handleFspIplTimeFail(i_target);
SBE_TRACF("main_sbe_handler(): We failed to TI the system when we should have, forcing an assert(0) call");
@@ -290,7 +319,7 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
// if the master PLID is set
updatePlids(l_errl);
- errlCommit(l_errl, ISTEP_COMP_ID);
+ errlCommit(l_errl, SBEIO_COMP_ID);
this->iv_currentSBEState = SBE_REG_RETURN::PROC_DECONFIG;
SBE_TRACF("main_sbe_handler(): We have concluded there are no further recovery actions to take, deconfiguring proc and exiting handler");
break;
@@ -337,7 +366,7 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
l_errl = this->switch_sbe_sides(i_target);
if(l_errl)
{
- errlCommit(l_errl, ISTEP_COMP_ID);
+ errlCommit(l_errl, SBEIO_COMP_ID);
// If any error occurs while we are trying to switch sides
// this indicates big problems so we want to break out of the
// retry loop
@@ -424,7 +453,7 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
// if the master PLID is set
updatePlids(l_errl);
- errlCommit( l_errl, ISTEP_COMP_ID);
+ errlCommit( l_errl, SBEIO_COMP_ID);
// If we got an errlog while attempting start_cbs
// we will assume that no future retry actions
// will work so we will break out of the retry loop
@@ -470,7 +499,7 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
// if the master PLID is set
updatePlids(l_errl);
- errlCommit( l_errl, ISTEP_COMP_ID);
+ errlCommit( l_errl, SBEIO_COMP_ID);
// If we got an errlog while attempting p9_sbe_hreset
// we will assume that no future retry actions
// will work so we will exit
@@ -531,7 +560,7 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target )
// if the master PLID is set
updatePlids(l_errl);
- errlCommit(l_errl, ISTEP_COMP_ID);
+ errlCommit(l_errl, SBEIO_COMP_ID);
}
}while(0);
@@ -858,7 +887,7 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target)
if(l_pkgs > MAX_EXPECTED_FFDC_PACKAGES)
{
/*@
- * @errortype
+ * @errortype ERRORLOG::ERRL_SEV_INFORMATIONAL
* @moduleid SBEIO_GET_FFDC_HANDLER
* @reasoncode SBEIO_MORE_FFDC_THAN_EXPECTED
* @userdata1 Maximum expected packages
@@ -874,6 +903,10 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target)
l_errl->collectTrace( SBEIO_COMP_NAME, 256);
+ // Set the PLID of the error log to master PLID
+ // if the master PLID is set
+ updatePlids(l_errl);
+
// Also log the failing proc as FFDC
ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog(l_errl);
errlCommit(l_errl, SBEIO_COMP_ID);
@@ -883,7 +916,7 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target)
if(l_pkgs > 0)
{
/*@
- * @errortype
+ * @errortype ERRORLOG::ERRL_SEV_PREDICTIVE
* @moduleid SBEIO_GET_FFDC_HANDLER
* @reasoncode SBEIO_RETURNED_FFDC
* @userdata1 Processor Target
@@ -891,7 +924,7 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target)
* @devdesc FFDC returned by SBE after failing to reach runtime
* @custdesc FFDC associated with boot device failing to boot
*/
- l_errl = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ l_errl = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_PREDICTIVE,
SBEIO_GET_FFDC_HANDLER,
SBEIO_RETURNED_FFDC,
TARGETING::get_huid(i_target),
@@ -947,7 +980,7 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target)
// if the master PLID is set
updatePlids(l_errl);
- errlCommit(l_errl, ISTEP_COMP_ID);
+ errlCommit(l_errl, SBEIO_COMP_ID);
}
}
#endif
OpenPOWER on IntegriCloud