summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2016-03-08 08:33:57 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-03-23 11:19:36 -0400
commitefb976fc64fc447d93015d3bb950431f341b6c19 (patch)
treeb55c264b2ac3d7c68da42adc4d59465976ceb07d /src/usr
parent8acb41d0016e2e85dd464dfb383bedf63a53e4de (diff)
downloadtalos-hostboot-efb976fc64fc447d93015d3bb950431f341b6c19.tar.gz
talos-hostboot-efb976fc64fc447d93015d3bb950431f341b6c19.zip
Support association between pervasive targets and other unit targets
- Updated attribute compiler to link targets based on pervasive association - Updated attribute compiler to support virtual attributes - Added virtual attribute describing a unit's pervasive association - Updated Nimbus system XML with pervasive/unit associations - Fixed various errors compiling with debug trace enabled - Updated FSP attribute generator to create perv/unit links - Fixed FSP bad path character in attribute generator - Fixed PHB chip unit numbering in attribute generator - Replaced some NVBUS references with NV RTC: 148577 CMVC-Prereq: 988338 Change-Id: I6f3c4aa806e465dd9f09859c4911ff70db782a4f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/21943 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/fapi2/test/fapi2GetParentTest.C14
-rw-r--r--src/usr/fapi2/test/fapi2TestUtils.C5
-rw-r--r--src/usr/hwas/test/hwas1test.H6
-rw-r--r--src/usr/isteps/istep12/call_dmi_attr_update.C4
-rw-r--r--src/usr/isteps/istep14/call_host_startprd_dram.C3
-rwxr-xr-xsrc/usr/targeting/common/genHwsvMrwXml.pl116
-rw-r--r--src/usr/targeting/common/test/testcommontargeting.H103
-rw-r--r--src/usr/targeting/common/xmltohb/attribute_types.xml13
-rw-r--r--src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml260
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/target_types.xml13
-rw-r--r--src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml262
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/xmltohb.pl139
12 files changed, 891 insertions, 47 deletions
diff --git a/src/usr/fapi2/test/fapi2GetParentTest.C b/src/usr/fapi2/test/fapi2GetParentTest.C
index 6418b8b9a..3fc30cfbb 100644
--- a/src/usr/fapi2/test/fapi2GetParentTest.C
+++ b/src/usr/fapi2/test/fapi2GetParentTest.C
@@ -137,7 +137,7 @@ errlHndl_t fapi2GetParentTest()
targeting_targets[MY_XBUS]);
Target<fapi2::TARGET_TYPE_OBUS> fapi2_obusTarget(
targeting_targets[MY_OBUS]);
- Target<fapi2::TARGET_TYPE_NV> fapi2_nvbusTarget(
+ Target<fapi2::TARGET_TYPE_NV> fapi2_nvTarget(
targeting_targets[MY_NV]);
Target<fapi2::TARGET_TYPE_PPE> fapi2_ppeTarget(
targeting_targets[MY_PPE]);
@@ -574,7 +574,7 @@ errlHndl_t fapi2GetParentTest()
numFails++;
}
-// //Check PHB's parents
+ //Check PHB's parents
l_tempTargetingParent =
static_cast<TARGETING::Target*>(
fapi2_phbTarget.getParent<TARGET_TYPE_PROC_CHIP>());
@@ -741,10 +741,10 @@ errlHndl_t fapi2GetParentTest()
numFails++;
}
- //Check NVBUS's parents
+ //Check NV's parents
l_tempTargetingParent =
static_cast<TARGETING::Target*>(
- fapi2_nvbusTarget.getParent<TARGET_TYPE_PROC_CHIP>());
+ fapi2_nvTarget.getParent<TARGET_TYPE_PROC_CHIP>());
numTests++;
if(TARGETING::get_huid(l_nimbusProc) !=
TARGETING::get_huid(l_tempTargetingParent))
@@ -758,10 +758,10 @@ errlHndl_t fapi2GetParentTest()
* @reasoncode fapi2::RC_NV_NO_PROC_FOUND
* @userdata1[0:31] Expected Parent HUID
* @userdata1[32:63] Actual Parent HUID
- * @userdata2[0:31] Instance of NVBUS
+ * @userdata2[0:31] Instance of NV
* @userdata2[32:63] fapi2 Type of expected parent
* @devdesc Could not find the parent PROC of this
- * NVBUS target
+ * NV target
*/
l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST,
@@ -778,7 +778,7 @@ errlHndl_t fapi2GetParentTest()
TO_UINT32(TARGET_TYPE_PROC_CHIP)),
true/*SW Error*/);
errlCommit(l_err,HWPF_COMP_ID);
- TS_FAIL( "fapi2TargetTest::Unable to find NVBUS's PROC parent!");
+ TS_FAIL( "fapi2TargetTest::Unable to find NV's PROC parent!");
numFails++;
}
diff --git a/src/usr/fapi2/test/fapi2TestUtils.C b/src/usr/fapi2/test/fapi2TestUtils.C
index acf25eeb3..e3d07ec0e 100644
--- a/src/usr/fapi2/test/fapi2TestUtils.C
+++ b/src/usr/fapi2/test/fapi2TestUtils.C
@@ -45,7 +45,7 @@
#define NUM_MCBISTS 2
#define NUM_PECS 3
#define NUM_PHBS 6
-#define NUM_XBUS 1
+#define NUM_XBUS 2
#define NUM_OBUS 2
#define NUM_NV 2
#define NUM_PPES 21
@@ -195,7 +195,8 @@ void generateTargets(TARGETING::Target* i_pMasterProcChip,
i_pMasterProcChip->tryGetAttr<TARGETING::ATTR_PHYS_PATH>(l_epath);
for(int i = 0; i < NUM_XBUS; i++)
{
- l_epath.addLast(TARGETING::TYPE_XBUS, i);
+ // Nimbus doesn't have the 0th xbus, so index from 1 for now
+ l_epath.addLast(TARGETING::TYPE_XBUS, i+1);
if(TARGETING::targetService().toTarget(l_epath) != NULL)
{
o_targetList[MY_XBUS] =
diff --git a/src/usr/hwas/test/hwas1test.H b/src/usr/hwas/test/hwas1test.H
index 02ece0841..b6aad2fa2 100644
--- a/src/usr/hwas/test/hwas1test.H
+++ b/src/usr/hwas/test/hwas1test.H
@@ -714,6 +714,12 @@ public:
switch(l_type)
{
case TYPE_XBUS:
+ if((1 == l_chipUnit) || (2 == l_chipUnit))
+ {
+ // XBUS1 & XBUS2 should be functional on Nimbus
+ continue;
+ }
+
sprintf(l_type_str, "XBUS");
sprintf(l_pgData, ", pgData = 0x%04x",
pgData[VPD_CP00_PG_XBUS_INDEX]);
diff --git a/src/usr/isteps/istep12/call_dmi_attr_update.C b/src/usr/isteps/istep12/call_dmi_attr_update.C
index 4405afab0..bf1e4571a 100644
--- a/src/usr/isteps/istep12/call_dmi_attr_update.C
+++ b/src/usr/isteps/istep12/call_dmi_attr_update.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015 */
+/* Contributors Listed Below - COPYRIGHT 2015,2016 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -24,7 +24,7 @@
/* IBM_PROLOG_END_TAG */
#include <errl/errlentry.H>
#include <isteps/hwpisteperror.H>
-
+#include <initservice/isteps_trace.H>
using namespace ERRORLOG;
using namespace ISTEP_ERROR;
diff --git a/src/usr/isteps/istep14/call_host_startprd_dram.C b/src/usr/isteps/istep14/call_host_startprd_dram.C
index 094293111..33b39ebf0 100644
--- a/src/usr/isteps/istep14/call_host_startprd_dram.C
+++ b/src/usr/isteps/istep14/call_host_startprd_dram.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015 */
+/* Contributors Listed Below - COPYRIGHT 2015,2016 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -23,6 +23,7 @@
/* */
/* IBM_PROLOG_END_TAG */
#include <errl/errlentry.H>
+#include <initservice/isteps_trace.H>
using namespace ERRORLOG;
diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl
index 34b6885f8..2e332c252 100755
--- a/src/usr/targeting/common/genHwsvMrwXml.pl
+++ b/src/usr/targeting/common/genHwsvMrwXml.pl
@@ -51,7 +51,8 @@ use strict;
use XML::Simple;
use Data::Dumper;
-
+# Enables the state variable feature
+use feature "state";
################################################################################
# Set PREFERRED_PARSER to XML::Parser. Otherwise it uses XML::SAX which contains
@@ -79,13 +80,14 @@ use constant
MAX_MCA_PER_PROC => 8,
MAX_MCBIST_PER_PROC => 2,
MAX_PEC_PER_PROC => 3,
- MAX_PHB_PER_PROC => 18,
+ MAX_PHB_PER_PROC => 6,
MAX_MBA_PER_MEMBUF => 2,
MAX_OBUS_PER_PROC => 4,
MAX_PPE_PER_PROC => 21,
MAX_PERV_PER_PROC => 42,
MAX_CAPP_PER_PROC => 2,
MAX_SBE_PER_PROC => 1,
+ MAX_NV_PER_PROC => 2,
};
# for SPI connections in the @SPIs array
@@ -3494,6 +3496,91 @@ sub generate_ex
";
}
+sub getPervasiveForUnit
+{
+ # Input should be of the form <type><chip unit>, example: "core0"
+ my ($unit) = @_;
+
+ # The mapping is a static variable that is preserved across new calls to
+ # the function to speed up the mapping performance
+ state %unitToPervasive;
+
+ if ( not %unitToPervasive )
+ {
+ for my $core (0..MAX_CORE_PER_PROC-1)
+ {
+ $unitToPervasive{"core$core"} = 32 + $core;
+ }
+ for my $eq (0..MAX_EQ_PER_PROC-1)
+ {
+ $unitToPervasive{"eq$eq"} = 16 + $eq;
+ }
+ for my $xbus (0..MAX_XBUS_PER_PROC-1)
+ {
+ $unitToPervasive{"xbus$xbus"} = 6;
+ }
+ for my $obus (0..MAX_OBUS_PER_PROC-1)
+ {
+ $unitToPervasive{"obus$obus"} = 9 + $obus;
+ }
+ for my $capp (0..MAX_CAPP_PER_PROC-1)
+ {
+ $unitToPervasive{"capp$capp"} = 2 * ($capp+1);
+ }
+ for my $mcbist (0..MAX_MCBIST_PER_PROC-1)
+ {
+ $unitToPervasive{"mcbist$mcbist"} = 7 + $mcbist;
+ }
+ for my $mcs (0..MAX_MCS_PER_PROC-1)
+ {
+ $unitToPervasive{"mcs$mcs"} = 7 + ($mcs > 1);
+ }
+ for my $mca (0..MAX_MCA_PER_PROC-1)
+ {
+ $unitToPervasive{"mca$mca"} = 7 + ($mca > 3);
+ }
+ for my $pec (0..MAX_PEC_PER_PROC-1)
+ {
+ $unitToPervasive{"pec$pec"} = 13 + $pec;
+ }
+ for my $phb (0..MAX_PHB_PER_PROC-1)
+ {
+ $unitToPervasive{"phb$phb"} = 13 + ($phb>0) + ($phb>2);
+ }
+ #TODO: RTC 149326 add calls to addPervasiveParentLink for nv
+ # in the generate_nv function when it gets created
+ for my $nv (0..MAX_NV_PER_PROC-1)
+ {
+ $unitToPervasive{"nv$nv"} = 5;
+ }
+ }
+
+ my $pervasive = "unknown";
+ if(exists $unitToPervasive{$unit})
+ {
+ $pervasive = $unitToPervasive{$unit};
+ }
+ else
+ {
+ die "Cannot find pervasive for $unit";
+ }
+
+ return $pervasive
+}
+
+sub addPervasiveParentLink
+{
+ my ($sys,$node,$proc,$unit,$type) = @_;
+
+ my $pervasive = getPervasiveForUnit("$type$unit");
+
+ print "
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-$sys/node-$node/proc-$proc/perv-$pervasive</default>
+ </attribute>";
+}
+
sub generate_core
{
my ($proc, $core, $ordinalId, $ipath) = @_;
@@ -3536,6 +3623,8 @@ sub generate_core
<default>$chipletId</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$core_orig,"core");
+
# call to do any fsp per-ex_core attributes
do_plugin('fsp_ex_core', $proc, $core, $ordinalId );
@@ -3613,6 +3702,8 @@ sub generate_eq
<default>$eq</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$eq,"eq");
+
# call to do any fsp per-eq attributes
do_plugin('fsp_eq', $proc, $eq, $ordinalId );
@@ -3698,6 +3789,8 @@ sub generate_mcs
<default>$msb_swap</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$mcs,"mcs");
+
# call to do any fsp per-mcs attributes
do_plugin('fsp_mcs', $proc, $mcs, $ordinalId );
@@ -3753,6 +3846,8 @@ sub generate_mca
<default>$mca_orig</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$mca_orig,"mca");
+
# call to do any fsp per-mca attributes
do_plugin('fsp_mca', $proc, $mca, $ordinalId );
@@ -3805,6 +3900,8 @@ sub generate_mcbist
<default>$mcbist</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$mcbist,"mcbist");
+
# call to do any fsp per-mcbist attributes
do_plugin('fsp_mcbist', $proc, $mcbist, $ordinalId );
@@ -3857,6 +3954,8 @@ sub generate_pec
<default>$pec</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$pec,"pec");
+
# call to do any fsp per-pec attributes
do_plugin('fsp_pec', $proc, $pec, $ordinalId );
@@ -3872,6 +3971,7 @@ sub generate_phb_chiplet
my $mruData = get_mruid($ipath);
my $pec = 0;
+ my $phbChipUnit = $phb;
if($phb > 0 && $phb < 3)
{
$pec = 1;
@@ -3902,7 +4002,7 @@ sub generate_phb_chiplet
<attribute><id>HUID</id><default>${uidstr}</default></attribute>
<attribute>
<id>PHYS_PATH</id>
- <default>physical:sys-$sys/node-$node/proc-$proc/pec-$pec}phb-$phb</default>
+ <default>physical:sys-$sys/node-$node/proc-$proc/pec-$pec/phb-$phb</default>
</attribute>
<attribute>
<id>MRU_ID</id>
@@ -3918,9 +4018,11 @@ sub generate_phb_chiplet
</compileAttribute>
<attribute>
<id>CHIP_UNIT</id>
- <default>$phb</default>
+ <default>$phbChipUnit</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$phbChipUnit,"phb");
+
# call to do any fsp per-phb attributes
do_plugin('fsp_phb', $proc, $phb, $ordinalId );
@@ -4026,6 +4128,8 @@ sub generate_obus
<default>$obus</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$obus,"obus");
+
# call to do any fsp per-obus attributes
do_plugin('fsp_obus', $proc, $obus, $ordinalId );
@@ -4078,6 +4182,8 @@ sub generate_xbus
<default>$xbus</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$xbus,"xbus");
+
# call to do any fsp per-obus attributes
do_plugin('fsp_xbus', $proc, $xbus, $ordinalId );
@@ -4182,6 +4288,8 @@ sub generate_capp
<default>$capp</default>
</attribute>";
+ addPervasiveParentLink($sys,$node,$proc,$capp,"capp");
+
# call to do any fsp per-capp attributes
do_plugin('fsp_capp', $proc, $capp, $ordinalId );
diff --git a/src/usr/targeting/common/test/testcommontargeting.H b/src/usr/targeting/common/test/testcommontargeting.H
index d62c9d51b..56a6e3961 100644
--- a/src/usr/targeting/common/test/testcommontargeting.H
+++ b/src/usr/targeting/common/test/testcommontargeting.H
@@ -1960,7 +1960,110 @@ class CommonTargetingTestSuite: public CxxTest::TestSuite
TARG_TS_TRACE(EXIT_MRK "testL4s" );
}
+ /**
+ * @brief Tests pervasive associations
+ *
+ * @par Detailed Description:
+ * An applicable pervasive target has a "PERVASIVE_CHILD"
+ * association that links it to a child unit target. For
+ * example, a pervasive target may have said link to a child
+ * core target. That child core target, in turn, will have
+ * a "PARENT_PERVASIVE" association back to it's parent,
+ * forming a bidirectional relationship, which can be navigated
+ * with target service getAssociated() calls. This test
+ * verifies that pervasive target A links to child target B,
+ * and that in turn, B links back to A.
+ */
+ void testPervasiveRelationship()
+ {
+ TARG_TS_TRACE(ENTER_MRK "testPervasiveRelationship" );
+
+ using namespace TARGETING;
+
+ // Get all pervasive targets in the model and loop through
+ // each one
+ PredicateCTM pervasiveUnit(CLASS_UNIT,TYPE_PERV);
+ TargetRangeFilter pervasiveUnitFilter(
+ targetService().begin(),
+ targetService().end(),
+ &pervasiveUnit);
+
+ size_t pervasives = 0;
+
+ for(;pervasiveUnitFilter;++pervasiveUnitFilter)
+ {
+ ++pervasives;
+
+ // For each pervasive target, find all its children
+ // using the special PERVASIVE_CHILD association type
+ TargetHandleList pervasiveChildren;
+ (void)targetService().getAssociated(
+ pervasiveChildren,
+ *pervasiveUnitFilter,
+ TARGETING::TargetService::PERVASIVE_CHILD,
+ TARGETING::TargetService::ALL);
+ ATTR_PHYS_PATH_type pervasivePath = (*pervasiveUnitFilter)->
+ getAttr<TARGETING::ATTR_PHYS_PATH>();
+
+ TARG_TS_TRACE("Found %d children for pervasive w/ "
+ "path %s",pervasiveChildren.size(),
+ pervasivePath.toString());
+
+ // Then for each child, navigate back to what should be the original
+ // pervasive target
+ for(TARGETING::TargetHandleList::const_iterator child
+ = pervasiveChildren.begin();
+ child != pervasiveChildren.end();
+ ++child)
+ {
+ ATTR_PHYS_PATH_type childPath = (*child)->
+ getAttr<TARGETING::ATTR_PHYS_PATH>();
+
+ TARG_TS_TRACE("Child path is %s",
+ childPath.toString());
+
+ TargetHandleList parentPervasive;
+ (void)targetService().getAssociated(
+ parentPervasive,
+ *child,
+ TARGETING::TargetService::PARENT_PERVASIVE,
+ TARGETING::TargetService::ALL);
+
+ // Make sure every child has exactly one parent pervasive
+ if(parentPervasive.size() != 1)
+ {
+ TARG_TS_FAIL("child of pervasive did not have exactly 1 "
+ "parent pervasive (had %d)",parentPervasive.size());
+ }
+
+ // Make sure that the parent of 'the child of the parent' is the
+ // parent
+ if(*parentPervasive.begin() != *pervasiveUnitFilter)
+ {
+ TARG_TS_FAIL("parent of child of pervasive was not the "
+ "original pervasive");
+ }
+
+ // Make sure that the parent is not accidentally the child
+ if(*parentPervasive.begin() == *child)
+ {
+ TARG_TS_FAIL("parent is equal to child");
+ }
+ }
+ }
+
+ if(!pervasives)
+ {
+ TARG_TS_FAIL("no pervasive units found in the model");
+ }
+ else
+ {
+ TARG_TS_TRACE("Found total of %d pervasive targets",pervasives);
+ }
+
+ TARG_TS_TRACE(EXIT_MRK "testPervasiveRelationship" );
+ }
};
#endif // __TARGETING_COMMON_TESTCOMMONTARGETING_H
diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
index 239ae3ed4..bc514ebc5 100644
--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
@@ -19980,4 +19980,17 @@ firmware notes: Platforms should initialize this attribute to AUTO (0)</descript
<readable/>
</attribute>
+<attribute>
+ <id>PARENT_PERVASIVE</id>
+ <description>
+ Physical entity path of the target's associated pervasive target
+ </description>
+ <nativeType>
+ <name>EntityPath</name>
+ </nativeType>
+ <persistency>non-volatile</persistency>
+ <readable/>
+ <virtual/>
+</attribute>
+
</attributes>
diff --git a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml
index 5332f5c1a..bf639e453 100644
--- a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml
+++ b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml
@@ -231,6 +231,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-16</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -249,6 +253,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-17</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -267,6 +275,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-18</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -285,6 +297,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-19</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -303,6 +319,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-20</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -321,6 +341,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-21</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq0 EX units -->
@@ -562,6 +586,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-32</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -580,6 +608,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-33</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq0ex1 CORE units -->
@@ -599,6 +631,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-34</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -617,6 +653,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-35</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq1ex0 CORE units -->
@@ -636,6 +676,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-36</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -654,6 +698,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-37</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq1ex1 CORE units -->
@@ -673,6 +721,10 @@
<id>CHIP_UNIT</id>
<default>6</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-38</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -691,6 +743,10 @@
<id>CHIP_UNIT</id>
<default>7</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-39</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq2ex0 CORE units -->
@@ -710,6 +766,10 @@
<id>CHIP_UNIT</id>
<default>8</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-40</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -728,6 +788,10 @@
<id>CHIP_UNIT</id>
<default>9</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-41</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq2ex1 CORE units -->
@@ -747,6 +811,10 @@
<id>CHIP_UNIT</id>
<default>10</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-42</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -765,6 +833,10 @@
<id>CHIP_UNIT</id>
<default>11</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-43</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq3ex0 CORE units -->
@@ -784,6 +856,10 @@
<id>CHIP_UNIT</id>
<default>12</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-44</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -802,6 +878,10 @@
<id>CHIP_UNIT</id>
<default>13</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-45</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq3ex1 CORE units -->
@@ -821,6 +901,10 @@
<id>CHIP_UNIT</id>
<default>14</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-46</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -839,6 +923,10 @@
<id>CHIP_UNIT</id>
<default>15</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-47</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq4ex0 CORE units -->
@@ -858,6 +946,10 @@
<id>CHIP_UNIT</id>
<default>16</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-48</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -876,6 +968,10 @@
<id>CHIP_UNIT</id>
<default>17</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-49</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq4ex1 CORE units -->
@@ -895,6 +991,10 @@
<id>CHIP_UNIT</id>
<default>18</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-50</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -913,6 +1013,10 @@
<id>CHIP_UNIT</id>
<default>19</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-51</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq5ex0 CORE units -->
@@ -932,6 +1036,10 @@
<id>CHIP_UNIT</id>
<default>20</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-52</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -950,6 +1058,10 @@
<id>CHIP_UNIT</id>
<default>21</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-53</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq5ex1 CORE units -->
@@ -969,6 +1081,10 @@
<id>CHIP_UNIT</id>
<default>22</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-54</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -987,6 +1103,10 @@
<id>CHIP_UNIT</id>
<default>23</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-55</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0 MCS units -->
@@ -1012,6 +1132,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1036,6 +1160,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1060,6 +1188,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1084,6 +1216,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs0 MCA units -->
@@ -1103,6 +1239,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1121,6 +1261,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs1 MCA units -->
@@ -1140,6 +1284,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1158,6 +1306,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs2 MCA units -->
@@ -1177,6 +1329,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1195,6 +1351,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs3 MCA units -->
@@ -1214,6 +1374,10 @@
<id>CHIP_UNIT</id>
<default>6</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1232,6 +1396,10 @@
<id>CHIP_UNIT</id>
<default>7</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 MCBIST units -->
@@ -1251,6 +1419,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1269,6 +1441,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 PEC units -->
@@ -1288,6 +1464,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-13</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1306,6 +1486,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1324,6 +1508,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec0 PHB units -->
@@ -1343,6 +1531,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-13</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec1 PHB units -->
@@ -1362,6 +1554,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1380,6 +1576,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec2 PHB units -->
@@ -1399,6 +1599,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1417,6 +1621,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1435,6 +1643,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 OBUS units -->
@@ -1454,6 +1666,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-9</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1472,6 +1688,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-12</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 NV units -->
@@ -1491,6 +1711,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-5</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1509,6 +1733,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-5</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 PPE units
@@ -2500,47 +2728,55 @@
<!-- nimbus n0p0 XBUS units -->
<targetInstance>
- <id>sys0node0proc0xbus0</id>
+ <id>sys0node0proc0xbus1</id>
<type>unit-xbus-nimbus</type>
<attribute><id>HUID</id><default>0x000E0601</default></attribute>
<attribute>
<id>PHYS_PATH</id>
- <default>physical:sys-0/node-0/proc-0/xbus-0</default>
+ <default>physical:sys-0/node-0/proc-0/xbus-1</default>
</attribute>
<attribute>
<id>AFFINITY_PATH</id>
- <default>affinity:sys-0/node-0/proc-0/xbus-0</default>
+ <default>affinity:sys-0/node-0/proc-0/xbus-1</default>
</attribute>
<attribute>
<id>CHIP_UNIT</id>
- <default>0</default>
+ <default>1</default>
</attribute>
<!-- <attribute> // @FIXME RTC 127337
<id>PEER_TARGET</id>
<default>physical:sys-0/node-0/proc-1/xbus-1</default>
</attribute> // @FIXME RTC 127337 -->
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-6</default>
+ </attribute>
</targetInstance>
<targetInstance>
- <id>sys0node0proc0xbus1</id>
+ <id>sys0node0proc0xbus2</id>
<type>unit-xbus-nimbus</type>
<attribute><id>HUID</id><default>0x000E0602</default></attribute>
<attribute>
<id>PHYS_PATH</id>
- <default>physical:sys-0/node-0/proc-0/xbus-1</default>
+ <default>physical:sys-0/node-0/proc-0/xbus-2</default>
</attribute>
<attribute>
<id>AFFINITY_PATH</id>
- <default>affinity:sys-0/node-0/proc-0/xbus-1</default>
+ <default>affinity:sys-0/node-0/proc-0/xbus-2</default>
</attribute>
<attribute>
<id>CHIP_UNIT</id>
- <default>0</default>
+ <default>2</default>
</attribute>
<!-- <attribute> // @FIXME RTC 127337
<id>PEER_TARGET</id>
<default>physical:sys-0/node-0/proc-2/xbus-1</default>
</attribute> // @FIXME RTC 127337 -->
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-6</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0 CAPP units -->
@@ -2560,6 +2796,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-2</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -2578,6 +2818,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-4</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 SBE units -->
diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
index f4aeb08f8..9e1125653 100755
--- a/src/usr/targeting/common/xmltohb/target_types.xml
+++ b/src/usr/targeting/common/xmltohb/target_types.xml
@@ -2204,6 +2204,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<!-- EX: Use same EX target for both Nimbus and Cumulus
@@ -2232,6 +2233,7 @@
<attribute><id>DECONFIG_GARDABLE</id><default>0</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
<attribute><id>CHIPLET_ID</id></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<!-- MCS
@@ -2249,6 +2251,7 @@
<attribute><id>IBSCOM_MCS_BASE_ADDR</id></attribute>
<attribute><id>EI_BUS_TX_MSBSWAP</id></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2274,6 +2277,7 @@
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>EFF_DIMM_SIZE</id></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2298,6 +2302,7 @@
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>MSS_FREQ</id></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2320,6 +2325,7 @@
<default>MI</default>
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2342,6 +2348,7 @@
<default>DMI</default>
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2369,6 +2376,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<!-- PHB
@@ -2387,6 +2395,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2419,6 +2428,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2451,6 +2461,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2554,6 +2565,7 @@
<attribute><id>PEER_TARGET</id></attribute>
<attribute><id>CDM_DOMAIN</id><default>FABRIC</default></attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
@@ -2595,6 +2607,7 @@
</default>
</attribute>
<attribute><id>SCRATCH_UINT8_1</id><default>5</default></attribute>
+ <attribute><id>PARENT_PERVASIVE</id></attribute>
</targetType>
<targetType>
diff --git a/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml b/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml
index 2a8afc2f3..3dc16b996 100644
--- a/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml
+++ b/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml
@@ -231,6 +231,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-16</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -249,6 +253,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-17</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -267,6 +275,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-18</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -285,6 +297,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-19</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -303,6 +319,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-20</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -321,6 +341,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-21</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq0 EX units -->
@@ -562,6 +586,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-32</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -580,6 +608,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-33</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq0ex1 CORE units -->
@@ -599,6 +631,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-34</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -617,6 +653,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-35</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq1ex0 CORE units -->
@@ -636,6 +676,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-36</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -654,6 +698,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-37</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq1ex1 CORE units -->
@@ -673,6 +721,10 @@
<id>CHIP_UNIT</id>
<default>6</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-38</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -691,6 +743,10 @@
<id>CHIP_UNIT</id>
<default>7</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-39</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq2ex0 CORE units -->
@@ -710,6 +766,10 @@
<id>CHIP_UNIT</id>
<default>8</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-40</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -728,6 +788,10 @@
<id>CHIP_UNIT</id>
<default>9</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-41</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq2ex1 CORE units -->
@@ -747,6 +811,10 @@
<id>CHIP_UNIT</id>
<default>10</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-42</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -765,6 +833,10 @@
<id>CHIP_UNIT</id>
<default>11</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-43</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq3ex0 CORE units -->
@@ -784,6 +856,10 @@
<id>CHIP_UNIT</id>
<default>12</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-44</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -802,6 +878,10 @@
<id>CHIP_UNIT</id>
<default>13</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-45</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq3ex1 CORE units -->
@@ -821,6 +901,10 @@
<id>CHIP_UNIT</id>
<default>14</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-46</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -839,6 +923,10 @@
<id>CHIP_UNIT</id>
<default>15</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-47</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq4ex0 CORE units -->
@@ -858,6 +946,10 @@
<id>CHIP_UNIT</id>
<default>16</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-48</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -876,6 +968,10 @@
<id>CHIP_UNIT</id>
<default>17</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-49</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq4ex1 CORE units -->
@@ -895,6 +991,10 @@
<id>CHIP_UNIT</id>
<default>18</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-50</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -913,6 +1013,10 @@
<id>CHIP_UNIT</id>
<default>19</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-51</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq5ex0 CORE units -->
@@ -932,6 +1036,10 @@
<id>CHIP_UNIT</id>
<default>20</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-52</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -950,6 +1058,10 @@
<id>CHIP_UNIT</id>
<default>21</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-53</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0eq5ex1 CORE units -->
@@ -969,6 +1081,10 @@
<id>CHIP_UNIT</id>
<default>22</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-54</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -987,6 +1103,10 @@
<id>CHIP_UNIT</id>
<default>23</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-55</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0 MCS units -->
@@ -1012,6 +1132,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1036,6 +1160,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1060,6 +1188,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1084,6 +1216,10 @@
<attribute><id>EI_BUS_TX_MSBSWAP</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs0 MCA units -->
@@ -1103,6 +1239,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1121,6 +1261,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs1 MCA units -->
@@ -1140,10 +1284,14 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
- <id>sys0node0proc0mcs1mca3</id>
+ <id>sys0node0proc0mcs1mca1</id>
<type>unit-mca-nimbus</type>
<attribute><id>HUID</id><default>0x000D0103</default></attribute>
<attribute>
@@ -1158,6 +1306,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs2 MCA units -->
@@ -1177,6 +1329,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1195,6 +1351,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0mcs3 MCA units -->
@@ -1214,6 +1374,10 @@
<id>CHIP_UNIT</id>
<default>6</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1232,6 +1396,10 @@
<id>CHIP_UNIT</id>
<default>7</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 MCBIST units -->
@@ -1251,6 +1419,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-7</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1269,6 +1441,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-8</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 PEC units -->
@@ -1288,6 +1464,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-13</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1306,6 +1486,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1324,6 +1508,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec0 PHB units -->
@@ -1343,6 +1531,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-13</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec1 PHB units -->
@@ -1362,6 +1554,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1380,6 +1576,10 @@
<id>CHIP_UNIT</id>
<default>2</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-14</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0pec2 PHB units -->
@@ -1399,6 +1599,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1417,6 +1621,10 @@
<id>CHIP_UNIT</id>
<default>4</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1435,6 +1643,10 @@
<id>CHIP_UNIT</id>
<default>5</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-15</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 OBUS units -->
@@ -1454,6 +1666,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-9</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1472,6 +1688,10 @@
<id>CHIP_UNIT</id>
<default>3</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-12</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 NV units -->
@@ -1491,6 +1711,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-5</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -1509,6 +1733,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-5</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 PPE units
@@ -2500,47 +2728,55 @@
<!-- nimbus n0p0 XBUS units -->
<targetInstance>
- <id>sys0node0proc0xbus0</id>
+ <id>sys0node0proc0xbus1</id>
<type>unit-xbus-nimbus</type>
<attribute><id>HUID</id><default>0x000E0601</default></attribute>
<attribute>
<id>PHYS_PATH</id>
- <default>physical:sys-0/node-0/proc-0/xbus-0</default>
+ <default>physical:sys-0/node-0/proc-0/xbus-1</default>
</attribute>
<attribute>
<id>AFFINITY_PATH</id>
- <default>affinity:sys-0/node-0/proc-0/xbus-0</default>
+ <default>affinity:sys-0/node-0/proc-0/xbus-1</default>
</attribute>
<attribute>
<id>CHIP_UNIT</id>
- <default>0</default>
+ <default>1</default>
</attribute>
<!-- <attribute> // @FIXME RTC 127337
<id>PEER_TARGET</id>
<default>physical:sys-0/node-0/proc-1/xbus-1</default>
</attribute> // @FIXME RTC 127337 -->
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-6</default>
+ </attribute>
</targetInstance>
<targetInstance>
- <id>sys0node0proc0xbus1</id>
+ <id>sys0node0proc0xbus2</id>
<type>unit-xbus-nimbus</type>
<attribute><id>HUID</id><default>0x000E0602</default></attribute>
<attribute>
<id>PHYS_PATH</id>
- <default>physical:sys-0/node-0/proc-0/xbus-1</default>
+ <default>physical:sys-0/node-0/proc-0/xbus-2</default>
</attribute>
<attribute>
<id>AFFINITY_PATH</id>
- <default>affinity:sys-0/node-0/proc-0/xbus-1</default>
+ <default>affinity:sys-0/node-0/proc-0/xbus-2</default>
</attribute>
<attribute>
<id>CHIP_UNIT</id>
- <default>0</default>
+ <default>2</default>
</attribute>
<!-- <attribute> // @FIXME RTC 127337
<id>PEER_TARGET</id>
<default>physical:sys-0/node-0/proc-2/xbus-1</default>
</attribute> // @FIXME RTC 127337 -->
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-6</default>
+ </attribute>
</targetInstance>
<!-- nimbus n0p0 CAPP units -->
@@ -2560,6 +2796,10 @@
<id>CHIP_UNIT</id>
<default>0</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-2</default>
+ </attribute>
</targetInstance>
<targetInstance>
@@ -2578,6 +2818,10 @@
<id>CHIP_UNIT</id>
<default>1</default>
</attribute>
+ <attribute>
+ <id>PARENT_PERVASIVE</id>
+ <default>physical:sys-0/node-0/proc-0/perv-4</default>
+ </attribute>
</targetInstance>
<!-- Nimbus n0p0 SBE units -->
diff --git a/src/usr/targeting/common/xmltohb/xmltohb.pl b/src/usr/targeting/common/xmltohb/xmltohb.pl
index d5a3ad99b..c417bc763 100755
--- a/src/usr/targeting/common/xmltohb/xmltohb.pl
+++ b/src/usr/targeting/common/xmltohb/xmltohb.pl
@@ -50,6 +50,10 @@ use POSIX;
use Env;
use XML::LibXML;
+# Provides object deep copy capability to support virtual
+# attribute removal
+use Storable 'dclone';
+
################################################################################
# Set PREFERRED_PARSER to XML::Parser. Otherwise it uses XML::SAX which contains
# bugs that result in XML parse errors that can be fixed by adjusting white-
@@ -144,10 +148,14 @@ use constant PARENT_BY_CONTAINMENT => "ParentByContainment";
use constant CHILD_BY_CONTAINMENT => "ChildByContainment";
use constant PARENT_BY_AFFINITY => "ParentByAffinity";
use constant CHILD_BY_AFFINITY => "ChildByAffinity";
+use constant PERVASIVE_CHILD => "PervasiveChild";
+use constant PARENT_PERVASIVE => "ParentPervasive";
my @associationTypes = ( PARENT_BY_CONTAINMENT,
- CHILD_BY_CONTAINMENT, PARENT_BY_AFFINITY, CHILD_BY_AFFINITY );
+ CHILD_BY_CONTAINMENT, PARENT_BY_AFFINITY, CHILD_BY_AFFINITY,
+ PERVASIVE_CHILD, PARENT_PERVASIVE );
# Constants for attribute names (minus ATTR_ prefix)
+use constant ATTR_PARENT_PERVASIVE => "PARENT_PERVASIVE";
use constant ATTR_PHYS_PATH => "PHYS_PATH";
use constant ATTR_AFFINITY_PATH => "AFFINITY_PATH";
use constant ATTR_UNKNOWN => "UnknownAttributeName";
@@ -175,9 +183,11 @@ use Digest::MD5 qw(md5_hex);
# Until full machine parseable workbook parsing splits out all the input files,
# use the intermediate representation containing the full host boot model.
# Aborts application if file name not found.
-my $attributes = $xml->XMLin($cfgHbXmlFile,
+# NOTE: the attribute list initially contains both real and virtual attributes
+my $allAttributes = $xml->XMLin($cfgHbXmlFile,
forcearray => ['enumerationType','attribute','hwpfToHbAttrMap',
'compileAttribute']);
+
my $fapiAttributes = {};
if ($cfgFapiAttributesXmlFile ne "")
{
@@ -188,10 +198,47 @@ if ($cfgFapiAttributesXmlFile ne "")
my %Target_t = ();
# Perform some sanity validation of the model (so we don't have to later)
-validateAttributes($attributes);
-validateTargetInstances($attributes);
-validateTargetTypes($attributes);
-validateTargetTypesExtension($attributes);
+# Subject virtual attributes to same sanity checks
+validateAttributes($allAttributes);
+validateTargetInstances($allAttributes);
+validateTargetTypes($allAttributes);
+validateTargetTypesExtension($allAttributes);
+
+# Clone the attributes and strip out any references to virtual
+# attributes, then continue forward using the result as the typical
+# working attribute set. The original set containing virtual attributes
+# will be used for very specific tasks, like computing associations
+my $attributes = dclone $allAttributes;
+my %virtualAttrIds = ();
+for my $attr (reverse 0..((scalar @{$attributes->{attribute}})-1) )
+{
+ if(exists $attributes->{attribute}[$attr]->{virtual})
+ {
+ # Found a virtual attribute; note it and remove
+ $virtualAttrIds{$attributes->{attribute}[$attr]->{id}} = 1;
+ splice @{$attributes->{attribute}}, $attr, 1;
+ }
+}
+
+foreach my $targetType (@{$attributes->{targetType}})
+{
+ if(exists $targetType->{attribute})
+ {
+ for my $attr (reverse 0..((scalar
+ @{$targetType->{attribute}})-1))
+ {
+ my $currentAttr = $targetType->{attribute}[$attr];
+ if( exists $currentAttr->{id}
+ && exists $virtualAttrIds{$currentAttr->{id}} )
+ {
+ # A targetType refers to the virtual attribute
+ # so remove it
+ splice @{$targetType->{attribute}}, $attr, 1;
+ }
+ }
+ }
+}
+
if($cfgIncludeFspAttributes)
{
handleTgtPtrAttributesFsp(\$attributes, \%Target_t);
@@ -377,7 +424,7 @@ if( !($cfgImgOutputDir =~ "none") )
}
#Pass the $addRO_Section_VerPage into the sub rotuine
my $Data = generateTargetingImage($cfgVmmConstsFile,$attributes,\%Target_t,
- $addRO_Section_VerPage);
+ $addRO_Section_VerPage,$allAttributes);
open(PNOR_TARGETING_FILE,">$cfgImgOutputDir".$cfgImgOutputFile)
or fatal ("Targeting image file: \"$cfgImgOutputDir"
@@ -486,6 +533,7 @@ sub validateAttributes {
$elements{"hwpfToHbAttrMap"}
= { required => 0, isscalar => 0};
$elements{"display-name"} = { required => 0, isscalar => 1};
+ $elements{"virtual"} = { required => 0, isscalar => 0};
foreach my $attribute (@{$attributes->{attribute}})
{
@@ -5245,7 +5293,8 @@ sub serializeAssociations
################################################################################
sub generateTargetingImage {
- my($vmmConstsFile, $attributes, $Target_t,$addRO_Section_VerPage) = @_;
+ my($vmmConstsFile, $attributes,$Target_t,$addRO_Section_VerPage,
+ $allAttributes) = @_;
# 128 MB virtual memory offset between sections
my $vmmSectionOffset = 128 * 1024 * 1024; # 128MB
@@ -5466,6 +5515,8 @@ sub generateTargetingImage {
my $ptrToChildByContainmentAssociations = INVALID_POINTER;
my $ptrToParentByAffinityAssociations = INVALID_POINTER;
my $ptrToChildByAffinityAssociations = INVALID_POINTER;
+ my $ptrToPervasiveChildAssociations = INVALID_POINTER;
+ my $ptrToParentPervasiveAssociations = INVALID_POINTER;
my $id = $targetInstance->{id};
$targetAddrHash{$id}{offsetToPtrToParentByContainmentAssociations} =
@@ -5484,10 +5535,20 @@ sub generateTargetingImage {
$offsetWithinTargets + length $data;
$data .= pack8byte($ptrToChildByAffinityAssociations);
+ $targetAddrHash{$id}{offsetToPtrToPervasiveChildAssociations} =
+ $offsetWithinTargets + length $data;
+ $data .= pack8byte($ptrToPervasiveChildAssociations);
+
+ $targetAddrHash{$id}{offsetToPtrToParentPervasiveAssociations} =
+ $offsetWithinTargets + length $data;
+ $data .= pack8byte($ptrToParentPervasiveAssociations);
+
$targetAddrHash{$id}{ParentByContainmentAssociations} = [@NullPtrArray];
$targetAddrHash{$id}{ChildByContainmentAssociations} = [@NullPtrArray];
$targetAddrHash{$id}{ParentByAffinityAssociations} = [@NullPtrArray];
$targetAddrHash{$id}{ChildByAffinityAssociations} = [@NullPtrArray];
+ $targetAddrHash{$id}{PervasiveChildAssociations} = [@NullPtrArray];
+ $targetAddrHash{$id}{ParentPervasiveAssociations} = [@NullPtrArray];
if($id =~/^sys\d+$/)
{
@@ -5513,6 +5574,10 @@ sub generateTargetingImage {
. "$targetAddrHash{$id}{offsetToPtrToParentByAffinityAssociations}");
ASSOC_DBG("Offset within targets to ptr to child affinity list = "
. "$targetAddrHash{$id}{offsetToPtrToChildByAffinityAssociations}");
+ ASSOC_DBG("Offset within targets to ptr to pervasive child list = "
+ . "$targetAddrHash{$id}{offsetToPtrToPervasiveChildAssociations}");
+ ASSOC_DBG("Offset within targets to ptr to parent pervasive list = "
+ . "$targetAddrHash{$id}{offsetToPtrToParentPervasiveAssociations}");
$attrAddr += $attributeListTypeHoH{$targetInstance->{type}}{elements}
* (length pack8byte(0));
@@ -5529,9 +5594,17 @@ sub generateTargetingImage {
my $attributesWritten = 0;
my %biosData = ();
+ # Cache the attribute definitions for all attributes, including virtual
my %attributeDefCache =
+ map { $_->{id} => $_} @{$allAttributes->{attribute}};
+
+ # Cache separate attribute definitions for all non-virtual attributes
+ my %attributeDefCacheNoVirtual =
map { $_->{id} => $_} @{$attributes->{attribute}};
+ # For the main loop, use all attributes including virtual
+ my $attributeIdEnumerationAll = getAttributeIdEnumeration($allAttributes);
+
foreach my $targetInstance (@targetsAoH)
{
my $data;
@@ -5541,7 +5614,8 @@ sub generateTargetingImage {
# Ensure consistent ordering of attributes for each target type
# Get the attribute list associated with each target type
#@TODO Attributes must eventually be ordered correctly for code update
- getTargetAttributes($targetInstance->{type}, $attributes,\%attrhash);
+ # Use all attributes including virtual for association processing
+ getTargetAttributes($targetInstance->{type}, $allAttributes,\%attrhash);
# Update hash with any per-instance overrides, but only if that
# attribute has already been defined
@@ -5574,10 +5648,11 @@ sub generateTargetingImage {
(keys %attrhash)
)
{
- # Save each target's physical + affinity path for association
- # processing later on
+ # Save each target's physical + affinity + parent pervasive
+ # path for association processing later on
if( ($attributeId eq ATTR_PHYS_PATH)
- || ($attributeId eq ATTR_AFFINITY_PATH) )
+ || ($attributeId eq ATTR_AFFINITY_PATH)
+ || ($attributeId eq ATTR_PARENT_PERVASIVE))
{
$targetAddrHash{$targetInstance->{id}}{$attributeId} =
$attrhash{$attributeId}->{default};
@@ -5598,7 +5673,7 @@ sub generateTargetingImage {
}
my $attrValue =
- enumNameToValue($attributeIdEnumeration,$attributeId);
+ enumNameToValue($attributeIdEnumerationAll,$attributeId);
$attrValue = sprintf ("%0x", $attrValue);
my $attributeDef = $attributeDefCache{$attributeId};
if (not defined $attributeDef)
@@ -5606,6 +5681,12 @@ sub generateTargetingImage {
fatal("Attribute $attributeId is not found.");
}
+ # Do not lay down virtual attributes into the binary
+ if(exists $attributeDef->{virtual})
+ {
+ next
+ }
+
my $ifFspOnlyTargetWithCommonAttr = "false";
# Need to separate out the Fsp only target's common attributes
if( ($fspTarget) && (!exists $attributeDef->{fspOnly}) &&
@@ -6014,6 +6095,7 @@ sub generateTargetingImage {
{
my $phys_attr = ATTR_PHYS_PATH;
my $affn_attr = ATTR_AFFINITY_PATH;
+ my $parent_pervasive = ATTR_PARENT_PERVASIVE;
my $phys_path = $targetAddrHash{$id}{$phys_attr};
my $parent_phys_path = substr $phys_path, 0, (rindex $phys_path, "/");
@@ -6021,6 +6103,33 @@ sub generateTargetingImage {
my $affn_path = $targetAddrHash{$id}{$affn_attr};
my $parent_affn_path = substr $affn_path, 0, (rindex $affn_path, "/");
+ # If this target has an associated pervasive target, create a
+ # bidirectional relationship between this target and the specified
+ # pervasive target. This target will point to the pervasive target via
+ # a "PARENT_PERVASIVE" association, and the pervasive target will
+ # point to this target via a "PERVASIVE_CHILD" association.
+ if (defined $targetAddrHash{$id}{$parent_pervasive})
+ {
+ my $parent_pervasive_path =
+ $targetAddrHash{$id}{$parent_pervasive};
+
+ if(defined $targetPhysicalPath{$parent_pervasive_path})
+ {
+ my $parent = $targetPhysicalPath{$parent_pervasive_path};
+ unshift
+ @ { $targetAddrHash{$id}
+ {ParentPervasiveAssociations} },
+ $firstTgtPtr + $targetAddrHash{$parent}
+ {OffsetToTargetWithinTargetList};
+
+ unshift
+ @ { $targetAddrHash{$parent}
+ {PervasiveChildAssociations} },
+ $firstTgtPtr + $targetAddrHash{$id}
+ {OffsetToTargetWithinTargetList};
+ }
+ }
+
if (defined $targetPhysicalPath{$parent_phys_path})
{
my $parent = $targetPhysicalPath{$parent_phys_path};
@@ -6052,6 +6161,7 @@ sub generateTargetingImage {
$firstTgtPtr + $targetAddrHash{$id}
{OffsetToTargetWithinTargetList};
}
+
}
# Serialize the association lists into a blob
@@ -6326,7 +6436,8 @@ sub generateTargetingImage {
Bios($cfgBiosXmlFile,$cfgBiosSchemaFile,$cfgBiosOutputFile);
$bios->load();
$bios->processBios(
- \%attributeDefCache,\$attributes,\%biosData,%targetPhysicalPath);
+ \%attributeDefCacheNoVirtual,\$attributes,
+ \%biosData,%targetPhysicalPath);
$bios->export();
}
OpenPOWER on IntegriCloud