summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/fapi2/target.H98
-rw-r--r--src/include/usr/fsi/fsi_reasoncodes.H2
-rw-r--r--src/usr/fapi2/plat_attr_override_sync.C9
-rw-r--r--src/usr/fapi2/plat_utils.C43
-rwxr-xr-xsrc/usr/targeting/attroverride/attrTextToBinaryBlob.C3
-rw-r--r--src/usr/targeting/common/entitypath.C7
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/attribute_types.xml17
-rw-r--r--src/usr/targeting/common/xmltohb/target_types.xml137
8 files changed, 294 insertions, 22 deletions
diff --git a/src/include/usr/fapi2/target.H b/src/include/usr/fapi2/target.H
index a77182281..5cfa0bd31 100644
--- a/src/include/usr/fapi2/target.H
+++ b/src/include/usr/fapi2/target.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -238,6 +238,15 @@ inline TARGETING::TYPE convertFapi2TypeToTargeting(fapi2::TargetType i_T)
case fapi2::TARGET_TYPE_MC:
o_targetingType = TARGETING::TYPE_MC;
break;
+ case fapi2::TARGET_TYPE_OMI:
+ o_targetingType = TARGETING::TYPE_OMI;
+ break;
+ case fapi2::TARGET_TYPE_OMIC:
+ o_targetingType = TARGETING::TYPE_OMIC;
+ break;
+ case fapi2::TARGET_TYPE_MCC:
+ o_targetingType = TARGETING::TYPE_MCC;
+ break;
default:
FAPI_ERR("convertFapi2TypeToTargeting:: Chiplet type not supported 0x%.8X!", i_T);
assert(false);
@@ -338,6 +347,15 @@ inline fapi2::TargetType convertTargetingTypeToFapi2(TARGETING::TYPE i_T)
case TARGETING::TYPE_MC:
o_targetingType = fapi2::TARGET_TYPE_MC;
break;
+ case TARGETING::TYPE_OMI:
+ o_targetingType = fapi2::TARGET_TYPE_OMI;
+ break;
+ case TARGETING::TYPE_OMIC:
+ o_targetingType = fapi2::TARGET_TYPE_OMIC;
+ break;
+ case TARGETING::TYPE_MCC:
+ o_targetingType = fapi2::TARGET_TYPE_MCC;
+ break;
default:
o_targetingType = fapi2::TARGET_TYPE_NONE;
break;
@@ -372,6 +390,9 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
fapi2::TARGET_TYPE_MCBIST |
fapi2::TARGET_TYPE_MC |
fapi2::TARGET_TYPE_MI |
+ fapi2::TARGET_TYPE_OMI |
+ fapi2::TARGET_TYPE_MCC |
+ fapi2::TARGET_TYPE_OMIC |
fapi2::TARGET_TYPE_CAPP |
fapi2::TARGET_TYPE_DMI |
fapi2::TARGET_TYPE_OBUS |
@@ -399,7 +420,10 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
fapi2::TARGET_TYPE_MC |
fapi2::TARGET_TYPE_DMI |
fapi2::TARGET_TYPE_PEC |
- fapi2::TARGET_TYPE_PHB;
+ fapi2::TARGET_TYPE_PHB |
+ fapi2::TARGET_TYPE_OMI |
+ fapi2::TARGET_TYPE_OMIC |
+ fapi2::TARGET_TYPE_MCC;
static_assert( !((K_PARENT == fapi2::TARGET_TYPE_PERV) &&
((T_SELF & TARGET_TYPE_PERV_CHIPLETS) == fapi2::TARGET_TYPE_NONE)),
@@ -517,6 +541,44 @@ inline Target<K_PARENT, V> Target<T_SELF, V>::getParent(void) const
(K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
"improper parent of fapi2::TARGET_TYPE_MI");
+ // valid parents for MCC
+ // MCC -> PERV
+ // MCC -> MI
+ // MCC -> MC
+ // MCC -> PROC
+ 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_PROC_CHIP)),
+ "improper parent of fapi2::TARGET_TYPE_MI");
+
+ // valid parents for OMI
+ // OMI -> PERV
+ // OMI -> MCC
+ // OMI -> MI
+ // OMI -> MC
+ // OMI -> OMIC
+ // OMI -> PROC
+ 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_OMIC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
+ "improper parent of fapi2::TARGET_TYPE_MI");
+
+ // valid parents for OMIC
+ // OMIC -> PERV
+ // OMIC -> MC
+ // OMIC -> PROC
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OMIC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PERV) &&
+ (K_PARENT != fapi2::TARGET_TYPE_MC) &&
+ (K_PARENT != fapi2::TARGET_TYPE_PROC_CHIP)),
+ "improper parent of fapi2::TARGET_TYPE_OMIC");
+
// valid parents for DMI
// DMI -> MI
// DMI -> MC
@@ -674,7 +736,7 @@ inline std::vector<Target<K_CHILD, V> >
// PERV -> XBUS
// PERV -> OBUS
// PERV -> CAPP
- // PERV -> NV
+ // PERV -> OBUS_BRICK
// PERV -> MCBIST
// PERV -> MCS
// PERV -> MCA
@@ -682,6 +744,9 @@ inline std::vector<Target<K_CHILD, V> >
// PERV -> PHB
// PERV -> MC
// PERV -> MI
+ // PERV -> MCC
+ // PERV -> OMIC
+ // PERV -> OMI
// PERV -> DMI
static_assert(!((T_SELF == fapi2::TARGET_TYPE_PERV) &&
(K_CHILD != fapi2::TARGET_TYPE_EQ) &&
@@ -697,6 +762,9 @@ inline std::vector<Target<K_CHILD, V> >
(K_CHILD != fapi2::TARGET_TYPE_PHB) &&
(K_CHILD != fapi2::TARGET_TYPE_MC) &&
(K_CHILD != fapi2::TARGET_TYPE_MI) &&
+ (K_CHILD != fapi2::TARGET_TYPE_MCC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMIC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMI) &&
(K_CHILD != fapi2::TARGET_TYPE_DMI)),
"improper child of fapi2::TARGET_TYPE_PERV");
@@ -755,18 +823,42 @@ inline std::vector<Target<K_CHILD, V> >
// Cumulus Memory
// valid children for MC
// MC -> MI
+ // MC -> MCC
+ // MC -> OMIC
+ // MC -> OMI
// MC -> DMI
static_assert(!((T_SELF == fapi2::TARGET_TYPE_MC) &&
(K_CHILD != fapi2::TARGET_TYPE_MI) &&
+ (K_CHILD != fapi2::TARGET_TYPE_MCC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMIC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMI) &&
(K_CHILD != fapi2::TARGET_TYPE_DMI)),
"improper child of fapi2::TARGET_TYPE_MC");
// valid children for MI
+ // MI -> MCC
+ // MI -> OMI
// MI -> DMI
static_assert(!((T_SELF == fapi2::TARGET_TYPE_MI) &&
+ (K_CHILD != fapi2::TARGET_TYPE_MCC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMI) &&
(K_CHILD != fapi2::TARGET_TYPE_DMI)),
"improper child of fapi2::TARGET_TYPE_MI");
+ // valid children for MCC
+ // MCC -> OMI
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_MCC) &&
+ (K_CHILD != fapi2::TARGET_TYPE_OMI)),
+ "improper child of fapi2::TARGET_TYPE_MCC");
+
+ // valid children for OMIC
+ // OMIC -> OMI
+ static_assert(!((T_SELF == fapi2::TARGET_TYPE_OMIC) &&
+ (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 DMI
// DMI -> MEMBUF
static_assert(!((T_SELF == fapi2::TARGET_TYPE_DMI) &&
diff --git a/src/include/usr/fsi/fsi_reasoncodes.H b/src/include/usr/fsi/fsi_reasoncodes.H
index 32844e5e4..113b7b0e7 100644
--- a/src/include/usr/fsi/fsi_reasoncodes.H
+++ b/src/include/usr/fsi/fsi_reasoncodes.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
diff --git a/src/usr/fapi2/plat_attr_override_sync.C b/src/usr/fapi2/plat_attr_override_sync.C
index d81589973..8b72b4299 100644
--- a/src/usr/fapi2/plat_attr_override_sync.C
+++ b/src/usr/fapi2/plat_attr_override_sync.C
@@ -207,6 +207,15 @@ void directOverride()
case fapi2::TARGET_TYPE_PHB:
l_targetType = TARGETING::TYPE_PHB;
break;
+ case fapi2::TARGET_TYPE_OMI:
+ l_targetType = TARGETING::TYPE_OMI;
+ break;
+ case fapi2::TARGET_TYPE_OMIC:
+ l_targetType = TARGETING::TYPE_OMIC;
+ break;
+ case fapi2::TARGET_TYPE_MCC:
+ l_targetType = TARGETING::TYPE_MCC;
+ break;
default:
l_targetType = TARGETING::TYPE_NA;
}
diff --git a/src/usr/fapi2/plat_utils.C b/src/usr/fapi2/plat_utils.C
index e340b2d60..cb62eb45e 100644
--- a/src/usr/fapi2/plat_utils.C
+++ b/src/usr/fapi2/plat_utils.C
@@ -680,20 +680,32 @@ void xlateTargetType(const fapi2::TargetType i_targetType,
o_type = TARGETING::TYPE_PERV;
break;
case fapi2::TARGET_TYPE_PEC:
- o_class = TARGETING::CLASS_UNIT;
- o_type = TARGETING::TYPE_PEC;
- break;
- case fapi2::TARGET_TYPE_PHB:
- o_class = TARGETING::CLASS_UNIT;
- o_type = TARGETING::TYPE_PHB;
- break;
- case fapi2::TARGET_TYPE_MC:
- o_class = TARGETING::CLASS_UNIT;
- o_type = TARGETING::TYPE_MC;
- break;
- default:
- o_class = TARGETING::CLASS_NA;
- o_type = TARGETING::TYPE_NA;
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_PEC;
+ break;
+ case fapi2::TARGET_TYPE_PHB:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_PHB;
+ break;
+ case fapi2::TARGET_TYPE_MC:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_MC;
+ break;
+ case fapi2::TARGET_TYPE_OMI:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_OMI;
+ break;
+ case fapi2::TARGET_TYPE_OMIC:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_OMIC;
+ break;
+ case fapi2::TARGET_TYPE_MCC:
+ o_class = TARGETING::CLASS_UNIT;
+ o_type = TARGETING::TYPE_MCC;
+ break;
+ default:
+ o_class = TARGETING::CLASS_NA;
+ o_type = TARGETING::TYPE_NA;
}
}
@@ -717,6 +729,9 @@ bool isPhysParentChild(const TargetType i_parentType,
TARGET_TYPE_MCA |
TARGET_TYPE_MCBIST |
TARGET_TYPE_MC |
+ TARGET_TYPE_MCC |
+ TARGET_TYPE_OMIC |
+ TARGET_TYPE_OMI |
TARGET_TYPE_MI |
TARGET_TYPE_CAPP |
TARGET_TYPE_DMI |
diff --git a/src/usr/targeting/attroverride/attrTextToBinaryBlob.C b/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
index eb8a923e7..ae0013b90 100755
--- a/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
+++ b/src/usr/targeting/attroverride/attrTextToBinaryBlob.C
@@ -130,6 +130,9 @@ TargStrToType CHIP_UNIT_TYPE_TARG_STR_TO_TYPE [] =
{"mba" , fapi2::TARGET_TYPE_MBA , TARGETING::TYPE_MBA},
{"dmi" , fapi2::TARGET_TYPE_DMI , TARGETING::TYPE_DMI},
{"mi" , fapi2::TARGET_TYPE_MI , TARGETING::TYPE_MI},
+ {"omi" , fapi2::TARGET_TYPE_OMI , TARGETING::TYPE_OMI},
+ {"omic" , fapi2::TARGET_TYPE_OMIC , TARGETING::TYPE_OMIC},
+ {"mcc" , fapi2::TARGET_TYPE_MCC , TARGETING::TYPE_MCC},
{"LAST" , 0 , 0}
};
diff --git a/src/usr/targeting/common/entitypath.C b/src/usr/targeting/common/entitypath.C
index 8123efe5b..95e9ce10c 100644
--- a/src/usr/targeting/common/entitypath.C
+++ b/src/usr/targeting/common/entitypath.C
@@ -471,7 +471,12 @@ const char* EntityPath::pathElementTypeAsString(
return "FANCTLR";
case TYPE_SMPGROUP:
return "SMPGROUP";
-
+ case TYPE_OMI:
+ return "OMI";
+ case TYPE_OMIC:
+ return "OMIC";
+ case TYPE_MCC:
+ return "MCC";
// 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 27088ad2a..1bc12de7a 100755
--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
@@ -5078,9 +5078,21 @@
<value>71</value>
</enumerator>
<enumerator>
- <name>LAST_IN_RANGE</name>
+ <name>OMI</name>
<value>72</value>
</enumerator>
+ <enumerator>
+ <name>MCC</name>
+ <value>73</value>
+ </enumerator>
+ <enumerator>
+ <name>OMIC</name>
+ <value>74</value>
+ </enumerator>
+ <enumerator>
+ <name>LAST_IN_RANGE</name>
+ <value>75</value>
+ </enumerator>
<id>TYPE</id>
</enumerationType>
@@ -5111,6 +5123,9 @@
<name>CUMULUS</name>
</enumerator>
<enumerator>
+ <name>AXONE</name>
+ </enumerator>
+ <enumerator>
<name>CENTAUR</name>
<value>48</value>
</enumerator>
diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
index 2c3024759..a868d5a47 100644
--- a/src/usr/targeting/common/xmltohb/target_types.xml
+++ b/src/usr/targeting/common/xmltohb/target_types.xml
@@ -1512,7 +1512,8 @@
<!-- MC
Nimbus : None
- Cumulus: 2 per chip -->
+ Cumulus: 2 per chip
+ Axone : 2 per chip -->
<targetType>
<id>unit-mc-power9</id>
<parent>unit</parent>
@@ -1541,9 +1542,19 @@
</attribute>
</targetType>
+<targetType>
+ <id>unit-mc-axone</id>
+ <parent>unit-mc-power9</parent>
+ <attribute>
+ <id>MODEL</id>
+ <default>AXONE</default>
+ </attribute>
+</targetType>
+
<!-- MI
Nimbus : None
- Cumulus: total of 4 per chip -->
+ Cumulus: 4 total per chip (2 per MC)
+ Axone : 4 total per chip (2 per MC)-->
<targetType>
<id>unit-mi-power9</id>
<parent>unit</parent>
@@ -1577,6 +1588,89 @@
</attribute>
</targetType>
+<targetType>
+ <id>unit-mi-axone</id>
+ <parent>unit-mi-power9</parent>
+ <attribute>
+ <default>AXONE</default>
+ <id>MODEL</id>
+ </attribute>
+</targetType>
+
+<!-- OMIC
+ Nimbus : None
+ Cumulus: None
+ Axone : 6 total per chip (3 per MC)-->
+<targetType>
+ <id>unit-omic-power9</id>
+ <parent>unit</parent>
+ <attribute>
+ <default>OMIC</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>PARENT_PERVASIVE</id>
+ </attribute>
+ <attribute>
+ <id>CDM_DOMAIN</id>
+ <default>MEM</default>
+ </attribute>
+</targetType>
+
+<targetType>
+ <id>unit-omic-axone</id>
+ <parent>unit-omic-power9</parent>
+ <attribute>
+ <default>AXONE</default>
+ <id>MODEL</id>
+ </attribute>
+</targetType>
+
+<!-- MCC
+ Nimbus : None
+ Cumulus: None
+ Axone : 8 total per chip (2 per MI) -->
+<targetType>
+ <id>unit-mcc-power9</id>
+ <parent>unit</parent>
+ <attribute>
+ <default>MCC</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>PARENT_PERVASIVE</id>
+ </attribute>
+ <attribute>
+ <id>CDM_DOMAIN</id>
+ <default>MEM</default>
+ </attribute>
+</targetType>
+
+<targetType>
+ <id>unit-mcc-axone</id>
+ <parent>unit-mcc-power9</parent>
+ <attribute>
+ <default>AXONE</default>
+ <id>MODEL</id>
+ </attribute>
+</targetType>
+
<!-- DMI
Nimbus : None
Cumulus: 2 per MI (total of 8 per chip) -->
@@ -1613,6 +1707,45 @@
</attribute>
</targetType>
+<!-- OMI (Special has two parents)
+ Nimbus : None
+ Cumulus: None
+ Axone: 4 per MI (total of 16 per chip)
+ 3 on OMIC0,1,3,4
+ 2 on OMIC2,5 (still total 16) -->
+<targetType>
+ <id>unit-omi-power9</id>
+ <parent>unit</parent>
+ <attribute>
+ <default>OMI</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>PARENT_PERVASIVE</id>
+ </attribute>
+ <attribute>
+ <id>CDM_DOMAIN</id>
+ <default>MEM</default>
+ </attribute>
+</targetType>
+
+<targetType>
+ <id>unit-omi-axone</id>
+ <parent>unit-omi-power9</parent>
+ <attribute>
+ <default>AXONE</default>
+ <id>MODEL</id>
+ </attribute>
+</targetType>
+
<!-- PEC corresponds to IOP. Use same PEC target for Nimbus and Cumulus
Nimbus : 3 per chip
Cumulus: 3 per chip -->
OpenPOWER on IntegriCloud