From 4f32915aa1240d07bb2671010f95695ba5f306c3 Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Mon, 9 Apr 2018 12:30:22 -0500 Subject: Clear perv scrach register prior to triggering HRESET Before we initiate an HRESET we need to make sure that the perv scratch register that the SBE looks at during boot are all zeros. When these registers are zeros the SBE will ignore them and pull values from its own image. We need to do this because Hostboot will repurpose these registers after the SBE boots the first time so the data in the registers is no longer valid. It is okay for the SBE to pull the values from it's own image because during the IPL hostboot customized the SBE image with the correct values. Change-Id: I8b434d04cde3c384e35a3089a349a1d121b6b1dc RTC: 180242 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56959 Reviewed-by: Martin Gloff Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI CI-Ready: Christian R. Geddes Tested-by: Jenkins OP HW Reviewed-by: Roland Veloz Reviewed-by: Daniel M. Crowell --- src/include/usr/sbeio/sbe_retry_handler.H | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/include/usr/sbeio') diff --git a/src/include/usr/sbeio/sbe_retry_handler.H b/src/include/usr/sbeio/sbe_retry_handler.H index deef15c32..43bc9b84f 100644 --- a/src/include/usr/sbeio/sbe_retry_handler.H +++ b/src/include/usr/sbeio/sbe_retry_handler.H @@ -188,6 +188,21 @@ class SbeRetryHandler void handleFspIplTimeFail(TARGETING::Target * i_target); #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 -- cgit v1.2.1