diff options
author | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-04-10 15:59:26 -0400 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-04-10 16:02:42 -0400 |
commit | 1c4c810a584f0b7b7b51ecfea7451e9c0152ea7e (patch) | |
tree | e68d47cda65d312a84fded8288863950d15038f4 | |
parent | 4f32915aa1240d07bb2671010f95695ba5f306c3 (diff) | |
download | talos-hostboot-1c4c810a584f0b7b7b51ecfea7451e9c0152ea7e.tar.gz talos-hostboot-1c4c810a584f0b7b7b51ecfea7451e9c0152ea7e.zip |
Revert "Clear perv scrach register prior to triggering HRESET"
This reverts commit 4f32915aa1240d07bb2671010f95695ba5f306c3.
Change-Id: Ie51fd274d018df63aef6f725bf57c7b1f7f59265
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57026
CI-Ready: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Tested-by: Christian R. Geddes <crgeddes@us.ibm.com>
-rw-r--r-- | src/include/usr/sbeio/sbe_retry_handler.H | 15 | ||||
-rw-r--r-- | src/usr/sbeio/common/sbe_retry_handler.C | 54 |
2 files changed, 6 insertions, 63 deletions
diff --git a/src/include/usr/sbeio/sbe_retry_handler.H b/src/include/usr/sbeio/sbe_retry_handler.H index 43bc9b84f..deef15c32 100644 --- a/src/include/usr/sbeio/sbe_retry_handler.H +++ b/src/include/usr/sbeio/sbe_retry_handler.H @@ -189,21 +189,6 @@ class SbeRetryHandler #endif /** - * @brief There are 8 scratch registers that the SBE will look at during initialization. - After we bring up the slave SBE in istep 8, hostboot will begin to repurpose - these registers. If we restart the SBE during runtime with HRESET the SBE will - look at these registers which hostboot has repurposed. We do not want the SBE - to use this data as it is no longer valid. If the registers are all zero's then - the SBE will use data from its image. This will work because hostboot has customized - the image with the correct values during the IPL. This function will zero out all - of the scratch registers to make sure the SBE uses its own copy of the values it - is looking for in these registers. - * - * @param[in] i_target - Proc we are clearing scratch regs for - */ - errlHndl_t clearSbeScratchRegisters(TARGETING::Target * i_target); - - /** * @brief This function will look at what iv_currentAction is set to * and take into account how many times we have tried to boot * and how many times we have switched sides. diff --git a/src/usr/sbeio/common/sbe_retry_handler.C b/src/usr/sbeio/common/sbe_retry_handler.C index 60ced2eca..5cfa6f32f 100644 --- a/src/usr/sbeio/common/sbe_retry_handler.C +++ b/src/usr/sbeio/common/sbe_retry_handler.C @@ -434,19 +434,10 @@ void SbeRetryHandler::main_sbe_handler( TARGETING::Target * i_target ) { this->iv_currentSideBootAttempts++; - // Prior to performing the hreset we want to zero out the scratch registers - // this will force the SBE to use its own image to populate the values it - // is expecting from the scratch regs. - l_errl = clearSbeScratchRegisters(i_target); - - if(!l_errl) - { - // For now we only use HRESET during runtime, the bool param - // we are passing in is supposed to be FALSE if runtime, TRUE is ipl time - FAPI_INVOKE_HWP(l_errl, p9_sbe_hreset, - l_fapi2_proc_target, false); - } - + // For now we only use HRESET during runtime, the bool param + // we are passing in is supposed to be FALSE if runtime, TRUE is ipl time + FAPI_INVOKE_HWP(l_errl, p9_sbe_hreset, + l_fapi2_proc_target, false); if(l_errl) { SBE_TRACF("ERROR: call p9_sbe_hreset, PLID=0x%x", @@ -1178,7 +1169,7 @@ errlHndl_t SbeRetryHandler::switch_sbe_sides(TARGETING::Target * i_target) if( l_errl ) { SBE_TRACF( ERR_MRK"switch_sbe_sides: SCOM device read " - "PERV_SB_CS_SCOM (0x%.8X), proc target = %.8X, " + "PERV_SB_CS_SCOM (0x%.4X), proc target = %.8X, " "RC=0x%X, PLID=0x%lX", PERV_SB_CS_SCOM, // 0x50008 TARGETING::get_huid(i_target), @@ -1215,7 +1206,7 @@ errlHndl_t SbeRetryHandler::switch_sbe_sides(TARGETING::Target * i_target) if( l_errl ) { SBE_TRACF( ERR_MRK"switch_sbe_sides: SCOM device write " - "PERV_SB_CS_SCOM (0x%.8X), proc target = %.8X, " + "PERV_SB_CS_SCOM (0x%.4X), proc target = %.8X, " "RC=0x%X, PLID=0x%lX", PERV_SB_CS_SCOM, // 0x50008 TARGETING::get_huid(i_target), @@ -1247,37 +1238,4 @@ errlHndl_t SbeRetryHandler::switch_sbe_sides(TARGETING::Target * i_target) return l_errl; } -errlHndl_t SbeRetryHandler::clearSbeScratchRegisters(TARGETING::Target * i_target) -{ - SBE_TRACF(ENTER_MRK "clearSbeScratchRegisters()"); - errlHndl_t l_errl = nullptr; - - uint64_t l_writeVal = 0; - size_t l_opSize = sizeof(uint64_t); - - // Loop through all 8 SBE scratch registers writing 0's to each - // one via SCOM - for(uint64_t l_reg = PERV_SCRATCH_REGISTER_1_SCOM; - l_reg <= PERV_SCRATCH_REGISTER_8_SCOM; - l_reg++) - { - l_errl = DeviceFW::deviceOp( - DeviceFW::WRITE, - i_target, - &l_writeVal, - l_opSize, - DEVICE_SCOM_ADDRESS(l_reg) ); - if(l_errl) - { - SBE_TRACF( "clearSbeScratchRegisters: Error attempting to zero out 0x%.8X via SCOM on proc w/ HUID: 0x%.8X", - l_reg, - TARGETING::get_huid(i_target)); - break; - } - } - - SBE_TRACF(EXIT_MRK "clearSbeScratchRegisters()"); - return l_errl; -} - } // End of namespace SBEIO |