/* 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,2016 */ /* [+] 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: //****************************************************************************** // fapi2GetParentTest //****************************************************************************** void test_fapi2GetParent() { int numTests = 0; int numFails = 0; errlHndl_t l_err = NULL; 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 = NULL; //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(l_nimbusProc == NULL) { // Send an errorlog because we cannot find any NIMBUS procs. FAPI_ERR("FAPI2_GETPARENT:: could not find Nimbus proc, 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 * @userdata2 Unused * @devdesc Could not find NIMBUS procs in system 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, NULL, true/*SW Error*/); errlCommit(l_err,HWPF_COMP_ID); break; } TARGETING::Target* targeting_targets[NUM_TARGETS]; generateTargets(l_nimbusProc, targeting_targets); for( uint64_t x = 0; x < NUM_TARGETS; x++ ) { if(targeting_targets[x] == NULL) { 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_nimbusProc); 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_nvTarget( targeting_targets[MY_NV]); 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]); 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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++; } 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_nimbusProc) != 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_nimbusProc)), 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 l_tempTargetingParent = static_cast( fapi2_mcsTarget.getParent()); numTests++; if(TARGETING::get_huid(l_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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 NV's parents l_tempTargetingParent = static_cast( fapi2_nvTarget.getParent()); numTests++; if(TARGETING::get_huid(l_nimbusProc) != TARGETING::get_huid(l_tempTargetingParent)) { uint8_t l_instance = 0; targeting_targets[MY_NV]-> tryGetAttr(l_instance); /*@ * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE * @moduleid fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST * @reasoncode fapi2::RC_NV_NO_PROC_FOUND * @userdata1[0:31] Expected Parent HUID * @userdata1[32:63] Actual Parent HUID * @userdata2[0:31] Instance of NV * @userdata2[32:63] fapi2 Type of expected parent * @devdesc Could not find the parent PROC of this * NV target */ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, fapi2::MOD_FAPI2_PLAT_GET_PARENT_TEST, fapi2::RC_NV_NO_PROC_FOUND, TWO_UINT32_TO_UINT64( TO_UINT32( TARGETING::get_huid( l_nimbusProc)), 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 NV's PROC parent!"); numFails++; } //Check PPE's parents l_tempTargetingParent = static_cast( fapi2_ppeTarget.getParent()); numTests++; if(TARGETING::get_huid(l_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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_nimbusProc) != 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_nimbusProc)), 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++; } // Check units which have a pervasive parent static 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); } pervasiveParentTests [] = { {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_NV], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, {targeting_targets[MY_CAPP], [](TARGETING::Target* i_pTarget) {return getPervasiveParent(i_pTarget); }}, }; // Test each type of target that can have exactly one pervasive parent for(const pervasiveParentTestRec& pervasiveParentTest : pervasiveParentTests) { numTests++; l_tempTargetingParent = pervasiveParentTest.getParent( pervasiveParentTest.pTarget); // Result must be a non-NULL target of pervasive type, and its // parent must be the same proc as the other tests above TARGETING::Target* pPervasiveParent = NULL; 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 NULL, or it was // not a pervasive, or if the parent of the pervasive was NULL // or was not the processor, fail the test if(TARGETING::get_huid(l_nimbusProc) != 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); } };