diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2014-08-04 13:31:50 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-08-05 10:59:42 -0500 |
commit | 6fd52005feb03cabc701b6e391344c03decab382 (patch) | |
tree | e3388ca738dad141cb604d90ca24260ba4473b66 /src/usr/runtime | |
parent | 65067e28d9ff34d4fdc459b0d5963ac718b4849d (diff) | |
download | talos-hostboot-6fd52005feb03cabc701b6e391344c03decab382.tar.gz talos-hostboot-6fd52005feb03cabc701b6e391344c03decab382.zip |
Allow booting from 1 node that isn't node0
Change-Id: Ifab17f76fcb1334ce76561dfb7fce5a2ac218593
CQ: SW271293
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/12611
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/runtime')
-rw-r--r-- | src/usr/runtime/populate_attributes.C | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/usr/runtime/populate_attributes.C b/src/usr/runtime/populate_attributes.C index cbce21677..fb9f23cd7 100644 --- a/src/usr/runtime/populate_attributes.C +++ b/src/usr/runtime/populate_attributes.C @@ -412,6 +412,7 @@ errlHndl_t populate_node_attributes( uint64_t i_nodeNum ) do { TRACDCOMP( g_trac_runtime, "-NODE-" ); + TRACFCOMP( g_trac_runtime, "populate_node_attributes(node=%d)", i_nodeNum ); // allocate memory and fill it with some junk data uint64_t node_data_addr = 0; @@ -690,6 +691,11 @@ errlHndl_t populate_attributes( void ) TARGETING::ATTR_HB_EXISTING_IMAGE_type hb_images = sys->getAttr<TARGETING::ATTR_HB_EXISTING_IMAGE>(); + // Figure out which node we are running on + TARGETING::Target* mproc = NULL; + TARGETING::targetService().masterProcChipTargetHandle(mproc); + uint64_t nodeid = mproc->getAttr<TARGETING::ATTR_FABRIC_NODE_ID>(); + // ATTR_HB_EXISTING_IMAGE only gets set on a multi-drawer system. // Currently set up in host_sys_fab_iovalid_processing() which only // gets called if there are multiple physical nodes. It eventually @@ -697,11 +703,7 @@ errlHndl_t populate_attributes( void ) uint64_t present_nodes = hb_images; if(hb_images == 0) { - // Figure out which node we are running on and set the - // appropriate bit - TARGETING::Target* mproc = NULL; - TARGETING::targetService().masterProcChipTargetHandle(mproc); - uint64_t nodeid = mproc->getAttr<TARGETING::ATTR_FABRIC_NODE_ID>(); + // Set the appropriate bit for our node present_nodes = ((uint64_t)0x1 << ((sizeof(present_nodes) * 8) - 1)) >> nodeid; @@ -724,9 +726,8 @@ errlHndl_t populate_attributes( void ) // Single or Multi-node? if(hb_images == 0) //Single-node { - // Single node system - errhdl = populate_node_attributes(0); - + // Single node system, call inline and pass in our node number + errhdl = populate_node_attributes(nodeid); if(errhdl != NULL) { TRACFCOMP( g_trac_runtime, "populate_node_attributes failed" ); |