diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-04-06 13:33:55 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-04-13 13:34:41 -0400 |
commit | 78f675d4399ec5b2442f25bd750e99390725f921 (patch) | |
tree | a98eedaf32aea1f5bd3ad8f7061fd21739cb944d /src/usr | |
parent | 21769fefa25ac75108b7690cfaa04607f1bdf11e (diff) | |
download | talos-hostboot-78f675d4399ec5b2442f25bd750e99390725f921.tar.gz talos-hostboot-78f675d4399ec5b2442f25bd750e99390725f921.zip |
Improve linking of PLIDs for sbe_retry_handler
Previously if a PLID was passed to the ctor of the sbe_retry_handler
we would link all errors logs created during the process of recovering
the SBE with this PLID. But if no PLID was passed then we would not
link the logs. This commit changes it so if no PLID is passed to the
ctor then the first log created in the recovery process will become
the PLID that all logs after will be set to.
Change-Id: I93ef3a48b4cc1d7df3237d7ba3dfefba21d5fb6b
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56885
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
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: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/sbeio/common/sbe_retry_handler.C | 95 |
1 files changed, 35 insertions, 60 deletions
diff --git a/src/usr/sbeio/common/sbe_retry_handler.C b/src/usr/sbeio/common/sbe_retry_handler.C index 5cfa6f32f..14725e93a 100644 --- a/src/usr/sbeio/common/sbe_retry_handler.C +++ b/src/usr/sbeio/common/sbe_retry_handler.C @@ -118,7 +118,7 @@ SbeRetryHandler::SbeRetryHandler(SBE_MODE_OF_OPERATION i_sbeMode, : iv_useSDB(false) , iv_secureModeDisabled(false) //Per HW team this should always be 0 -, iv_callerErrorLogPLID(i_plid) +, iv_masterErrorLogPLID(i_plid) , iv_switchSidesCount(0) , iv_currentAction(P9_EXTRACT_SBE_RC::ERROR_RECOVERED) , iv_currentSBEState(SBE_REG_RETURN::SBE_NOT_AT_RUNTIME) @@ -286,12 +286,9 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) HWAS::DELAYED_DECONFIG, HWAS::GARD_NULL ); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); errlCommit(l_errl, ISTEP_COMP_ID); this->iv_currentSBEState = SBE_REG_RETURN::PROC_DECONFIG; @@ -328,12 +325,10 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) TARGETING::get_huid(i_target)); l_errl->collectTrace( SBEIO_COMP_NAME, 256); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // 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); // Break out of loop, something bad happened and we dont want end // up in a endless loop @@ -378,12 +373,10 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) l_errl->collectTrace( SBEIO_COMP_NAME, 256); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // 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); // Break out of loop, something bad happened and we dont want end // up in a endless loop @@ -415,12 +408,9 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) HWAS::NO_DECONFIG, HWAS::GARD_Predictive); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); errlCommit( l_errl, ISTEP_COMP_ID); // If we got an errlog while attempting start_cbs @@ -450,12 +440,9 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) HWAS::NO_DECONFIG, HWAS::GARD_Predictive); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); errlCommit( l_errl, ISTEP_COMP_ID); // If we got an errlog while attempting p9_sbe_hreset @@ -514,12 +501,9 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) l_errl->collectTrace("ISTEPS_TRACE",256); l_errl->collectTrace(SBEIO_COMP_NAME,256); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); errlCommit(l_errl, ISTEP_COMP_ID); } @@ -570,12 +554,9 @@ bool SbeRetryHandler::sbe_run_extract_msg_reg(TARGETING::Target * i_target) SBE_TRACF("ERROR: call sbe_run_extract_msg_reg, PLID=0x%x", l_errl->plid() ); l_errl->collectTrace(SBEIO_COMP_NAME,256); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); // capture the target data in the elog ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog( l_errl ); @@ -924,12 +905,9 @@ void SbeRetryHandler::sbe_get_ffdc_handler(TARGETING::Target * i_target) l_errl->collectTrace( SBEIO_COMP_NAME, KILOBYTE/4); l_errl->collectTrace( "ISTEPS_TRACE", KILOBYTE/4); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); errlCommit(l_errl, ISTEP_COMP_ID); } @@ -972,7 +950,7 @@ void SbeRetryHandler::sbe_run_extract_rc(TARGETING::Target * i_target) l_ret, iv_useSDB, iv_secureModeDisabled); // Convert the returnCode into an UNRECOVERABLE error log which we will - // associated w/ the caller's errlog via plid + // associate w/ the caller's errlog via plid l_errl = rcToErrl(l_rc, ERRORLOG::ERRL_SEV_UNRECOVERABLE); this->iv_currentAction = l_ret; @@ -1003,12 +981,9 @@ void SbeRetryHandler::sbe_run_extract_rc(TARGETING::Target * i_target) // Capture the target data in the elog ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog( l_errl ); - // Set the PLID of the error log to caller's PLID, - // if provided - if (iv_callerErrorLogPLID) - { - l_errl->plid(iv_callerErrorLogPLID); - } + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); // Commit error log errlCommit( l_errl, HWPF_COMP_ID ); @@ -1227,11 +1202,11 @@ errlHndl_t SbeRetryHandler::switch_sbe_sides(TARGETING::Target * i_target) this->iv_currentSideBootAttempts = 0; }while(0); - // Set the PLID of the error log to caller's PLID, - // if provided - if (l_errl && iv_callerErrorLogPLID) + if (l_errl) { - l_errl->plid(iv_callerErrorLogPLID); + // Set the PLID of the error log to master PLID + // if the master PLID is set + updatePlids(l_errl); } SBE_TRACF(EXIT_MRK "switch_sbe_sides()"); |