summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2017-04-11 21:47:38 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-04-18 10:16:15 -0400
commite226f146c5b4451af2c2074b86f195cc367c4787 (patch)
treee84cfce54d80fc6d48dc752d32dfd91881451efe /src/usr/isteps
parent43dba2cf6e0f68cf833b57db3611d202ddce721b (diff)
downloadtalos-hostboot-e226f146c5b4451af2c2074b86f195cc367c4787.tar.gz
talos-hostboot-e226f146c5b4451af2c2074b86f195cc367c4787.zip
Call continueMPIPL fifo chipop on slave procs during MPIPL
During MPIPL the SBE issues the continueMPIPL chipop to the master proc but HB is responsible for issuing this command to the slave procs. Currently this is done after powering down the slave EQs in host_ discover_targets Change-Id: Ieca498ff543236373c7ad9ba588f9049dd0f77c7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39137 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: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps')
-rw-r--r--src/usr/isteps/istep06/host_discover_targets.C44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/usr/isteps/istep06/host_discover_targets.C b/src/usr/isteps/istep06/host_discover_targets.C
index a2e4b0cba..500f9a2f2 100644
--- a/src/usr/isteps/istep06/host_discover_targets.C
+++ b/src/usr/isteps/istep06/host_discover_targets.C
@@ -54,6 +54,10 @@
#include <fapi2/plat_hwp_invoker.H>
#include <fapi2/target.H>
+//SBE interfacing
+#include <sbeio/sbeioif.H>
+#include <sys/misc.h>
+
#include <p9_cpu_special_wakeup.H>
#include <p9_query_core_access_state.H>
#include <p9_query_cache_access_state.H>
@@ -226,6 +230,41 @@ bool deassertSpecialWakeupOnCores(ISTEP_ERROR::IStepError & io_istepError)
}
/**
+* @brief Walk through the cores and ensure special wakeup is disabled
+* from all srcs.
+*
+*
+* @return errlHndl_t
+*/
+errlHndl_t sendContinueMpiplChipOp()
+{
+ errlHndl_t l_err = nullptr;
+
+ TARGETING::TargetHandleList l_procChips;
+ TARGETING::getAllChips(l_procChips, TARGETING::TYPE_PROC, true);
+ TARGETING::PROC_SBE_MASTER_CHIP_ATTR l_is_master_chip = 1;
+
+ for(const auto & l_chip : l_procChips)
+ {
+ l_is_master_chip = l_chip->getAttr<TARGETING::ATTR_PROC_SBE_MASTER_CHIP>();
+ if(!l_is_master_chip)
+ {
+ l_err = SBEIO::sendContinueMpiplRequest(l_chip);
+
+ if(l_err)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "Failed sending continueMPIPL request on this proc = %x",
+ l_chip->getAttr<TARGETING::ATTR_HUID>());
+ break;
+ }
+ }
+ }
+
+return l_err;
+}
+
+/**
* @brief loop through slave quads, make sure clocks are stopped
* (core and cache) and power them down
*
@@ -553,6 +592,11 @@ void* host_discover_targets( void *io_pArgs )
{
//Need to power down the slave quads
l_err = powerDownSlaveQuads();
+
+ if(!l_err)
+ {
+ l_err = sendContinueMpiplChipOp();
+ }
}
}
OpenPOWER on IntegriCloud