/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* $Source: src/usr/fapi2/test/fapi2GetParentTest.H $ */ /* */ /* OpenPOWER HostBoot Project */ /* */ /* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ /* */ /* http://www.apache.org/licenses/LICENSE-2.0 */ /* */ /* Unless required by applicable law or agreed to in writing, software */ /* distributed under the License is distributed on an "AS IS" BASIS, */ /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ /* implied. See the License for the specific language governing */ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ #include #include #include #include #include #include using namespace fapi2; class Fapi2GetParentTest : public CxxTest::TestSuite { public: // Check units which have a pervasive parent struct pervasiveParentTestRec { // Source unit from which to find parent pervasive TARGETING::Target* pTarget; // Lambda function taking a unit target and returning its // parent pervasive target (if any) TARGETING::Target* (*getParent)(TARGETING::Target* i_pTarget); }; void test_fapi2GetParentPervasive(int& numTests, int& numFails, const pervasiveParentTestRec[], TARGETING::Target *); //****************************************************************************** // fapi2GetParentTest //****************************************************************************** void test_fapi2GetParent() { int numTests = 0; int numFails = 0; errlHndl_t l_err = nullptr; do { // Create a vector of TARGETING::Target pointers TARGETING::TargetHandleList l_chipList; // Get a list of all of the proc chips TARGETING::getAllChips(l_chipList, TARGETING::TYPE_PROC, false); TARGETING::Target * l_nimbusProc = nullptr; TARGETING::Target * l_cumulusProc = nullptr; TARGETING::Target * l_proc = nullptr; //Take the first NIMBUS proc and use it for(uint32_t i = 0; i < l_chipList.size(); i++) { if(TARGETING::MODEL_NIMBUS == l_chipList[i]->getAttr()) { l_nimbusProc = l_chipList[i]; break; } if(TARGETING::MODEL_CUMULUS == l_chipList[i]->getAttr()) { l_cumulusProc = l_chipList[i]; break; } } if (l_nimbusProc != nullptr) { l_proc = l_nimbusProc; } else if (l_cumulusProc != nullptr) { l_proc = l_cumulusProc; } else //both are nullptr { // Send errorlog because we cannot find any NIMBUS or CUMULUS procs. FAPI_ERR("FAPI2_GETPARENT:: could not find Nimbus or Cumulus procs, skipping tests"); numFails++; /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_NO_PROCS_FOUND * @userdata1 Model Type we looked for (Nimbus) * @userdata2 Other Model Type we looked for (Cumulus) * @devdesc Couldn't find nimbus or cumulus procs in sys model */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_NO_PROCS_FOUND, TARGETING::MODEL_NIMBUS, TARGETING::MODEL_CUMULUS, true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); break; } TARGETING::Target* targeting_targets[NUM_TARGETS]; generateTargets(l_proc, targeting_targets); for( uint64_t x = 0; x < NUM_TARGETS; x++ ) { //Skip tests where the HW unit to test isn't valid for the proc type if (!isHwValid(l_proc, x)) { continue; } else if(targeting_targets[x] == nullptr) { FAPI_ERR("Unable to find target for item %d in targeting_targets", x); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_NO_PATH_TO_TARGET_FOUND * @userdata1 Index of target in array of objects * @userdata2 Unused * @devdesc Could not find a path to the target of that type */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_NO_PATH_TO_TARGET_FOUND, x, NULL, true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); } } Target fapi2_procTarget( l_proc); Target fapi2_eqTarget( targeting_targets[MY_EQ]); Target fapi2_exTarget( targeting_targets[MY_EX]); Target fapi2_coreTarget( targeting_targets[MY_CORE]); Target fapi2_mcsTarget( targeting_targets[MY_MCS]); Target fapi2_mcaTarget( targeting_targets[MY_MCA]); Target fapi2_mcbistTarget( targeting_targets[MY_MCBIST]); Target fapi2_pecTarget( targeting_targets[MY_PEC]); Target fapi2_phbTarget( targeting_targets[MY_PHB]); Target fapi2_xbusTarget( targeting_targets[MY_XBUS]); Target fapi2_obusTarget( targeting_targets[MY_OBUS]); Target fapi2_oBrickTarget( targeting_targets[MY_OBUS_BRICK]); Target fapi2_ppeTarget( targeting_targets[MY_PPE]); Target fapi2_pervTarget( targeting_targets[MY_PERV]); Target fapi2_sbeTarget( targeting_targets[MY_SBE]); Target fapi2_cappTarget( targeting_targets[MY_CAPP]); Target fapi2_mcTarget( // MC (Cumulus) targeting_targets[MY_MC]); Target fapi2_miTarget( // MI (Cumulus) targeting_targets[MY_MI]); Target fapi2_dmiTarget( // DMI (Cumulus) targeting_targets[MY_DMI]); TARGETING::Target * l_tempTargetingParent = static_cast( fapi2_coreTarget.getParent()); //Check CORE's parents numTests++; if(TARGETING::get_huid(targeting_targets[MY_EX]) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_CORE]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_CORE_NO_EX_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of core * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent EX of this * CORE target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_CORE_NO_EX_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( targeting_targets[MY_EX])), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_EX)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL("fapi2TargetTest::Unable to find CORE's EX parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_coreTarget.getParent()); numTests++; if(TARGETING::get_huid(targeting_targets[MY_EQ]) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_CORE]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_CORE_NO_EQ_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of core * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent EQ of this * CORE target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_CORE_NO_EQ_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( targeting_targets[MY_EQ])), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_EQ)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find CORE's EQ parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_coreTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_CORE]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_CORE_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of core * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * CORE target */ l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_CORE_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find CORE's PROC parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_exTarget.getParent()); //Check EX's parents numTests++; if(TARGETING::get_huid(targeting_targets[MY_EQ]) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_EX]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_EX_NO_EQ_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of EX * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent EQ of this EX target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_EX_NO_EQ_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( targeting_targets[MY_EQ])), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_EQ)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find EX's EQ parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_exTarget.getParent()); //Check EX's parents numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_EX]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_EX_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of EX * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * EX target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_EX_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find EXs's PROC parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_eqTarget.getParent()); //Check EQ's parents numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_EQ]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_EQ_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of EQ * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * EQ target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_EQ_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find EQs's PROC parent!"); numFails++; } if (isHwValid(l_proc, MY_MCA) && isHwValid(l_proc, MY_MCBIST) && isHwValid(l_proc, MY_MCS)) { l_tempTargetingParent = static_cast( fapi2_mcaTarget.getParent()); //Check MCA's parents numTests++; if(TARGETING::get_huid(targeting_targets[MY_MCS]) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_MCA]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_MCA_NO_MCS_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of MCA * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent MSC of this * MCA target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_MCA_NO_MCS_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( targeting_targets[MY_MCS])), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_MCS)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find MCA's MCS parent!"); numFails++; } l_tempTargetingParent = static_cast( fapi2_mcaTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_MCA]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_MCA_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of MCA * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * MCA target */ l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_MCA_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find MCA's PROC parent!"); numFails++; } } //Check MCS's parents -- Only for Nimbus if (isHwValid(l_proc, MY_MCA) && isHwValid(l_proc, MY_MCBIST) && isHwValid(l_proc, MY_MCS)) { l_tempTargetingParent = static_cast( fapi2_mcsTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_MCS]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_MCS_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of MCS * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * MCS target */ l_err= new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_MCS_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find MCS's PROC parent!"); numFails++; } //Check MCBIST's parents l_tempTargetingParent = static_cast( fapi2_mcbistTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_MCBIST]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_MCBIST_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of MCS * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * MCBIST target */ l_err =new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_MCBIST_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find MCBIST's PROC parent!"); numFails++; } } //Check PHB's parents l_tempTargetingParent = static_cast( fapi2_phbTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_PHB]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_PHB_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of PHB * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * PHB target */ l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_PHB_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find PHB's PROC parent!"); numFails++; } //Check PEC's parents l_tempTargetingParent = static_cast( fapi2_pecTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_PEC]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_PEC_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of PEC * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * PEC target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_PEC_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find PEC's PROC parent!"); numFails++; } //Check XBUS's parents l_tempTargetingParent = static_cast( fapi2_xbusTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_XBUS]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_XBUS_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of XBUS * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * XBUS target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_XBUS_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find XBUS's PROC parent!"); numFails++; } //Check OBUS's parents l_tempTargetingParent = static_cast( fapi2_obusTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_OBUS]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_OBUS_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of OBUS * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * OBUS target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_OBUS_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find OBUS's PROC parent!"); numFails++; } //Check OBUS BRICK's parents l_tempTargetingParent = static_cast( fapi2_oBrickTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_OBUS_BRICK]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_OBRICK_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of OBUS BRICK * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * OBUS BRICK target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_OBRICK_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find OBUS BRICK's PROC parent!"); numFails++; } //Check PPE's parents l_tempTargetingParent = static_cast( fapi2_ppeTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_PPE]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_PPE_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of PPE * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * PPE target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_PPE_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find PPE's PROC parent!"); numFails++; } //Check PERV's parents l_tempTargetingParent = static_cast( fapi2_pervTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_PERV]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_PERV_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of PERV * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * PERV target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_PERV_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find PERV's PROC parent!"); numFails++; } //Check CAPP's parents l_tempTargetingParent = static_cast( fapi2_cappTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_CAPP]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_CAPP_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of CAPP * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * CAPP target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_CAPP_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::Unable to find CAPP's PROC parent!"); numFails++; } //Check SBE's parents l_tempTargetingParent = static_cast( fapi2_sbeTarget.getParent()); numTests++; if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_SBE]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_SBE_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of SBE * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * SBE target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_SBE_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_proc)), TO_UINT32( TARGETING::get_huid( l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(l_instance), TO_UINT32(TARGET_TYPE_PROC_CHIP)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL( "fapi2TargetTest::UnAble to find SBE's PROC parent!"); numFails++; } static pervasiveParentTestRec nimbusPervasiveParentTests [] = { {targeting_targets[MY_EQ], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_CORE], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_MCS], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_MCA], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_MCBIST], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget);}}, {targeting_targets[MY_PEC], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_PHB], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_XBUS], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_OBUS], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_OBUS_BRICK], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget);}}, {targeting_targets[MY_CAPP], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, }; static pervasiveParentTestRec cumulusPervasiveParentTests [] = { {targeting_targets[MY_EQ], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_CORE], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_PEC], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_PHB], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_XBUS], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_OBUS], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_OBUS_BRICK], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget);}}, {targeting_targets[MY_CAPP], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_MC], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_MI], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_DMI], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, }; pervasiveParentTestRec* ptr; int numPervTests = 0; if (l_nimbusProc != nullptr) { numPervTests = sizeof(nimbusPervasiveParentTests) / sizeof(pervasiveParentTestRec); ptr = nimbusPervasiveParentTests; } else { numPervTests = sizeof(cumulusPervasiveParentTests) / sizeof(pervasiveParentTestRec); ptr = cumulusPervasiveParentTests; } // Test each type of target that can have exactly one pervasive parent for (int i = 0; i < numPervTests; ++i) { const pervasiveParentTestRec& pervasiveParentTest = ptr[i]; numTests++; if (pervasiveParentTest.pTarget == nullptr) { FAPI_ERR("Found pervasive parent to be null pervasiveParentTestRec for test: %d", i); } l_tempTargetingParent = pervasiveParentTest.getParent( pervasiveParentTest.pTarget); // Result must be a non-nullptr target of pervasive type, and its // parent must be the same proc as the other tests above TARGETING::Target* pPervasiveParent = nullptr; if( l_tempTargetingParent && ( l_tempTargetingParent->getAttr() == TARGETING::TYPE_PERV)) { Target fapi2_pervTarg(l_tempTargetingParent); pPervasiveParent = static_cast( fapi2_pervTarg.getParent()); } // If the parent of the target under test was nullptr, or it was // not a pervasive, or if the parent of the pervasive was nullptr // or was not the processor, fail the test if(TARGETING::get_huid(l_proc) != TARGETING::get_huid(pPervasiveParent)) { TARGETING::ATTR_CHIP_UNIT_type instance = 0; TARGETING::ATTR_TYPE_type type = TARGETING::TYPE_NA; pervasiveParentTest.pTarget-> tryGetAttr(instance); pervasiveParentTest.pTarget-> tryGetAttr(type); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_UNIT_NO_PERV_FOUND * @userdata1[0:31] Actual PROC HUID * @userdata1[32:63] Actual PERV HUID * @userdata2[0:31] Source unit's "chip unit" * @userdata2[32:63] Source unit's "targeting type" * @devdesc Could not find the parent PERV of this * unit target or the pervasive did not * map to expected PROC */ l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_UNIT_NO_PERV_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid(pPervasiveParent)), TO_UINT32( TARGETING::get_huid(l_tempTargetingParent))), TWO_UINT32_TO_UINT64( TO_UINT32(instance), TO_UINT32(type)), true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); TS_FAIL("fapi2TargetTest::Unable to find unit's pervasive!"); numFails++; } } } while(0); FAPI_INF("fapi2GetParentTest:: Test Complete. %d/%d fails", numFails, numTests); } };