diff options
author | crgeddes <crgeddes@us.ibm.com> | 2016-10-12 15:54:52 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-11-09 14:05:31 -0500 |
commit | b225eef341b12b79a35688dfeb5f2dc596f9efd8 (patch) | |
tree | f00ee53e3c500b6fd1697c161cf861a51125e9c8 | |
parent | ba945d85176346a47c11b10e25e2c2ff0edcee60 (diff) | |
download | talos-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.H | 14 | ||||
-rw-r--r-- | src/usr/isteps/istep21/call_host_runtime_setup.C | 39 |
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" ) ) { |