summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/centaur/utils/imageProcs/cen_ringId.C76
-rw-r--r--src/import/chips/centaur/utils/imageProcs/cen_ringId.H40
-rw-r--r--src/import/chips/centaur/utils/imageProcs/cen_ringId.mk2
-rw-r--r--src/import/chips/common/utils/imageProcs/common_ringId.H11
-rw-r--r--src/import/chips/p9/procedures/hwp/accessors/p9_mvpd_ring_funcs.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.mk1
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H4
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk1
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_scan_ring_util.C6
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_ringId.C80
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_ringId.H222
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_tor.C340
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_tor.H1
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_tor.mk3
-rw-r--r--src/usr/isteps/pm/pm.mk6
-rw-r--r--src/usr/sbe/makefile6
17 files changed, 424 insertions, 379 deletions
diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C
index de68361c0..5df973921 100644
--- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C
+++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C
@@ -23,6 +23,9 @@
/* */
/* IBM_PROLOG_END_TAG */
+#include <string.h>
+#include <common_ringId.H>
+
namespace CEN_RID
{
@@ -140,4 +143,75 @@ const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID };
}; // namespace CEN
-}; // namespace CENTAUR
+}; // namespace CEN_RID
+
+
+using namespace CEN_RID;
+
+ChipletType_t CEN_RID::ringid_get_chiplet(RingId_t i_ringId)
+{
+ return RING_PROPERTIES[i_ringId].iv_type;
+}
+
+void CEN_RID::ringid_get_chiplet_properties(
+ ChipletType_t i_chiplet,
+ ChipletData_t** o_cpltData,
+ GenRingIdList** o_ringComm,
+ GenRingIdList** o_ringInst,
+ RingVariantOrder** o_varOrder,
+ uint8_t* o_varNumb)
+{
+ switch (i_chiplet)
+ {
+ case CEN_TYPE :
+ *o_cpltData = (ChipletData_t*) &CEN::g_chipletData;
+ *o_ringComm = (GenRingIdList*) CEN::RING_ID_LIST_COMMON;
+ *o_ringInst = NULL;
+ *o_varOrder = (RingVariantOrder*) CEN::RING_VARIANT_ORDER;
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
+ break;
+
+ default :
+ *o_cpltData = NULL;
+ *o_ringComm = NULL;
+ *o_ringInst = NULL;
+ *o_varOrder = NULL;
+ *o_varNumb = 0;
+ break;
+ }
+}
+
+GenRingIdList* CEN_RID::ringid_get_ring_properties(RingId_t i_ringId)
+{
+ ChipletData_t* l_cpltData;
+ GenRingIdList* l_ringList[2]; // 0: common, 1: instance
+ RingVariantOrder* l_varOrder;
+ uint8_t l_varNumb;
+ int i, j, n;
+
+ CEN_RID::ringid_get_chiplet_properties(
+ CEN_RID::ringid_get_chiplet(i_ringId),
+ &l_cpltData, &l_ringList[0], &l_ringList[1], &l_varOrder, &l_varNumb);
+
+ if (!l_ringList[0])
+ {
+ return NULL;
+ }
+
+ for (j = 0; j < 2; j++) // 0: common, 1: instance
+ {
+ n = (j ? l_cpltData->iv_num_instance_rings
+ : l_cpltData->iv_num_common_rings);
+
+ for (i = 0; i < n; i++)
+ {
+ if (!strcmp(l_ringList[j][i].ringName,
+ RING_PROPERTIES[i_ringId].iv_name))
+ {
+ return &(l_ringList[j][i]);
+ }
+ }
+ }
+
+ return NULL;
+}
diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H
index d4f1b9ce6..134c3268a 100644
--- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H
+++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H
@@ -42,12 +42,6 @@ namespace CEN
extern const GenRingIdList RING_ID_LIST_COMMON[];
extern const RingVariantOrder RING_VARIANT_ORDER[];
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -156,19 +150,19 @@ enum RingOffset
// ** none **
};
-static const CHIPLET_DATA g_cenData =
+static const ChipletData_t g_chipletData =
{
0x01, // Centaur chiplet ID
NUM_RING_IDS, // Num of common rings for Centaur chiplet
0, // Num of instance rings for Centaur chiplet
- 0
+ 0,
+ 2, // Num of ring variants: BASE, RL
};
-
}; // namespace CEN
#ifndef __PPE__
-static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
+static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{
{ CEN::tcm_perv_cmsk, "tcm_perv_cmsk", CEN_TYPE },
{ CEN::tcm_perv_lbst, "tcm_perv_lbst", CEN_TYPE },
@@ -275,7 +269,7 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
#else
-static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
+static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{
{ CEN::tcm_perv_cmsk, CEN_TYPE },
{ CEN::tcm_perv_lbst, CEN_TYPE },
@@ -382,4 +376,28 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
#endif // __PPE__
+
+
+// returns our own chiplet enum value for this ringId
+ChipletType_t
+ringid_get_chiplet(
+ RingId_t i_ringId);
+
+// returns data structures defined for chiplet type
+// as determined by ringId
+void
+ringid_get_chiplet_properties(
+ ChipletType_t i_chiplet,
+ ChipletData_t** o_cpltData,
+ GenRingIdList** o_ringComm,
+ GenRingIdList** o_ringInst,
+ RingVariantOrder** o_varOrder,
+ uint8_t* o_varNumb);
+
+// returns properties of a ring as determined by ringId
+GenRingIdList*
+ringid_get_ring_properties(
+ RingId_t i_ringId);
+
+
#endif // _CEN_RINGID_H_
diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.mk b/src/import/chips/centaur/utils/imageProcs/cen_ringId.mk
index 5828fa2b2..92737c83b 100644
--- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.mk
+++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.mk
@@ -22,7 +22,7 @@
# permissions and limitations under the License.
#
# IBM_PROLOG_END_TAG
-PROCEDURE = cen_ringId
+PROCEDURE=cen_ringId
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/common/utils/imageProcs)
$(call BUILD_PROCEDURE)
diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.H b/src/import/chips/common/utils/imageProcs/common_ringId.H
index 1efcac4a0..de4aa7137 100644
--- a/src/import/chips/common/utils/imageProcs/common_ringId.H
+++ b/src/import/chips/common/utils/imageProcs/common_ringId.H
@@ -126,7 +126,7 @@ enum RingType
ALLRING = 2
};
-struct CHIPLET_DATA
+typedef struct
{
// This is the chiplet-ID of the first instance of the Chiplet
uint8_t iv_base_chiplet_number;
@@ -140,7 +140,10 @@ struct CHIPLET_DATA
// The no.of instance rings for the Chiplet (w/different ringId values
// AND different scanAddress values)
uint8_t iv_num_instance_rings_scan_addrs;
-};
+
+ // The no.of ring variants
+ uint8_t iv_num_ring_variants;
+} ChipletData_t;
// This is used to Set (Mark) the left-most bit
#define INSTANCE_RING_MARK (uint8_t)0x80
@@ -154,14 +157,14 @@ struct CHIPLET_DATA
// This structure is needed for mapping a RingID to it's corresponding name.
// The names will be used by the build scripts when generating the TOR.
#ifndef __PPE__
-struct ringProperties_t
+struct RingProperties_t
{
uint8_t iv_torOffSet;
char iv_name[50];
ChipletType_t iv_type;
};
#else
-struct ringProperties_t
+struct RingProperties_t
{
uint8_t iv_torOffSet;
ChipletType_t iv_type;
diff --git a/src/import/chips/p9/procedures/hwp/accessors/p9_mvpd_ring_funcs.C b/src/import/chips/p9/procedures/hwp/accessors/p9_mvpd_ring_funcs.C
index dc01832e7..fccc0d4e5 100644
--- a/src/import/chips/p9/procedures/hwp/accessors/p9_mvpd_ring_funcs.C
+++ b/src/import/chips/p9/procedures/hwp/accessors/p9_mvpd_ring_funcs.C
@@ -534,7 +534,7 @@ extern "C"
be64toh(l_pScanDataOld->iv_scanSelect) & l_evenOddMask ) )
{
// look up ring in p9_ringId and retrieve scanAddr
- GenRingIdList* l_ringProp = p9_ringid_get_ring_properties(i_ringId);
+ GenRingIdList* l_ringProp = ringid_get_ring_properties(i_ringId);
FAPI_ASSERT(l_ringProp,
fapi2::MVPD_RINGID_DATA_NOT_FOUND().
diff --git a/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.mk b/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.mk
index fd41524c1..103376c98 100644
--- a/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.mk
+++ b/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.mk
@@ -30,6 +30,7 @@ lib$(PROCEDURE)_DEPLIBS+=p9_get_mvpd_ring
lib$(PROCEDURE)_DEPLIBS+=p9_mvpd_ring_funcs
lib$(PROCEDURE)_DEPLIBS+=p9_tor
lib$(PROCEDURE)_DEPLIBS+=p9_ringId
+lib$(PROCEDURE)_DEPLIBS+=cen_ringId
lib$(PROCEDURE)_DEPLIBS+=p9_dd_container
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/xip)
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/utils/imageProcs)
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H b/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
index 7a07e7080..c1a7eee54 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
@@ -64,8 +64,8 @@ namespace p9_hcodeImageBuild
* @brief returns maximum quad common rings that enter HOMER.
*/
-#define MAX_HOMER_QUAD_CMN_RINGS (uint32_t)(EQ::g_eqData.iv_num_common_rings - 4)
-#define MAX_HOMER_CORE_CMN_RINGS (uint32_t)(EC::g_ecData.iv_num_common_rings - 2)
+#define MAX_HOMER_QUAD_CMN_RINGS (uint32_t)(EQ::g_chipletData.iv_num_common_rings - 4)
+#define MAX_HOMER_CORE_CMN_RINGS (uint32_t)(EC::g_chipletData.iv_num_common_rings - 2)
/**
* @brief models QPMR header in HOMER
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
index 144ead47c..717cb5f22 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
@@ -3237,7 +3237,7 @@ fapi2::ReturnCode layoutInstRingsForSgpe( Homerlayout_t* i_pHomer,
uint32_t tempBufSize = 0;
uint32_t tempLength = 0;
- for( uint32_t ringIndex = 0; ringIndex < EQ::g_eqData.iv_num_instance_rings_scan_addrs;
+ for( uint32_t ringIndex = 0; ringIndex < EQ::g_chipletData.iv_num_instance_rings_scan_addrs;
ringIndex++ )
{
tempBufSize = i_ringData.iv_sizeWorkBuf1;
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
index 8af339f69..277071bfd 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
@@ -39,6 +39,7 @@ lib$(PROCEDURE)_DEPLIBS += p9_xip_image
lib$(PROCEDURE)_DEPLIBS += p9_tor
lib$(PROCEDURE)_DEPLIBS += p9_ring_identification
lib$(PROCEDURE)_DEPLIBS += p9_ringId
+lib$(PROCEDURE)_DEPLIBS += cen_ringId
lib$(PROCEDURE)_DEPLIBS += p9_stop_util
lib$(PROCEDURE)_DEPLIBS += p9_stop_api
lib$(PROCEDURE)_DEPLIBS += p9_fbc_utils
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_scan_ring_util.C b/src/import/chips/p9/procedures/hwp/pm/p9_scan_ring_util.C
index df1f67b2c..4431c8e01 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_scan_ring_util.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_scan_ring_util.C
@@ -271,7 +271,7 @@ RingBucket::RingBucket( PlatId i_plat, uint8_t* i_pRingStart, RingDebugMode_t i_
iv_cmnRingMap[ringIndex] = l_quadCmnRings[ringIndex];
}
- for( ringIndex = 0; ringIndex < ( EQ::g_eqData.iv_num_instance_rings_scan_addrs * MAX_QUADS_PER_CHIP );
+ for( ringIndex = 0; ringIndex < ( EQ::g_chipletData.iv_num_instance_rings_scan_addrs * MAX_QUADS_PER_CHIP );
ringIndex++ )
{
iv_instRingMap[ringIndex] = l_quadSpecRings[ringIndex];
@@ -643,12 +643,12 @@ void RingBucket::dumpRings( )
if( iv_plat == PLAT_CME )
{
FAPI_INF("---------------------------------CME Rings---------------------------------------");
- chipletNo = EC::g_ecData.iv_num_instance_rings_scan_addrs;
+ chipletNo = EC::g_chipletData.iv_num_instance_rings_scan_addrs;
}
else if( iv_plat == PLAT_SGPE )
{
FAPI_INF("---------------------------------SGPE Rings--------------------------------------");
- chipletNo = EQ::g_eqData.iv_num_instance_rings_scan_addrs;
+ chipletNo = EQ::g_chipletData.iv_num_instance_rings_scan_addrs;
}
else
{
diff --git a/src/import/chips/p9/utils/imageProcs/p9_ringId.C b/src/import/chips/p9/utils/imageProcs/p9_ringId.C
index 02591046b..fc6b96811 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_ringId.C
+++ b/src/import/chips/p9/utils/imageProcs/p9_ringId.C
@@ -465,14 +465,14 @@ const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, CC, RL };
using namespace P9_RID;
-ChipletType_t P9_RID::p9_ringid_get_chiplet(RingId_t i_ringId)
+ChipletType_t P9_RID::ringid_get_chiplet(RingId_t i_ringId)
{
return RING_PROPERTIES[i_ringId].iv_type;
}
-void P9_RID::p9_ringid_get_chiplet_properties(
+void P9_RID::ringid_get_chiplet_properties(
ChipletType_t i_chiplet,
- CHIPLET_DATA** o_cpltData,
+ ChipletData_t** o_cpltData,
GenRingIdList** o_ringComm,
GenRingIdList** o_ringInst,
RingVariantOrder** o_varOrder,
@@ -481,131 +481,131 @@ void P9_RID::p9_ringid_get_chiplet_properties(
switch (i_chiplet)
{
case PERV_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &PERV::g_pervData;
+ *o_cpltData = (ChipletData_t*) &PERV::g_chipletData;
*o_ringComm = (GenRingIdList*) PERV::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) PERV::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) PERV::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(PERV::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case N0_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &N0::g_n0Data;
+ *o_cpltData = (ChipletData_t*) &N0::g_chipletData;
*o_ringComm = (GenRingIdList*) N0::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) N0::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) N0::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(N0::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case N1_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &N1::g_n1Data;
+ *o_cpltData = (ChipletData_t*) &N1::g_chipletData;
*o_ringComm = (GenRingIdList*) N1::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) N1::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) N1::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(N1::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case N2_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &N2::g_n2Data;
+ *o_cpltData = (ChipletData_t*) &N2::g_chipletData;
*o_ringComm = (GenRingIdList*) N2::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) N2::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) N2::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(N2::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case N3_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &N3::g_n3Data;
+ *o_cpltData = (ChipletData_t*) &N3::g_chipletData;
*o_ringComm = (GenRingIdList*) N3::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) N3::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) N3::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(N3::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case XB_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &XB::g_xbData;
+ *o_cpltData = (ChipletData_t*) &XB::g_chipletData;
*o_ringComm = (GenRingIdList*) XB::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) XB::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) XB::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(XB::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case MC_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &MC::g_mcData;
+ *o_cpltData = (ChipletData_t*) &MC::g_chipletData;
*o_ringComm = (GenRingIdList*) MC::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) MC::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) MC::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(MC::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case OB0_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &OB0::g_ob0Data;
+ *o_cpltData = (ChipletData_t*) &OB0::g_chipletData;
*o_ringComm = (GenRingIdList*) OB0::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) OB0::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) OB0::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(OB0::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case OB1_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &OB1::g_ob1Data;
+ *o_cpltData = (ChipletData_t*) &OB1::g_chipletData;
*o_ringComm = (GenRingIdList*) OB1::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) OB1::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) OB1::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(OB1::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case OB2_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &OB2::g_ob2Data;
+ *o_cpltData = (ChipletData_t*) &OB2::g_chipletData;
*o_ringComm = (GenRingIdList*) OB2::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) OB2::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) OB2::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(OB2::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case OB3_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &OB3::g_ob3Data;
+ *o_cpltData = (ChipletData_t*) &OB3::g_chipletData;
*o_ringComm = (GenRingIdList*) OB3::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) OB3::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) OB3::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(OB3::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case PCI0_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &PCI0::g_pci0Data;
+ *o_cpltData = (ChipletData_t*) &PCI0::g_chipletData;
*o_ringComm = (GenRingIdList*) PCI0::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) PCI0::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) PCI0::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(PCI0::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case PCI1_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &PCI1::g_pci1Data;
+ *o_cpltData = (ChipletData_t*) &PCI1::g_chipletData;
*o_ringComm = (GenRingIdList*) PCI1::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) PCI1::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) PCI1::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(PCI1::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case PCI2_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &PCI2::g_pci2Data;
+ *o_cpltData = (ChipletData_t*) &PCI2::g_chipletData;
*o_ringComm = (GenRingIdList*) PCI2::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) PCI2::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) PCI2::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(PCI2::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case EQ_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &EQ::g_eqData;
+ *o_cpltData = (ChipletData_t*) &EQ::g_chipletData;
*o_ringComm = (GenRingIdList*) EQ::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) EQ::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) EQ::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(EQ::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
case EC_TYPE :
- *o_cpltData = (CHIPLET_DATA*) &EC::g_ecData;
+ *o_cpltData = (ChipletData_t*) &EC::g_chipletData;
*o_ringComm = (GenRingIdList*) EC::RING_ID_LIST_COMMON;
*o_ringInst = (GenRingIdList*) EC::RING_ID_LIST_INSTANCE;
*o_varOrder = (RingVariantOrder*) EC::RING_VARIANT_ORDER;
- *o_varNumb = sizeof(EC::RingVariants) / sizeof(uint16_t);
+ *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants;
break;
default :
@@ -613,21 +613,21 @@ void P9_RID::p9_ringid_get_chiplet_properties(
*o_ringComm = NULL;
*o_ringInst = NULL;
*o_varOrder = NULL;
- *o_varNumb = 0;
+ *o_varNumb = 0;
break;
}
}
-GenRingIdList* P9_RID::p9_ringid_get_ring_properties(RingId_t i_ringId)
+GenRingIdList* P9_RID::ringid_get_ring_properties(RingId_t i_ringId)
{
- CHIPLET_DATA* l_cpltData;
+ ChipletData_t* l_cpltData;
GenRingIdList* l_ringList[2]; // 0: common, 1: instance
RingVariantOrder* l_varOrder;
uint8_t l_varNumb;
int i, j, n;
- P9_RID::p9_ringid_get_chiplet_properties(
- P9_RID::p9_ringid_get_chiplet(i_ringId),
+ P9_RID::ringid_get_chiplet_properties(
+ P9_RID::ringid_get_chiplet(i_ringId),
&l_cpltData, &l_ringList[0], &l_ringList[1], &l_varOrder, &l_varNumb);
if (!l_ringList[0])
diff --git a/src/import/chips/p9/utils/imageProcs/p9_ringId.H b/src/import/chips/p9/utils/imageProcs/p9_ringId.H
index cdac737f4..08a65527b 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_ringId.H
+++ b/src/import/chips/p9/utils/imageProcs/p9_ringId.H
@@ -175,13 +175,6 @@ extern const RingVariantOrder RING_VARIANT_ORDER[];
namespace PERV
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -210,24 +203,18 @@ enum RingOffset
occ_repr = (1 | INSTANCE_RING_MARK),
};
-static const CHIPLET_DATA g_pervData =
+static const ChipletData_t g_chipletData =
{
1, // Pervasive Chiplet ID is 1
15, // 15 common rings for pervasive chiplet
2, // 2 instance specific rings for pervasive chiplet
- 2
+ 2,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace PERV
namespace N0
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -246,24 +233,18 @@ enum RingOffset
n0_cxa0_repr = (2 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_n0Data =
+static const ChipletData_t g_chipletData =
{
- 2, // N0 Chiplet ID is 2.
- 9, // 9 common rings for N0 Chiplet
- 3, // 3 instance specific rings for N0 chiplet
- 3
+ 2, // N0 Chiplet ID is 2.
+ 9, // 9 common rings for N0 Chiplet
+ 3, // 3 instance specific rings for N0 chiplet
+ 3,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace N1
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -286,24 +267,18 @@ enum RingOffset
n1_mcs23_repr = (3 | INSTANCE_RING_MARK),
};
-static const CHIPLET_DATA g_n1Data =
+static const ChipletData_t g_chipletData =
{
3, // N1 Chiplet ID is 3.
12, // 12 common rings for N1 Chiplet
4, // 4 instance specific rings for N1 chiplet
- 4
+ 4,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace N2
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -322,24 +297,18 @@ enum RingOffset
n2_psi_repr = (2 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_n2Data =
+static const ChipletData_t g_chipletData =
{
4, // N2 Chiplet ID is 4.
9, // 9 common rings for N2 Chiplet
3, // 3 instance specific rings for N2 chiplet
- 3
+ 3,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace N3
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -359,24 +328,18 @@ enum RingOffset
n3_np_repr = (2 | INSTANCE_RING_MARK),
};
-static const CHIPLET_DATA g_n3Data =
+static const ChipletData_t g_chipletData =
{
5, // N3 Chiplet ID is 5
10,// 10 common rings for N3 Chiplet
3, // 3 instance specific rings for N3 chiplet
- 3
+ 3,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace XB
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -402,24 +365,18 @@ enum RingOffset
xb_io2_repr = (3 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_xbData =
+static const ChipletData_t g_chipletData =
{
6, // X-Bus Chiplet ID is 6
15, // 15 common rings for X-Bus Chiplet
4, // 4 instance specific rings for XB chiplet
- 4
+ 4,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace XB
namespace MC
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -446,24 +403,18 @@ enum RingOffset
mc_iom23_repr = (2 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_mcData =
+static const ChipletData_t g_chipletData =
{
7, // MC Chiplet ID range is 7 - 8. The base ID is 7.
16, // 16 common rings for MC Chiplet
3, // 3 instance specific rings for each MC instance
- 3
+ 3,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace MC
namespace OB0
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -479,24 +430,18 @@ enum RingOffset
ob0_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_ob0Data =
+static const ChipletData_t g_chipletData =
{
9, // O-Bus Chiplet ID range is 9 - 12. The base ID is 9.
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace OB0
namespace OB1
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -512,25 +457,19 @@ enum RingOffset
ob1_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_ob1Data =
+static const ChipletData_t g_chipletData =
{
10, // O-Bus Chiplet ID range is 9 - 12. The base ID is 9.
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace OB1
namespace OB2
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -546,24 +485,18 @@ enum RingOffset
ob2_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_ob2Data =
+static const ChipletData_t g_chipletData =
{
11, // O-Bus Chiplet ID range is 9 - 12. The base ID is 9.
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace OB2
namespace OB3
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -579,23 +512,18 @@ enum RingOffset
ob3_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_ob3Data =
+static const ChipletData_t g_chipletData =
{
12, // O-Bus Chiplet ID range is 9 - 12. The base ID is 9.
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
}; // end of namespace OB2
+
namespace PCI0
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -608,24 +536,18 @@ enum RingOffset
pci0_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_pci0Data =
+static const ChipletData_t g_chipletData =
{
13, // PCI0 Chiplet Chiplet ID is 13
5, // 5 common rings for PCI0 chiplet
1, // 1 instance specific rings for PCI0 chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace PCI1
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -638,24 +560,18 @@ enum RingOffset
pci1_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_pci1Data =
+static const ChipletData_t g_chipletData =
{
14, // PCI1 Chiplet Chiplet ID is 14
5, // 5 common rings for PCI1 chiplet
1, // 1 instance specific rings for PCI1 chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
};
namespace PCI2
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -668,26 +584,18 @@ enum RingOffset
pci2_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_pci2Data =
+static const ChipletData_t g_chipletData =
{
15, // PCI2 Chiplet Chiplet ID is 15
5, // 5 common rings for PCI2 chiplet
1, // 1 instance specific rings for PCI2 chiplet
- 1
+ 1,
+ 2, // 2 ring variants: BASE, RL
};
-
};
namespace EQ
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_cacheContained;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -767,25 +675,18 @@ enum RingOffset
ex_l3_refr_time = (4 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_eqData =
+static const ChipletData_t g_chipletData =
{
16, // Quad Chiplet ID range is 16 - 21. The base ID is 16.
66, // 66 common rings for Quad chiplet.
5, // 5 instance specific rings for each EQ chiplet
- 9 // 9 different rings since 2 per EX ring and 1 per EQ
+ 9, // 9 different rings since 2 per EX ring and 1 per EQ
+ 3, // 3 ring variants: BASE, CC, RL
};
}; // end of namespace EQ
namespace EC
{
-// FIXME: this struct is nonsense - no one uses these fields (we only need the variant number)
-struct RingVariants
-{
- uint16_t iv_base;
- uint16_t iv_cacheContained;
- uint16_t iv_riskLevel;
-};
-
enum RingOffset
{
// Common Rings
@@ -799,19 +700,20 @@ enum RingOffset
ec_repr = (0 | INSTANCE_RING_MARK)
};
-static const CHIPLET_DATA g_ecData =
+static const ChipletData_t g_chipletData =
{
32, // Core Chiplet ID range is 32-55. The base ID is 32.
6, // 6 common rings for Core chiplet
1, // 1 instance specific ring for each Core chiplet
- 1
+ 1,
+ 3, // 3 ring variants: BASE, CC, RL
};
}; // end of namespace EC
#ifndef __PPE__
-static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
+static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{
{ PERV::perv_fure , "perv_fure" , PERV_TYPE }, // 0
{ PERV::perv_gptr , "perv_gptr" , PERV_TYPE }, // 1
@@ -1070,7 +972,7 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
#endif
#ifdef __PPE__
-static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
+static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{
{ PERV::perv_fure , PERV_TYPE }, // 0
{ PERV::perv_gptr , PERV_TYPE }, // 1
@@ -1328,25 +1230,27 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
};
#endif
-// returns our own chiplet enum value for this ringId
+
+// Returns our own chiplet enum value for this ringId
ChipletType_t
-p9_ringid_get_chiplet(
+ringid_get_chiplet(
RingId_t i_ringId);
-// returns data structures defined for chiplet type
+// Returns data structures defined for chiplet type
// as determined by ringId
void
-p9_ringid_get_chiplet_properties(
+ringid_get_chiplet_properties(
ChipletType_t i_chiplet,
- CHIPLET_DATA** o_cpltData,
+ ChipletData_t** o_cpltData,
GenRingIdList** o_ringComm,
GenRingIdList** o_ringInst,
RingVariantOrder** o_varOrder,
uint8_t* o_varNumb);
-// returns properties of a ring as determined by ringId
+// Returns properties of a ring as determined by ringId
GenRingIdList*
-p9_ringid_get_ring_properties(
+ringid_get_ring_properties(
RingId_t i_ringId);
+
#endif
diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.C b/src/import/chips/p9/utils/imageProcs/p9_tor.C
index e128ec3cf..eabe01576 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_tor.C
+++ b/src/import/chips/p9/utils/imageProcs/p9_tor.C
@@ -46,6 +46,10 @@ namespace P9_RID
{
#include "p9_ringId.H"
}
+namespace CEN_RID
+{
+#include "cen_ringId.H"
+}
#include "p9_scan_compression.H"
#include "p9_infrastruct_help.H"
@@ -83,23 +87,27 @@ int get_ring_from_sbe_image( void* i_ringSection, // Ring section
char* o_ringName, // Name of ring
uint32_t i_dbgl ) // Debug option
{
- int rc = TOR_SUCCESS;
- uint32_t torMagic;
- uint32_t tor_slot_no = 0; // TOR slot number (within a TOR chiplet section)
- uint16_t dd_level_offset; // Local DD level offset, if any (wrt i_ringSection)
- uint32_t acc_offset = 0; // Accumulating offset to next TOR offset
- uint32_t ppe_offset = 0; // Local offset to where SBE PPE ring section starts
- uint32_t ppe_cplt_offset = 0; // Local offset to where the pool of chiplets starts
- uint32_t cplt_offset = 0; // Local offset to where a specific chiplet section starts
- uint16_t ring_offset = 0; // Local offset to where SBE ring container/block starts
- uint32_t ring_size = 0; // Size of whole ring container/block.
+ int rc = TOR_SUCCESS;
+ uint32_t torMagic = 0xffffffff;
+ ChipType_t chipType = INVALID_CHIP_TYPE;
+ uint32_t tor_slot_no = 0; // TOR slot number (within a TOR chiplet section)
+ uint16_t dd_level_offset; // Local DD level offset, if any (wrt i_ringSection)
+ uint32_t acc_offset = 0; // Accumulating offset to next TOR offset
+ uint32_t ppe_offset = 0; // Local offset to where SBE PPE ring section starts
+ uint32_t ppe_cplt_offset = 0; // Local offset to where the pool of chiplets starts
+ uint32_t cplt_offset = 0; // Local offset to where a specific chiplet section starts
+ uint16_t ring_offset = 0; // Local offset to where SBE ring container/block starts
+ uint32_t ring_size = 0; // Size of whole ring container/block.
RingVariantOrder* ring_variant_order;
- GenRingIdList* ring_id_list_common;
- GenRingIdList* ring_id_list_instance;
- CHIPLET_DATA* l_cpltData;
- uint8_t l_num_variant;
+ GenRingIdList* ring_id_list_common;
+ GenRingIdList* ring_id_list_instance;
+ ChipletData_t* l_cpltData;
+ uint8_t l_num_variant;
+ ChipletType_t numChiplets = 0;
+ const RingProperties_t* ringProperties;
torMagic = be32toh( ((TorHeader_t*)i_ringSection)->magic );
+ chipType = ((TorHeader_t*)i_ringSection)->chipType;
// Calculate the offset (wrt start of ringSection) to the SBE PPE
// ring section. This offset, ppe_offset, will point to the
@@ -109,13 +117,25 @@ int get_ring_from_sbe_image( void* i_ringSection, // Ring section
dd_level_offset = i_ddLevelOffset;
ppe_offset = *(uint32_t*)((uint8_t*)i_ringSection + dd_level_offset);
ppe_offset = be32toh(ppe_offset);
+ numChiplets = P9_RID::SBE_NOOF_CHIPLETS;
+ ringProperties = &P9_RID::RING_PROPERTIES[0];
}
else if (torMagic == TOR_MAGIC_SBE ||
- torMagic == TOR_MAGIC_OVRD ||
+ (torMagic == TOR_MAGIC_OVRD && (chipType == CT_P9N || chipType == CT_P9C)) ||
torMagic == TOR_MAGIC_OVLY)
{
ppe_offset = 0;
dd_level_offset = 0;
+ numChiplets = P9_RID::SBE_NOOF_CHIPLETS;
+ ringProperties = &P9_RID::RING_PROPERTIES[0];
+ }
+ else if (torMagic == TOR_MAGIC_CEN ||
+ (torMagic == TOR_MAGIC_OVRD && chipType == CT_CEN))
+ {
+ ppe_offset = 0;
+ dd_level_offset = 0;
+ numChiplets = CEN_RID::CEN_NOOF_CHIPLETS;
+ ringProperties = &CEN_RID::RING_PROPERTIES[0];
}
else
{
@@ -129,17 +149,31 @@ int get_ring_from_sbe_image( void* i_ringSection, // Ring section
ppe_cplt_offset = ppe_offset + sizeof(TorHeader_t);
// Looper for each SBE chiplet
- for (ChipletType_t iCplt = 0; iCplt < P9_RID::SBE_NOOF_CHIPLETS; iCplt++)
+ for (ChipletType_t iCplt = 0; iCplt < numChiplets; iCplt++)
{
- P9_RID::p9_ringid_get_chiplet_properties(
- iCplt,
- &l_cpltData,
- &ring_id_list_common,
- &ring_id_list_instance,
- &ring_variant_order,
- &l_num_variant);
-
- if (!ring_id_list_common)
+ if (torMagic == TOR_MAGIC_CEN ||
+ (torMagic == TOR_MAGIC_OVRD && chipType == CT_CEN))
+ {
+ CEN_RID::ringid_get_chiplet_properties(
+ iCplt,
+ &l_cpltData,
+ &ring_id_list_common,
+ &ring_id_list_instance,
+ &ring_variant_order,
+ &l_num_variant);
+ }
+ else
+ {
+ P9_RID::ringid_get_chiplet_properties(
+ iCplt,
+ &l_cpltData,
+ &ring_id_list_common,
+ &ring_id_list_instance,
+ &ring_variant_order,
+ &l_num_variant);
+ }
+
+ if (!ring_id_list_common && !ring_id_list_instance)
{
MY_ERR("Chiplet=%d is not valid for SBE. \n", iCplt);
return TOR_INVALID_CHIPLET;
@@ -171,12 +205,12 @@ int get_ring_from_sbe_image( void* i_ringSection, // Ring section
}
if ( ( strcmp( (ring_id_list_common + i)->ringName,
- P9_RID::RING_PROPERTIES[i_ringId].iv_name) == 0 ) &&
+ ringProperties[i_ringId].iv_name) == 0 ) &&
( i_RingVariant == ring_variant_order->variant[iVariant] ||
torMagic == TOR_MAGIC_OVRD ||
torMagic == TOR_MAGIC_OVLY ) )
{
- strcpy(o_ringName, P9_RID::RING_PROPERTIES[i_ringId].iv_name);
+ strcpy(o_ringName, ringProperties[i_ringId].iv_name);
acc_offset = dd_level_offset +
ppe_cplt_offset +
iCplt * sizeof(TorPpeBlock_t);
@@ -287,159 +321,163 @@ int get_ring_from_sbe_image( void* i_ringSection, // Ring section
//
// Sequentially walk the TOR slots within the chiplet's INSTANCE section
//
- tor_slot_no = 0;
-
- for ( uint8_t i = (ring_id_list_instance + 0)->instanceIdMin;
- i < (ring_id_list_instance + 0)->instanceIdMax + 1 ; i++ )
+ if (ring_id_list_instance)
{
- for (uint8_t j = 0; j < l_cpltData->iv_num_instance_rings; j++)
+
+ tor_slot_no = 0;
+
+ for ( uint8_t i = (ring_id_list_instance + 0)->instanceIdMin;
+ i < (ring_id_list_instance + 0)->instanceIdMax + 1 ; i++ )
{
- for (uint8_t iVariant = 0; iVariant < l_num_variant ; iVariant++)
+ for (uint8_t j = 0; j < l_cpltData->iv_num_instance_rings; j++)
{
- if (i_dbgl > 2)
+ for (uint8_t iVariant = 0; iVariant < l_num_variant ; iVariant++)
{
- MY_INF(" Ring name %s Cplt instance ring id %d Variant id %d Instance id %d\n",
- (ring_id_list_instance + j)->ringName, j, iVariant, i);
- }
+ if (i_dbgl > 2)
+ {
+ MY_INF(" Ring name %s Cplt instance ring id %d Variant id %d Instance id %d\n",
+ (ring_id_list_instance + j)->ringName, j, iVariant, i);
+ }
- if (strcmp( (ring_id_list_instance + j)->ringName,
- P9_RID::RING_PROPERTIES[i_ringId].iv_name) == 0)
- {
- if ( io_instanceId >= (ring_id_list_instance + 0)->instanceIdMin
- && io_instanceId <= (ring_id_list_instance + 0)->instanceIdMax )
+ if (strcmp( (ring_id_list_instance + j)->ringName,
+ ringProperties[i_ringId].iv_name) == 0)
{
- if (i == io_instanceId && i_RingVariant == ring_variant_order->variant[iVariant])
+ if ( io_instanceId >= (ring_id_list_instance + 0)->instanceIdMin
+ && io_instanceId <= (ring_id_list_instance + 0)->instanceIdMax )
{
- strcpy(o_ringName, P9_RID::RING_PROPERTIES[i_ringId].iv_name);
-
- acc_offset = dd_level_offset +
- ppe_cplt_offset +
- iCplt * sizeof(TorPpeBlock_t) +
- sizeof(cplt_offset); // Jump to instance offset
- cplt_offset = *(uint32_t*)( (uint8_t*)i_ringSection +
- acc_offset );
- cplt_offset = be32toh(cplt_offset);
-
- acc_offset = cplt_offset +
- dd_level_offset +
- ppe_cplt_offset;
- ring_offset = *(uint16_t*)( (uint8_t*)i_ringSection +
- acc_offset +
- tor_slot_no * sizeof(ring_offset) );
- ring_offset = be16toh(ring_offset);
-
- if (i_RingBlockType == GET_SINGLE_RING)
+ if (i == io_instanceId && i_RingVariant == ring_variant_order->variant[iVariant])
{
+ strcpy(o_ringName, ringProperties[i_ringId].iv_name);
+
acc_offset = dd_level_offset +
ppe_cplt_offset +
- cplt_offset +
- ring_offset;
- ring_size = be16toh( ((CompressedScanData*)
- ((uint8_t*)i_ringSection +
- acc_offset))->iv_size );
- io_RingType = INSTANCE_RING;
-
- if (ring_offset)
+ iCplt * sizeof(TorPpeBlock_t) +
+ sizeof(cplt_offset); // Jump to instance offset
+ cplt_offset = *(uint32_t*)( (uint8_t*)i_ringSection +
+ acc_offset );
+ cplt_offset = be32toh(cplt_offset);
+
+ acc_offset = cplt_offset +
+ dd_level_offset +
+ ppe_cplt_offset;
+ ring_offset = *(uint16_t*)( (uint8_t*)i_ringSection +
+ acc_offset +
+ tor_slot_no * sizeof(ring_offset) );
+ ring_offset = be16toh(ring_offset);
+
+ if (i_RingBlockType == GET_SINGLE_RING)
{
- if (io_ringBlockSize == 0)
+ acc_offset = dd_level_offset +
+ ppe_cplt_offset +
+ cplt_offset +
+ ring_offset;
+ ring_size = be16toh( ((CompressedScanData*)
+ ((uint8_t*)i_ringSection +
+ acc_offset))->iv_size );
+ io_RingType = INSTANCE_RING;
+
+ if (ring_offset)
{
+ if (io_ringBlockSize == 0)
+ {
+ if (i_dbgl > 0)
+ {
+ MY_INF("\tio_ringBlockSize is zero. Returning required size.\n");
+ }
+
+ io_ringBlockSize = ring_size;
+ return 0;
+ }
+
+ if (io_ringBlockSize < ring_size)
+ {
+ MY_ERR("\tio_ringBlockSize is less than required size.\n");
+ return TOR_BUFFER_TOO_SMALL;
+ }
+
if (i_dbgl > 0)
{
- MY_INF("\tio_ringBlockSize is zero. Returning required size.\n");
+ MY_INF(" ring container of %s is found in the SBE image container \n",
+ o_ringName);
}
- io_ringBlockSize = ring_size;
- return 0;
- }
+ memcpy( (uint8_t*)(*io_ringBlockPtr), (uint8_t*)i_ringSection + acc_offset,
+ (size_t)ring_size);
- if (io_ringBlockSize < ring_size)
- {
- MY_ERR("\tio_ringBlockSize is less than required size.\n");
- return TOR_BUFFER_TOO_SMALL;
- }
+ io_ringBlockSize = ring_size;
- if (i_dbgl > 0)
- {
- MY_INF(" ring container of %s is found in the SBE image container \n",
- o_ringName);
- }
+ if (i_dbgl > 0)
+ {
+ MY_INF(" After get_ring_from_sbe_image Size %d \n", io_ringBlockSize);
+ }
- memcpy( (uint8_t*)(*io_ringBlockPtr), (uint8_t*)i_ringSection + acc_offset,
- (size_t)ring_size);
+ rc = TOR_RING_FOUND;
+ }
+ else
+ {
+ if (i_dbgl > 0)
+ {
+ MY_INF(" Ring %s not found in SBE section \n", o_ringName);
+ }
- io_ringBlockSize = ring_size;
+ rc = TOR_RING_NOT_FOUND;
+ }
if (i_dbgl > 0)
{
- MY_INF(" After get_ring_from_sbe_image Size %d \n", io_ringBlockSize);
+ MY_INF(" Hex details (SBE) for Chiplet #%d: \n"
+ " DD number section's offset to DD level section = 0x%08x \n"
+ " DD level section's offset to PpeType = 0x%08x \n"
+ " PpeType section's offset to chiplet = 0x%08x \n"
+ " Chiplet section's offset to RS4 header = 0x%08x \n"
+ " Full offset to RS4 header = 0x%08x \n"
+ " Ring size = 0x%08x \n",
+ i, dd_level_offset, ppe_cplt_offset, cplt_offset, ring_offset, acc_offset, ring_size);
}
- rc = TOR_RING_FOUND;
+ return rc;
}
- else
+ else if (i_RingBlockType == PUT_SINGLE_RING)
{
- if (i_dbgl > 0)
+ if (ring_offset)
{
- MY_INF(" Ring %s not found in SBE section \n", o_ringName);
+ MY_ERR("Ring container is already present in the SBE section \n");
+ return TOR_RING_AVAILABLE_IN_RINGSECTION;
}
- rc = TOR_RING_NOT_FOUND;
- }
+ // Special [mis]use of io_ringBlockPtr and io_ringBlockSize:
+ // Put location of chiplet's instance section into ringBlockPtr
+ memcpy( (uint8_t*)(*io_ringBlockPtr), &acc_offset, sizeof(acc_offset));
+ // Put location of ring_offset slot into ringBlockSize
+ io_ringBlockSize = acc_offset + (tor_slot_no * sizeof(ring_offset));
- if (i_dbgl > 0)
- {
- MY_INF(" Hex details (SBE) for Chiplet #%d: \n"
- " DD number section's offset to DD level section = 0x%08x \n"
- " DD level section's offset to PpeType = 0x%08x \n"
- " PpeType section's offset to chiplet = 0x%08x \n"
- " Chiplet section's offset to RS4 header = 0x%08x \n"
- " Full offset to RS4 header = 0x%08x \n"
- " Ring size = 0x%08x \n",
- i, dd_level_offset, ppe_cplt_offset, cplt_offset, ring_offset, acc_offset, ring_size);
+ return TOR_RING_FOUND;
}
-
- return rc;
- }
- else if (i_RingBlockType == PUT_SINGLE_RING)
- {
- if (ring_offset)
+ else
{
- MY_ERR("Ring container is already present in the SBE section \n");
- return TOR_RING_AVAILABLE_IN_RINGSECTION;
+ MY_ERR("Ring block type (i_RingBlockType=%d) is not supported for SBE \n", i_RingBlockType);
+ return TOR_INVALID_RING_BLOCK_TYPE;
}
-
- // Special [mis]use of io_ringBlockPtr and io_ringBlockSize:
- // Put location of chiplet's instance section into ringBlockPtr
- memcpy( (uint8_t*)(*io_ringBlockPtr), &acc_offset, sizeof(acc_offset));
- // Put location of ring_offset slot into ringBlockSize
- io_ringBlockSize = acc_offset + (tor_slot_no * sizeof(ring_offset));
-
- return TOR_RING_FOUND;
}
- else
+ }
+ else
+ {
+ if (i_dbgl > 0)
{
- MY_ERR("Ring block type (i_RingBlockType=%d) is not supported for SBE \n", i_RingBlockType);
- return TOR_INVALID_RING_BLOCK_TYPE;
+ MY_INF(" SBE ring instance ID %d is invalid, Valid ID is from %d to %d \n",
+ io_instanceId, (ring_id_list_instance + 0)->instanceIdMin,
+ (ring_id_list_instance + 0)->instanceIdMax);
}
+
+ return TOR_INVALID_INSTANCE_ID;
}
}
- else
- {
- if (i_dbgl > 0)
- {
- MY_INF(" SBE ring instance ID %d is invalid, Valid ID is from %d to %d \n",
- io_instanceId, (ring_id_list_instance + 0)->instanceIdMin,
- (ring_id_list_instance + 0)->instanceIdMax);
- }
- return TOR_INVALID_INSTANCE_ID;
- }
+ tor_slot_no++;
}
-
- tor_slot_no++;
}
}
- }
+ } // if (ring_id_list_instance)
}
if (i_dbgl > 0)
@@ -510,13 +548,13 @@ int get_ring_from_sgpe_image ( void* i_ringSection, // Ring sectio
GenRingIdList* ring_id_list_common = NULL;
GenRingIdList* ring_id_list_instance = NULL;
- uint8_t l_num_variant = (uint8_t)sizeof(P9_RID::EQ::RingVariants) / sizeof(uint16_t);
+ uint8_t l_num_variant = P9_RID::EQ::g_chipletData.iv_num_ring_variants;
ring_id_list_common = (GenRingIdList*) P9_RID::EQ::RING_ID_LIST_COMMON;
ring_id_list_instance = (GenRingIdList*) P9_RID::EQ::RING_ID_LIST_INSTANCE;
uint32_t local = 0;
- for (uint8_t i = 0; i < P9_RID::EQ::g_eqData.iv_num_common_rings ; i++)
+ for (uint8_t i = 0; i < P9_RID::EQ::g_chipletData.iv_num_common_rings ; i++)
{
for (uint8_t j = 0; j < l_num_variant ; j++)
{
@@ -628,7 +666,7 @@ int get_ring_from_sgpe_image ( void* i_ringSection, // Ring sectio
for(uint8_t i = (ring_id_list_instance + 0)->instanceIdMin;
i < (ring_id_list_instance + 0)->instanceIdMax + 1 ; i++)
{
- for (uint8_t j = 0; j < P9_RID::EQ::g_eqData.iv_num_instance_rings; j++)
+ for (uint8_t j = 0; j < P9_RID::EQ::g_chipletData.iv_num_instance_rings; j++)
{
for(uint8_t k = 0; k < l_num_variant ; k++)
{
@@ -817,13 +855,13 @@ int get_ring_from_cme_image ( void* i_ringSection, // Ring section
GenRingIdList* ring_id_list_common = NULL;
GenRingIdList* ring_id_list_instance = NULL;
- uint8_t l_num_variant = (uint8_t)sizeof(P9_RID::EC::RingVariants) / sizeof(uint16_t);
+ uint8_t l_num_variant = P9_RID::EC::g_chipletData.iv_num_ring_variants;
ring_id_list_common = (GenRingIdList*) P9_RID::EC::RING_ID_LIST_COMMON;
ring_id_list_instance = (GenRingIdList*) P9_RID::EC::RING_ID_LIST_INSTANCE;
uint32_t local = 0;
- for (uint8_t i = 0; i < P9_RID::EC::g_ecData.iv_num_common_rings ; i++)
+ for (uint8_t i = 0; i < P9_RID::EC::g_chipletData.iv_num_common_rings ; i++)
{
for (uint8_t j = 0; j < l_num_variant ; j++)
{
@@ -935,7 +973,7 @@ int get_ring_from_cme_image ( void* i_ringSection, // Ring section
i <= (ring_id_list_instance + 0)->instanceIdMax;
i++ )
{
- for (uint8_t j = 0; j < P9_RID::EC::g_ecData.iv_num_instance_rings; j++)
+ for (uint8_t j = 0; j < P9_RID::EC::g_chipletData.iv_num_instance_rings; j++)
{
for (uint8_t k = 0; k < l_num_variant ; k++)
{
@@ -1162,7 +1200,8 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
}
else if ( torMagic == TOR_MAGIC_SBE ||
torMagic == TOR_MAGIC_OVRD ||
- torMagic == TOR_MAGIC_OVLY )
+ torMagic == TOR_MAGIC_OVLY ||
+ torMagic == TOR_MAGIC_CEN )
{
if ( i_PpeType == PT_CME || i_PpeType == PT_SGPE
|| i_RingBlockType == GET_DD_LEVEL_RINGS
@@ -1247,7 +1286,7 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
io_ringBlockSize = ddBlockSize;
- return TOR_RING_BLOCKS_FOUND;
+ return TOR_RING_FOUND;
}
else if (i_RingBlockType == GET_PPE_LEVEL_RINGS)
{
@@ -1320,7 +1359,7 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
(size_t)l_ppe_size);
io_ringBlockSize = l_ppe_size;
- return TOR_RING_BLOCKS_FOUND;
+ return TOR_RING_FOUND;
}
else if ( i_RingBlockType == GET_SINGLE_RING ||
i_RingBlockType == PUT_SINGLE_RING )
@@ -1329,7 +1368,8 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
( torMagic == TOR_MAGIC_HW ||
torMagic == TOR_MAGIC_SBE ||
torMagic == TOR_MAGIC_OVRD ||
- torMagic == TOR_MAGIC_OVLY ) )
+ torMagic == TOR_MAGIC_OVLY ||
+ torMagic == TOR_MAGIC_CEN ) )
{
rc = get_ring_from_sbe_image( i_ringSection,
i_ringId,
@@ -1360,7 +1400,7 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
io_ringBlockSize );
}
- return TOR_RING_BLOCKS_FOUND;
+ return TOR_RING_FOUND;
}
}
else if ( i_PpeType == PT_CME &&
@@ -1426,7 +1466,7 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
io_ringBlockSize );
}
- return TOR_RING_BLOCKS_FOUND;
+ return TOR_RING_FOUND;
}
}
else if ( i_PpeType == PT_SGPE &&
@@ -1492,7 +1532,7 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr
io_ringBlockSize );
}
- return TOR_RING_BLOCKS_FOUND;
+ return TOR_RING_FOUND;
}
}
else
diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.H b/src/import/chips/p9/utils/imageProcs/p9_tor.H
index 821362f59..ec6e644ac 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_tor.H
+++ b/src/import/chips/p9/utils/imageProcs/p9_tor.H
@@ -98,7 +98,6 @@ typedef enum TorOffsetSize
#define TOR_SUCCESS 0
#define TOR_RING_FOUND 0
-#define TOR_RING_BLOCKS_FOUND 0
#define TOR_RING_NOT_FOUND 1
#define TOR_AMBIGUOUS_API_PARMS 2
#define TOR_SECTION_NOT_FOUND 3
diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.mk b/src/import/chips/p9/utils/imageProcs/p9_tor.mk
index 6e59c38f4..a9ef8b839 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_tor.mk
+++ b/src/import/chips/p9/utils/imageProcs/p9_tor.mk
@@ -24,7 +24,8 @@
# IBM_PROLOG_END_TAG
PROCEDURE=p9_tor
lib$(PROCEDURE)_DEPLIBS += p9_ringId
-$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/xip)
+lib$(PROCEDURE)_DEPLIBS += cen_ringId
+$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/centaur/utils/imageProcs)
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/common/utils/imageProcs)
$(call BUILD_PROCEDURE)
diff --git a/src/usr/isteps/pm/pm.mk b/src/usr/isteps/pm/pm.mk
index 147d9e851..b6ea71771 100644
--- a/src/usr/isteps/pm/pm.mk
+++ b/src/usr/isteps/pm/pm.mk
@@ -33,6 +33,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/common/pmlib/include/registers/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/utils/stopreg/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/
+EXTRAINCDIR += ${ROOTPATH}/src/import/chips/centaur/utils/imageProcs/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/
HWP_PM_PATH += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm
@@ -44,9 +45,9 @@ EXTRAINCDIR += ${HWP_ACC_PATH}
HWP_XIP_PATH += ${ROOTPATH}/src/import/chips/p9/xip
EXTRAINCDIR += ${HWP_XIP_PATH}
HWP_IMAGEPROCS_PATH += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/
+HWP_CEN_IMAGEPROCS_PATH += ${ROOTPATH}/src/import/chips/centaur/utils/imageProcs/
HWP_STOPUTIL_PATH += ${ROOTPATH}/src/import/chips/p9/procedures/utils/stopreg/
EXTRAINCDIR += ${HWP_STOPUTIL_PATH}
-EXTRAINCDIR += ${HWP_IMAGEPROCS_PATH}
NEST_UTIL_PATH += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/nest
EXTRAINCDIR += ${NEST_UTIL_PATH}
@@ -66,7 +67,7 @@ OBJS += occCheckstop.o
## NOTE: add a new directory onto the vpaths when you add a new HWP
VPATH += ${HWP_PM_PATH} ${HWP_CUST_PATH} ${HWP_ACC_PATH}
VPATH += ${HWP_XIP_PATH} ${HWP_IMAGEPROCS_PATH}
-VPATH += ${HWP_XIP_PATH} ${HWP_IMAGEPROCS_PATH} ${HWP_STOPUTIL_PATH}
+VPATH += ${HWP_XIP_PATH} ${HWP_IMAGEPROCS_PATH} ${HWP_CEN_IMAGEPROCS_PATH} ${HWP_STOPUTIL_PATH}
VPATH += ${NEST_UTIL_PATH}
# TODO RTC: 164237
@@ -105,6 +106,7 @@ include ${HWP_IMAGEPROCS_PATH}/p9_dd_container.mk
include ${HWP_IMAGEPROCS_PATH}/p9_tor.mk
include ${HWP_IMAGEPROCS_PATH}/p9_ring_identification.mk
include ${HWP_IMAGEPROCS_PATH}/p9_ringId.mk
+include ${HWP_CEN_IMAGEPROCS_PATH}/cen_ringId.mk
include ${HWP_STOPUTIL_PATH}/p9_stop_util.mk
include ${HWP_STOPUTIL_PATH}/p9_stop_api.mk
include ${HWP_IMAGEPROCS_PATH}/p9_scan_compression.mk
diff --git a/src/usr/sbe/makefile b/src/usr/sbe/makefile
index 1f072046f..f484185e2 100644
--- a/src/usr/sbe/makefile
+++ b/src/usr/sbe/makefile
@@ -32,6 +32,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/include/usr/fapi2/
## pointer to common HWP files
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/common/include/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/
+EXTRAINCDIR += ${ROOTPATH}/src/import/chips/centaur/utils/imageProcs/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/
EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/utils/stopreg/
@@ -42,7 +43,7 @@ EXTRAINCDIR += ${HWP_ACCESSORS_PATH}/
HWP_XIP_PATH += ${ROOTPATH}/src/import/chips/p9/xip
EXTRAINCDIR += ${HWP_XIP_PATH}/
UTILS_PATH += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs
-EXTRAINCDIR += ${UTILS_PATH}/
+CEN_UTILS_PATH += ${ROOTPATH}/src/import/chips/centaur/utils/imageProcs
OBJS += sbe_update.o
@@ -50,7 +51,7 @@ SUBDIRS += test.d
## NOTE: add a new directory onto the vpaths when you add a new HWP
VPATH += ${HWP_CUSTOMIZE_PATH} ${HWP_ACCESSORS_PATH} ${HWP_XIP_PATH}
-VPATH += ${UTILS_PATH}
+VPATH += ${UTILS_PATH} ${CEN_UTILS_PATH}
include ${ROOTPATH}/procedure.rules.mk
@@ -62,6 +63,7 @@ include ${HWP_ACCESSORS_PATH}/p9_mvpd_ring_funcs.mk
include ${HWP_XIP_PATH}/p9_xip_image.mk
include ${UTILS_PATH}/p9_ring_identification.mk
include ${UTILS_PATH}/p9_ringId.mk
+include ${CEN_UTILS_PATH}/cen_ringId.mk
include ${UTILS_PATH}/p9_scan_compression.mk
include ${UTILS_PATH}/p9_tor.mk
OpenPOWER on IntegriCloud