From 8d28433bcc3c927ee76cdc4231099660545b1bfa Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Mon, 12 Feb 2018 14:59:05 -0600 Subject: Fix bugs in FSP->HBRT message path for SBE errors Hostboot was expecting the incorrect order of data in messages sent from the FSP -> PHYP -> HBRT where the SBE is requesting that HBRT reset the SBE. This commit corrects the order and renames the struct for the specific role its used in. Also this commit fixes the values for the MESSAGE type sent by the FSP. CQ: SW415675 Change-Id: I08f44486054e7d0113fd7606bb40ced577080d0c Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53883 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Tested-by: Jenkins OP Build CI Reviewed-by: Roland Veloz Tested-by: Jenkins OP HW Reviewed-by: Matt Derksen Reviewed-by: ILYA SMIRNOV Reviewed-by: Daniel M. Crowell --- src/usr/util/runtime/rt_fwnotify.C | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/usr/util/runtime') diff --git a/src/usr/util/runtime/rt_fwnotify.C b/src/usr/util/runtime/rt_fwnotify.C index a0ec0f5e0..d1c404b2a 100644 --- a/src/usr/util/runtime/rt_fwnotify.C +++ b/src/usr/util/runtime/rt_fwnotify.C @@ -85,19 +85,19 @@ uint16_t SeqId_t::getCurrentSeqId() /** * @brief Attempt an SBE recovery after an SBE error - * @param[in] uint64_t i_data Contains a plid (in the first 4 bytes) - * and a HUID (in the last 4 bytes) + * @param[in] uint64_t i_data Contains a HUID (in the first 4 bytes) + * and a plid (in the last 4 bytes) * @platform FSP, OpenPOWER **/ void sbeAttemptRecovery(uint64_t i_data) { // Create a useful struct to get to the data - // The data is expected to be a plid (in the first 4 bytes) - // followed by a HUID (in the last 4 bytes). - HbrtFspData_t *l_hbrtFspData = reinterpret_cast(&i_data); + // The data is expected to be a HUID (in the first 4 bytes) + // followed by a PLID (in the last 4 bytes). + SbeRetryReqData_t *l_sbeRetryData = reinterpret_cast(&i_data); TRACFCOMP(g_trac_runtime, ENTER_MRK"sbeAttemptRecovery: plid:0x%X, " - "HUID:0x%X", l_hbrtFspData->plid, l_hbrtFspData->userData); + "HUID:0x%X", l_sbeRetryData->plid, l_sbeRetryData->huid); errlHndl_t l_err = nullptr; @@ -105,14 +105,14 @@ void sbeAttemptRecovery(uint64_t i_data) { // Extract the target from the given HUID TargetHandle_t l_target = - Target::getTargetFromHuid(l_hbrtFspData->userData); + Target::getTargetFromHuid(l_sbeRetryData->huid); // If HUID invalid, log error and quit if (nullptr == l_target) { TRACFCOMP(g_trac_runtime, ERR_MRK"sbeAttemptRecovery: " "No target associated with HUID:0x%.8X", - l_hbrtFspData->userData); + l_sbeRetryData->huid); /*@ * @errortype @@ -126,8 +126,8 @@ void sbeAttemptRecovery(uint64_t i_data) l_err = new ErrlEntry( ERRL_SEV_PREDICTIVE, MOD_RT_FIRMWARE_NOTIFY, RC_SBE_RT_INVALID_HUID, - l_hbrtFspData->userData, - l_hbrtFspData->plid, + l_sbeRetryData->huid, + l_sbeRetryData->plid, true); break; } @@ -135,7 +135,7 @@ void sbeAttemptRecovery(uint64_t i_data) // Get the SBE Retry Handler, propagating the supplied PLID SbeRetryHandler l_SBEobj = SbeRetryHandler(SbeRetryHandler:: SBE_MODE_OF_OPERATION::INFORMATIONAL_ONLY, - l_hbrtFspData->plid); + l_sbeRetryData->plid); // Retry the recovery of the SBE l_SBEobj.main_sbe_handler(l_target); @@ -161,8 +161,8 @@ void sbeAttemptRecovery(uint64_t i_data) l_err = new ErrlEntry( ERRL_SEV_PREDICTIVE, MOD_RT_FIRMWARE_NOTIFY, RC_FW_REQUEST_RT_NULL_PTR, - l_hbrtFspData->userData, - l_hbrtFspData->plid, + l_sbeRetryData->huid, + l_sbeRetryData->plid, true); break; -- cgit v1.2.3