diff options
| author | Zane Shelley <zshelle@us.ibm.com> | 2019-05-10 13:48:50 -0500 |
|---|---|---|
| committer | Zane C. Shelley <zshelle@us.ibm.com> | 2019-05-15 10:40:28 -0500 |
| commit | ca47ced07c4c49f25c3302d37871cdd14d1e4f7b (patch) | |
| tree | a5a877f512e1d4748c3b4acce625e48e5512266b /src | |
| parent | 05847c16cfe6f93796764d9bd1460329b30c5059 (diff) | |
| download | talos-hostboot-ca47ced07c4c49f25c3302d37871cdd14d1e4f7b.tar.gz talos-hostboot-ca47ced07c4c49f25c3302d37871cdd14d1e4f7b.zip | |
PRD: replaced MODEL_EXPLORER with MODEL_OCMB
In addition, ensured PRD doesn't assert if there is a Gemini, in which we have
no functional support.
Change-Id: Id293b48005fc044102ce2bfa768fec05e3102dcd
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/77271
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
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: Michael Baiocchi <mbaiocch@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Diffstat (limited to 'src')
| -rwxr-xr-x | src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C | 23 | ||||
| -rwxr-xr-x | src/usr/diag/prdf/common/plat/prdfTargetServices.C | 14 | ||||
| -rwxr-xr-x | src/usr/diag/prdf/common/plat/prdfTargetServices.H | 18 | ||||
| -rw-r--r-- | src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C | 22 | ||||
| -rw-r--r-- | src/usr/diag/prdf/prdf_hb_only.mk | 1 | ||||
| -rwxr-xr-x | src/usr/diag/prdf/test/prdf_hb_common_test.mk | 1 | ||||
| -rw-r--r-- | src/usr/targeting/common/xmltohb/attribute_types.xml | 4 |
7 files changed, 74 insertions, 9 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C index e37cffcd3..48a198155 100755 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C @@ -243,7 +243,7 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type, { errlHndl_t errl = nullptr; - std::map<TARGETING::MODEL, std::map<TARGETING::TYPE, const char *>> fnMap = + std::map<uint32_t, std::map<TARGETING::TYPE, const char *>> fnMap = { { MODEL_NIMBUS, { { TYPE_PROC, nimbus_proc }, { TYPE_EQ, nimbus_eq }, @@ -285,7 +285,9 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type, { TYPE_MI, axone_mi }, { TYPE_MCC, axone_mcc }, { TYPE_OMIC, axone_omic }, } }, - { MODEL_EXPLORER, { { TYPE_OCMB_CHIP, explorer_ocmb }, } }, + #ifdef __HOSTBOOT_MODULE + { POWER_CHIPID::EXPLORER, { { TYPE_OCMB_CHIP, explorer_ocmb }, } }, + #endif }; // Get references to factory objects. @@ -299,7 +301,22 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type, // Iterate all the targets for this type and add to given domain. for ( const auto & trgt : getFunctionalTargetList(i_type) ) { - TARGETING::MODEL model = getChipModel( trgt ); + uint32_t model = getChipModel( trgt ); + + #ifdef __HOSTBOOT_MODULE + // TODO: remove depricated MODEL_EXPLORER once MODEL_OCMB is supported. + if ( MODEL_EXPLORER == model ) continue; + + // Special case for OCMBs (hostboot only issue for P9). + if ( MODEL_OCMB == model ) + { + // Use the chip ID instead of model. + model = getChipId( trgt ); + + // Skip Gemini OCMBs. They can exist, but PRD won't support them. + if ( POWER_CHIPID::GEMINI == model ) continue; + } + #endif // Ensure this model is supported. if ( fnMap.end() == fnMap.find(model) ) diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.C b/src/usr/diag/prdf/common/plat/prdfTargetServices.C index fce6dee9e..915426ea9 100755 --- a/src/usr/diag/prdf/common/plat/prdfTargetServices.C +++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.C @@ -365,6 +365,20 @@ TARGETING::MODEL getChipModel( TARGETING::TargetHandle_t i_trgt ) //------------------------------------------------------------------------------ +#ifdef __HOSTBOOT_MODULE +uint32_t getChipId( TARGETING::TargetHandle_t i_trgt ) +{ + PRDF_ASSERT( NULL != i_trgt ); + + TargetHandle_t parent = getParentChip( i_trgt ); + PRDF_ASSERT( NULL != parent ); + + return parent->getAttr<ATTR_CHIP_ID>(); +} +#endif + +//------------------------------------------------------------------------------ + uint8_t getChipLevel( TARGETING::TargetHandle_t i_trgt ) { PRDF_ASSERT( NULL != i_trgt ); diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.H b/src/usr/diag/prdf/common/plat/prdfTargetServices.H index 8793e8c61..bd02cc44c 100755 --- a/src/usr/diag/prdf/common/plat/prdfTargetServices.H +++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.H @@ -42,6 +42,10 @@ #include <targeting/common/target.H> #include <prdfParserEnums.H> +#ifdef __HOSTBOOT_MODULE + #include <chipids.H> +#endif + //------------------------------------------------------------------------------ namespace PRDF @@ -145,6 +149,20 @@ TARGETING::CLASS getTargetClass( TARGETING::TargetHandle_t i_target ); */ TARGETING::MODEL getChipModel( TARGETING::TargetHandle_t i_trgt ); +#ifdef __HOSTBOOT_MODULE + +// NOTE: This should be used instead of getChipModel() because of the case of +// MODEL_OCMB, where we need the chip ID to distinguish between Explorer +// and Gemini. + +/** + * @param i_trgt A chip target or any unit target within the chip. + * @return The chip ID. + */ +uint32_t getChipId( TARGETING::TargetHandle_t i_trgt ); + +#endif + /** * @param i_trgt A chip target or any unit target within the chip. * @return The level (EC level) of a chip. diff --git a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C index d3b8a72ee..061ef03b7 100644 --- a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C +++ b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C @@ -942,20 +942,30 @@ errlHndl_t getHwConfig( std::vector<HOMER_ChipInfo_t> & o_chipInfVector, // Iterate all of the OCMB chips. for ( auto & ocmb : getFunctionalTargetList(TYPE_OCMB_CHIP) ) { - // Get the chip model type. - HOMER_ChipType_t modelType = HOMER_CHIP_INVALID; - switch ( getChipModel(ocmb) ) + // TODO: remove depricated MODEL_EXPLORER once MODEL_OCMB is + // supported. + if ( MODEL_EXPLORER == getChipModel(ocmb) ) continue; + + // Get the OCMB chip type. + HOMER_ChipType_t ocmbType = HOMER_CHIP_INVALID; + switch ( getChipId(ocmb) ) { - case MODEL_EXPLORER: modelType = HOMER_CHIP_EXPLORER; break; + case POWER_CHIPID::GEMINI: + // Skip Gemini OCMBs. They can exist, but PRD won't support + // them (set invalid). + ocmbType = HOMER_CHIP_INVALID; break; + case POWER_CHIPID::EXPLORER: + ocmbType = HOMER_CHIP_EXPLORER; break; default: PRDF_ERR( FUNC "Unsupported chip model %d on 0x%08x", - modelType, getHuid(ocmb) ); + ocmbType, getHuid(ocmb) ); PRDF_ASSERT( false ); } + if ( HOMER_CHIP_INVALID == ocmbType ) continue; // Init the chip info. HOMER_ChipInfo_t ci; - __initChipInfo( ocmb, modelType, MAX_OCMB_PER_NODE, ci ); + __initChipInfo( ocmb, ocmbType, MAX_OCMB_PER_NODE, ci ); // NOTE: Explorer does not have any unit data. diff --git a/src/usr/diag/prdf/prdf_hb_only.mk b/src/usr/diag/prdf/prdf_hb_only.mk index 72ef8880d..50ecb42df 100644 --- a/src/usr/diag/prdf/prdf_hb_only.mk +++ b/src/usr/diag/prdf/prdf_hb_only.mk @@ -75,6 +75,7 @@ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/ prd_incpath += ${ROOTPATH}/src/import/generic/memory/lib/utils/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/ +prd_incpath += ${ROOTPATH}/src/import/chips/common/utils/ prd_incpath += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/ prd_incpath += ${ROOTPATH}/src/import/hwpf/fapi2/include prd_incpath += ${ROOTPATH}/src/import/ diff --git a/src/usr/diag/prdf/test/prdf_hb_common_test.mk b/src/usr/diag/prdf/test/prdf_hb_common_test.mk index a148e0c24..c75845530 100755 --- a/src/usr/diag/prdf/test/prdf_hb_common_test.mk +++ b/src/usr/diag/prdf/test/prdf_hb_common_test.mk @@ -70,6 +70,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/cache/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include EXTRAINCDIR += ${ROOTPATH}/src/import/ diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml index 0101d2f16..2e3f34c8a 100644 --- a/src/usr/targeting/common/xmltohb/attribute_types.xml +++ b/src/usr/targeting/common/xmltohb/attribute_types.xml @@ -3903,10 +3903,14 @@ <name>CENTAUR</name> <value>48</value> </enumerator> + <!-- @TODO 210226: Remove EXPLORER once dependencies have switched to OCMB --> <enumerator> <name>EXPLORER</name> </enumerator> <enumerator> + <name>OCMB</name> + </enumerator> + <enumerator> <name>JEDEC</name> <value>80</value> </enumerator> |

