summaryrefslogtreecommitdiffstats
path: root/src/hwpf
diff options
context:
space:
mode:
authorClaus Michael Olsen <cmolsen@us.ibm.com>2018-04-09 13:48:56 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2018-04-24 21:19:15 -0400
commit84cfeb2aef7acdb4ce7e7c758faf00b8c6a10fd7 (patch)
treeacf0c2bd3eafaec4241557b3fd7c7619f8f48b70 /src/hwpf
parentc0db49ee81188dbba099b77bd1247d3f09906a22 (diff)
downloadtalos-sbe-84cfeb2aef7acdb4ce7e7c758faf00b8c6a10fd7.tar.gz
talos-sbe-84cfeb2aef7acdb4ce7e7c758faf00b8c6a10fd7.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> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56982 Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/hwpf')
-rw-r--r--src/hwpf/plat_ring_traverse.C29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/hwpf/plat_ring_traverse.C b/src/hwpf/plat_ring_traverse.C
index 6fc31309..c8a3a6a1 100644
--- a/src/hwpf/plat_ring_traverse.C
+++ b/src/hwpf/plat_ring_traverse.C
@@ -38,6 +38,7 @@ const uint32_t RISK_LEVEL_ZERO = 0;
#define CACHE_CONTAINED_MODE_OFFSET_IN_TOR 1
#define RISK_LEVEL_MODE_OFFSET_IN_TOR 2
#define OVERRIDE_VARIANT_SIZE 1
+#define INSTANCE_VARIANT_SIZE 1 // TOR v7 specific
///
/// @brief This is a plat pecific (SBE Plat) function that locates the
@@ -340,9 +341,9 @@ fapi2::ReturnCode getRS4ImageFromTor(
case EQ_TYPE: // EQ - Quad 0 - Quad 5
l_chipletData = EQ::g_chipletData;
- if (l_torVersion < 6)
+ if (l_torVersion < 7)
{
- l_numVarAdjust = 1;
+ l_numVarAdjust = 3;
}
l_sectionOffset = l_sectionTOR->TOC_EQ_COMMON_RING;
@@ -358,9 +359,9 @@ fapi2::ReturnCode getRS4ImageFromTor(
case EC_TYPE: // EC - Core 0 - 23
l_chipletData = EC::g_chipletData;
- if (l_torVersion < 6)
+ if (l_torVersion < 7)
{
- l_numVarAdjust = 1;
+ l_numVarAdjust = 3;
}
l_sectionOffset = l_sectionTOR->TOC_EC_COMMON_RING;
@@ -385,9 +386,23 @@ fapi2::ReturnCode getRS4ImageFromTor(
{
break;
}
-
- l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE :
- (l_chipletData.iv_num_ring_variants - l_numVarAdjust);
+
+ // If TOR v7 image, adjust variant size according to Common vs Instance ring type
+ // since there is only BASE variant support for Instance (repr) rings in v7
+ if (l_torVersion < 7)
+ {
+ l_cpltRingVariantSz = (l_chipletData.iv_num_common_ring_variants - l_numVarAdjust);
+ }
+ else
+ {
+ l_cpltRingVariantSz = (l_ringType == INSTANCE_RING) ?
+ INSTANCE_VARIANT_SIZE :
+ (l_chipletData.iv_num_common_ring_variants - l_numVarAdjust);
+ }
+
+ // Subsequently, re-adjust variant size according to whether override or flush ring
+ // (Note, no TOR version dependency here.)
+ l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : l_cpltRingVariantSz;
FAPI_INF("l_sectionOffset %08x", l_sectionOffset);
// Determine the section TOR address for the ring
OpenPOWER on IntegriCloud