summaryrefslogtreecommitdiffstats
path: root/src/import/chips/common/utils/imageProcs/common_ringId.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/common/utils/imageProcs/common_ringId.C')
-rw-r--r--src/import/chips/common/utils/imageProcs/common_ringId.C820
1 files changed, 105 insertions, 715 deletions
diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.C b/src/import/chips/common/utils/imageProcs/common_ringId.C
index d52c92072..c568468f8 100644
--- a/src/import/chips/common/utils/imageProcs/common_ringId.C
+++ b/src/import/chips/common/utils/imageProcs/common_ringId.C
@@ -34,7 +34,6 @@ namespace CEN_RID
};
#include <p9_infrastruct_help.H>
-
// These strings must adhere precisely to the enum of PpeType.
const char* ppeTypeName[] = { "SBE",
"CME",
@@ -76,7 +75,7 @@ static int get_ipl_ring_path_param( RingVariant_t i_ringVariant, char*& o_ringPa
if (o_ringPath == NULL)
{
- MY_ERR("get_ipl_ring_path_param(): IPL env parm for ringVariant=%d not set\n",
+ MY_ERR("get_ipl_ring_path_param(): IPL env parm for ringVariant=0x%x not set.\n",
i_ringVariant);
return INFRASTRUCT_RC_ENV_ERROR;
}
@@ -119,7 +118,7 @@ static int get_runtime_ring_path_param( RingVariant_t i_ringVariant, char*& o_ri
if (o_ringPath == NULL)
{
- MY_ERR("get_runtime_ring_path_param(): RUNTIME env parm for ringVariant(=%d) not set\n",
+ MY_ERR("get_runtime_ring_path_param(): RUNTIME env parm for ringVariant=0x%x not set.\n",
i_ringVariant);
return INFRASTRUCT_RC_ENV_ERROR;
}
@@ -155,7 +154,8 @@ int ringid_get_raw_ring_file_path( uint32_t i_magic,
}
else
{
- MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", i_ringVariant, i_magic);
+ MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n",
+ i_ringVariant, i_magic);
rc = TOR_INVALID_VARIANT;
}
@@ -186,7 +186,8 @@ int ringid_get_raw_ring_file_path( uint32_t i_magic,
}
else
{
- MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", i_ringVariant, i_magic);
+ MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n",
+ i_ringVariant, i_magic);
rc = TOR_INVALID_VARIANT;
}
@@ -207,7 +208,8 @@ int ringid_get_raw_ring_file_path( uint32_t i_magic,
}
else
{
- MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", i_ringVariant, i_magic);
+ MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n",
+ i_ringVariant, i_magic);
rc = TOR_INVALID_VARIANT;
}
@@ -226,7 +228,7 @@ int ringid_get_raw_ring_file_path( uint32_t i_magic,
}
else
{
- MY_ERR("Unsupported value of TOR magic(=0x%08x)\n", i_magic);
+ MY_ERR("Unsupported value of TOR magic(=0x%X)\n", i_magic);
rc = TOR_INVALID_MAGIC_NUMBER;
}
@@ -239,26 +241,27 @@ int ringid_get_raw_ring_file_path( uint32_t i_magic,
#endif // End of ifndef __HOSTBOOT_MODULE
-int ringid_get_num_ring_ids( ChipId_t i_chipId,
- RingId_t* o_numRingIds )
+int ringid_get_noof_ring_ids( ChipType_t i_chipType,
+ RingId_t* o_numRingIds)
{
int rc = INFRASTRUCT_RC_SUCCESS;
- switch (i_chipId)
+ switch (i_chipType)
{
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
+ case CT_P9N:
+ case CT_P9C:
+ case CT_P9A:
*o_numRingIds = P9_RID::NUM_RING_IDS;
break;
- case CID_CEN:
+ case CT_CEN:
*o_numRingIds = CEN_RID::NUM_RING_IDS;
break;
default:
- MY_ERR("ringid_get_num_ring_ids(): Unsupported chipId(=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
+ MY_ERR("ringid_get_noof_ring_ids(): Unsupported chipType (=%d) supplied",
+ i_chipType);
+ rc = TOR_INVALID_CHIPTYPE;
break;
}
@@ -266,108 +269,116 @@ int ringid_get_num_ring_ids( ChipId_t i_chipId,
}
-int ringid_get_num_chiplets( ChipId_t i_chipId,
- uint32_t i_torMagic,
- uint8_t* o_numChiplets )
+int ringid_get_ring_list( ChipType_t i_chipType,
+ RingId_t i_ringId,
+ GenRingIdList** o_ringIdList)
{
- switch (i_chipId)
+ int rc = INFRASTRUCT_RC_SUCCESS;
+
+ switch (i_chipType)
{
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
+ case CT_P9N:
+ case CT_P9C:
+ case CT_P9A:
+ *o_ringIdList = P9_RID::_ringid_get_ring_list(i_ringId);
+ break;
+
+ case CT_CEN:
+ *o_ringIdList = CEN_RID::_ringid_get_ring_list(i_ringId);
+ break;
+
+ default:
+ MY_ERR("ringid_get_ring_list(): Unsupported chipType (=%d) supplied",
+ i_chipType);
+ rc = TOR_INVALID_CHIPTYPE;
+ break;
+ }
+
+ return rc;
+}
+
+
+int ringid_get_noof_chiplets( ChipType_t i_chipType,
+ uint32_t i_torMagic,
+ uint8_t* o_numChiplets )
+{
+ switch (i_chipType)
+ {
+ case CT_P9N:
+ case CT_P9C:
+ case CT_P9A:
if ( i_torMagic == TOR_MAGIC_SBE ||
i_torMagic == TOR_MAGIC_OVRD ||
i_torMagic == TOR_MAGIC_OVLY )
{
- *o_numChiplets = P9_RID::SBE_NUM_CHIPLETS;
+ *o_numChiplets = P9_RID::SBE_NOOF_CHIPLETS;
}
else if ( i_torMagic == TOR_MAGIC_CME )
{
- *o_numChiplets = P9_RID::CME_NUM_CHIPLETS;
+ *o_numChiplets = P9_RID::CME_NOOF_CHIPLETS;
}
else if ( i_torMagic == TOR_MAGIC_SGPE )
{
- *o_numChiplets = P9_RID::SGPE_NUM_CHIPLETS;
+ *o_numChiplets = P9_RID::SGPE_NOOF_CHIPLETS;
}
else
{
- MY_ERR("ringid_get_num_chiplets(): Invalid torMagic(=0x%08x) for chipId(=CID_P9x=%d)\n", i_torMagic, i_chipId);
+ MY_ERR("Invalid torMagic (=0x%08x) for chipType (=CT_P9x=%d)\n", i_torMagic, i_chipType);
return TOR_INVALID_MAGIC_NUMBER;
}
break;
- case CID_CEN:
+ case CT_CEN:
if ( i_torMagic == TOR_MAGIC_CEN ||
i_torMagic == TOR_MAGIC_OVRD )
{
- *o_numChiplets = CEN_RID::CEN_NUM_CHIPLETS;
+ *o_numChiplets = CEN_RID::CEN_NOOF_CHIPLETS;
}
else
{
- MY_ERR("Invalid torMagic(=0x%08x) for chipId(=CID_CEN)\n", i_torMagic);
+ MY_ERR("Invalid torMagic (=0x%08x) for chipType (=CT_CEN)\n", i_torMagic);
return TOR_INVALID_MAGIC_NUMBER;
}
break;
default:
- MY_ERR("Invalid chipId(=%d)\n", i_chipId);
- return TOR_INVALID_CHIP_ID;
+ MY_ERR("Invalid chipType (=0x%02x)\n", i_chipType);
+ return TOR_INVALID_CHIPTYPE;
}
return TOR_SUCCESS;
}
-int ringid_get_ringProps( ChipId_t i_chipId,
- RingProperties_t** o_ringProps )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- *o_ringProps = (RingProperties_t*)&P9_RID::RING_PROPERTIES;
- break;
-
- case CID_CEN:
- *o_ringProps = (RingProperties_t*)&CEN_RID::RING_PROPERTIES;
- break;
-
- default:
- MY_ERR("ringid_get_ringProps(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- return rc;
-}
-
-
-int ringid_get_chipletProps( ChipId_t i_chipId,
- uint32_t i_torMagic,
- uint8_t i_torVersion,
- ChipletType_t i_chipletType,
- ChipletData_t** o_chipletData,
- uint8_t* o_numVariants )
+int ringid_get_properties( ChipType_t i_chipType,
+ uint32_t i_torMagic,
+ uint8_t i_torVersion,
+ ChipletType_t i_chipletType,
+ ChipletData_t** o_chipletData,
+ GenRingIdList** o_ringIdListCommon,
+ GenRingIdList** o_ringIdListInstance,
+ RingVariantOrder** o_ringVariantOrder,
+ RingProperties_t** o_ringProps,
+ uint8_t* o_numVariants )
{
- switch (i_chipId)
+ switch (i_chipType)
{
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
+ case CT_P9N:
+ case CT_P9C:
+ case CT_P9A:
if ( i_torMagic == TOR_MAGIC_SBE ||
i_torMagic == TOR_MAGIC_OVRD ||
i_torMagic == TOR_MAGIC_OVLY )
{
P9_RID::ringid_get_chiplet_properties(
i_chipletType,
- o_chipletData);
-
- *o_numVariants = (*o_chipletData)->numCommonRingVariants;
+ o_chipletData,
+ o_ringIdListCommon,
+ o_ringIdListInstance,
+ o_ringVariantOrder,
+ o_numVariants);
if ( i_torVersion < 7 &&
(i_chipletType == P9_RID::EQ_TYPE || i_chipletType == P9_RID::EC_TYPE) )
@@ -384,7 +395,10 @@ int ringid_get_chipletProps( ChipId_t i_chipId,
else if ( i_torMagic == TOR_MAGIC_CME )
{
*o_chipletData = (ChipletData_t*)&P9_RID::EC::g_chipletData;
- *o_numVariants = (*o_chipletData)->numCommonRingVariants;
+ *o_ringIdListCommon = (GenRingIdList*)P9_RID::EC::RING_ID_LIST_COMMON;
+ *o_ringIdListInstance = (GenRingIdList*)P9_RID::EC::RING_ID_LIST_INSTANCE;
+ *o_ringVariantOrder = (RingVariantOrder*)P9_RID::EC::RING_VARIANT_ORDER;
+ *o_numVariants = P9_RID::EC::g_chipletData.iv_num_common_ring_variants;
if (i_torVersion < 7)
{
@@ -394,7 +408,10 @@ int ringid_get_chipletProps( ChipId_t i_chipId,
else if ( i_torMagic == TOR_MAGIC_SGPE )
{
*o_chipletData = (ChipletData_t*)&P9_RID::EQ::g_chipletData;
- *o_numVariants = (*o_chipletData)->numCommonRingVariants;
+ *o_ringIdListCommon = (GenRingIdList*)P9_RID::EQ::RING_ID_LIST_COMMON;
+ *o_ringIdListInstance = (GenRingIdList*)P9_RID::EQ::RING_ID_LIST_INSTANCE;
+ *o_ringVariantOrder = (RingVariantOrder*)P9_RID::EQ::RING_VARIANT_ORDER;
+ *o_numVariants = P9_RID::EQ::g_chipletData.iv_num_common_ring_variants;
if (i_torVersion < 7)
{
@@ -403,21 +420,25 @@ int ringid_get_chipletProps( ChipId_t i_chipId,
}
else
{
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_P9x=%d\n", i_torMagic, i_chipId);
+ MY_ERR("Invalid torMagic (=0x%08x) for chipType=CT_P9x=%d\n", i_torMagic, i_chipType);
return TOR_INVALID_MAGIC_NUMBER;
}
+ *o_ringProps = (RingProperties_t*)P9_RID::RING_PROPERTIES;
+
break;
- case CID_CEN:
+ case CT_CEN:
if ( i_torMagic == TOR_MAGIC_CEN ||
i_torMagic == TOR_MAGIC_OVRD )
{
CEN_RID::ringid_get_chiplet_properties(
i_chipletType,
- o_chipletData);
-
- *o_numVariants = (*o_chipletData)->numCommonRingVariants;
+ o_chipletData,
+ o_ringIdListCommon,
+ o_ringIdListInstance,
+ o_ringVariantOrder,
+ o_numVariants);
if ( i_torMagic == TOR_MAGIC_OVRD)
{
@@ -426,650 +447,19 @@ int ringid_get_chipletProps( ChipId_t i_chipId,
}
else
{
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_CEN\n", i_torMagic);
- return TOR_INVALID_MAGIC_NUMBER;
- }
-
- break;
-
- default:
- MY_ERR("Invalid chipId(=%d)\n", i_chipId);
- return TOR_INVALID_CHIP_ID;
-
- }
-
- return TOR_SUCCESS;
-}
-
-
-int ringid_get_scanScomAddr( ChipId_t i_chipId,
- RingId_t i_ringId,
- uint32_t* o_scanScomAddr )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- uint32_t l_scanScomAddr = UNDEFINED_SCOM_ADDR;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- if (i_ringId >= P9_RID::NUM_RING_IDS)
- {
- MY_ERR("ringid_get_scanScomAddr(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not"
- " allowed\n",
- i_ringId, P9_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_scanScomAddr = P9_RID::RING_PROPERTIES[i_ringId].scanScomAddr;
- break;
-
- case CID_CEN:
- if (i_ringId >= CEN_RID::NUM_RING_IDS)
- {
- MY_ERR("ringid_get_scanScomAddr(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not"
- " allowed\n",
- i_ringId, CEN_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_scanScomAddr = CEN_RID::RING_PROPERTIES[i_ringId].scanScomAddr;
- break;
-
- default:
- MY_ERR("ringid_get_scanScomAddr(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- *o_scanScomAddr = l_scanScomAddr;
-
- return rc;
-}
-
-
-int ringid_get_ringClass( ChipId_t i_chipId,
- RingId_t i_ringId,
- RingClass_t* o_ringClass )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- RingClass_t l_ringClass = UNDEFINED_RING_CLASS;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- if (i_ringId >= P9_RID::NUM_RING_IDS)
- {
- MY_ERR("ringid_get_ringClass(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, P9_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_ringClass = P9_RID::RING_PROPERTIES[i_ringId].ringClass;
- break;
-
- case CID_CEN:
- if (i_ringId >= CEN_RID::NUM_RING_IDS)
- {
- MY_ERR("ringid_get_ringClass(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, CEN_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_ringClass = CEN_RID::RING_PROPERTIES[i_ringId].ringClass;
- break;
-
- default:
- MY_ERR("ringid_get_ringClass(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- *o_ringClass = l_ringClass;
-
- return rc;
-}
-
-
-int ringid_check_ringId( ChipId_t i_chipId,
- RingId_t i_ringId )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- if ( i_ringId >= P9_RID::NUM_RING_IDS && i_ringId != UNDEFINED_RING_ID )
- {
- MY_ERR("ringid_check_ringId(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, P9_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- break;
-
- case CID_CEN:
- if ( i_ringId >= CEN_RID::NUM_RING_IDS && i_ringId != UNDEFINED_RING_ID )
- {
- MY_ERR("ringid_check_ringId(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, CEN_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- break;
-
- default:
- MY_ERR("ringid_check_ringId(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- return rc;
-}
-
-
-int ringid_get_chipletIndex( ChipId_t i_chipId,
- uint32_t i_torMagic,
- ChipletType_t i_chipletType,
- ChipletType_t* o_chipletIndex )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- if ( i_torMagic == TOR_MAGIC_SBE ||
- i_torMagic == TOR_MAGIC_OVRD ||
- i_torMagic == TOR_MAGIC_OVLY )
- {
- if ( i_chipletType < P9_RID::SBE_NUM_CHIPLETS )
- {
- *o_chipletIndex = i_chipletType;
- }
- else
- {
- rc = TOR_INVALID_CHIPLET_TYPE;
- }
- }
- else if ( i_torMagic == TOR_MAGIC_CME )
- {
- if ( i_chipletType == P9_RID::EC_TYPE )
- {
- *o_chipletIndex = 0;
- }
- else
- {
- rc = TOR_INVALID_CHIPLET_TYPE;
- }
- }
- else if ( i_torMagic == TOR_MAGIC_SGPE )
- {
- if ( i_chipletType == P9_RID::EQ_TYPE )
- {
- *o_chipletIndex = 0;
- }
- else
- {
- rc = TOR_INVALID_CHIPLET_TYPE;
- }
- }
- else
- {
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_P9x=%d\n", i_torMagic, i_chipId);
- return TOR_INVALID_MAGIC_NUMBER;
- }
-
- break;
-
- case CID_CEN:
- if ( i_torMagic == TOR_MAGIC_CEN ||
- i_torMagic == TOR_MAGIC_OVRD )
- {
- if ( i_chipletType < CEN_RID::CEN_NUM_CHIPLETS )
- {
- *o_chipletIndex = i_chipletType;
- }
- else
- {
- rc = TOR_INVALID_CHIPLET_TYPE;
- }
- }
- else
- {
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_CEN\n", i_torMagic);
+ MY_ERR("Invalid torMagic (=0x%08x) for chipType=CT_CEN\n", i_torMagic);
return TOR_INVALID_MAGIC_NUMBER;
}
- break;
-
- default:
- MY_ERR("ringid_get_chipletIndex(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- return rc;
-}
-
-
-#if !defined(__PPE__) && !defined(NO_STD_LIB_IN_PPE) && !defined(__HOSTBOOT_MODULE) && !defined(FIPSODE)
-
-// The following defines are needed by the initCompiler and so it's practical to use C++
-// features.
-
-// ** Important **
-// If updates are made to the below three maps, corresponding updates to the two
-// maps in ./tools/ifCompiler/initCompiler/initCompiler.y may also have to be made.
-// @TODO: RTC192378
-// For P10 we should have just the two maps from initCompiler.y. And they should
-// be located in central place like ./chips/common/utils/imageProcs/infrastructure.
-
-// Mapping from our [InfraStructure's} chipId to the chipType name
-std::map <ChipId_t, std::string> chipIdIsMap
-{
- { UNDEFINED_CHIP_ID, "" },
- { (ChipId_t)CID_CEN, "cen" },
- { (ChipId_t)CID_P9N, "p9n" },
- { (ChipId_t)CID_P9C, "p9c" },
- { (ChipId_t)CID_P9A, "p9a" }
-};
-
-// Mapping from chipType name to our [InfraStructure's} chipId (revers of above map)
-std::map <std::string, ChipId_t> chipTypeIsMap
-{
- { "", UNDEFINED_CHIP_ID },
- { "cen", (ChipId_t)CID_CEN },
- { "p9n", (ChipId_t)CID_P9N },
- { "p9c", (ChipId_t)CID_P9C },
- { "p9a", (ChipId_t)CID_P9A }
-};
-
-// Mapping from InitCompiler's chipId to InfraStructure's chipId
-std::map <uint8_t, ChipId_t> chipIdIcToIsMap
-{
- { 0x0, UNDEFINED_CHIP_ID },
- { 0x3, (ChipId_t)CID_CEN },
- { 0x5, (ChipId_t)CID_P9N },
- { 0x6, (ChipId_t)CID_P9C },
- { 0x7, (ChipId_t)CID_P9A }
-};
-
-int ringidGetRootRingId( ChipId_t i_chipId,
- uint32_t i_scanScomAddr,
- RingId_t& o_ringId,
- bool i_bTest )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- RingProperties_t* ringProps = NULL;
- RingId_t numRingIds = UNDEFINED_RING_ID;
- RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter
- RingId_t l_ringId = UNDEFINED_RING_ID;
- bool bFound = false;
+ *o_ringProps = (RingProperties_t*)CEN_RID::RING_PROPERTIES;
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- ringProps = (RingProperties_t*)&P9_RID::RING_PROPERTIES;
- numRingIds = P9_RID::NUM_RING_IDS;
- break;
-
- case CID_CEN:
- ringProps = (RingProperties_t*)&CEN_RID::RING_PROPERTIES;
- numRingIds = CEN_RID::NUM_RING_IDS;
break;
default:
- MY_ERR("ringidGetRootRingId(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
+ MY_ERR("Invalid chipType (=0x%02x)\n", i_chipType);
+ return TOR_INVALID_CHIPTYPE;
- if (!rc)
- {
- for ( iRingId = 0; iRingId < numRingIds; iRingId++ )
- {
- if ( ringProps[iRingId].scanScomAddr == i_scanScomAddr )
- {
- if ( ringProps[iRingId].ringClass & RCLS_ROOT_RING )
- {
- if (bFound)
- {
- MY_ERR("ringidGetRootRingId(): Two rings w/same addr cannot both be"
- " ROOT_RING. Fix RING_PROPERTIES list for chipId=%d at ringId=0x%x"
- " and ringId=0x%x\n",
- i_chipId, l_ringId, iRingId);
- rc = INFRASTRUCT_RC_CODE_BUG;
- l_ringId = UNDEFINED_RING_ID;
- break;
- }
- else
- {
- l_ringId = iRingId;
- bFound = true;
-
- if (!i_bTest)
- {
- // Stop testing and break out of ringId loop
- break;
- }
-
- // Continue testing to see if duplicate root rings found
- }
- }
- }
- }
}
- if (!rc && !bFound)
- {
- MY_DBG("ringidGetRootRingId(): Did not find match for scanScomAddr=0x%08x for chipId=%d."
- " (Note, l_ringId=0x%x better be equal to UNDEFINED_RING_ID=0x%x)\n",
- i_scanScomAddr, i_chipId, l_ringId, UNDEFINED_RING_ID);
- rc = TOR_SCOM_ADDR_NOT_FOUND;
- }
-
- o_ringId = l_ringId;
-
- return rc;
-}
-
-
-int ringidGetRingId1( ChipId_t i_chipId,
- std::string i_ringName,
- RingId_t& o_ringId,
- bool i_bTest )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- RingProperties_t* ringProps = NULL;
- RingId_t numRingIds = UNDEFINED_RING_ID;
- RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter
- RingId_t l_ringId = UNDEFINED_RING_ID;
- bool bFound = false;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- ringProps = (RingProperties_t*)&P9_RID::RING_PROPERTIES;
- numRingIds = P9_RID::NUM_RING_IDS;
- break;
-
- case CID_CEN:
- ringProps = (RingProperties_t*)&CEN_RID::RING_PROPERTIES;
- numRingIds = CEN_RID::NUM_RING_IDS;
- break;
-
- default:
- MY_ERR("ringidGetRingId1(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- if (!rc)
- {
- for ( iRingId = 0; iRingId < numRingIds; iRingId++ )
- {
- if ( !(i_ringName.compare(ringProps[iRingId].ringName)) )
- {
- if (bFound)
- {
- MY_ERR("ringidGetRingId1(): Two rings cannot have the same ringName=%s. Fix"
- " RING_PROPERTIES list for chipId=%d at ringId=0x%x and ringId=0x%x\n",
- i_ringName.c_str(), i_chipId, l_ringId, iRingId);
- rc = INFRASTRUCT_RC_CODE_BUG;
- l_ringId = UNDEFINED_RING_ID;
- break;
- }
- else
- {
- l_ringId = iRingId;
- bFound = true;
-
- if (!i_bTest)
- {
- // Stop testing and break our of ringId loop
- break;
- }
-
- // Continue testing to see if duplicate ringNames found
- }
- }
- }
- }
-
- if (!rc && !bFound)
- {
- MY_DBG("ringidGetRingId1(): Did not find match to ringName=%s for chipId=%d."
- " (Note, l_ringId=0x%x better be equal to UNDEFINED_RING_ID=0x%x)\n",
- i_ringName.c_str(), i_chipId, l_ringId, UNDEFINED_RING_ID);
- rc = TOR_RING_NAME_NOT_FOUND;
- }
-
- o_ringId = l_ringId;
-
- return rc;
-}
-
-
-int ringidGetRingId2( ChipId_t i_chipId,
- uint32_t i_torMagic,
- ChipletType_t i_chipletType, // Ignored if only one chiplet in torMagic
- uint8_t i_idxRing, // The effective ring index within chiplet's
- // common or instance ring section
- MyBool_t i_bInstCase,
- RingId_t& o_ringId,
- bool i_bTest )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- ChipletType_t l_chipletType = UNDEFINED_CHIPLET_TYPE;
- RingProperties_t* ringProps = NULL;
- RingId_t numRingIds = UNDEFINED_RING_ID;
- RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter
- RingId_t l_ringId = UNDEFINED_RING_ID;
- uint8_t l_idxRing = INVALID_RING_OFFSET;
- bool bFound = false;
- bool bOverlap = false;
-
- // First, select the main ring list we need (P9's or Centaur's). And while we're at it,
- // convert input chipletType, which can be ignored for ring sections (i.e. torMagic)
- // with only one chiplet, to a valid chipletType
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- ringProps = (RingProperties_t*)&P9_RID::RING_PROPERTIES;
- numRingIds = P9_RID::NUM_RING_IDS;
-
- if ( i_torMagic == TOR_MAGIC_SBE ||
- i_torMagic == TOR_MAGIC_OVRD ||
- i_torMagic == TOR_MAGIC_OVLY )
- {
- l_chipletType = i_chipletType;
- }
- else if ( i_torMagic == TOR_MAGIC_CME )
- {
- l_chipletType = P9_RID::EC_TYPE;
- }
- else if ( i_torMagic == TOR_MAGIC_SGPE )
- {
- l_chipletType = P9_RID::EQ_TYPE;
- }
- else
- {
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_P9x=%d\n", i_torMagic, i_chipId);
- return TOR_INVALID_MAGIC_NUMBER;
- }
-
- break;
-
- case CID_CEN:
- ringProps = (RingProperties_t*)&CEN_RID::RING_PROPERTIES;
- numRingIds = CEN_RID::NUM_RING_IDS;
-
- if ( i_torMagic == TOR_MAGIC_CEN ||
- i_torMagic == TOR_MAGIC_OVRD )
- {
- l_chipletType = CEN_RID::CEN_TYPE;
- }
- else
- {
- MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_CEN\n", i_torMagic);
- return TOR_INVALID_MAGIC_NUMBER;
- }
-
- break;
-
- default:
- MY_ERR("ringidGetRingId2(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- // Second, convert effective input ring index (which has no instance marker) to the
- // common/instance specific index
- l_idxRing = i_bInstCase ?
- i_idxRing | INSTANCE_RING_MARK :
- i_idxRing;
-
- if (!rc)
- {
- for ( iRingId = 0; iRingId < numRingIds; iRingId++ )
- {
- if ( ringProps[iRingId].chipletType == l_chipletType &&
- ringProps[iRingId].idxRing == l_idxRing )
- {
- if (bFound)
- {
- // Allow ring index overlap between a root and a non-root ring
- // and let the non-root (i.e., the bucket ring) "win"
- if ( !bOverlap &&
- ( (ringProps[iRingId].ringClass & RCLS_ROOT_RING) !=
- (ringProps[l_ringId].ringClass & RCLS_ROOT_RING) ) )
- {
- if ( (ringProps[iRingId].ringClass & RCLS_ROOT_RING) != RCLS_ROOT_RING )
- {
- l_ringId = iRingId;
- }
- else
- {
- // Keep l_ringId as is since it must already be the non-root ring
- }
-
- bOverlap = true; // Indicate we found an overlap match
-
- if (!i_bTest)
- {
- // Stop testing and break our of ringId loop
- break;
- }
- }
- else
- {
- MY_ERR("ringidGetRingId2(): Two root, or two non-root, rings within a"
- " chiplet (chipletType=%d) cannot have the same ring index"
- " (idxRing=%d, bInst=%d). Fix RING_PROPERTIES list for chipId=%d"
- " at ringId=0x%x and ringId=0x%x\n",
- l_chipletType, i_idxRing, i_bInstCase, i_chipId, l_ringId, iRingId);
- rc = INFRASTRUCT_RC_CODE_BUG;
- l_ringId = UNDEFINED_RING_ID;
- break;
- }
- }
- else
- {
- l_ringId = iRingId;
- bFound = true; // Indicate we found a first match
-
- // Continue searching for ring index overlap due to bucket ring or code bug
- }
- }
- }
- }
-
- if (!rc && !bFound)
- {
- MY_ERR("ringidGetRingId2(): Could not find a match for (chipId,chipletType,idxRing,bInst) ="
- " (%d, %d, %d, %d). Fix RING_PROPERTIES list for chipId=%d (Note, l_ringId=0x%x"
- " better be equal to UNDEFINED_RING_ID=0x%x)\n",
- i_chipId, l_chipletType, i_idxRing, i_bInstCase,
- i_chipId, l_ringId, UNDEFINED_RING_ID);
- rc = INFRASTRUCT_RC_CODE_BUG;
- }
-
- o_ringId = l_ringId;
-
- return rc;
-}
-
-
-int ringidGetRingName( ChipId_t i_chipId,
- RingId_t i_ringId,
- std::string& o_ringName )
-{
- int rc = INFRASTRUCT_RC_SUCCESS;
- std::string l_ringName;
-
- switch (i_chipId)
- {
- case CID_P9N:
- case CID_P9C:
- case CID_P9A:
- if (i_ringId >= P9_RID::NUM_RING_IDS)
- {
- MY_ERR("ringidGetRingName(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, P9_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_ringName = (std::string)P9_RID::RING_PROPERTIES[i_ringId].ringName;
- break;
-
- case CID_CEN:
- if (i_ringId >= CEN_RID::NUM_RING_IDS)
- {
- MY_ERR("ringidGetRingName(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n",
- i_ringId, CEN_RID::NUM_RING_IDS);
- rc = TOR_INVALID_RING_ID;
- break;
- }
-
- l_ringName = (std::string)CEN_RID::RING_PROPERTIES[i_ringId].ringName;
- break;
-
- default:
- MY_ERR("ringidGetRingName(): Unsupported chipId (=%d) supplied\n", i_chipId);
- rc = TOR_INVALID_CHIP_ID;
- break;
- }
-
- o_ringName = l_ringName;
-
- return rc;
-}
-
-int ringidGetRingClass( ChipId_t i_chipId,
- RingId_t i_ringId,
- RingClass_t& o_ringClass )
-{
- return (ringid_get_ringClass(i_chipId, i_ringId, &o_ringClass));
+ return TOR_SUCCESS;
}
-
-#endif // __PPE__ && NO_STD_LIB_IN_PPE
OpenPOWER on IntegriCloud