summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/utils
diff options
context:
space:
mode:
authorClaus Michael Olsen <cmolsen@us.ibm.com>2018-04-09 13:48:56 -0500
committerhostboot <hostboot@us.ibm.com>2018-04-26 12:17:20 -0500
commit2d64cd2a509bec43e61a03249c1e0148cd0dd78f (patch)
treebc2f671d02d286745b2eca83371aa703bf62d925 /import/chips/p9/utils
parent181cb6d75e77c924f4a141e093086a1231107307 (diff)
downloadtalos-hcode-2d64cd2a509bec43e61a03249c1e0148cd0dd78f.tar.gz
talos-hcode-2d64cd2a509bec43e61a03249c1e0148cd0dd78f.zip
Risk level 3/4/5 support: Step 1 - backward compatibility and v6 image
- Introducing RV_RL3/4/5 ring variant (RV) support for EC/EQ chiplets. - Dropping RV support for all chiplet's instance rings which saves 456 Quad bytes and 58 Nest bytes in Seeprom's TOR slots (compared to master). - Each additional risk level adds 144 bytes in Seeprom TOR slots. - Various changes to data names associated with ring variants to clarify that the notion of ring variants is now specific only to Common rings while Instance rings only have the BASE variant. - Also, removed backwards compatibility to TOR v5, i.e. from before we introduced RL2 in february. Assumption is that all images/drivers used in fips910/920 and OP920 are TOR v6. - This commit produces a TOR v6 image to ensure EKB FSP CI success. Key_Cronus_Test=XIP_REGRESS Change-Id: Icfcb1e68fd74a10ffc48ee7a5da528a8042ef3b1 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56973 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Kahn C. Evans <kahnevan@us.ibm.com> Reviewed-by: James N. Klazynski <jklazyns@us.ibm.com> Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Diffstat (limited to 'import/chips/p9/utils')
-rw-r--r--import/chips/p9/utils/imageProcs/p9_ringId.C72
-rw-r--r--import/chips/p9/utils/imageProcs/p9_ringId.H34
-rw-r--r--import/chips/p9/utils/imageProcs/p9_tor.C16
3 files changed, 67 insertions, 55 deletions
diff --git a/import/chips/p9/utils/imageProcs/p9_ringId.C b/import/chips/p9/utils/imageProcs/p9_ringId.C
index 0de24f78..76f4c978 100644
--- a/import/chips/p9/utils/imageProcs/p9_ringId.C
+++ b/import/chips/p9/utils/imageProcs/p9_ringId.C
@@ -61,7 +61,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"perv_repr" , 0x13, 0x01, 0x01, VPD_RING , 0x01034006},
{"occ_repr" , 0x14, 0x01, 0x01, VPD_RING , 0x01030806},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -85,7 +85,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"n0_nx_repr" , 0x0a, 0x02, 0x02, VPD_RING , 0x02032006},
{"n0_cxa0_repr" , 0x0b, 0x02, 0x02, VPD_RING , 0x02031006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT};
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -113,7 +113,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"n1_ioo1_repr" , 0x0e, 0x03, 0x03, VPD_RING , 0x03030406},
{"n1_mcs23_repr" , 0x0f, 0x03, 0x03, VPD_RING , 0x03030206},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT};
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -137,7 +137,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"n2_cxa1_repr" , 0x0a, 0x04, 0x04, VPD_RING , 0x04032006},
{"n2_psi_repr" , 0x0b, 0x04, 0x04, VPD_RING , 0x04030206},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -162,7 +162,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"n3_mcs01_repr" , 0x0b, 0x05, 0x05, VPD_RING , 0x05030106},
{"n3_np_repr" , 0x0c, 0x05, 0x05, VPD_RING , 0x05030806},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -193,7 +193,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"xb_io1_repr" , 0x15, 0x06, 0x06, VPD_RING , 0x06031106},
{"xb_io2_repr" , 0x16, 0x06, 0x06, VPD_RING , 0x06030886},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -224,7 +224,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"mc_iom01_repr" , 0x11, 0x07, 0x08, VPD_RING , 0x07031006},
{"mc_iom23_repr" , 0x12, 0x07, 0x08, VPD_RING , 0x07030806},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -244,7 +244,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"ob0_repr" , 0x07, 0x09, 0x09, VPD_RING , 0x09037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -264,7 +264,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"ob1_repr" , 0x07, 0x0a, 0x0a, VPD_RING , 0x0A037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -284,7 +284,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"ob2_repr" , 0x07, 0x0b, 0x0b, VPD_RING , 0x0B037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -304,7 +304,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"ob3_repr" , 0x07, 0x0c, 0x0c, VPD_RING , 0x0C037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -322,7 +322,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"pci0_repr" , 0x05, 0x0d, 0x0d, VPD_RING , 0x0D037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -340,7 +340,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"pci1_repr" , 0x05, 0x0e, 0x0e, VPD_RING , 0x0E037806},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -358,7 +358,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{"pci2_repr" , 0x05, 0x0F, 0x0F, VPD_RING , 0x0F037C06},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT };
};
@@ -441,7 +441,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{"ex_l3_refr_repr" , 0x45, 0x10, 0x1b, VPD_RING , 0x10030046},
{"ex_l3_refr_time" , 0x46, 0x10, 0x1b, VPD_RING , 0x10030047},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2 };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2, RV_RL3, RV_RL4, RV_RL5 };
};
@@ -460,7 +460,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
{ "ec_repr" , 0x05, 0x20, 0x37, VPD_RING , 0x20037006},
};
-const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2 };
+const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2, RV_RL3, RV_RL4, RV_RL5 };
};
@@ -480,7 +480,7 @@ void P9_RID::ringid_get_chiplet_properties(
GenRingIdList** o_ringComm,
GenRingIdList** o_ringInst,
RingVariantOrder** o_varOrder,
- uint8_t* o_varNumb)
+ uint8_t* o_numVariants)
{
switch (i_chipletType)
{
@@ -489,7 +489,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case N0_TYPE :
@@ -497,7 +497,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case N1_TYPE :
@@ -505,7 +505,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case N2_TYPE :
@@ -513,7 +513,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case N3_TYPE :
@@ -521,7 +521,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case XB_TYPE :
@@ -529,7 +529,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case MC_TYPE :
@@ -537,7 +537,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case OB0_TYPE :
@@ -545,7 +545,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case OB1_TYPE :
@@ -553,7 +553,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case OB2_TYPE :
@@ -561,7 +561,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case OB3_TYPE :
@@ -569,7 +569,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case PCI0_TYPE :
@@ -577,7 +577,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case PCI1_TYPE :
@@ -585,7 +585,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case PCI2_TYPE :
@@ -593,7 +593,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case EQ_TYPE :
@@ -601,7 +601,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
case EC_TYPE :
@@ -609,7 +609,7 @@ void P9_RID::ringid_get_chiplet_properties(
*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 = (*(*o_cpltData)).iv_num_ring_variants;
+ *o_numVariants = (*(*o_cpltData)).iv_num_common_ring_variants;
break;
default :
@@ -617,7 +617,7 @@ void P9_RID::ringid_get_chiplet_properties(
*o_ringComm = NULL;
*o_ringInst = NULL;
*o_varOrder = NULL;
- *o_varNumb = 0;
+ *o_numVariants = 0;
break;
}
}
@@ -627,12 +627,12 @@ GenRingIdList* P9_RID::_ringid_get_ring_list(RingId_t i_ringId)
ChipletData_t* l_cpltData;
GenRingIdList* l_ringList[2]; // 0: common, 1: instance
RingVariantOrder* l_varOrder;
- uint8_t l_varNumb;
+ uint8_t l_numVariants;
int i, j, n;
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);
+ &l_cpltData, &l_ringList[0], &l_ringList[1], &l_varOrder, &l_numVariants);
if (!l_ringList[0])
{
diff --git a/import/chips/p9/utils/imageProcs/p9_ringId.H b/import/chips/p9/utils/imageProcs/p9_ringId.H
index 4c742c60..b4fb4e23 100644
--- a/import/chips/p9/utils/imageProcs/p9_ringId.H
+++ b/import/chips/p9/utils/imageProcs/p9_ringId.H
@@ -214,7 +214,7 @@ static const ChipletData_t g_chipletData =
19, // 19 common rings for pervasive chiplet
2, // 2 instance specific rings for pervasive chiplet
2,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace PERV
@@ -244,7 +244,7 @@ static const ChipletData_t g_chipletData =
9, // 9 common rings for N0 Chiplet
3, // 3 instance specific rings for N0 chiplet
3,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -278,7 +278,7 @@ static const ChipletData_t g_chipletData =
12, // 12 common rings for N1 Chiplet
4, // 4 instance specific rings for N1 chiplet
4,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -308,7 +308,7 @@ static const ChipletData_t g_chipletData =
9, // 9 common rings for N2 Chiplet
3, // 3 instance specific rings for N2 chiplet
3,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -339,7 +339,7 @@ static const ChipletData_t g_chipletData =
10,// 10 common rings for N3 Chiplet
3, // 3 instance specific rings for N3 chiplet
3,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -376,7 +376,7 @@ static const ChipletData_t g_chipletData =
15, // 15 common rings for X-Bus Chiplet
4, // 4 instance specific rings for XB chiplet
4,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace XB
@@ -414,7 +414,7 @@ static const ChipletData_t g_chipletData =
16, // 16 common rings for MC Chiplet
3, // 3 instance specific rings for each MC instance
3,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace MC
@@ -441,7 +441,7 @@ static const ChipletData_t g_chipletData =
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace OB0
@@ -468,7 +468,7 @@ static const ChipletData_t g_chipletData =
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace OB1
@@ -496,7 +496,7 @@ static const ChipletData_t g_chipletData =
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace OB2
@@ -523,7 +523,7 @@ static const ChipletData_t g_chipletData =
7, // 7 common rings for OB Chiplet
1, // 1 instance specific rings for each OB chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
}; // end of namespace OB2
@@ -547,7 +547,7 @@ static const ChipletData_t g_chipletData =
5, // 5 common rings for PCI0 chiplet
1, // 1 instance specific rings for PCI0 chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -571,7 +571,7 @@ static const ChipletData_t g_chipletData =
5, // 5 common rings for PCI1 chiplet
1, // 1 instance specific rings for PCI1 chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -595,7 +595,7 @@ static const ChipletData_t g_chipletData =
5, // 5 common rings for PCI2 chiplet
1, // 1 instance specific rings for PCI2 chiplet
1,
- 2, // 2 ring variants: BASE, RL
+ 2, // 2 common ring variants: BASE, RL
};
};
@@ -686,7 +686,7 @@ static const ChipletData_t g_chipletData =
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
- 4, // 4 ring variants: BASE, CC, RL, RL2
+ 7, // 7 common ring variants: BASE, CC, RL, RL2/3/4/5
};
}; // end of namespace EQ
@@ -711,7 +711,7 @@ static const ChipletData_t g_chipletData =
6, // 6 common rings for Core chiplet
1, // 1 instance specific ring for each Core chiplet
1,
- 4, // 4 ring variants: BASE, CC, RL, RL2
+ 7, // 7 common ring variants: BASE, CC, RL, RL2/3/4/5
};
}; // end of namespace EC
@@ -1257,7 +1257,7 @@ ringid_get_chiplet_properties(
GenRingIdList** o_ringComm,
GenRingIdList** o_ringInst,
RingVariantOrder** o_varOrder,
- uint8_t* o_varNumb);
+ uint8_t* o_numVariants);
// Returns properties of a ring as determined by ringId
GenRingIdList*
diff --git a/import/chips/p9/utils/imageProcs/p9_tor.C b/import/chips/p9/utils/imageProcs/p9_tor.C
index 40862d34..bdacb104 100644
--- a/import/chips/p9/utils/imageProcs/p9_tor.C
+++ b/import/chips/p9/utils/imageProcs/p9_tor.C
@@ -54,6 +54,7 @@ int get_ring_from_ring_section( void* i_ringSection, // Ring secti
uint8_t iInst, iRing, iVariant;
TorHeader_t* torHeader;
uint32_t torMagic;
+ uint8_t torVersion;
uint8_t chipType;
TorCpltBlock_t* cpltBlock;
TorCpltOffset_t cpltOffset; // Offset from ringSection to chiplet section
@@ -73,6 +74,7 @@ int get_ring_from_ring_section( void* i_ringSection, // Ring secti
torHeader = (TorHeader_t*)i_ringSection;
torMagic = be32toh(torHeader->magic);
+ torVersion = torHeader->version;
chipType = torHeader->chipType;
rc = ringid_get_noof_chiplets( chipType,
@@ -115,6 +117,16 @@ int get_ring_from_ring_section( void* i_ringSection, // Ring secti
numRings = bInstCase ? cpltData->iv_num_instance_rings : cpltData->iv_num_common_rings;
ringIdList = bInstCase ? ringIdListInstance : ringIdListCommon;
+ // Adjust number of variants according to TOR version of image
+ if (torVersion < 7)
+ {
+ // Nothing to do. Number of variants is the same for Common and Instance rings.
+ }
+ else
+ {
+ numVariants = bInstCase ? 1 : numVariants; // Only BASE variant for Instance rings
+ }
+
if (ringIdList) // Only proceed if chiplet has [Common/Instance] rings.
{
// Calc offset to chiplet's CMN or INST section, cpltOffset (steps 1-3)
@@ -142,8 +154,8 @@ int get_ring_from_ring_section( void* i_ringSection, // Ring secti
if ( strcmp( (ringIdList + iRing)->ringName,
ringProps[i_ringId].iv_name ) == 0 &&
( i_ringVariant == ringVariantOrder->variant[iVariant] ||
- numVariants == 1 ) && // If no variants, ignore Variant
- ( !bInstCase || ( bInstCase && iInst == io_instanceId) ) )
+ numVariants == 1 ) && // If no variants, ignore i_ringVariant and assume "BASE" ring
+ ( !bInstCase || ( bInstCase && iInst == io_instanceId ) ) )
{
strcpy(o_ringName, (ringIdList + iRing)->ringName);
OpenPOWER on IntegriCloud