diff options
author | Marty Gloff <mgloff@us.ibm.com> | 2018-02-13 10:46:34 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-04-09 16:36:24 -0400 |
commit | 519b09db143e87b3d43f39790486f6c5dc1be96b (patch) | |
tree | f065d8dfdd170952d0d633c0e0f1d322b43a2fe6 /src/include/usr/targeting/attrrp.H | |
parent | 093052dd5cfac9e8c8d048eb5cf77223debf7e9d (diff) | |
download | talos-hostboot-519b09db143e87b3d43f39790486f6c5dc1be96b.tar.gz talos-hostboot-519b09db143e87b3d43f39790486f6c5dc1be96b.zip |
Support multiple nodes in HBRT - Concurrent Code Update
Enable HBRT to prepare for a concurrent code update on a multiple node system.
Modify preparation function called by Host to loop through all nodes on the
system. Make additional updates to go from supporting only a single node to
supporting multiple nodes.
Change-Id: I2d72b26abf40812641815051b968d6b540d27b00
RTC: 186584
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53952
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr/targeting/attrrp.H')
-rw-r--r-- | src/include/usr/targeting/attrrp.H | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/include/usr/targeting/attrrp.H b/src/include/usr/targeting/attrrp.H index 6eb367e17..897e6dec4 100644 --- a/src/include/usr/targeting/attrrp.H +++ b/src/include/usr/targeting/attrrp.H @@ -114,7 +114,7 @@ class AttrRP #else friend errlHndl_t RT_TARG::saveRestoreAttrs(void *, void *, - uint64_t&); + uint8_t); #endif public: @@ -306,14 +306,16 @@ class AttrRP #else /** - * @brief Fill in new attribute resource provider for HBRT. + * @brief Get node instance status of attribute resource provider + * which indicates if the attribute resource provider is handling + * a single node or multiple nodes * - * @param[in] i_header - * TargetingHeader to use with filling in the new RT AttrRP. - * - * @return void + * @return Node instance status */ - void fillInAttrRP(TargetingHeader* i_header); + NodeInstanceStatus getInstanceStatus() + { + return iv_instanceStatus; + } /** * @brief Get count of nodes handled by attribute resource provider. @@ -352,12 +354,39 @@ class AttrRP * @par Detailed Description: * Ensures member variables are initialized to sane values. */ - AttrRP(TargetingHeader* i_header) - : iv_isTempInstance(true), iv_instanceStatus(SINGLE_NODE), + AttrRP(TargetingHeader* i_header, + NODE_ID i_nodeId, + size_t i_nodeCount, + NodeInstanceStatus i_instanceStatus) + : iv_isTempInstance(true), iv_instanceStatus(i_instanceStatus), iv_isMpipl(false) { - // Fill in member variables - fillInAttrRP(i_header); + // Work with nodes before passed in node + for(NODE_ID l_nodeId = NODE0; l_nodeId < i_nodeCount; ++l_nodeId) + { + // Create local copy of container for node info struct + NodeInfo l_nodeCont; + + if(l_nodeId == i_nodeId) + { + // Initialize local copy of container for node info struct + errlHndl_t l_errl = nodeInfoInit(l_nodeCont, + i_header, + i_nodeId); + if (l_errl) + { + l_errl->setSev(ERRORLOG::ERRL_SEV_UNRECOVERABLE); + + /* Commit the error */ + errlCommit(l_errl, TARG_COMP_ID); + + break; + } + } + + // Push back node info struct into the node container + iv_nodeContainer.push_back(l_nodeCont); + } }; #endif |