diff options
author | Dzuy Nguyen <dzuy@us.ibm.com> | 2017-07-18 13:25:21 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-07-18 18:17:09 -0400 |
commit | 878ecf9cc18cf7d2696ce7223d5a485852970153 (patch) | |
tree | fa0adf5e58325182c0549b6308e279b4970ca830 /src/usr/sbe/sbe_update.C | |
parent | 70f4568bc783303c6310aaaca725b82e339691d5 (diff) | |
download | talos-hostboot-878ecf9cc18cf7d2696ce7223d5a485852970153.tar.gz talos-hostboot-878ecf9cc18cf7d2696ce7223d5a485852970153.zip |
Block SBE updates during mpipl
Change-Id: Ie59495404ec27d6be865063fc930e895340d9be2
RTC: 169683
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42853
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@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/sbe/sbe_update.C')
-rw-r--r-- | src/usr/sbe/sbe_update.C | 59 |
1 files changed, 46 insertions, 13 deletions
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C index 6fe32951d..a5150abce 100644 --- a/src/usr/sbe/sbe_update.C +++ b/src/usr/sbe/sbe_update.C @@ -377,25 +377,58 @@ namespace SBE /**********************************************/ if ((err == NULL) && (sbeState.update_actions & DO_UPDATE)) { - err = performUpdateActions(sbeState); - if (err) + // If update is needed, check to see if it's in MPIPL + if(sys->getAttr<TARGETING::ATTR_IS_MPIPL_HB>() == true) { TRACFCOMP( g_trac_sbe, - INFO_MRK"updateProcessorSbeSeeproms(): " - "performUpdateActions() Failed " - "rc=0x%.4X, Target UID=0x%X", - err->reasonCode(), - TARGETING::get_huid(sbeState.target)); - - // Don't break - handle error at the end of the loop, + INFO_MRK"updateProcessorSbeSeeproms(): " + "Skip SBE update during MPIPL " + ", Target UID=0x%X", + TARGETING::get_huid(sbeState.target)); + /*@ + * @errortype + * @moduleid SBE_UPDATE_SEEPROMS + * @reasoncode SBE_UPDATE_DURING_MPIPL + * @userdata1 Target huid id + * @userdata2[0:31] Update actions + * @userdata2[32:63] SEEPROM side to update + * @devdesc SBE update is being skipped + * during MPIPL + * @custdesc SBE is not being updated + */ + err = new ErrlEntry(ERRL_SEV_INFORMATIONAL, + SBE_UPDATE_SEEPROMS, + SBE_UPDATE_DURING_MPIPL, + TARGETING::get_huid(sbeState.target), + TWO_UINT32_TO_UINT64( + TO_UINT32(sbeState.update_actions), + TO_UINT32(sbeState.seeprom_side_to_update) + ) + ); + err->collectTrace(SBE_COMP_NAME); } else { - // Target updated without failure, so set IPL_RESTART - // flag, if necessary - if (sbeState.update_actions & IPL_RESTART) + err = performUpdateActions(sbeState); + if (err) + { + TRACFCOMP( g_trac_sbe, + INFO_MRK"updateProcessorSbeSeeproms(): " + "performUpdateActions() Failed " + "rc=0x%.4X, Target UID=0x%X", + err->reasonCode(), + TARGETING::get_huid(sbeState.target)); + + //Don't break - handle error at the end of the loop, + } + else { - l_restartNeeded = true; + //Target updated without failure, so set IPL_RESTART + //flag, if necessary + if (sbeState.update_actions & IPL_RESTART) + { + l_restartNeeded = true; + } } } |