diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-04-30 14:23:21 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-05-07 16:13:03 -0400 |
commit | dd25ed1a207c0bcc7f0b36733f6e5a0fcca31f38 (patch) | |
tree | c99569b09bb505fa6a38e359f262190b8d134a85 | |
parent | 3c73a7c369ce2eebdd53c7672aceddd48d436b3f (diff) | |
download | talos-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.H | 1 | ||||
-rw-r--r-- | src/usr/sbeio/common/sbe_retry_handler.C | 51 |
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 |