summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorMarty Gloff <mgloff@us.ibm.com>2017-07-26 11:27:45 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-08-09 13:34:40 -0400
commit7c53973849de64198de72fcdd680e1424832a4e0 (patch)
tree4a4b8daa6f29cc1fc75025b24b4e2010756b0600 /src/include/usr
parente276a9bbce83803dca7fb399c5b69a174b4ade4b (diff)
downloadtalos-hostboot-7c53973849de64198de72fcdd680e1424832a4e0.tar.gz
talos-hostboot-7c53973849de64198de72fcdd680e1424832a4e0.zip
SBE update plan for OpenPOWER
We need to have a new way to handle the SBE update flow for OpenPOWER. Update the SBE code one side at a time to avoid a scenario where a bad code load bricks the system. Start by loading side 0 (primary), then re-IPL, and finally load side 1 (backup). A new config flag is used, SBE_UPDATE_CONSECUTIVE. Change-Id: Icf18ebec173c2f42fe200fb9cd547b9ebc580acc RTC: 176755 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43893 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: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr')
-rw-r--r--src/include/usr/ipmi/ipmisensor.H6
-rw-r--r--src/include/usr/sbe/sbe_update.H16
-rw-r--r--src/include/usr/sbe/sbereasoncodes.H1
3 files changed, 22 insertions, 1 deletions
diff --git a/src/include/usr/ipmi/ipmisensor.H b/src/include/usr/ipmi/ipmisensor.H
index c57a35076..69d9e2361 100644
--- a/src/include/usr/ipmi/ipmisensor.H
+++ b/src/include/usr/ipmi/ipmisensor.H
@@ -49,6 +49,11 @@ namespace SENSOR
const uint8_t INVALID_TYPE = 0xFF;
/**
+ * @brief Default reboot count value.
+ */
+ static const uint16_t DEFAULT_REBOOT_COUNT = 0x0002;
+
+ /**
* @enum sensorReadingTypes
* Sensor specific completion codes, defined in IPMI Spec.
*
@@ -627,7 +632,6 @@ namespace SENSOR
*/
errlHndl_t getRebootCount( uint16_t& o_rebootCount );
-
};
/**
diff --git a/src/include/usr/sbe/sbe_update.H b/src/include/usr/sbe/sbe_update.H
index a831df5d8..25d7448af 100644
--- a/src/include/usr/sbe/sbe_update.H
+++ b/src/include/usr/sbe/sbe_update.H
@@ -115,7 +115,11 @@ namespace SBE
const uint8_t REIPL_SEEPROM_1_VALUE = 0x40;
// Situation constants -- bits numbered from left to right
+#ifndef CONFIG_SBE_UPDATE_CONSECUTIVE
const uint8_t SITUATION_ALL_BITS_MASK = 0xE0;
+#else
+ const uint8_t SITUATION_ALL_BITS_MASK = 0x0E;
+#endif
// Bit 0: current side is permanent (=0) or temp (=1)
const uint8_t SITUATION_CUR_IS_PERM = 0x00;
const uint8_t SITUATION_CUR_IS_TEMP = 0x80;
@@ -128,6 +132,18 @@ namespace SBE
const uint8_t SITUATION_ALT_IS_CLEAN = 0x00;
const uint8_t SITUATION_ALT_IS_DIRTY = 0x20;
+ // Bit 4: side 0 clean (=0) or dirty (=1)
+ const uint8_t SITUATION_SIDE_0_CLEAN = 0x00;
+ const uint8_t SITUATION_SIDE_0_DIRTY = 0x08;
+
+ // Bit 5: side 1 clean (=0) or dirty (=1)
+ const uint8_t SITUATION_SIDE_1_CLEAN = 0x00;
+ const uint8_t SITUATION_SIDE_1_DIRTY = 0x04;
+
+ // Bit 6: boot side is side 0 (=0) or side 1 (=1)
+ const uint8_t SITUATION_BOOT_SIDE_0 = 0x00;
+ const uint8_t SITUATION_BOOT_SIDE_1 = 0x02;
+
// For mbox messages to FSP
const uint32_t MSG_IPL_DUE_TO_SBE_UPDATE = 0x40000012;
const uint32_t MSG_IPL_MASTER_CORE = 0x40000005;
diff --git a/src/include/usr/sbe/sbereasoncodes.H b/src/include/usr/sbe/sbereasoncodes.H
index 57c21ce1d..4dee3c6ea 100644
--- a/src/include/usr/sbe/sbereasoncodes.H
+++ b/src/include/usr/sbe/sbereasoncodes.H
@@ -105,6 +105,7 @@ enum sbeReasonCode
ERROR_FROM_XIP_FIND = SBE_COMP_ID | 0x19,
SBE_MISMATCHED_HW_KEY_HASH = SBE_COMP_ID | 0x1A,
SBE_UPDATE_DURING_MPIPL = SBE_COMP_ID | 0x1B,
+ SBE_BOOT_SIDE_DIRTY_BAD_PATH = SBE_COMP_ID | 0x1C,
};
}; // end SBE
OpenPOWER on IntegriCloud