summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2016-10-12 15:54:52 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-11-09 14:05:31 -0500
commitb225eef341b12b79a35688dfeb5f2dc596f9efd8 (patch)
treef00ee53e3c500b6fd1697c161cf861a51125e9c8
parentba945d85176346a47c11b10e25e2c2ff0edcee60 (diff)
downloadtalos-hostboot-b225eef341b12b79a35688dfeb5f2dc596f9efd8.tar.gz
talos-hostboot-b225eef341b12b79a35688dfeb5f2dc596f9efd8.zip
Call setSystemConfig during host_runtime_setup
We call setSystemConfig late in the IPL to signal to the SBE what other procs are present and functional in the system. Change-Id: Ibb95243f9493979e0e8bc5aaf4965b0d2f60a8ff RTC: 160666 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31104 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-by: Matt Derksen <v2cibmd@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/include/usr/sbeio/sbeioif.H14
-rw-r--r--src/usr/isteps/istep21/call_host_runtime_setup.C39
2 files changed, 53 insertions, 0 deletions
diff --git a/src/include/usr/sbeio/sbeioif.H b/src/include/usr/sbeio/sbeioif.H
index 3c15c0875..d55e28885 100644
--- a/src/include/usr/sbeio/sbeioif.H
+++ b/src/include/usr/sbeio/sbeioif.H
@@ -48,6 +48,20 @@ namespace SBEIO
errlHndl_t stopDeadmanLoop( );
/**
+ * @brief Semd System Configuration
+ *
+ * @param[in] i_systemConfig Fabric grouping map bitstring
+ * Examples:
+ * bit 0 = proc 0 group 0
+ * bit 8 = proc 0 group 1
+ * bit 12 = proc 4 group 1
+ *
+ * @return errlHndl_t Error log handle on failure.
+ *
+ */
+ errlHndl_t sendSystemConfig(const uint64_t i_systemConfig );
+
+ /**
* @brief Get SCOM via SBE FIFO
*
* @param[in] i_target Target to access
diff --git a/src/usr/isteps/istep21/call_host_runtime_setup.C b/src/usr/isteps/istep21/call_host_runtime_setup.C
index 66497d94b..623bae6d0 100644
--- a/src/usr/isteps/istep21/call_host_runtime_setup.C
+++ b/src/usr/isteps/istep21/call_host_runtime_setup.C
@@ -37,6 +37,10 @@
#include <targeting/common/util.H>
#include <vpd/vpd_if.H>
+//SBE interfacing
+#include <sbeio/sbeioif.H>
+#include <sys/misc.h>
+
#include <hbotcompid.H>
using namespace ERRORLOG;
@@ -59,6 +63,41 @@ void* call_host_runtime_setup (void *io_pArgs)
do
{
+ //Need to send System Configuration down to SBE
+ //Use targeting code to get a list of all processors
+ TARGETING::TargetHandleList l_procChips;
+ getAllChips( l_procChips, TARGETING::TYPE_PROC , true);
+ uint64_t l_systemFabricConfigurationMap = 0x0;
+
+
+ for(auto l_proc : l_procChips)
+ {
+ //Get fabric info from proc
+ uint8_t l_fabricChipId = l_proc->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>();
+ uint8_t l_fabricGroupId = l_proc->getAttr<TARGETING::ATTR_FABRIC_GROUP_ID>();
+ //Calculate what bit position this will be
+ uint8_t l_bitPos = l_fabricChipId + (8 * l_fabricGroupId);
+
+ //Set the bit @ l_bitPos to be 1 because this is a functional proc
+ l_systemFabricConfigurationMap |= (0x8000000000000000 >> l_bitPos);
+ }
+
+ l_err = SBEIO::sendSystemConfig(l_systemFabricConfigurationMap);
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "sendSystemConfig ERROR : Returning errorlog, reason=0x%x",
+ l_err->reasonCode() );
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "sendSystemConfig SUCCESS" );
+ }
+
+
+
// Need to load up the runtime module if it isn't already loaded
if ( !VFS::module_is_loaded( "libruntime.so" ) )
{
OpenPOWER on IntegriCloud