summaryrefslogtreecommitdiffstats
path: root/src
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
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')
-rw-r--r--src/include/usr/sbeio/sbeioif.H12
-rw-r--r--src/usr/isteps/istep06/host_discover_targets.C44
2 files changed, 56 insertions, 0 deletions
diff --git a/src/include/usr/sbeio/sbeioif.H b/src/include/usr/sbeio/sbeioif.H
index a7663807a..616c5a4d4 100644
--- a/src/include/usr/sbeio/sbeioif.H
+++ b/src/include/usr/sbeio/sbeioif.H
@@ -63,6 +63,18 @@ namespace SBEIO
errlHndl_t sendSystemConfig(const uint64_t i_systemConfig,
TARGETING::Target * i_procChip);
+
+ /**
+ * @brief Send the signal to the sbe that we are performing a MPIPL
+ *
+ * @param[in] i_procChip The proc you would like to request continueMPIPL to
+ * NOTE: HB should only be sending this to slave procs
+ *
+ * @return errlHndl_t Error log handle on failure.
+ *
+ */
+ errlHndl_t sendContinueMpiplRequest(TARGETING::Target * i_procChip);
+
/**
* @brief Sends a PSU chipOp to quiesce the SBE
*
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