summaryrefslogtreecommitdiffstats
path: root/src/usr/sbe/sbe_update.C
diff options
context:
space:
mode:
authorDzuy Nguyen <dzuy@us.ibm.com>2017-07-18 13:25:21 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-07-18 18:17:09 -0400
commit878ecf9cc18cf7d2696ce7223d5a485852970153 (patch)
treefa0adf5e58325182c0549b6308e279b4970ca830 /src/usr/sbe/sbe_update.C
parent70f4568bc783303c6310aaaca725b82e339691d5 (diff)
downloadtalos-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.C59
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;
+ }
}
}
OpenPOWER on IntegriCloud