summaryrefslogtreecommitdiffstats
path: root/src/usr/sbe/sbe_update.H
diff options
context:
space:
mode:
authorMike Baiocchi <baiocchi@us.ibm.com>2013-12-05 11:25:56 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-01-09 16:13:30 -0600
commit8d4862c1ce39d6a2b9cbbb7be2301013d4b3bb51 (patch)
tree81ec8b7d88f97d7a2b5ec081f4f35bae79110b08 /src/usr/sbe/sbe_update.H
parente44c59e4b554565a1db7be45ca708a8b7429f3b7 (diff)
downloadtalos-hostboot-8d4862c1ce39d6a2b9cbbb7be2301013d4b3bb51.tar.gz
talos-hostboot-8d4862c1ce39d6a2b9cbbb7be2301013d4b3bb51.zip
SBE Update Pre-Enablement Changes
These updates are required before enabling hostboot to do the SBE Updates during the IPL. Change-Id: I2b14c1a96940f06589a5712c2126bc51e2546835 RTC: 89503 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7555 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/sbe/sbe_update.H')
-rw-r--r--src/usr/sbe/sbe_update.H28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/usr/sbe/sbe_update.H b/src/usr/sbe/sbe_update.H
index beba75a8f..810cdc765 100644
--- a/src/usr/sbe/sbe_update.H
+++ b/src/usr/sbe/sbe_update.H
@@ -47,6 +47,10 @@ namespace SBE
const uint32_t SBE_SEEPROM_STRUCT_VERSION = 0x00000001;
const uint32_t SBE_SEEPROM_STRUCT_SIMICS_VERSION = 0x5A5A5A5A;
+ // Constant written to SBE SEEPROM version struct to invalidate the
+ // struct and the image - 'INVALID\0'
+ const uint64_t SBE_SEEPROM_STRUCT_INVALID = 0x494E56414C494400;
+
// Used for locations of SBE_Version and SBE Image on a SEEPROM
const uint64_t SBE_IMAGE_SEEPROM_ADDRESS = 0x400; // 1KB
const uint64_t SBE_VERSION_SEEPROM_ADDRESS = 0x300; // 1KB - 256B
@@ -107,9 +111,9 @@ namespace SBE
// Used to keep track of perm/temp, and cur/alt
enum sbeSeepromSide_t
{
- SBE_SEEPROM0, // corresponds to EEPROM::SBE_PRIMARY
- SBE_SEEPROM1, // corresponts to EEPROM::SBE_BACKUP
- SBE_SEEPROM_INVALID,
+ SBE_SEEPROM0 = 0x00, // corresponds to EEPROM::SBE_PRIMARY
+ SBE_SEEPROM1 = 0x01, // corresponts to EEPROM::SBE_BACKUP
+ SBE_SEEPROM_INVALID = 0xFF,
};
// Actions can be combined
@@ -118,8 +122,11 @@ namespace SBE
CLEAR_ACTIONS = 0x00000000,
DO_UPDATE = 0x00000001,
IPL_RESTART = 0x00000002,
- CALLOUT_SBE_CODE = 0x00000004,
- UNSUPPORTED_SITUATION = 0x00000008,
+ UPDATE_MVPD = 0x00000004,
+ MVPD_UPDATE_COMPLETE = 0x00000008,
+ UPDATE_SBE = 0x00000010,
+ SBE_UPDATE_COMPLETE = 0x00000020,
+ UNSUPPORTED_SITUATION = 0x80000000,
};
@@ -141,6 +148,8 @@ namespace SBE
uint8_t data_crc[SBE_DATA_CRC_SIZE];
} PACKED;
+ // This line forces a compile fail if struct is NOT 8-byte-alaigned
+ CPPASSERT(0 == (sizeof(sbeSeepromVersionInfo_t) % 8));
/**
* @brief Struct of individual SBE entry in SBE and SBEC
@@ -351,10 +360,19 @@ namespace SBE
* @param[io/out] io_sbeState Struct containing SBE State of the target
* and the information to be used for updating
* the SBE State of the target
+ *
* @return errlHndl_t Error log handle on failure.
*/
errlHndl_t updateSeepromSide(sbeTargetState_t i_sbeState);
+ /**
+ * @brief Check and Update all targets before Re-IPL Request
+ *
+ * @param[io/out] io_sbeStates_v Vector of SBE State structs
+ *
+ * @return errlHndl_t Error log handle on failure.
+ */
+ errlHndl_t preReIplCheck(std::vector<sbeTargetState_t>& io_sbeStates_v);
/******************************************/
OpenPOWER on IntegriCloud