diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-03-22 14:56:08 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-04-09 14:31:53 -0400 |
commit | 5192636a15d9fd36653952eaad5dac0974094f00 (patch) | |
tree | c6ab6f954f0e3210a5794cfbff3ea2bcd164efc0 /src/usr/util/runtime/rt_fwnotify.C | |
parent | a027c49b4ca5e60a17746a6eb8c6ca0d89bc6f3f (diff) | |
download | talos-hostboot-5192636a15d9fd36653952eaad5dac0974094f00.tar.gz talos-hostboot-5192636a15d9fd36653952eaad5dac0974094f00.zip |
Hook up FSP runtime support for sbe_retry_handler (hreset path)
In the sbe_retry_handler code we have two methods we can use to restart
the sbe. They are restarting the cfam boot sequence (start_cbs HWP) and
performing a hw reset on the PPE (hreset HWP). We use start_cbs if there
are issues with initial power on of the slave proc's SBE because we will
not lose any state info (fabric isn't up yet). During runtime we will want
to use the hreset HWP to recover the SBE. Hreset is handy because it will
not force a reboot of the entire proc chip, so the fabric can stay up while
we reset the PPE in the SBE. This commit implements the code path for the
hreset HWP in the sbe_retry_handler. In addition this commit enables calls to
the sbe_retry_handler in rt_fwnotify's sbeAttemptRecovery function which
handles PHYP requests to recover the SBE.
(Also some small typos in related code fixed)
Change-Id: I8f85c38a09e8d5ab80b2809e5665c77a54e35bc4
CQ: SW415675
RTC: 180242
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56276
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
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>
Reviewed-by: Roland Veloz <rveloz@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/util/runtime/rt_fwnotify.C')
-rw-r--r-- | src/usr/util/runtime/rt_fwnotify.C | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/usr/util/runtime/rt_fwnotify.C b/src/usr/util/runtime/rt_fwnotify.C index f8b8d6fe2..6f9a02cbc 100644 --- a/src/usr/util/runtime/rt_fwnotify.C +++ b/src/usr/util/runtime/rt_fwnotify.C @@ -132,19 +132,15 @@ void sbeAttemptRecovery(uint64_t i_data) break; } - - // Get the recovery results - // TODO SW415675 Need to attempt sbe retry if requested // Get the SBE Retry Handler, propagating the supplied PLID -// SbeRetryHandler l_SBEobj = SbeRetryHandler(SbeRetryHandler:: -// SBE_MODE_OF_OPERATION::INFORMATIONAL_ONLY, -// l_sbeRetryData->plid); + SbeRetryHandler l_SBEobj = SbeRetryHandler(SbeRetryHandler:: + SBE_MODE_OF_OPERATION::ATTEMPT_REBOOT, + l_sbeRetryData->plid); + + //Attempt to recover the SBE + l_SBEobj.main_sbe_handler(l_target); - // Retry the recovery of the SBE -// l_SBEobj.main_sbe_handler(l_target); -// //bool l_recoverySuccessful = l_SBEobj.getSbeRestart(); - bool l_recoverySuccessful = false; if (nullptr == g_hostInterfaces || nullptr == g_hostInterfaces->firmware_request) { @@ -183,8 +179,8 @@ void sbeAttemptRecovery(uint64_t i_data) l_req_fw_msg.generic_msg.__req = GenericFspMboxMessage_t::REQUEST; l_req_fw_msg.generic_msg.data = i_data; - // Set msgType based on recovery success or failure - if (l_recoverySuccessful) + // Set msgType based on recovery success or failure (If sbe made it back to runtime) + if (l_SBEobj.isSbeAtRuntime()) { l_req_fw_msg.generic_msg.msgType = GenericFspMboxMessage_t::MSG_SBE_RECOVERY_SUCCESS; |