diff options
author | Rick Ward <rward15@us.ibm.com> | 2018-06-29 08:47:43 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-07-05 17:13:04 -0400 |
commit | 71397fd3ade869c11ae669c3eccaf9ec8b6dee61 (patch) | |
tree | f18897efb1595e5b9bb2f866db8e3fc9ac85e34b /src/include/usr/sbeio | |
parent | adc91be44ab6b61691801820aa2fc053db8cebbf (diff) | |
download | talos-hostboot-71397fd3ade869c11ae669c3eccaf9ec8b6dee61.tar.gz talos-hostboot-71397fd3ade869c11ae669c3eccaf9ec8b6dee61.zip |
SBE PSU timeout during MBOX init causes task crash/HB TI
- Handling a PSU DD Timeout involves invoking the SBE Retry
handler, which can cause crashes (FAPI library not yet
initialized) if the timeout happens very early in the IPL.
- Added a check if the FAPI Library was loaded, and added a
call to handle the early timeout later in the IPL.
Change-Id: I199cf0302af916b3f6ffec598ccab04c031e48e6
RTC:433868
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61730
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>
Disable-CI: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include/usr/sbeio')
-rw-r--r-- | src/include/usr/sbeio/sbe_psudd.H | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/include/usr/sbeio/sbe_psudd.H b/src/include/usr/sbeio/sbe_psudd.H index ae72375ba..03b07951c 100644 --- a/src/include/usr/sbeio/sbe_psudd.H +++ b/src/include/usr/sbeio/sbe_psudd.H @@ -642,6 +642,28 @@ class SbePsu uint8_t i_reqMsgs, uint8_t i_rspMsgs); + /** + * @brief save information from an "early" error + * + * If an error occurs before the fapi2 library is loaded, this + * function will record the error state so it can be reported later. + * + * + * @param[in] i_plid Program log id for the error + * @param[in] i_target Proc target for PSU Request that caused an error + */ + void saveEarlyError(uint32_t i_plid,TARGETING::TargetHandle_t i_target); + + /** + * @brief Did an error occur before the fapi2 library was loaded? + */ + bool earlyError() {return iv_earlyErrorOccurred;} + + /** + * @brief If an "early" error was detected, then record and process it. + */ + errlHndl_t processEarlyError(); + protected: /** @@ -676,6 +698,16 @@ class SbePsu std::map<TARGETING::Target *, void *> iv_ffdcPackageBuffer; /** + * @brief Variables needed to record an "early" error + * + * If an error occurs before the fapi2 library is loaded, then + * use these variables to record the error for later reporting. + */ + bool iv_earlyErrorOccurred; + uint32_t iv_earlyErrorPlid; + TARGETING::TargetHandle_t iv_earlyErrorTarget; + + /** * @brief FFDC package needs to be 2 pages */ const uint8_t ffdcPackageSize = 2; |