summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-08-03 14:47:23 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-08-08 16:06:34 -0500
commitffcc637cd404efcce9ec16bab48f3f50b32fb6a5 (patch)
tree68cec7112a165dce80062604054ddcaa50271b43
parentf8e8d7c203dcd6ff31459253ba42a3dbe970765e (diff)
downloadtalos-hostboot-ffcc637cd404efcce9ec16bab48f3f50b32fb6a5.tar.gz
talos-hostboot-ffcc637cd404efcce9ec16bab48f3f50b32fb6a5.zip
Base targeting support for OCMB chip and MEM_PORT chiplet
In Axone we are introducing a new memory buffer known as the Open Capi Memory Buffer chip. On this chip will be a MEM_PORT chiplet(s) which will connect to the DIMM. This completes the following picture (it is expected OMIC, MCC, and OMI have been added already) MI--MCC / \ Proc--MC < __ OMI--OCMB--MEM_PORT--DIMM \ / OMIC Change-Id: I1a3e3d38978ce11fecee2ab11de83909eb440774 RTC:172970 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63911 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
-rw-r--r--src/include/usr/fapi2/target.H147
-rw-r--r--src/usr/fapi2/plat_attr_override_sync.C6
-rw-r--r--src/usr/fapi2/plat_utils.C15
-rwxr-xr-xsrc/usr/targeting/attroverride/attrTextToBinaryBlob.C2
-rw-r--r--src/usr/targeting/common/entitypath.C4
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/attribute_types.xml12
-rw-r--r--src/usr/targeting/common/xmltohb/target_types.xml49
7 files changed, 200 insertions, 35 deletions
diff --git a/src/include/usr/fapi2/target.H b/src/include/usr/fapi2/target.H
index 5cfa0bd31..540c1c325 100644
--- a/src/include/usr/fapi2/target.H
+++ b/src/include/usr/fapi2/target.H
@@ -247,6 +247,12 @@ inline TARGETING::TYPE convertFapi2TypeToTargeting(fapi2::TargetType i_T)
case fapi2::TARGET_TYPE_MCC:
o_targetingType = TARGETING::TYPE_MCC;
break;
+ case fapi2::TARGET_TYPE_OCMB_CHIP:
+ o_targetingType = TARGETING::TYPE_OCMB_CHIP;
+ break;
+ case fapi2::TARGET_TYPE_MEM_PORT:
+ o_targetingType = TARGETING::TYPE_MEM_PORT;
+ break;
default:
FAPI_ERR("convertFapi2TypeToTargeting:: Chiplet type not supported 0x%.8X!", i_T);
assert(false);
@@ -356,6 +362,12 @@ inline fapi2::TargetType convertTargetingTypeToFapi2(TARGETING::TYPE i_T)
case TARGETING::TYPE_MCC:
o_targetingType = fapi2::TARGET_TYPE_MCC;
break;
+ case TARGETING::TYPE_OCMB_CHIP:
+ o_targetingType = fapi2::TARGET_TYPE_OCMB_CHIP;
+ break;
+ case TARGETING::TYPE_MEM_PORT:
+ o_targetingType = fapi2::TARGET_TYPE_MEM_PORT;
+ break;
default:
o_targetingType = fapi2::TARGET_TYPE_NONE;
break;
@@ -381,7 +393,7 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// General compound chiplet check for proc parent
- const fapi2::TargetType TARGET_TYPE_PROC_CHIPLETS = fapi2::TARGET_TYPE_EX |
+ const fapi2::TargetType TARGET_TYPE_PROC_CHILDREN = fapi2::TARGET_TYPE_EX |
fapi2::TARGET_TYPE_MCS |
fapi2::TARGET_TYPE_XBUS |
fapi2::TARGET_TYPE_CORE |
@@ -401,10 +413,11 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
fapi2::TARGET_TYPE_PPE |
fapi2::TARGET_TYPE_PERV |
fapi2::TARGET_TYPE_PEC |
+ fapi2::TARGET_TYPE_DIMM |
fapi2::TARGET_TYPE_PHB;
static_assert( !((K_PARENT == fapi2::TARGET_TYPE_PROC_CHIP) &&
- ((T_SELF & TARGET_TYPE_PROC_CHIPLETS) == fapi2::TARGET_TYPE_NONE)),
+ ((T_SELF & TARGET_TYPE_PROC_CHILDREN) == fapi2::TARGET_TYPE_NONE)),
"fapi2::TARGET_TYPE_PROC_CHIP is not a valid parent" );
const fapi2::TargetType TARGET_TYPE_PERV_CHIPLETS = fapi2::TARGET_TYPE_EQ |
@@ -432,11 +445,27 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// Specific parent checks for each TargetType
// valid parents for DIMM
+ // DIMM -> MEMPORT
+ // DIMM -> OCMB
+ // DIMM -> OMI
+ // DIMM -> OMIC
+ // DIMM -> MCC
+ // DIMM -> MI
+ // DIMM -> MC
+ // DIMM -> PROC_CHIP
// DIMM -> MCA
// DIMM -> MBA
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_DIMM) &&
- (K_PARENT != fapi2::TARGET_TYPE_MCA) &&
- (K_PARENT != fapi2::TARGET_TYPE_MBA)),
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_DIMM) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCA) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MBA) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OCMB_CHIP) &&
+ (K_PARENT != fapi2::TARGET_TYPE_SYSTEM) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMIC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_DIMM");
// valid parents for PROC
@@ -449,15 +478,53 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// MEMBUF -> SYSTEM
// MEMBUF -> DMI
static_assert(!((T_SELF == fapi2::TARGET_TYPE_MEMBUF_CHIP) &&
- (K_PARENT != fapi2::TARGET_TYPE_SYSTEM) &&
+ (K_PARENT != fapi2::TARGET_TYPE_SYSTEM) &&
(K_PARENT != fapi2::TARGET_TYPE_DMI)),
"improper parent of fapi2::TARGET_TYPE_MEMBUF_CHIP");
+ // valid parents for OCMB
+ // OCMB -> SYSTEM
+ // OCMB -> OMI
+ // OCMB -> MCC
+ // OCMB -> MI
+ // OCMB -> MC
+ // OCMB -> OMIC
+ // OCMB -> PROC_CHIP
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OCMB_CHIP) &&
+ (K_PARENT != fapi2::TARGET_TYPE_SYSTEM) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMIC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
+ "improper parent of fapi2::TARGET_TYPE_OCMB_CHIP");
+
+ // valid parents for MEM_PORT
+ // MEM_PORT -> SYSTEM
+ // MEM_PORT -> OCMB_CHIP
+ // MEM_PORT -> OMI
+ // MEM_PORT -> MCC
+ // MEM_PORT -> MI
+ // MEM_PORT -> MC
+ // MEM_PORT -> OMIC
+ // MEM_PORT -> PROC_CHIP
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MEM_PORT) &&
+ (K_PARENT != fapi2::TARGET_TYPE_SYSTEM) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OCMB_CHIP) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_OMIC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
+ "improper parent of fapi2::TARGET_TYPE_MEM_PORT");
+
// valid parents for EX
// EX -> EQ
// EX -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_EX) &&
- (K_PARENT != fapi2::TARGET_TYPE_EQ) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_EX) &&
+ (K_PARENT != fapi2::TARGET_TYPE_EQ) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_EX");
@@ -488,9 +555,9 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// CORE -> EQ
// CORE -> PERV
// CORE -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_CORE) &&
- (K_PARENT != fapi2::TARGET_TYPE_EX) &&
- (K_PARENT != fapi2::TARGET_TYPE_EQ) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_CORE) &&
+ (K_PARENT != fapi2::TARGET_TYPE_EX) &&
+ (K_PARENT != fapi2::TARGET_TYPE_EQ) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_CORE");
@@ -498,7 +565,7 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// valid parents for EQ
// EQ -> PROC
// EQ -> PERV
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_EQ) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_EQ) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_EQ");
@@ -508,10 +575,10 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// MCA -> MCBIST
// MCA -> PERV
// MCA -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_MCA) &&
- (K_PARENT != fapi2::TARGET_TYPE_MCS) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MCA) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCS) &&
(K_PARENT != fapi2::TARGET_TYPE_MCBIST) &&
- (K_PARENT != fapi2::TARGET_TYPE_PERV) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MCA");
@@ -526,7 +593,7 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// valid parents for MC
// MC -> PERV
// MC -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_MC) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MC");
@@ -535,8 +602,8 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// MI -> MC
// MI -> PERV
// MI -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_MI) &&
- (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MI");
@@ -546,10 +613,10 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// MCC -> MI
// MCC -> MC
// MCC -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_MCC) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MCC) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
- (K_PARENT != fapi2::TARGET_TYPE_MI) &&
- (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MI");
@@ -560,11 +627,11 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// OMI -> MC
// OMI -> OMIC
// OMI -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_OMI) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OMI) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
- (K_PARENT != fapi2::TARGET_TYPE_MCC) &&
- (K_PARENT != fapi2::TARGET_TYPE_MI) &&
- (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MCC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_OMIC) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MI");
@@ -573,9 +640,9 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// OMIC -> PERV
// OMIC -> MC
// OMIC -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_OMIC) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MI) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
- (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_OMIC");
@@ -584,9 +651,9 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// DMI -> MC
// DMI -> PERV
// DMI -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_DMI) &&
- (K_PARENT != fapi2::TARGET_TYPE_MI) &&
- (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_DMI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MI) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_DMI");
@@ -636,7 +703,7 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// valid parents for OBUS
// OBUS -> PERV
// OBUS -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_OBUS) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OBUS) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_OBUS");
@@ -654,7 +721,7 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
// valid parents for CAPP
// CAPP -> PERV
// CAPP -> PROC
- static_assert(!((T_SELF == fapi2::TARGET_TYPE_CAPP) &&
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_CAPP) &&
(K_PARENT != fapi2::TARGET_TYPE_PERV) &&
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_CAPP");
@@ -724,7 +791,6 @@ inline std::vector<Target<K_CHILD, V> >
// invalid children for proc
INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_NONE)
INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_SYSTEM)
- INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_DIMM)
INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_PROC_CHIP)
INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_MEMBUF_CHIP)
INVALID_CHILD(fapi2::TARGET_TYPE_PROC_CHIP, fapi2::TARGET_TYPE_MBA)
@@ -857,7 +923,20 @@ inline std::vector<Target<K_CHILD, V> >
(K_CHILD != fapi2::TARGET_TYPE_OMI)),
"improper child of fapi2::TARGET_TYPE_OMIC");
- // TODO RTC:172970 When OCMB is added we need to add getchild support for OMI targets
+ // valid children for OCMB
+ // OCMB -> MEM_PORT
+ // OCMB -> DIMM
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OCMB_CHIP) &&
+ (K_CHILD != fapi2::TARGET_TYPE_MEM_PORT) &&
+ (K_CHILD != fapi2::TARGET_TYPE_DIMM)),
+ "improper child of fapi2::TARGET_TYPE_OCMB_CHIP");
+
+ // valid children for MEM_PORT
+ // MEM_PORT -> DIMM
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MEM_PORT) &&
+ (K_CHILD != fapi2::TARGET_TYPE_DIMM)),
+ "improper child of fapi2::TARGET_TYPE_MEM_PORT");
+
// valid children for DMI
// DMI -> MEMBUF
diff --git a/src/usr/fapi2/plat_attr_override_sync.C b/src/usr/fapi2/plat_attr_override_sync.C
index 8b72b4299..45c09924a 100644
--- a/src/usr/fapi2/plat_attr_override_sync.C
+++ b/src/usr/fapi2/plat_attr_override_sync.C
@@ -216,6 +216,12 @@ void directOverride()
case fapi2::TARGET_TYPE_MCC:
l_targetType = TARGETING::TYPE_MCC;
break;
+ case fapi2::TARGET_TYPE_OCMB_CHIP:
+ l_targetType = TARGETING::TYPE_OCMB_CHIP;
+ break;
+ case fapi2::TARGET_TYPE_MEM_PORT:
+ l_targetType = TARGETING::TYPE_MEM_PORT;
+ break;
default:
l_targetType = TARGETING::TYPE_NA;
}
diff --git a/src/usr/fapi2/plat_utils.C b/src/usr/fapi2/plat_utils.C
index cb62eb45e..8851f982b 100644
--- a/src/usr/fapi2/plat_utils.C
+++ b/src/usr/fapi2/plat_utils.C
@@ -703,6 +703,14 @@ void xlateTargetType(const fapi2::TargetType i_targetType,
o_class = TARGETING::CLASS_UNIT;
o_type = TARGETING::TYPE_MCC;
break;
+ case fapi2::TARGET_TYPE_OCMB_CHIP:
+ o_class = TARGETING::CLASS_CHIP;
+ o_type = TARGETING::TYPE_OCMB_CHIP;
+ break;
+ case fapi2::TARGET_TYPE_MEM_PORT:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_MEM_PORT;
+ break;
default:
o_class = TARGETING::CLASS_NA;
o_type = TARGETING::TYPE_NA;
@@ -752,6 +760,13 @@ bool isPhysParentChild(const TargetType i_parentType,
l_result = true;
}
}
+ else if (i_parentType == TARGET_TYPE_OCMB_CHIP)
+ {
+ if ( (i_childType & (TARGET_TYPE_MEM_PORT)) != 0 )
+ {
+ l_result = true;
+ }
+ }
return l_result;
}
diff --git a/src/usr/targeting/attroverride/attrTextToBinaryBlob.C b/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
index ae0013b90..5b795e8e2 100755
--- a/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
+++ b/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
@@ -133,6 +133,8 @@ TargStrToType CHIP_UNIT_TYPE_TARG_STR_TO_TYPE [] =
{"omi" , fapi2::TARGET_TYPE_OMI , TARGETING::TYPE_OMI},
{"omic" , fapi2::TARGET_TYPE_OMIC , TARGETING::TYPE_OMIC},
{"mcc" , fapi2::TARGET_TYPE_MCC , TARGETING::TYPE_MCC},
+ {"ocmb" , fapi2::TARGET_TYPE_OCMB_CHIP , TARGETING::TYPE_OCMB_CHIP},
+ {"memport" , fapi2::TARGET_TYPE_MEM_PORT , TARGETING::TYPE_MEM_PORT},
{"LAST" , 0 , 0}
};
diff --git a/src/usr/targeting/common/entitypath.C b/src/usr/targeting/common/entitypath.C
index 95e9ce10c..9697dde98 100644
--- a/src/usr/targeting/common/entitypath.C
+++ b/src/usr/targeting/common/entitypath.C
@@ -477,6 +477,10 @@ const char* EntityPath::pathElementTypeAsString(
return "OMIC";
case TYPE_MCC:
return "MCC";
+ case TYPE_OCMB_CHIP:
+ return "OCBM_CHIP";
+ case TYPE_MEM_PORT:
+ return "MEM_PORT";
// case TYPE_FSI_LINK:
// return "FSI-link";
// case TYPE_CFAM:
diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
index 1bc12de7a..0158ac626 100755
--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
@@ -5090,8 +5090,15 @@
<value>74</value>
</enumerator>
<enumerator>
- <name>LAST_IN_RANGE</name>
+ <name>OCMB_CHIP</name>
<value>75</value>
+ </enumerator> <enumerator>
+ <name>MEM_PORT</name>
+ <value>76</value>
+ </enumerator>
+ <enumerator>
+ <name>LAST_IN_RANGE</name>
+ <value>77</value>
</enumerator>
<id>TYPE</id>
</enumerationType>
@@ -5130,6 +5137,9 @@
<value>48</value>
</enumerator>
<enumerator>
+ <name>EXPLORER</name>
+ </enumerator>
+ <enumerator>
<name>JEDEC</name>
<value>80</value>
</enumerator>
diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
index a868d5a47..9bc1a3fc7 100644
--- a/src/usr/targeting/common/xmltohb/target_types.xml
+++ b/src/usr/targeting/common/xmltohb/target_types.xml
@@ -331,6 +331,55 @@
<attribute><id>PRD_HWP_PLID</id></attribute>
</targetType>
+<!-- Generic OCMB -->
+<targetType>
+ <id>chip-ocmb</id>
+ <parent>chip</parent>
+ <attribute>
+ <default>OCMB_CHIP</default>
+ <id>TYPE</id>
+ </attribute>
+ <attribute>
+ <default>1</default>
+ <id>DECONFIG_GARDABLE</id>
+ </attribute>
+ <attribute>
+ <default>0x00000033</default>
+ <id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
+ </attribute>
+ <attribute>
+ <id>FRU_ID</id>
+ </attribute>
+</targetType>
+
+<!-- Explorer OCMB -->
+<targetType>
+ <id>chip-ocmb-explorer</id>
+ <parent>chip-ocmb</parent>
+ <attribute>
+ <default>EXPLORER</default>
+ <id>MODEL</id>
+ </attribute>
+</targetType>
+
+<!-- mem_port -->
+<targetType>
+ <id>unit-mem_port</id>
+ <parent>unit</parent>
+ <attribute>
+ <id>TYPE</id>
+ <default>MEM_PORT</default>
+ </attribute>
+ <attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
+ <attribute><id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
+ <default>0x00000033</default>
+ </attribute>
+ <attribute>
+ <id>CDM_DOMAIN</id>
+ <default>MEM</default>
+ </attribute>
+</targetType>
+
<targetType>
<id>chip-membuf-centaur</id>
<parent>chip</parent>
OpenPOWER on IntegriCloud