summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/sbe/sbereasoncodes.H3
-rw-r--r--src/usr/sbe/sbe_update.C29
2 files changed, 30 insertions, 2 deletions
diff --git a/src/include/usr/sbe/sbereasoncodes.H b/src/include/usr/sbe/sbereasoncodes.H
index 4dee3c6ea..4609373a5 100644
--- a/src/include/usr/sbe/sbereasoncodes.H
+++ b/src/include/usr/sbe/sbereasoncodes.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2017 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -106,6 +106,7 @@ enum sbeReasonCode
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,
+ SBE_UNSUPPORTED_EC = SBE_COMP_ID | 0x1D,
};
}; // end SBE
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C
index 7fdd7ae14..872015085 100644
--- a/src/usr/sbe/sbe_update.C
+++ b/src/usr/sbe/sbe_update.C
@@ -747,6 +747,33 @@ namespace SBE
//Walk the TOC and find our current EC
ec = i_target->getAttr<TARGETING::ATTR_EC>();
+
+ // If ec == 0 then this indicates simics is not correctly
+ // writing EC to the FSI register we get the EC level from
+ if(ec == 0)
+ {
+ TRACFCOMP( g_trac_sbe, ERR_MRK"findSBEInPnor: invalid EC found, EC cannot be 0, check simics model" );
+
+ /*@
+ * @errortype
+ * @moduleid SBE_FIND_IN_PNOR
+ * @reasoncode SBE_UNSUPPORTED_EC
+ * @userdata1 Target Huid
+ * @userdata2 unused
+ * @devdesc EC level says 0, which is invalid
+ * @custdesc Chip level is invalid
+ */
+ err = new ErrlEntry(ERRL_SEV_UNRECOVERABLE,
+ SBE_FIND_IN_PNOR,
+ SBE_UNSUPPORTED_EC,
+ TARGETING::get_huid(i_target),
+ 0,
+ ERRORLOG::ErrlEntry::ADD_SW_CALLOUT);
+ err->collectTrace(SBE_COMP_NAME);
+
+ break;
+ }
+
for(uint32_t i=0; i<MAX_SBE_ENTRIES; i++)
{
if(static_cast<uint32_t>(ec) == sbeToc->entries[i].ec)
@@ -767,7 +794,7 @@ namespace SBE
}
}
}
-
+ // IF we failed to find hdr_Ptr then no matching EC found
if(NULL == hdr_Ptr)
{
//if we get here, it's an error
OpenPOWER on IntegriCloud