diff options
-rw-r--r-- | src/include/usr/fapi2/target.H | 98 | ||||
-rw-r--r-- | src/include/usr/fsi/fsi_reasoncodes.H | 2 | ||||
-rw-r--r-- | src/usr/fapi2/plat_attr_override_sync.C | 9 | ||||
-rw-r--r-- | src/usr/fapi2/plat_utils.C | 43 | ||||
-rwxr-xr-x | src/usr/targeting/attroverride/attrTextToBinaryBlob.C | 3 | ||||
-rw-r--r-- | src/usr/targeting/common/entitypath.C | 7 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/attribute_types.xml | 17 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/target_types.xml | 137 |
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 --> |