summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-04-30 14:23:21 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-05-07 16:13:03 -0400
commitdd25ed1a207c0bcc7f0b36733f6e5a0fcca31f38 (patch)
treec99569b09bb505fa6a38e359f262190b8d134a85
parent3c73a7c369ce2eebdd53c7672aceddd48d436b3f (diff)
downloadtalos-hostboot-dd25ed1a207c0bcc7f0b36733f6e5a0fcca31f38.tar.gz
talos-hostboot-dd25ed1a207c0bcc7f0b36733f6e5a0fcca31f38.zip
Add error log for sbe poweron fails and clean up errlog commits
This commit introduces a new error log that will get displayed when a slave SBE fails to reach runtime after the intial start_cbs. Before adding this there was no notification letting the user know that Hostboot failed to boot the slave sbe and that it gave control to the FSP so hwsv can figure out what to do next. In addition to this new error log this commit also updates other errlCommit func calls in the sbe_retry_handler to ensure we are using SBEIO as the component id for these error logs. Change-Id: I73854f753a6186958d55909e8e37a605c1ad57c9 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58049 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Brian E. Bakke <bbakke@us.ibm.com> Reviewed-by: Roland Veloz <rveloz@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-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