diff options
author | Rick Ward <rward15@us.ibm.com> | 2018-04-05 17:06:58 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-04-12 16:26:56 -0400 |
commit | cde4990515a7a190fca7a3eb9f722f74c12acdb2 (patch) | |
tree | 8efb738062ff6e6c64a63b3695ddaf67364ef6a4 | |
parent | f5cd23d6c3be17356e0851ec5d5bb65cee48f15f (diff) | |
download | talos-hostboot-cde4990515a7a190fca7a3eb9f722f74c12acdb2.tar.gz talos-hostboot-cde4990515a7a190fca7a3eb9f722f74c12acdb2.zip |
Cleanup the fix for "zero length dump on single node systems".
The attribute, IS_MASTER_DRAWER, was being set in the function
host_sys_fab_iovalid_processing() (istep 18.9), unfortunately that
function is not called on single node systems.
Had to reverse the logic on the previous IS_MASTER_DRAWER attribute,
and make it an IS_SLAVE_DRAWER attribute. The reason is that there
is a limitation (bug?) which requires hb-only, volatile attributes
to have a default value of zero.
Change-Id: Ib27349f18b2738b405649723cdcb11e2ec919991
CQ:SW423016
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56883
CI-Ready: Richard Ward <rward15@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Richard J. Knight <rjknight@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: William G. Hoffa <wghoffa@us.ibm.com>
-rw-r--r-- | src/usr/isteps/istep14/call_host_mpipl_service.C | 2 | ||||
-rw-r--r-- | src/usr/isteps/istep18/establish_system_smp.C | 9 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/attribute_types_hb.xml | 8 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/target_types_hb.xml | 2 | ||||
-rw-r--r-- | src/usr/targeting/targplatutil.C | 7 |
5 files changed, 13 insertions, 15 deletions
diff --git a/src/usr/isteps/istep14/call_host_mpipl_service.C b/src/usr/isteps/istep14/call_host_mpipl_service.C index 6a65bf308..7eb7395fb 100644 --- a/src/usr/isteps/istep14/call_host_mpipl_service.C +++ b/src/usr/isteps/istep14/call_host_mpipl_service.C @@ -65,7 +65,7 @@ void* call_host_mpipl_service (void *io_pArgs) if (!TARGETING::UTIL::isCurrentMasterNode()) { TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_host_mpipl_service cannot run on slave node, skipping"); + "call_host_mpipl_service cannot run on slave node, skipping"); } else { diff --git a/src/usr/isteps/istep18/establish_system_smp.C b/src/usr/isteps/istep18/establish_system_smp.C index 733e0bf47..90de81b8d 100644 --- a/src/usr/isteps/istep18/establish_system_smp.C +++ b/src/usr/isteps/istep18/establish_system_smp.C @@ -449,15 +449,16 @@ static void set_is_master_drawer(TARGETING::EntityPath *master) TARGETING::UTIL_FILTER_FUNCTIONAL); assert(l_nodelist.size() == 1, "ERROR, only looking for one node."); current = l_nodelist[0]; + if (pe.instance == mpe.instance) { - // Current node is master, set IS_MASTER_DRAWER - current->setAttr<TARGETING::ATTR_IS_MASTER_DRAWER>(1); + // Current node is master, unset IS_SLAVE_DRAWER + current->setAttr<TARGETING::ATTR_IS_SLAVE_DRAWER>(0); } else { - // Current node is not master, unset IS_MASTER_DRAWER - current->setAttr<TARGETING::ATTR_IS_MASTER_DRAWER>(0); + // Current node is not master, set IS_SLAVE_DRAWER + current->setAttr<TARGETING::ATTR_IS_SLAVE_DRAWER>(1); } } diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml index 85e22672e..972c2f01e 100755 --- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml +++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml @@ -119,14 +119,14 @@ </attribute> <attribute> - <id>IS_MASTER_DRAWER</id> - <description>1 = is master node, 0 = is not master node</description> + <id>IS_SLAVE_DRAWER</id> + <description>0 = is master node, 1 = is slave node</description> <simpleType> <uint8_t> - <default>1</default> + <default>0</default> </uint8_t> </simpleType> - <persistency>volatile</persistency> + <persistency>volatile-zeroed</persistency> <readable/> <writeable/> </attribute> diff --git a/src/usr/targeting/common/xmltohb/target_types_hb.xml b/src/usr/targeting/common/xmltohb/target_types_hb.xml index b62ba346e..5f43f0a7a 100644 --- a/src/usr/targeting/common/xmltohb/target_types_hb.xml +++ b/src/usr/targeting/common/xmltohb/target_types_hb.xml @@ -55,7 +55,7 @@ <attribute><id>PART_NUMBER</id></attribute> <attribute><id>SERIAL_NUMBER</id></attribute> <attribute><id>VPD_SWITCHES</id></attribute> - <attribute><id>IS_MASTER_DRAWER</id></attribute> + <attribute><id>IS_SLAVE_DRAWER</id></attribute> </targetTypeExtension> <targetTypeExtension> diff --git a/src/usr/targeting/targplatutil.C b/src/usr/targeting/targplatutil.C index 45fe78ebe..c8054cf60 100644 --- a/src/usr/targeting/targplatutil.C +++ b/src/usr/targeting/targplatutil.C @@ -113,17 +113,14 @@ void getMasterNodeTarget(Target*& o_masterNodeTarget) bool isCurrentMasterNode() { -#if 0 // Get node target TARGETING::TargetHandleList l_nodelist; getEncResources(l_nodelist, TARGETING::TYPE_NODE, TARGETING::UTIL_FILTER_FUNCTIONAL); assert(l_nodelist.size() == 1, "ERROR, only expect one node."); - auto isMaster = l_nodelist[0]->getAttr<TARGETING::ATTR_IS_MASTER_DRAWER>(); + auto isSlave = l_nodelist[0]->getAttr<TARGETING::ATTR_IS_SLAVE_DRAWER>(); - return (isMaster == 1); -#endif - return true; + return (isSlave == 0); } #ifndef __HOSTBOOT_RUNTIME |