summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSakethan R Kotta <sakkotta@in.ibm.com>2017-08-11 06:31:50 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-08-18 14:24:08 -0400
commita9512e1702f68f4f3b13fe13663094eedd24c22a (patch)
tree2f340d55d9c2942d8a5545652725f14b35fe59c8
parent25a46875b4bd8e7da5d5b2e342467ee2183e228b (diff)
downloadtalos-hostboot-a9512e1702f68f4f3b13fe13663094eedd24c22a.tar.gz
talos-hostboot-a9512e1702f68f4f3b13fe13663094eedd24c22a.zip
Added HWAS support for Cumulus and Centaur targets
Change-Id: I764527b57f07ce5d2c95283ba08fd7dd96d1222c RTC:178217 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44516 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/include/usr/hwas/common/deconfigGard.H20
-rw-r--r--src/usr/hwas/common/deconfigGard.C290
-rw-r--r--src/usr/hwas/common/hwas.C321
-rw-r--r--src/usr/hwas/test/hwasGardTest.H423
4 files changed, 643 insertions, 411 deletions
diff --git a/src/include/usr/hwas/common/deconfigGard.H b/src/include/usr/hwas/common/deconfigGard.H
index 2cdc5fd26..282ffa3c3 100644
--- a/src/include/usr/hwas/common/deconfigGard.H
+++ b/src/include/usr/hwas/common/deconfigGard.H
@@ -131,11 +131,13 @@ public:
// set by call_mss_getecid() in dmi_training.c
DECONFIGURED_BY_MEMORY_CONFIG, // BASE | 0x03
- // set by presentByAssoc() when a MCS has no MEMBUFs or MCAs
- DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA, // BASE | 0x04
+ // set by presentByAssoc() when a MCS has no MCAs
+ DECONFIGURED_BY_NO_CHILD_MCA, // BASE | 0x04
// TODO RTC 149367 Remove deprecated enumeration once hwsv is not using
DECONFIGURED_BY_NO_CHILD_MEMBUF = //Deprecated
- DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA,
+ DECONFIGURED_BY_NO_CHILD_MCA,
+ DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA = //Deprecated, but needed by FSP
+ DECONFIGURED_BY_NO_CHILD_MCA,
// set by deconfigureAssocProc() in hwas/common/deconfigGard.C
DECONFIGURED_BY_BUS_DECONFIG, // BASE | 0x05
@@ -154,10 +156,11 @@ public:
// set by presentByAssoc() when a MBA has no DIMMs
DECONFIGURED_BY_NO_CHILD_DIMM, // BASE | 0x0A
-
+
// set by presentByAssoc() when a MEMBUF has no MCS
- DECONFIGURED_BY_NO_PARENT_MCS, // BASE | 0x0B
-
+ DECONFIGURED_BY_NO_PARENT_DMI, // BASE | 0x0B
+ DECONFIGURED_BY_NO_PARENT_MCS =
+ DECONFIGURED_BY_NO_PARENT_DMI,
// set by presentByAssoc() when a MEMBUF has no MBAs
DECONFIGURED_BY_NO_CHILD_MBA, // BASE | 0x0C
@@ -177,6 +180,11 @@ public:
DECONFIGURED_BY_NO_CHILD_MCS, // BASE | 0x14
DECONFIGURED_BY_NO_PARENT_MCBIST, // BASE | 0x15
DECONFIGURED_BY_DISABLED_PORT, // BASE | 0x16
+
+ DECONFIGURED_BY_NO_CHILD_MI, // BASE | 0x17
+ DECONFIGURED_BY_NO_CHILD_DMI, // BASE | 0x18
+ DECONFIGURED_BY_NO_PARENT_MC, // BASE | 0x19
+ DECONFIGURED_BY_NO_PARENT_MI, // BASE | 0x1A
// mask - these bits mean it's a PLID and not an enum
DECONFIGURED_BY_PLID_MASK = 0xFFFF0000,
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index d6b2f93e0..0a4367cae 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -1549,54 +1549,25 @@ void DeconfigGard::_deconfigureByAssoc(
case TYPE_MEMBUF:
{
- // get parent MCS
- TargetHandleList pParentMcsList;
- getParentAffinityTargetsByState(pParentMcsList, &i_target,
- CLASS_UNIT, TYPE_MCS, UTIL_FILTER_PRESENT);
- HWAS_ASSERT((pParentMcsList.size() == 1),
- "HWAS _deconfigureByAssoc: pParentMcsList > 1");
- const Target *l_parentMcs = pParentMcsList[0];
+ // get parent DMI
+ TargetHandleList pParentDmiList;
+ getParentAffinityTargetsByState(pParentDmiList, &i_target,
+ CLASS_UNIT, TYPE_DMI, UTIL_FILTER_PRESENT);
+ HWAS_ASSERT((pParentDmiList.size() == 1),
+ "HWAS _deconfigureByAssoc: pParentDmiList > 1");
+ const Target *l_parentDmi = pParentDmiList[0];
// If parent is functional, deconfigure it
- if (isFunctional(l_parentMcs))
+ if (isFunctional(l_parentDmi))
{
// deconfigure the parent
- HWAS_INF("_deconfigureByAssoc MEMBUF parent MCS: %.8X",
- get_huid(l_parentMcs));
- _deconfigureTarget(const_cast<Target &> (*l_parentMcs),
+ HWAS_INF("_deconfigureByAssoc MEMBUF parent DMI: %.8X",
+ get_huid(l_parentDmi));
+ _deconfigureTarget(const_cast<Target &> (*l_parentDmi),
i_errlEid, NULL, i_deconfigRule);
- _deconfigureByAssoc(const_cast<Target &> (*l_parentMcs),
+ _deconfigureByAssoc(const_cast<Target &> (*l_parentDmi),
i_errlEid, i_deconfigRule);
}
-
- Target *pSys;
- targetService().getTopLevelTarget(pSys);
- HWAS_ASSERT(pSys, "HWAS _deconfigureByAssoc: no TopLevelTarget");
-
-#if 0 //@TODO RTC 178216 Re-Add this after proc_setup_bars_memory_attributes.xml
- // is imported from ekb
- // done if not in interleaved mode
- if (!pSys->getAttr<ATTR_ALL_MCS_IN_INTERLEAVING_GROUP>())
- {
- break;
- }
-#endif
- // if paired mode (interleaved)
- // deconfigure paired MCS and MEMBUF (Centaur)
- // find paired MCS / MEMBUF (Centaur)
- const Target *l_partnerMcs = findPartnerForMcs(l_parentMcs);
-
- // If partner MCS is functional or not spec deconfigured
- if (l_partnerMcs && isFunctional(l_partnerMcs))
- {
- // deconfigure the paired MCS
- HWAS_INF("_deconfigureByAssoc MCS (& MEMBUF) paired: %.8X",
- get_huid(l_partnerMcs));
- _deconfigureTarget(const_cast<Target &> (*l_partnerMcs),
- i_errlEid, NULL,i_deconfigRule);
- _deconfigureByAssoc(const_cast<Target &> (*l_partnerMcs),
- i_errlEid,i_deconfigRule);
- }
break;
} // TYPE_MEMBUF
@@ -1665,6 +1636,74 @@ void DeconfigGard::_deconfigureByAssoc(
// and we're done, so break;
break;
}
+
+ case TYPE_MI:
+ {
+ // get parent MC
+ TargetHandleList pParentMctList;
+ getParentAffinityTargetsByState(pParentMctList, &i_target,
+ CLASS_UNIT, TYPE_MC, UTIL_FILTER_PRESENT);
+
+ HWAS_ASSERT((pParentMctList.size() <= 1),
+ "HWAS _deconfigureByAssoc: MI has multiple MC parents, this is impossible");
+
+ Target *l_parentMc = pParentMctList[0];
+
+ // if parent MC hasn't already been deconfigured
+ if (!pParentMctList.empty() &&
+ isFunctional(l_parentMc) &&
+ !anyChildFunctional(*l_parentMc))
+ {
+ // deconfigure parent MC
+ HWAS_INF("_deconfigureByAssoc MC parent with no functional children: %.8X",
+ get_huid(l_parentMc));
+ _deconfigureTarget(*l_parentMc,
+ i_errlEid, NULL, i_deconfigRule);
+ _deconfigureByAssoc(*l_parentMc,
+ i_errlEid,i_deconfigRule);
+ }
+ else
+ {
+ HWAS_ASSERT((pParentMctList.size() <= 1),
+ "HWAS _deconfigureByAssoc: No MC parents for for MI w/ HUID: %lx", get_huid(&i_target));
+ }
+ // and we're done, so break;
+ break;
+ }
+
+ case TYPE_DMI:
+ {
+ // get parent MI
+ TargetHandleList pParentMitList;
+ getParentAffinityTargetsByState(pParentMitList, &i_target,
+ CLASS_UNIT, TYPE_MC, UTIL_FILTER_PRESENT);
+
+ HWAS_ASSERT((pParentMitList.size() <= 1),
+ "HWAS _deconfigureByAssoc: DMI has multiple MI parents, this is impossible");
+
+ Target *l_parentMi = pParentMitList[0];
+
+ // if parent MI hasn't already been deconfigured
+ if (!pParentMitList.empty() &&
+ isFunctional(l_parentMi) &&
+ !anyChildFunctional(*l_parentMi))
+ {
+ // deconfigure parent MI
+ HWAS_INF("_deconfigureByAssoc MI parent with no functional children: %.8X",
+ get_huid(l_parentMi));
+ _deconfigureTarget(*l_parentMi,
+ i_errlEid, NULL, i_deconfigRule);
+ _deconfigureByAssoc(*l_parentMi,
+ i_errlEid,i_deconfigRule);
+ }
+ else
+ {
+ HWAS_ASSERT((pParentMitList.size() <= 1),
+ "HWAS _deconfigureByAssoc: No MI parents for for DMI w/ HUID: %lx", get_huid(&i_target));
+ }
+ // and we're done, so break;
+ break;
+ }
case TYPE_MBA:
{
@@ -1692,174 +1731,9 @@ void DeconfigGard::_deconfigureByAssoc(
i_errlEid, NULL, i_deconfigRule);
_deconfigureByAssoc(const_cast<Target &> (*l_parentMembuf),
i_errlEid, i_deconfigRule);
-
- // and we're done, so break;
- break;
}
-
- // parent MEMBUF still has functional memory
- Target *pSys;
- targetService().getTopLevelTarget(pSys);
- HWAS_ASSERT(pSys, "HWAS _deconfigureByAssoc: no TopLevelTarget");
-
-#if 0 //@TODO RTC 178216 Re-Add this after proc_setup_bars_memory_attributes.xml
- // is imported from ekb
- // done if not in interleaved mode
- if (!pSys->getAttr<ATTR_ALL_MCS_IN_INTERLEAVING_GROUP>())
- {
- break;
- }
-#endif
- // we need to make sure that MBA memory is balanced.
-
- // find parent MCS
- TargetHandleList pParentMcsList;
- PredicateCTM predMcs(CLASS_UNIT, TYPE_MCS);
- PredicatePostfixExpr funcMcs;
- funcMcs.push(&predMcs).push(&isFunctional).And();
- targetService().getAssociated(pParentMcsList,
- l_parentMembuf,
- TargetService::PARENT_BY_AFFINITY,
- TargetService::ALL,
- &funcMcs);
-
- HWAS_ASSERT((pParentMcsList.size() <= 1),
- "HWAS _deconfigureByAssoc: pParentMcsList > 1");
-
- if (pParentMcsList.empty())
- {
- // MCS is already deconfigured, we're done
- break;
- }
-
- // MEMBUF only has 1 parent
- const Target *l_parentMcs = pParentMcsList[0];
-
- // find paired MCS / MEMBUF (Centaur)
- const Target *l_partnerMcs = findPartnerForMcs(l_parentMcs);
-
- // If partner MCS is non-functional
- // (findPartnerForMcs returned NULL) or speculated deconfig
- if (!(l_partnerMcs && isFunctional(l_partnerMcs)))
- {
- // We're done.
- break;
- }
-
- // Obtain MBA targets related to paired MCS
- TargetHandleList pMbaList;
- PredicateCTM predMba(CLASS_UNIT, TYPE_MBA);
- PredicatePostfixExpr funcMba;
- funcMba.push(&predMba).push(&isFunctional).And();
- targetService().getAssociated(pMbaList,
- l_partnerMcs,
- TargetService::CHILD_BY_AFFINITY,
- TargetService::ALL,
- &funcMba);
-
-
- // Declare list to hold any MBA targets we need to deconfigure
- // as we look for matches. This list will be used to run
- // the subsequent _deconfigureByAssoc
- TargetHandleList l_deconfigList;
-
- // Now we will check the memory size of each MBA target
- // of the paired MCS. If an MBAs memory size matches that
- // of the original MBA (i_target), then we will deconfigure it
- // If ATTR_EFF_DIMM_SIZE has not been set yet (returns 0), then
- // we will deconfigure the MBA whose position matches that of
- // the original.
-
- // how much memory does this MBA have
- ATTR_EFF_DIMM_SIZE_type l_dimmSize;
- i_target.tryGetAttr<ATTR_EFF_DIMM_SIZE>(l_dimmSize);
- const uint64_t l_mbaDimmSize =
- l_dimmSize[0][0] + l_dimmSize[0][1] +
- l_dimmSize[1][0] + l_dimmSize[1][1];
-
- if (l_mbaDimmSize == 0)
- {
- // before this attribute has been set
- HWAS_INF("ATTR_EFF_DIMMSIZE not set (returned 0)."
- " Deconfiguring same-position MBA of paried MCS.");
-
- // Get this MBAs position
- const ATTR_CHIP_UNIT_type l_mbaPos =
- i_target.getAttr<ATTR_CHIP_UNIT>();
-
- // Assumes 2 MBA per MEMBUF. if this changes, then instead
- // of '1', count the number of MBAs under this MEMBUF and
- // use that as the comparison.
- if (pMbaList.size() != 1) // this != myMbaCount
- {
- // Iterate through MBAs looking for position match
- for (TargetHandleList::iterator
- pMba_it = pMbaList.begin();
- pMba_it != pMbaList.end();
- ++pMba_it)
- {
- // Capture current MBA
- TargetHandle_t pMba = *pMba_it;
-
- // If position matches
- if (l_mbaPos == pMba->getAttr<ATTR_CHIP_UNIT>())
- {
- // Deconfigure it
- HWAS_INF("_deconfigureByAssoc MBA matched: %.8X",
- get_huid(pMba));
- _deconfigureTarget(*pMba, i_errlEid,
- NULL, i_deconfigRule);
- l_deconfigList.push_back(pMba);
- break; // only need to do 1 MBA - we're done.
- }
- }// 2 functional MBAs
- }// size != 1
- }// ATTR_EFF_DIMM_SIZE not set
- else
- {
- // ATTR_EFF_DIMM_SIZE was set
- if (pMbaList.size() != 1) // this != myMbaCount
- {
- // unbalanced, so lets find one to deconfigure
- for (TargetHandleList::iterator
- pMba_it = pMbaList.begin();
- pMba_it != pMbaList.end();
- ++pMba_it)
- {
- TargetHandle_t pMba = *pMba_it;
- pMba->tryGetAttr<ATTR_EFF_DIMM_SIZE>(l_dimmSize);
- const uint64_t l_thisDimmSize =
- l_dimmSize[0][0] + l_dimmSize[0][1] +
- l_dimmSize[1][0] + l_dimmSize[1][1];
-
- // if this MBA matches, deconfigure it.
- if (l_mbaDimmSize == l_thisDimmSize)
- {
- HWAS_INF("_deconfigureByAssoc MBA matched: %.8X",
- get_huid(pMba));
- _deconfigureTarget(*pMba, i_errlEid,
- NULL, i_deconfigRule);
- l_deconfigList.push_back(pMba);
- break; // only need to do 1 MBA - we're done.
- }
- } // for MBA
- } // if 2 functional MBA
- }// else
-
- // now loop thru and do the ByAssoc deconfig for each of the
- // MBA targets. this should get the CHILD associations, but
- // won't cause any pair deconfigs, since we coverered that
- // already.
- for (TargetHandleList::iterator
- pMba_it = l_deconfigList.begin();
- pMba_it != l_deconfigList.end();
- ++pMba_it)
- {
- TargetHandle_t pMba = *pMba_it;
- HWAS_INF("_deconfigureByAssoc MBA matched (bA): %.8X",
- get_huid(pMba));
- _deconfigureByAssoc(*pMba, i_errlEid,i_deconfigRule);
- } // for
+
+ // and we're done, so break;
break;
} // TYPE_MBA
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index f9ce03e3f..539a9e185 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -2053,23 +2053,23 @@ void invokePresentByAssoc()
// make one list
TargetHandleList l_funcTargetList;
- // get the functional MCBISTs
+ // get the functional MCBISTs (for Nimbus based systems)
TargetHandleList l_funcMCBISTTargetList;
getAllChiplets(l_funcMCBISTTargetList, TYPE_MCBIST, true );
l_funcTargetList.insert(l_funcTargetList.begin(),
l_funcMCBISTTargetList.begin(),
l_funcMCBISTTargetList.end());
- // If VPO, dump targets (MCBIST) for verification & debug purposes
- #ifdef CONFIG_VPO_COMPILE
+// If VPO, dump targets (MCBIST) for verification & debug purposes
+#ifdef CONFIG_VPO_COMPILE
HWAS_INF("invokePresentByAssoc(): MCBIST targets:");
for (auto l_MCBIST : l_funcMCBISTTargetList)
{
HWAS_INF(" MCBIST: HUID %.8x", TARGETING::get_huid(l_MCBIST));
}
- #endif
+#endif
- // get the functional MCSs
+ // get the functional MCSs (for Nimbus based systems)
TargetHandleList l_funcMCSTargetList;
getAllChiplets(l_funcMCSTargetList, TYPE_MCS, true );
l_funcTargetList.insert(l_funcTargetList.begin(),
@@ -2085,8 +2085,56 @@ void invokePresentByAssoc()
}
#endif
+ // get the functional MCs (for Cumulus based systems)
+ TargetHandleList l_funcMCTargetList;
+ getAllChiplets(l_funcMCTargetList, TYPE_MC, true );
+ l_funcTargetList.insert(l_funcTargetList.begin(),
+ l_funcMCTargetList.begin(),
+ l_funcMCTargetList.end());
+
+// If VPO, dump targets (MC) for verification & debug purposes
+#ifdef CONFIG_VPO_COMPILE
+ HWAS_INF("invokePresentByAssoc(): MC targets:");
+ for (auto l_MC : l_funcMCTargetList)
+ {
+ HWAS_INF(" MC: HUID %.8x", TARGETING::get_huid(l_MC));
+ }
+#endif
+
+ // get the functional MIs (for Cumulus based systems)
+ TargetHandleList l_funcMITargetList;
+ getAllChiplets(l_funcMITargetList, TYPE_MI, true );
+ l_funcTargetList.insert(l_funcTargetList.begin(),
+ l_funcMITargetList.begin(),
+ l_funcMITargetList.end());
+
+// If VPO, dump targets (MI) for verification & debug purposes
+#ifdef CONFIG_VPO_COMPILE
+ HWAS_INF("invokePresentByAssoc(): MI targets:");
+ for (auto l_MI : l_funcMITargetList)
+ {
+ HWAS_INF(" MI: HUID %.8x", TARGETING::get_huid(l_MI));
+ }
+#endif
+
+ // get the functional DMIs (for Cumulus based systems)
+ TargetHandleList l_funcDMITargetList;
+ getAllChiplets(l_funcDMITargetList, TYPE_DMI, true );
+ l_funcTargetList.insert(l_funcTargetList.begin(),
+ l_funcDMITargetList.begin(),
+ l_funcDMITargetList.end());
+
+// If VPO, dump targets (DMI) for verification & debug purposes
+#ifdef CONFIG_VPO_COMPILE
+ HWAS_INF("invokePresentByAssoc(): MI targets:");
+ for (auto l_DMI : l_funcDMITargetList)
+ {
+ HWAS_INF(" DMI: HUID %.8x", TARGETING::get_huid(l_DMI));
+ }
+#endif
+
// get the functional membufs
- // note: do not expect membufs for NIMBUS direct memory attach
+ // note: do not expect membufs for NIMBUS
TargetHandleList l_funcMembufTargetList;
getAllChips(l_funcMembufTargetList, TYPE_MEMBUF, true );
l_funcTargetList.insert(l_funcTargetList.begin(),
@@ -2103,7 +2151,7 @@ void invokePresentByAssoc()
#endif
// get the functional mbas
- // note: do not expect mbas for NIMBUS direct memory attach
+ // note: do not expect mbas for NIMBUS
TargetHandleList l_funcMBATargetList;
getAllChiplets(l_funcMBATargetList, TYPE_MBA, true );
l_funcTargetList.insert(l_funcTargetList.begin(),
@@ -2191,27 +2239,33 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
// Sort entire vector by affinity path. This provides the algorithm with
// an ordered vector of targets, making it easy to check if:
- // for direct attach memory -
+ // for NIMBUS direct attach memory -
// MCS has child MCA
// MCA has child DIMM and parent MCS
// DIMM has parent MCA.
- // for non direct attach memory -
- // MCS has child MEMBUF
- // MEMBUF has parent MCS and child MBA
- // MBA has child DIMM and parnent MEMBUF
+ // for CUMULUS non direct attach memory -
+ // MC has child MI
+ // MI has parent MC and child DMI
+ // DMI has parent MI and child MEMBUF
+ // MEMBUF has parent DMI and child MBA
+ // MBA has parent MEMBUF and child DIMM
// DIMM has parent MBA.
std::sort(io_funcTargets.begin(), io_funcTargets.end(),
compareAffinity);
- // Keep track of the most recently seen MCS MEMBUF and MBA. This allows the
+ // Keep track of the most recently seen MCBIST, MCS & MCA for NIMBUS
+ // MC, MI, DMI, MEMBUF and MBA for CUMULUS. This allows the
// algorithm to quickly check if targets share a MCS or MEMBUF and used
// for backtracking after deleting a target from the vector
size_t l_MCBISTIndex = __INT_MAX__;
size_t l_MCSIndex = __INT_MAX__;
- size_t l_MEMBUFIndex = __INT_MAX__;
- size_t l_MBAIndex = __INT_MAX__;
size_t l_MCAIndex = __INT_MAX__;
+ size_t l_MCIndex = __INT_MAX__;
+ size_t l_MIIndex = __INT_MAX__;
+ size_t l_DMIIndex = __INT_MAX__;
+ size_t l_MEMBUFIndex = __INT_MAX__;
+ size_t l_MBAIndex = __INT_MAX__;
size_t i = 0;
// Perform presentByAssoc algorithm
@@ -2237,7 +2291,7 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
switch (l_curTargetInfo.type)
{
- case TYPE_MCBIST:
+ case TYPE_MCBIST: //NIMBUS
{
// No Child MCSs
// If next is not a MCS sharing the same MCAs, deconfig MCBIST
@@ -2268,18 +2322,18 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
}
break;
}// MCBIST
- case TYPE_MCS:
+
+ case TYPE_MCS: //NIMBUS
{
- // No Child MEMBUFs or MCAs
- // If next is not a MEMBUF or MCA sharing the same MCS, deconfig MCS
+ // No Child MCAs
+ // If next is not an MCA sharing the same MCS, deconfig MCS
if ( (l_nextTargetInfo == NULL) ||
- ( (l_nextTargetInfo->type != TYPE_MEMBUF) &&
- (l_nextTargetInfo->type != TYPE_MCA) ) ||
+ (l_nextTargetInfo->type != TYPE_MCA) ||
!isSameSubPath(l_curTargetInfo, *l_nextTargetInfo) )
{
- // Disable MCS - NO_CHILD_MEMBUF_OR_MCA
+ // Disable MCS - NO_CHILD_MCA
l_curTargetInfo.reason =
- DeconfigGard::DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA;
+ DeconfigGard::DECONFIGURED_BY_NO_CHILD_MCA;
}
// No Parent MCBIST
@@ -2319,7 +2373,143 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
break;
} // MCS
- case TYPE_MEMBUF:
+ case TYPE_MC: //CUMULUS
+ {
+ // No Child MIs
+ // If next is not a MI sharing the same MC, deconfig MC
+ if ( (l_nextTargetInfo == NULL) ||
+ (l_nextTargetInfo->type != TYPE_MI) ||
+ !isSameSubPath(l_curTargetInfo, *l_nextTargetInfo) )
+ {
+ // Disable MC - NO_CHILD_MI
+ l_curTargetInfo.reason =
+ DeconfigGard::DECONFIGURED_BY_NO_CHILD_MI;
+ // Add target to Deconfig vector to be deconfigured later
+ o_targToDeconfig.push_back(l_curTargetInfo);
+ // Remove target from funcTargets
+ io_funcTargets.erase(it);
+
+ //Just erased current MC, so MI/DMI index invalid
+ l_MIIndex = __INT_MAX__;
+ l_DMIIndex = __INT_MAX__;
+ }
+ // Update MC Index
+ else
+ {
+ l_MCIndex = i;
+ l_MIIndex = __INT_MAX__; //New MC,so MI index invalid
+ l_DMIIndex = __INT_MAX__; //New MC,so DMI index invalid
+ i++;
+ continue;
+ }
+ break;
+ }// MC
+
+ case TYPE_MI: //CUMULUS
+ {
+ // No Child DMIs
+ // If next is not a DMI sharing the same MI, deconfig MI
+ if ( (l_nextTargetInfo == NULL) ||
+ ( l_nextTargetInfo->type != TYPE_DMI) ||
+ !isSameSubPath(l_curTargetInfo, *l_nextTargetInfo) )
+ {
+ // Disable MI - NO_CHILD_DMI
+ l_curTargetInfo.reason =
+ DeconfigGard::DECONFIGURED_BY_NO_CHILD_DMI;
+
+ }
+ // No Parent MC
+ // If MI doesn't share the same MC as MIIndex, deconfig MI
+ else if ( (l_MCIndex == __INT_MAX__) ||
+ !isSameSubPath(l_curTargetInfo, io_funcTargets[l_MCIndex]))
+ {
+ // Disable MI - NO_PARENT_MC
+ l_curTargetInfo.reason =
+ DeconfigGard::DECONFIGURED_BY_NO_PARENT_MC;
+ }
+ // Update MI Index
+ else
+ {
+ l_MIIndex = i;
+ l_DMIIndex = __INT_MAX__; //New MI, so DMI index invalid
+ i++;
+ continue;
+ }
+ // Add target to Deconfig vector to be deconfigured later
+ o_targToDeconfig.push_back(l_curTargetInfo);
+ // Remove target from funcTargets
+ io_funcTargets.erase(it);
+
+ // Backtrack to last MC
+ if ( l_MCIndex != __INT_MAX__ )
+ {
+ i = l_MCIndex;
+ l_MIIndex = __INT_MAX__; //New MC, MI index invalid
+ l_DMIIndex = __INT_MAX__; //New MC, DMI index invalid
+ }
+ // Backtrack to beginning if no MC has been seen yet
+ else
+ {
+ i = 0;
+ }
+ break;
+ } // MI
+
+ case TYPE_DMI: //CUMULUS
+ {
+ // No Child MEMBUFs
+ // If next is not a MEMBUF sharing the same DMI, deconfig DMI
+ if ( (l_nextTargetInfo == NULL) ||
+ ( l_nextTargetInfo->type != TYPE_MEMBUF) ||
+ !isSameSubPath(l_curTargetInfo, *l_nextTargetInfo) )
+ {
+ // Disable DMI - NO_CHILD_MEMBUF
+ l_curTargetInfo.reason =
+ DeconfigGard::DECONFIGURED_BY_NO_CHILD_MEMBUF;
+
+ }
+ // No Parent MI
+ // If DMI doesn't share the same MI as DMIIndex, deconfig DMI
+ else if ( (l_MIIndex == __INT_MAX__) ||
+ !isSameSubPath(l_curTargetInfo, io_funcTargets[l_MIIndex]))
+ {
+ // Disable DMI - NO_PARENT_MI
+ l_curTargetInfo.reason =
+ DeconfigGard::DECONFIGURED_BY_NO_PARENT_MI;
+ }
+ // Update DMI Index
+ else
+ {
+ l_DMIIndex = i;
+ i++;
+ continue;
+ }
+ // Add target to Deconfig vector to be deconfigured later
+ o_targToDeconfig.push_back(l_curTargetInfo);
+ // Remove target from funcTargets
+ io_funcTargets.erase(it);
+
+ // Backtrack to last MI
+ if ( l_MIIndex != __INT_MAX__ )
+ {
+ i = l_MIIndex;
+ l_DMIIndex = __INT_MAX__; //New MI, DMI index invalid
+ }
+ //Backtrack to last MC, if no MI has been seen yet
+ else if ( l_MCIndex != __INT_MAX__ )
+ {
+ i = l_MCIndex;
+ l_DMIIndex = __INT_MAX__; //New MC, DMI index invalid
+ }
+ // Backtrack to beginning if no MI has been seen yet
+ else
+ {
+ i = 0;
+ }
+ break;
+ } // DMI
+
+ case TYPE_MEMBUF: // CUMULUS
{
// No Child MBAs
// If next is not a MBA sharing the same MEMBUF, deconfig MEMBUF
@@ -2331,14 +2521,15 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
l_curTargetInfo.reason =
DeconfigGard::DECONFIGURED_BY_NO_CHILD_MBA;
}
- // No Parent MCS
- // If MEMBUF doesn't share the same MCS as MCSIndex, deconfig MEMBUF
- else if ( (l_MCSIndex == __INT_MAX__) ||
- !isSameSubPath(l_curTargetInfo, io_funcTargets[l_MCSIndex]))
+ // No Parent DMI (CUMULUS)
+ // If MEMBUF doesn't share the same same DMI as DMIIndex (for CUMULUS),
+ // deconfig MEMBUF
+ else if ((l_DMIIndex == __INT_MAX__) ||
+ !isSameSubPath(l_curTargetInfo, io_funcTargets[l_DMIIndex]))
{
- // Disable MEMBUF - NO_PARENT_MCS
+ // Disable MEMBUF - NO_PARENT_MCS_OR_DMI
l_curTargetInfo.reason =
- DeconfigGard::DECONFIGURED_BY_NO_PARENT_MCS;
+ DeconfigGard::DECONFIGURED_BY_NO_PARENT_DMI;
}
// Update MEMBUF Index
else
@@ -2353,12 +2544,23 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
// Remove target from funcTargets
io_funcTargets.erase(it);
- // Backtrack to last MCS
- if ( l_MCSIndex != __INT_MAX__ )
+ //Backtrack to last DMI (CUMULUS), if no MEMBUF has been seen yet
+ if ( l_DMIIndex != __INT_MAX__ )
{
- i = l_MCSIndex;
+ i = l_DMIIndex;
}
- // Backtrack to beginning if no MCS has been seen yet
+ //Backtrack to last MI (CUMULUS), if no DMI has been seen yet
+ else if ( l_MIIndex != __INT_MAX__ )
+ {
+ i = l_MIIndex;
+ }
+ //Backtrack to last MC (CUMULUS), if no MI has been seen yet
+ else if ( l_MCIndex != __INT_MAX__ )
+ {
+ i = l_MCIndex;
+ }
+ // Backtrack to beginning if no MCS (NIMBUS) or DMI (CUMULUS)
+ // has been seen yet
else
{
i = 0;
@@ -2366,7 +2568,7 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
break;
} // MEMBUF
- case TYPE_MBA:
+ case TYPE_MBA: //CUMULUS
{
// No Child DIMMs
// If next is not a DIMM sharing the same MBA, deconfig MBA
@@ -2405,12 +2607,22 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
{
i = l_MEMBUFIndex;
}
- // Backtrack to last MCS if no MEMBUF has been seen yet
- else if ( l_MCSIndex != __INT_MAX__)
+ //Backtrack to last DMI (CUMULUS), if no MEMBUF has been seen yet
+ else if ( l_DMIIndex != __INT_MAX__ )
{
- i = l_MCSIndex;
+ i = l_DMIIndex;
}
- // Backtrack to beginning if no MCS has been seen yet
+ //Backtrack to last MI (CUMULUS), if no DMI has been seen yet
+ else if ( l_MIIndex != __INT_MAX__ )
+ {
+ i = l_MIIndex;
+ }
+ //Backtrack to last MC (CUMULUS), if no MI has been seen yet
+ else if ( l_MCIndex != __INT_MAX__ )
+ {
+ i = l_MCIndex;
+ }
+ // Backtrack to beginning
else
{
i = 0;
@@ -2495,26 +2707,41 @@ void presentByAssoc(TargetInfoVector& io_funcTargets,
{
i = l_MBAIndex;
}
- // Backtrack to last MCA
+ // Backtrack to last MCA (NIMBUS)
else if ( l_MCAIndex != __INT_MAX__)
{
i = l_MCAIndex;
}
- // Backtrack to last MEMBUF if no MBA has been seen yet
- else if ( l_MEMBUFIndex != __INT_MAX__)
- {
- i = l_MEMBUFIndex;
- }
- // Backtrack to last MCS if no MEMBUF has been seen yet
+ // Backtrack to last MCS (NIMBUS) if no MCA has been seen yet
else if ( l_MCSIndex != __INT_MAX__)
{
i = l_MCSIndex;
}
- // Backtrack to last MCS if no MEMBUF has been seen yet
+ // Backtrack to last MCBIST (NIMBUS) if no MCS has been seen yet
else if ( l_MCBISTIndex != __INT_MAX__)
{
i = l_MCBISTIndex;
}
+ // Backtrack to last MEMBUF (CUMULUS) if no MBA has been seen yet
+ else if ( l_MEMBUFIndex != __INT_MAX__)
+ {
+ i = l_MEMBUFIndex;
+ }
+ //Backtrack to last DMI (CUMULUS),if no MEMBUF has been seen yet
+ else if ( l_DMIIndex != __INT_MAX__ )
+ {
+ i = l_DMIIndex;
+ }
+ //Backtrack to last MI (CUMULUS), if no DMI has been seen yet
+ else if ( l_MIIndex != __INT_MAX__ )
+ {
+ i = l_MIIndex;
+ }
+ //Backtrack to last MC (CUMULUS), if no MI has been seen yet
+ else if ( l_MCIndex != __INT_MAX__ )
+ {
+ i = l_MCIndex;
+ }
// Backtrack to beginning if no MCS has been seen yet
else
{
diff --git a/src/usr/hwas/test/hwasGardTest.H b/src/usr/hwas/test/hwasGardTest.H
index cdbb48d2d..5a5486c27 100644
--- a/src/usr/hwas/test/hwasGardTest.H
+++ b/src/usr/hwas/test/hwasGardTest.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2016 */
+/* Contributors Listed Below - COPYRIGHT 2011,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -4383,7 +4383,7 @@ public:
void testdeconfigPresentByAssoc1()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc1: Started");
- // This tests the scenario where there is 1 mcs, membuff, mba and dimm
+ // This tests the scenario where there is 1 mc, mi, dmi, membuff, mba and dimm
// This is done to ensure that the algorithm works on each edge case
TargetInfoVector l_targets;
@@ -4391,42 +4391,69 @@ public:
TargetInfo l_TargetInfo;
l_TargetInfo.pThisTarget = NULL;
- EntityPath l_ep[4];
+ EntityPath l_ep[6];
- // MCS only
- l_ep[0].addLast(TYPE_MCS, 0);
+ // MC only
+ l_ep[0].addLast(TYPE_MC, 0);
l_TargetInfo.affinityPath = l_ep[0]; // SHOULD GET DECONFIGURED
- l_TargetInfo.type = TYPE_MCS;
+ l_TargetInfo.type = TYPE_MC;
+
+ l_targets.push_back(l_TargetInfo);
+
+ presentByAssoc(l_targets, l_targToDeconfig);
+
+ // MI only
+ l_ep[1].addLast(TYPE_MC, 0);
+ l_ep[1].addLast(TYPE_MI, 0);
+ l_TargetInfo.affinityPath = l_ep[1]; // SHOULD GET DECONFIGURED
+ l_TargetInfo.type = TYPE_MI;
+
+ l_targets.push_back(l_TargetInfo);
+
+ presentByAssoc(l_targets, l_targToDeconfig);
+
+ // DMI only
+ l_ep[2].addLast(TYPE_MC, 0);
+ l_ep[2].addLast(TYPE_MI, 0);
+ l_ep[2].addLast(TYPE_DMI, 0);
+ l_TargetInfo.affinityPath = l_ep[2]; // SHOULD GET DECONFIGURED
+ l_TargetInfo.type = TYPE_DMI;
l_targets.push_back(l_TargetInfo);
presentByAssoc(l_targets, l_targToDeconfig);
// MEMBUF only
- l_ep[1].addLast(TYPE_MCS, 0);
- l_ep[1].addLast(TYPE_MEMBUF, 0);
- l_TargetInfo.affinityPath = l_ep[1]; // SHOULD GET DECONFIGURED
+ l_ep[3].addLast(TYPE_MC, 0);
+ l_ep[3].addLast(TYPE_MI, 0);
+ l_ep[3].addLast(TYPE_DMI, 0);
+ l_ep[3].addLast(TYPE_MEMBUF, 0);
+ l_TargetInfo.affinityPath = l_ep[3]; // SHOULD GET DECONFIGURED
l_TargetInfo.type = TYPE_MEMBUF;
l_targets.push_back(l_TargetInfo);
presentByAssoc(l_targets, l_targToDeconfig);
// MBA only
- l_ep[2].addLast(TYPE_MCS, 0);
- l_ep[2].addLast(TYPE_MEMBUF, 0);
- l_ep[2].addLast(TYPE_MBA, 0);
- l_TargetInfo.affinityPath = l_ep[2]; // SHOULD GET DECONFIGURED
+ l_ep[4].addLast(TYPE_MC, 0);
+ l_ep[4].addLast(TYPE_MI, 0);
+ l_ep[4].addLast(TYPE_DMI, 0);
+ l_ep[4].addLast(TYPE_MEMBUF, 0);
+ l_ep[4].addLast(TYPE_MBA, 0);
+ l_TargetInfo.affinityPath = l_ep[4]; // SHOULD GET DECONFIGURED
l_TargetInfo.type = TYPE_MBA;
l_targets.push_back(l_TargetInfo);
presentByAssoc(l_targets, l_targToDeconfig);
// DIMM only
- l_ep[3].addLast(TYPE_MCS, 0);
- l_ep[3].addLast(TYPE_MEMBUF, 0);
- l_ep[3].addLast(TYPE_MBA, 0);
- l_ep[3].addLast(TYPE_DIMM, 0);
- l_TargetInfo.affinityPath = l_ep[3]; // SHOULD GET DECONFIGURED
+ l_ep[5].addLast(TYPE_MC, 0);
+ l_ep[5].addLast(TYPE_MI, 0);
+ l_ep[5].addLast(TYPE_DMI, 0);
+ l_ep[5].addLast(TYPE_MEMBUF, 0);
+ l_ep[5].addLast(TYPE_MBA, 0);
+ l_ep[5].addLast(TYPE_DIMM, 0);
+ l_TargetInfo.affinityPath = l_ep[5]; // SHOULD GET DECONFIGURED
l_TargetInfo.type = TYPE_DIMM;
l_targets.push_back(l_TargetInfo);
@@ -4435,11 +4462,13 @@ public:
// Check result
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
- if ((l_targToDeconfig.size() == 4) &&
+ if ((l_targToDeconfig.size() == 6) &&
(l_targToDeconfig[0].affinityPath == l_ep[0]) &&
(l_targToDeconfig[1].affinityPath == l_ep[1]) &&
(l_targToDeconfig[2].affinityPath == l_ep[2]) &&
- (l_targToDeconfig[3].affinityPath == l_ep[3]) )
+ (l_targToDeconfig[3].affinityPath == l_ep[3]) &&
+ (l_targToDeconfig[4].affinityPath == l_ep[4]) &&
+ (l_targToDeconfig[5].affinityPath == l_ep[5]) )
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc1: Success");
}
@@ -4461,11 +4490,11 @@ public:
void testdeconfigPresentByAssoc2()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc2: Started");
- // This test the scenario where MCS Group 0 does not have a membuf
- // MCS Group 1 is fully populated
+ // This test the scenario where MC Group 0 does not have a membuf
+ // MC Group 1 is fully populated
// User-defined number of targets
- size_t NUM_TARGS = 6;
+ size_t NUM_TARGS = 7;
// Input target vector
TargetInfoVector l_targets;
@@ -4477,25 +4506,26 @@ public:
// Output target vector
TargetInfoVector l_targToDeconfig;
- // Add MCS Group 0
+ // Add MC Group 0
//l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
l_ep[0] = l_targets[0].affinityPath; // SHOULD GET DECONFIGURED
- l_targets[0].type = TYPE_MCS;
+ l_targets[0].type = TYPE_MC;
// Add MEMBUF Group 1
//l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCBIST,0);
- l_targets[1].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[1].affinityPath.addLast(TYPE_MC,1);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[1] = l_targets[1].affinityPath;
l_targets[1].type = TYPE_MEMBUF;
// Add MBA Group 1
//l_targets[2].pThisTarget = NULL;
- l_targets[2].affinityPath.addLast(TYPE_MCBIST,0);
- l_targets[2].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[2].affinityPath.addLast(TYPE_MC,1);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
l_targets[2].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[2].affinityPath.addLast(TYPE_MBA, 0);
l_ep[2] = l_targets[2].affinityPath;
@@ -4503,25 +4533,35 @@ public:
// Add DIMM Group 1
//l_targets[3].pThisTarget = NULL;
- l_targets[3].affinityPath.addLast(TYPE_MCBIST,0);
- l_targets[3].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[3].affinityPath.addLast(TYPE_MC,1);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 0);
l_targets[3].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[3].affinityPath.addLast(TYPE_MBA, 0);
l_targets[3].affinityPath.addLast(TYPE_DIMM, 0);
l_ep[3] = l_targets[3].affinityPath;
l_targets[3].type = TYPE_DIMM;
- // Add MCS Group 1
+ // Add MI Group 1
//l_targets[4].pThisTarget = NULL;
- l_targets[4].affinityPath.addLast(TYPE_MCBIST,0);
- l_targets[4].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[4].affinityPath.addLast(TYPE_MC,1);
+ l_targets[4].affinityPath.addLast(TYPE_MI, 0);
l_ep[4] = l_targets[4].affinityPath;
- l_targets[4].type = TYPE_MCS;
-
- // Add MCBIST Top Target
- l_targets[5].affinityPath.addLast(TYPE_MCBIST,0);
+ l_targets[4].type = TYPE_MI;
+
+ // Add DMI Group 1
+ //l_targets[5].pThisTarget = NULL;
+ l_targets[5].affinityPath.addLast(TYPE_MC,1);
+ l_targets[5].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[5].affinityPath.addLast(TYPE_DMI, 0);
l_ep[5] = l_targets[5].affinityPath;
- l_targets[5].type = TYPE_MCBIST;
+ l_targets[5].type = TYPE_DMI;
+
+
+ // Add MC Group 1
+ l_targets[6].affinityPath.addLast(TYPE_MC,1);
+ l_ep[6] = l_targets[6].affinityPath;
+ l_targets[6].type = TYPE_MC;
presentByAssoc(l_targets, l_targToDeconfig);
@@ -4551,12 +4591,12 @@ public:
void testdeconfigPresentByAssoc3()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc3: Started");
- // This test the scenario where MEMBUF Group 1 has no MCS and then
+ // This test the scenario where MEMBUF Group 1 has no DMI and then
// DIMM Group 1 has no MEMBUF because MEMBUF 1 will be marked for
// deconfigure
// User-defined number of targets
- size_t NUM_TARGS = 8;
+ size_t NUM_TARGS = 9;
// Input target vector
TargetInfoVector l_targets;
@@ -4567,25 +4607,28 @@ public:
// Output target vector
TargetInfoVector l_targToDeconfig;
- // Add MCS Group 0
+ // Add DMI Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_ep[0] = l_targets[0].affinityPath;
- l_targets[0].type = TYPE_MCS;
+ l_targets[0].type = TYPE_DMI;
// Add MEMBUF Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[1] = l_targets[1].affinityPath;
l_targets[1].type = TYPE_MEMBUF;
// Add MBA Group 0
l_targets[2].pThisTarget = NULL;
- l_targets[2].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[2].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
l_targets[2].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[2].affinityPath.addLast(TYPE_MBA, 0);
l_ep[2] = l_targets[2].affinityPath;
@@ -4593,8 +4636,9 @@ public:
// Add MBA Group 1
l_targets[3].pThisTarget = NULL;
- l_targets[3].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[3].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[3].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 1);
l_targets[3].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[3].affinityPath.addLast(TYPE_MBA, 0);
l_ep[3] = l_targets[3].affinityPath; // SHOULD GET DECONFIGURED
@@ -4602,16 +4646,18 @@ public:
// Add MEMBUF Group 1
l_targets[4].pThisTarget = NULL;
- l_targets[4].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[4].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[4].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[4].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[4].affinityPath.addLast(TYPE_DMI, 1);
l_targets[4].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[4] = l_targets[4].affinityPath; // SHOULD GET DECONFIGURED
l_targets[4].type = TYPE_MEMBUF;
// Add DIMM Group 0
l_targets[5].pThisTarget = NULL;
- l_targets[5].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[5].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[5].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[5].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[5].affinityPath.addLast(TYPE_DMI, 0);
l_targets[5].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[5].affinityPath.addLast(TYPE_MBA, 0);
l_targets[5].affinityPath.addLast(TYPE_DIMM, 0);
@@ -4620,19 +4666,27 @@ public:
// Add DIMM Group 1
l_targets[6].pThisTarget = NULL;
- l_targets[6].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[6].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[6].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[6].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[6].affinityPath.addLast(TYPE_DMI, 1);
l_targets[6].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[6].affinityPath.addLast(TYPE_MBA, 0);
l_targets[6].affinityPath.addLast(TYPE_DIMM, 0);
l_ep[6] = l_targets[6].affinityPath; // SHOULD GET DECONFIGURED
l_targets[6].type = TYPE_DIMM;
- // Add MCBIST
+ // Add MC
l_targets[7].pThisTarget = NULL;
- l_targets[7].affinityPath.addLast(TYPE_MCBIST, 0);
- l_ep[7] = l_targets[0].affinityPath;
- l_targets[7].type = TYPE_MCBIST;
+ l_targets[7].affinityPath.addLast(TYPE_MC, 0);
+ l_ep[7] = l_targets[7].affinityPath;
+ l_targets[7].type = TYPE_MC;
+
+ // Add MI
+ l_targets[8].pThisTarget = NULL;
+ l_targets[8].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[8].affinityPath.addLast(TYPE_MI, 0);
+ l_ep[8] = l_targets[8].affinityPath;
+ l_targets[8].type = TYPE_MI;
presentByAssoc(l_targets, l_targToDeconfig);
@@ -4640,9 +4694,9 @@ public:
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
if ((l_targToDeconfig.size() == 3) &&
- (l_targToDeconfig[0].affinityPath == l_ep[4]) && // 10 MEMBUF
- (l_targToDeconfig[1].affinityPath == l_ep[3]) && // 100 MBA
- (l_targToDeconfig[2].affinityPath == l_ep[6]) ) // 1000 DIMM
+ (l_targToDeconfig[0].affinityPath == l_ep[4]) && // 0010 MEMBUF
+ (l_targToDeconfig[1].affinityPath == l_ep[3]) && // 00100 MBA
+ (l_targToDeconfig[2].affinityPath == l_ep[6]) ) // 001000 DIMM
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc3: Success");
}
@@ -4665,10 +4719,10 @@ public:
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc4: Started");
// This test the scenario where MEMBUF Group 0 has no MBAs causing
- // MCS Group 0 to also be deconfigured.
+ // MC Group 0 to also be deconfigured.
// User-defined number of targets
- size_t NUM_TARGS = 2;
+ size_t NUM_TARGS = 4;
// Input target vector
TargetInfoVector l_targets;
@@ -4679,27 +4733,46 @@ public:
// Output target vector
TargetInfoVector l_targToDeconfig;
- // Add MCS Group 0
+ // Add MC Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
l_ep[0] = l_targets[0].affinityPath; // SHOULD BE DECONFIGURED
- l_targets[0].type = TYPE_MCS;
-
- // Add MEMBUF Group 0
+ l_targets[0].type = TYPE_MC;
+
+ // Add MI Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
- l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
l_ep[1] = l_targets[1].affinityPath; // SHOULD BE DECONFIGURED
- l_targets[1].type = TYPE_MEMBUF;
+ l_targets[1].type = TYPE_MI;
+
+ // Add DMI Group 0
+ l_targets[2].pThisTarget = NULL;
+ l_targets[2].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
+ l_ep[2] = l_targets[2].affinityPath; // SHOULD BE DECONFIGURED
+ l_targets[2].type = TYPE_DMI;
+
+ // Add MEMBUF Group 0
+ l_targets[3].pThisTarget = NULL;
+ l_targets[3].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MEMBUF, 0);
+ l_ep[3] = l_targets[3].affinityPath; // SHOULD BE DECONFIGURED
+ l_targets[3].type = TYPE_MEMBUF;
presentByAssoc(l_targets, l_targToDeconfig);
// Check result
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
- if ((l_targToDeconfig.size() == 2) &&
- (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 0 MCS
- (l_targToDeconfig[1].affinityPath == l_ep[1]) ) // 00 MEMBUF
+ if ((l_targToDeconfig.size() == 4) &&
+ (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 0 MC
+ (l_targToDeconfig[1].affinityPath == l_ep[1]) && // 00 MI
+ (l_targToDeconfig[2].affinityPath == l_ep[2]) && // 000 DMI
+ (l_targToDeconfig[3].affinityPath == l_ep[3]) ) // 0000 MEMBUF
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc4: Success");
}
@@ -4722,7 +4795,7 @@ public:
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc5: Started");
// This test the scenario where MEMBUF Group 0 and MBA Group 0 having
- // no MCS. This tests the MCSINDEX edge case because one never existed
+ // no DMI. This tests the DMIINDEX edge case because one never existed
// User-defined number of targets
size_t NUM_TARGS = 2;
@@ -4738,14 +4811,18 @@ public:
// Add MEMBUF Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_targets[0].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[0] = l_targets[0].affinityPath; // SHOULD BE DECONFIGURED
l_targets[0].type = TYPE_MEMBUF;
// Add MBA Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[1].affinityPath.addLast(TYPE_MBA, 0);
l_ep[1] = l_targets[1].affinityPath; // SHOULD BE DECONFIGURED
@@ -4757,8 +4834,8 @@ public:
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
if ((l_targToDeconfig.size() == 2) &&
- (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 00 MEMBUF
- (l_targToDeconfig[1].affinityPath == l_ep[1]) ) // 000 MBA
+ (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 0000 MEMBUF
+ (l_targToDeconfig[1].affinityPath == l_ep[1]) ) // 00000 MBA
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc5: Success");
}
@@ -4797,7 +4874,9 @@ public:
// Add MBA Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_targets[0].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[0].affinityPath.addLast(TYPE_MBA, 0);
l_ep[0] = l_targets[0].affinityPath; // SHOULD BE DECONFIGURED
@@ -4805,7 +4884,9 @@ public:
// Add DIMM Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[1].affinityPath.addLast(TYPE_MBA, 0);
l_targets[1].affinityPath.addLast(TYPE_DIMM, 0);
@@ -4818,8 +4899,8 @@ public:
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
if ((l_targToDeconfig.size() == 2) &&
- (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 000 MBA
- (l_targToDeconfig[1].affinityPath == l_ep[1]) ) // 0000 DIMM
+ (l_targToDeconfig[0].affinityPath == l_ep[0]) && // 00000 MBA
+ (l_targToDeconfig[1].affinityPath == l_ep[1]) ) // 000000 DIMM
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc6: Success");
}
@@ -4844,7 +4925,7 @@ public:
// This test the scenario where MBA Group 1 has no DIMMS
// User-defined number of targets
- size_t NUM_TARGS = 6;
+ size_t NUM_TARGS = 7;
// Input target vector
TargetInfoVector l_targets;
@@ -4855,25 +4936,28 @@ public:
// Output target vector
TargetInfoVector l_targToDeconfig;
- // Add MCS Group 0
+ // Add DMI Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_ep[0] = l_targets[0].affinityPath;
- l_targets[0].type = TYPE_MCS;
+ l_targets[0].type = TYPE_DMI;
// Add MEMBUF Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[1] = l_targets[1].affinityPath;
l_targets[1].type = TYPE_MEMBUF;
// Add MBA Group 0
l_targets[2].pThisTarget = NULL;
- l_targets[2].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[2].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
l_targets[2].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[2].affinityPath.addLast(TYPE_MBA, 0);
l_ep[2] = l_targets[2].affinityPath;
@@ -4881,8 +4965,9 @@ public:
// Add DIMM Group 0
l_targets[3].pThisTarget = NULL;
- l_targets[3].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[3].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 0);
l_targets[3].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[3].affinityPath.addLast(TYPE_MBA, 0);
l_targets[3].affinityPath.addLast(TYPE_DIMM, 0);
@@ -4891,18 +4976,26 @@ public:
// Add MBA Group 1
l_targets[4].pThisTarget = NULL;
- l_targets[4].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[4].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[4].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[4].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[4].affinityPath.addLast(TYPE_DMI, 0);
l_targets[4].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[4].affinityPath.addLast(TYPE_MBA, 1);
l_ep[4] = l_targets[4].affinityPath; // SHOULD BE DECONFIGURED
l_targets[4].type = TYPE_MBA;
- // Add MCBIST
+ // Add MI Group 0
l_targets[5].pThisTarget = NULL;
- l_targets[5].affinityPath.addLast(TYPE_MCBIST, 0);
- l_ep[5] = l_targets[0].affinityPath;
- l_targets[5].type = TYPE_MCBIST;
+ l_targets[5].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[5].affinityPath.addLast(TYPE_MI, 0);
+ l_ep[5] = l_targets[5].affinityPath;
+ l_targets[5].type = TYPE_MI;
+
+ // Add MC Group 0
+ l_targets[6].pThisTarget = NULL;
+ l_targets[6].affinityPath.addLast(TYPE_MC, 0);
+ l_ep[6] = l_targets[6].affinityPath;
+ l_targets[6].type = TYPE_MC;
presentByAssoc(l_targets, l_targToDeconfig);
@@ -4936,7 +5029,7 @@ public:
// and the cascade
// User-defined number of targets
- size_t NUM_TARGS = 12;
+ size_t NUM_TARGS = 13;
// Input target vector
TargetInfoVector l_targets;
@@ -4947,66 +5040,74 @@ public:
// Output target vector
TargetInfoVector l_targToDeconfig;
- // Add MCS Group 0
+ // Add DMI Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_ep[0] = l_targets[0].affinityPath;
- l_targets[0].type = TYPE_MCS; // SHOULD BE DECONFIGURED
+ l_targets[0].type = TYPE_DMI; // SHOULD BE DECONFIGURED
// Add MEMBUF Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[1] = l_targets[1].affinityPath;
l_targets[1].type = TYPE_MEMBUF; // SHOULD BE DECONFIGURED
// Add MBA Group 0
l_targets[2].pThisTarget = NULL;
- l_targets[2].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[2].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
l_targets[2].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[2].affinityPath.addLast(TYPE_MBA, 0);
l_ep[2] = l_targets[2].affinityPath;
l_targets[2].type = TYPE_MBA; // SHOULD BE DECONFIGURED
- // Add MCS Group 1
+ // Add DMI Group 1
l_targets[3].pThisTarget = NULL;
- l_targets[3].affinityPath.addLast(TYPE_MCBIST, 0);
- l_targets[3].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[3].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 1);
l_ep[3] = l_targets[3].affinityPath;
- l_targets[3].type = TYPE_MCS; // SHOULD BE DECONFIGURED
+ l_targets[3].type = TYPE_DMI; // SHOULD BE DECONFIGURED
// Add MCS Group 2
l_targets[4].pThisTarget = NULL;
- l_targets[4].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[4].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[4].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[4].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[4].affinityPath.addLast(TYPE_DMI, 0);
l_ep[4] = l_targets[4].affinityPath;
- l_targets[4].type = TYPE_MCS;
+ l_targets[4].type = TYPE_DMI;
// Add MEMBUF Group 0
l_targets[5].pThisTarget = NULL;
- l_targets[5].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[5].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[5].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[5].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[5].affinityPath.addLast(TYPE_DMI, 0);
l_targets[5].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[5] = l_targets[5].affinityPath;
l_targets[5].type = TYPE_MEMBUF; // SHOULD BE DECONFIGURED
// Add MEMBUF Group 1
l_targets[6].pThisTarget = NULL;
- l_targets[6].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[6].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[6].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[6].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[6].affinityPath.addLast(TYPE_DMI, 0);
l_targets[6].affinityPath.addLast(TYPE_MEMBUF, 1);
l_ep[6] = l_targets[6].affinityPath;
l_targets[6].type = TYPE_MEMBUF;
// Add MBA Group 0
l_targets[7].pThisTarget = NULL;
- l_targets[7].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[7].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[7].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[7].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[7].affinityPath.addLast(TYPE_DMI, 0);
l_targets[7].affinityPath.addLast(TYPE_MEMBUF, 1);
l_targets[7].affinityPath.addLast(TYPE_MBA, 0);
l_ep[7] = l_targets[7].affinityPath;
@@ -5014,8 +5115,9 @@ public:
// Add MBA Group 1
l_targets[8].pThisTarget = NULL;
- l_targets[8].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[8].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[8].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[8].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[8].affinityPath.addLast(TYPE_DMI, 0);
l_targets[8].affinityPath.addLast(TYPE_MEMBUF, 1);
l_targets[8].affinityPath.addLast(TYPE_MBA, 1);
l_ep[8] = l_targets[8].affinityPath;
@@ -5023,25 +5125,34 @@ public:
// Add DIMM Group 1
l_targets[9].pThisTarget = NULL;
- l_targets[9].affinityPath.addLast(TYPE_MCBIST, 1);
- l_targets[9].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[9].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[9].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[9].affinityPath.addLast(TYPE_DMI, 0);
l_targets[9].affinityPath.addLast(TYPE_MEMBUF, 1);
l_targets[9].affinityPath.addLast(TYPE_MBA, 1);
l_targets[9].affinityPath.addLast(TYPE_DIMM, 0);
l_ep[9] = l_targets[9].affinityPath;
l_targets[9].type = TYPE_DIMM;
- // Add MCBIST 0
+ // Add MC 0
l_targets[10].pThisTarget = NULL;
- l_targets[10].affinityPath.addLast(TYPE_MCBIST, 0);
+ l_targets[10].affinityPath.addLast(TYPE_MC, 0);
l_ep[10] = l_targets[10].affinityPath;
- l_targets[10].type = TYPE_MCBIST;
+ l_targets[10].type = TYPE_MC;
- // Add MCBIST 1
+ // Add MI 0
l_targets[11].pThisTarget = NULL;
- l_targets[11].affinityPath.addLast(TYPE_MCBIST, 1);
+ l_targets[11].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[11].affinityPath.addLast(TYPE_MI, 0);
l_ep[11] = l_targets[11].affinityPath;
- l_targets[11].type = TYPE_MCBIST;
+ l_targets[11].type = TYPE_MI; // SHOULD BE DECONFIGURED
+
+ // Add MI 1
+ l_targets[12].pThisTarget = NULL;
+ l_targets[12].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[12].affinityPath.addLast(TYPE_MI, 1);
+ l_ep[12] = l_targets[12].affinityPath;
+ l_targets[12].type = TYPE_MI;
presentByAssoc(l_targets, l_targToDeconfig);
@@ -5049,13 +5160,13 @@ public:
std::sort(l_targToDeconfig.begin(), l_targToDeconfig.end(),
compareAffinityCXX);
if ((l_targToDeconfig.size() == 7) &&
- (l_targToDeconfig[0].affinityPath == l_ep[10]) && // 0 MCBIST
- (l_targToDeconfig[1].affinityPath == l_ep[0]) && // 0 MCS
- (l_targToDeconfig[2].affinityPath == l_ep[1]) && // 00 MEMBUF
- (l_targToDeconfig[3].affinityPath == l_ep[2]) && // 000 MBA
- (l_targToDeconfig[4].affinityPath == l_ep[3]) && // 1 MCS
- (l_targToDeconfig[5].affinityPath == l_ep[5]) && // 20 MEMBUF
- (l_targToDeconfig[6].affinityPath == l_ep[7]) ) // 210 MBA
+ (l_targToDeconfig[0].affinityPath == l_ep[11]) && // 00 MI
+ (l_targToDeconfig[1].affinityPath == l_ep[0]) && // 000 DMI
+ (l_targToDeconfig[2].affinityPath == l_ep[1]) && // 0000 MEMBUF
+ (l_targToDeconfig[3].affinityPath == l_ep[2]) && // 00000 MBA
+ (l_targToDeconfig[4].affinityPath == l_ep[3]) && // 001 DMI
+ (l_targToDeconfig[5].affinityPath == l_ep[5]) && // 0100 MEMBUF
+ (l_targToDeconfig[6].affinityPath == l_ep[7]) ) // 01010 MBA
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc8: Success");
}
@@ -5094,14 +5205,18 @@ public:
// Add MEMBUF Group 0
l_targets[0].pThisTarget = NULL;
- l_targets[0].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[0].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[0].affinityPath.addLast(TYPE_DMI, 0);
l_targets[0].affinityPath.addLast(TYPE_MEMBUF, 0);
l_ep[0] = l_targets[0].affinityPath;
l_targets[0].type = TYPE_MEMBUF; // SHOULD BE DECONFIGURED
// Add MBA Group 0
l_targets[1].pThisTarget = NULL;
- l_targets[1].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[1].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[1].affinityPath.addLast(TYPE_DMI, 0);
l_targets[1].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[1].affinityPath.addLast(TYPE_MBA, 0);
l_ep[1] = l_targets[1].affinityPath;
@@ -5109,7 +5224,9 @@ public:
// Add DIMM Group 0
l_targets[2].pThisTarget = NULL;
- l_targets[2].affinityPath.addLast(TYPE_MCS, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[2].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[2].affinityPath.addLast(TYPE_DMI, 0);
l_targets[2].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[2].affinityPath.addLast(TYPE_MBA, 0);
l_targets[2].affinityPath.addLast(TYPE_DIMM, 0);
@@ -5118,7 +5235,9 @@ public:
// Add MBA Group 1
l_targets[3].pThisTarget = NULL;
- l_targets[3].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[3].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[3].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[3].affinityPath.addLast(TYPE_DMI, 1);
l_targets[3].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[3].affinityPath.addLast(TYPE_MBA, 0);
l_ep[3] = l_targets[3].affinityPath;
@@ -5126,7 +5245,9 @@ public:
// Add DIMM Group 1
l_targets[4].pThisTarget = NULL;
- l_targets[4].affinityPath.addLast(TYPE_MCS, 1);
+ l_targets[4].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[4].affinityPath.addLast(TYPE_MI, 0);
+ l_targets[4].affinityPath.addLast(TYPE_DMI, 1);
l_targets[4].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[4].affinityPath.addLast(TYPE_MBA, 0);
l_targets[4].affinityPath.addLast(TYPE_DIMM, 0);
@@ -5135,7 +5256,9 @@ public:
// Add DIMM Group 2
l_targets[5].pThisTarget = NULL;
- l_targets[5].affinityPath.addLast(TYPE_MCS, 2);
+ l_targets[5].affinityPath.addLast(TYPE_MC, 0);
+ l_targets[5].affinityPath.addLast(TYPE_MI, 1);
+ l_targets[5].affinityPath.addLast(TYPE_DMI, 0);
l_targets[5].affinityPath.addLast(TYPE_MEMBUF, 0);
l_targets[5].affinityPath.addLast(TYPE_MBA, 0);
l_targets[5].affinityPath.addLast(TYPE_DIMM, 0);
OpenPOWER on IntegriCloud