diff options
author | Rick Ward <rward15@us.ibm.com> | 2018-03-06 09:46:52 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-03-22 14:12:09 -0400 |
commit | a48f950445f16417996399d0630b485b84c1203c (patch) | |
tree | ec56124075f66fc901559b5d5ae3a4c3c54e5b5e /src/usr/runtime | |
parent | bbe9dd41d809fa8c9c02b318ca4b0f315c4680ac (diff) | |
download | talos-hostboot-a48f950445f16417996399d0630b485b84c1203c.tar.gz talos-hostboot-a48f950445f16417996399d0630b485b84c1203c.zip |
Dump collection should only be run on the master node and skipped on slaves.
Added an attribute, IS_MASTER_DRAWER, and a utility function,
isCurrentMasterNode(). The attribute is set in host_sys_fab_iovalid_processing
which is called during istep 18.9. isCurrentMasterNode() is called by
call_host_mpipl_service() to ensure that memory dump collection is only
performed on the master node during a MPIPL.
Change-Id: I7fd48476c3cd7cf4697eafed6705d158a9c54dcf
RTC: 116089
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/55162
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: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/runtime')
-rw-r--r-- | src/usr/runtime/populate_hbruntime.C | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C index 43f5f5f15..529f1b3aa 100644 --- a/src/usr/runtime/populate_hbruntime.C +++ b/src/usr/runtime/populate_hbruntime.C @@ -2843,16 +2843,6 @@ errlHndl_t populate_hbRuntimeData( void ) do { TRACFCOMP(g_trac_runtime, "Running populate_hbRuntimeData"); - TARGETING::Target * sys = nullptr; - TARGETING::targetService().getTopLevelTarget( sys ); - assert(sys != nullptr); - - TARGETING::ATTR_HB_EXISTING_IMAGE_type hb_images = - sys->getAttr<TARGETING::ATTR_HB_EXISTING_IMAGE>(); - - TRACFCOMP( g_trac_runtime, "ATTR_HB_EXISTING_IMAGE (hb_images) = %x", - hb_images); - // Figure out which node we are running on TARGETING::Target* mproc = nullptr; TARGETING::targetService().masterProcChipTargetHandle(mproc); @@ -2865,13 +2855,23 @@ errlHndl_t populate_hbRuntimeData( void ) uint64_t nodeid = pe.instance; - TRACFCOMP( g_trac_runtime, "Master node nodid = %x", - nodeid); + TRACFCOMP( g_trac_runtime, "Master node nodeid = %x", + nodeid); // 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 // needs to be setup by a hb routine that snoops for multiple nodes. + TARGETING::Target * sys = nullptr; + TARGETING::targetService().getTopLevelTarget( sys ); + assert(sys != nullptr); + + TARGETING::ATTR_HB_EXISTING_IMAGE_type hb_images = + sys->getAttr<TARGETING::ATTR_HB_EXISTING_IMAGE>(); + + TRACFCOMP( g_trac_runtime, "ATTR_HB_EXISTING_IMAGE (hb_images) = %x", + hb_images); + if (0 == hb_images) //Single-node { if( !TARGETING::is_no_load() ) @@ -2966,7 +2966,7 @@ errlHndl_t populate_hbRuntimeData( void ) TARGETING::ATTR_HB_EXISTING_IMAGE_type mask = 0x1 << ((sizeof(TARGETING::ATTR_HB_EXISTING_IMAGE_type) * 8) -1); - TRACFCOMP( g_trac_runtime, "HB_EXISTING_IMAGE (mask) = %#x", + TRACFCOMP( g_trac_runtime, "HB_EXISTING_IMAGE (mask) = %x", mask); for (uint64_t l_node=0; (l_node < MAX_NODES_PER_SYS); l_node++ ) |