From dd25ed1a207c0bcc7f0b36733f6e5a0fcca31f38 Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Mon, 30 Apr 2018 14:23:21 -0500 Subject: 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 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Martin Gloff Reviewed-by: Brian E. Bakke Reviewed-by: Roland Veloz Reviewed-by: Daniel M. Crowell --- src/include/usr/sbeio/sbeioreasoncodes.H | 1 + 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 -- cgit v1.2.1