summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorElizabeth Liner <eliner@us.ibm.com>2017-12-08 11:23:05 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-12-20 21:38:16 -0500
commita334e5aa3f11fe4f4657ba89139ac0a543845af1 (patch)
tree2f1fe358ecd4a76b8e08a2addc6814553217b20a /src/include/usr
parentc16744bed5254395d28c188e1571f0846c7f2afa (diff)
downloadtalos-hostboot-a334e5aa3f11fe4f4657ba89139ac0a543845af1.tar.gz
talos-hostboot-a334e5aa3f11fe4f4657ba89139ac0a543845af1.zip
Add in a check in the PSU error logging for SBE failure
If there is an error in the PSU, and there is no FFDC, there is probably something wrong with the SBE. Since there is new support to attempt an SBE reboot if there's an error, we want to add that functionality to the PSU flow as well. Change-Id: I8203193b49caaf640962e181a814df83c0760ff4 RTC:178801 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46641 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr')
-rw-r--r--src/include/usr/isteps/istep_reasoncodes.H13
-rw-r--r--src/include/usr/sbeio/sbe_retry_handler.H56
-rw-r--r--src/include/usr/sbeio/sbe_sp_intf.H1
-rw-r--r--src/include/usr/sbeio/sbeioreasoncodes.H1
4 files changed, 35 insertions, 36 deletions
diff --git a/src/include/usr/isteps/istep_reasoncodes.H b/src/include/usr/isteps/istep_reasoncodes.H
index 9f75bcfe3..2d165b7e5 100644
--- a/src/include/usr/isteps/istep_reasoncodes.H
+++ b/src/include/usr/isteps/istep_reasoncodes.H
@@ -56,11 +56,7 @@ namespace ISTEP
MOD_PM_VERIFY_OCC_CHKPT = 0x14,
MOD_UPDATE_REDUNDANT_TPM = 0x15,
MOD_PROC_EXIT_CACHE_CONTAINED = 0x16,
- MOD_SBE_THRESHOLD_FSM = 0x17,
- MOD_SBE_EXTRACT_RC_HANDLER = 0x18,
- MOD_HANDLE_SBE_REG_VALUE = 0x19,
MOD_SBE_PERFORM_UPDATE_CHECK = 0x1A,
- MOD_SBE_GET_FFDC_HANDLER = 0x1C,
MOD_SET_IPL_PARMS = 0x1D,
MOD_OCC_XSTOP_HANDLER = 0x1E,
MOD_VERIFY_AND_MOVE_PAYLOAD = 0x1F,
@@ -94,7 +90,6 @@ namespace ISTEP
RC_INVALID_RECORD = ISTEP_COMP_ID | 0x14,
RC_INCORRECT_KEWORD_SIZE = ISTEP_COMP_ID | 0x15,
RC_NO_MASTER_CORE_TARGET = ISTEP_COMP_ID | 0x16,
- RC_SBE_SLAVE_TIMEOUT = ISTEP_COMP_ID | 0x17,
RC_ECMD_INSERT_FAILED = ISTEP_COMP_ID | 0x18,
RC_NO_FUNCTIONAL_PROCS = ISTEP_COMP_ID | 0x19,
RC_NO_PRESENT_EQS = ISTEP_COMP_ID | 0x1A,
@@ -113,17 +108,9 @@ namespace ISTEP
RC_SLAVE_PROC_CBS_CONTROL_READ_FAIL = ISTEP_COMP_ID | 0x27,
RC_PROC_SECURITY_STATE_MISMATCH = ISTEP_COMP_ID | 0x28,
RC_MIN_HW_CHECK_FAILED = ISTEP_COMP_ID | 0x29,
- RC_SBE_BOOTED_UNEXPECTED_SIDE_BKP = ISTEP_COMP_ID | 0x2A,
- RC_SBE_EXTRACT_RC_ERROR = ISTEP_COMP_ID | 0x2B,
- RC_BOOT_FROM_BKP_SEEPROM = ISTEP_COMP_ID | 0x2C,
- RC_NO_RECOVERY_ACTION = ISTEP_COMP_ID | 0x2D,
- RC_INCORRECT_FCN_CALL = ISTEP_COMP_ID | 0x2E,
- RC_HWSV_COLLECT_SBE_RC = ISTEP_COMP_ID | 0x2F,
RC_PROC_EXTRACT_SBE_MAIN_ERROR = ISTEP_COMP_ID | 0x30,
- RC_SBE_BOOTED_UNEXPECTED_SIDE_UPD = ISTEP_COMP_ID | 0x31,
RC_SBE_UPDATE_IN_MPIPL = ISTEP_COMP_ID | 0x32,
RC_NO_FFDC_RETURNED = ISTEP_COMP_ID | 0x33,
- RC_RETURNED_FFDC = ISTEP_COMP_ID | 0x34,
RC_P9N_DD1_NOT_SUPPORTED = ISTEP_COMP_ID | 0x35,
RC_PREVENT_REBOOT_IN_MFG_TERM_MODE = ISTEP_COMP_ID | 0x36,
RC_FAILED_WRITE_SPR = ISTEP_COMP_ID | 0x37,
diff --git a/src/include/usr/sbeio/sbe_retry_handler.H b/src/include/usr/sbeio/sbe_retry_handler.H
index 9b84e0ff9..90b74f1bb 100644
--- a/src/include/usr/sbeio/sbe_retry_handler.H
+++ b/src/include/usr/sbeio/sbe_retry_handler.H
@@ -46,17 +46,25 @@ class SbeRetryHandler
PROC_DECONFIG = 3, // Deconfig done on Proc with SBE
};
- /**
- * @brief Get the instance of this class
- *
- * @return the instance of SbeRetryHandler
- */
- NEVER_INLINE static SbeRetryHandler& getInstance();
+ enum SBE_MODE_OF_OPERATION
+ {
+ INFORMATIONAL_ONLY = 0, // Get error logs from the SBE HWP's
+ // This will not attempt a SBE restart, and it will only
+ // run the steps to get the p9_extract_sbe_rc return value.
+ ATTEMPT_REBOOT = 1, // Full SBE run, attempt to restart
+ // This will run all the steps and HWP's to attempt
+ // an SBE restart on both sides.
+ SBE_ACTION_SET = 2, // Full SBE run, but with a set action
+ // This will run all the steps and HWP's to attempt
+ // an SBE restart, however in this case we are specifying
+ // which SBE RETURN_ACTION we are attempting instead of
+ // the action the SBE thinks we should attempt.
+ };
/**
* @brief Constructor
*/
- SbeRetryHandler();
+ SbeRetryHandler(SBE_MODE_OF_OPERATION i_sbeMode);
/**
* @brief Destructor
@@ -74,11 +82,6 @@ class SbeRetryHandler
return this->iv_sbeSide;
}
- inline bool getErrorLogged()
- {
- return this->iv_sbeErrorLogged;
- }
-
inline uint32_t getPLID()
{
return this->iv_errorLogPLID;
@@ -104,17 +107,24 @@ class SbeRetryHandler
return this->iv_currentSBEState;
}
+ inline SBE_MODE_OF_OPERATION getSBEMode()
+ {
+ return this->iv_sbeMode;
+ }
+
+ inline void setSBEMode(SBE_MODE_OF_OPERATION i_sbeMode)
+ {
+ this->iv_sbeMode = i_sbeMode;
+ }
+
/**
* @brief This function is the main entry point for all of the
* SBE handler functions.
*
* @param[in] i_target - current proc target
- * @param[in] i_actionSet - There are a few instances where we have
- * to recall the main function. This variable is
- * set so that we don't override the new action.
*/
- void main_sbe_handler( TARGETING::Target * i_target, bool i_actionSet);
+ void main_sbe_handler( TARGETING::Target * i_target);
private:
@@ -146,7 +156,6 @@ class SbeRetryHandler
* @brief This function handles the SBE failed to boot error.
*
* @param[in] i_target - current proc target
- * @param[out] o_regReturn - sbe reg return
*
* @return - bool: true if we need to retry
*/
@@ -203,12 +212,7 @@ class SbeRetryHandler
uint8_t iv_sbeSide;
/*
- * @brief True if we logged an error during the SBE restart process
- */
- bool iv_sbeErrorLogged;
-
- /*
- * @brief PLID of the unrecoverable error logged. NULL if no error
+ * @brief PLID of the error logged. NULL if no error
* was logged.
*/
uint32_t iv_errorLogPLID;
@@ -240,6 +244,12 @@ class SbeRetryHandler
*/
bool iv_retriggeredMain;
+ /*
+ * @brief The mode of operation that needs to be run through the
+ * SbeRetryHandler. The different modes are specified in the
+ * SBE_MODE_OF_OPERATION enum
+ */
+ SBE_MODE_OF_OPERATION iv_sbeMode;
}; // End of class SbeRetryHandler
} // End of namespace SBEIO
diff --git a/src/include/usr/sbeio/sbe_sp_intf.H b/src/include/usr/sbeio/sbe_sp_intf.H
index fe5fa9981..1ac023d10 100644
--- a/src/include/usr/sbeio/sbe_sp_intf.H
+++ b/src/include/usr/sbeio/sbe_sp_intf.H
@@ -180,6 +180,7 @@ enum sbePrimResponse
SBE_PRI_USER_ERROR = 0x03,
SBE_PRI_INTERNAL_ERROR = 0x04,
SBE_PRI_UNSECURE_ACCESS_DENIED = 0x05,
+ SBE_PRI_FFDC_ERROR = 0x40, /* FFDC Package Present */
SBE_PRI_GENERIC_EXECUTION_FAILURE = 0xFE,
};
diff --git a/src/include/usr/sbeio/sbeioreasoncodes.H b/src/include/usr/sbeio/sbeioreasoncodes.H
index 9c4b3a42f..bdfe7fab7 100644
--- a/src/include/usr/sbeio/sbeioreasoncodes.H
+++ b/src/include/usr/sbeio/sbeioreasoncodes.H
@@ -71,6 +71,7 @@ enum sbeioReasonCode
SBEIO_PSU_RESPONSE_TIMEOUT = SBEIO_COMP_ID | 0x01,
SBEIO_PSU_RESPONSE_ERROR = SBEIO_COMP_ID | 0x02,
SBEIO_PSU_NOT_READY = SBEIO_COMP_ID | 0x03,
+ SBEIO_PSU_FFDC_MISSING = SBEIO_COMP_ID | 0x04,
// SBE FIFO error codes
SBEIO_FIFO_UPSTREAM_TIMEOUT = SBEIO_COMP_ID | 0x10,
OpenPOWER on IntegriCloud