summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/utils
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2016-06-22 17:02:14 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-30 18:08:54 -0400
commite436c6b446ac80fdf050539edc746e0082219b86 (patch)
tree7e0e9ffde270ff60a7ca9ec3be6dccc3957eac08 /src/import/chips/p9/utils
parent617c159f5cd0838bf7a805ec9f50c91e1de00d35 (diff)
downloadtalos-hostboot-e436c6b446ac80fdf050539edc746e0082219b86.tar.gz
talos-hostboot-e436c6b446ac80fdf050539edc746e0082219b86.zip
p9_xip_customize: Add #G and #R rings to the seeprom image from VPD
xip_customize supports the following: - Updates mailbox attributes in Seeprom image - Appends Mvpd #G and #R rings (but excl #G GPTR) into .rings ring section. - Shuffles around .hbbl, .overrides and .rings so that .rings is the last section in the Seeprom image as otherwise we can't reappend .rings section after updating it (since it wasn't last to begin with). - Honors of the bootCoreMask to append Vpd rings only for EC/EX/EQs associated with the ECs as indicated in the bootCoreMask. - Removes .toc, .fixedtoc and .strings in the Seeprom image. - Captures FFDC (100% complete). - Detects potential image overflow condition. Change-Id: I68bd2f39e3c407ea196f2228bdd31472a00a4c9e Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26150 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27259 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/utils')
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_infrastruct_help.H8
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_ring_identification.C20
-rw-r--r--src/import/chips/p9/utils/imageProcs/p9_ring_identification.H15
3 files changed, 26 insertions, 17 deletions
diff --git a/src/import/chips/p9/utils/imageProcs/p9_infrastruct_help.H b/src/import/chips/p9/utils/imageProcs/p9_infrastruct_help.H
index a083a1438..eb3fec84c 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_infrastruct_help.H
+++ b/src/import/chips/p9/utils/imageProcs/p9_infrastruct_help.H
@@ -36,12 +36,18 @@
//
//@FIXME: CMO: get rid of FIXED_RING_BUF_SIZE when ring_apply no longer uses it.
const uint32_t FIXED_RING_BUF_SIZE = 60000; // Fixed ring buf size for _fixed.
-const uint32_t MAX_SEEPROM_IMAGE_SIZE = 4 * 56 * 1024; // Max Seeprom size, excl ECC bits (4 banks).
+const uint32_t MAX_SEEPROM_IMAGE_SIZE = 4 * 56 * 1024 - 256; // Max Seeprom size, excl ECC bits (4 banks).
const uint32_t MAX_RT_IMAGE_SIZE = 1024 * 1024; // Max Runtime size.
const uint32_t MAX_RING_BUF_SIZE = 60000; // Max ring buffer size.
const uint32_t MAX_OVERRIDES_SIZE = 2 * 1024; // Max overrides section size.
const uint32_t MAX_HBBL_SIZE = 20 * 1024; // Max hbbl section size.
+//@FIXME: CMO: Aren't these defined somewhere else?
+#define NUM_OF_CORES 24
+#define NUM_OF_CMES 12
+#define NUM_OF_QUADS 6
+#define CORES_PER_QUAD (NUM_OF_CORES/NUM_OF_QUADS)
+
enum SYSPHASE
{
SYSPHASE_HB_SBE = 0,
diff --git a/src/import/chips/p9/utils/imageProcs/p9_ring_identification.C b/src/import/chips/p9/utils/imageProcs/p9_ring_identification.C
index 717ae27aa..562b73395 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_ring_identification.C
+++ b/src/import/chips/p9/utils/imageProcs/p9_ring_identification.C
@@ -24,7 +24,7 @@
/* IBM_PROLOG_END_TAG */
#include <p9_ring_identification.H>
-const RingIdList RING_ID_LIST_PG[] =
+const RingIdList RING_ID_LIST_PDG[] =
{
/* ringName ringId chipletId vpdKeyword */
/* min max */
@@ -109,7 +109,7 @@ const RingIdList RING_ID_LIST_PG[] =
{"ec_time", 226, 0x20, 0xFF, VPD_KEYWORD_PDG, VPD_RING_CLASS_EC}, // x20,x37: multicast group 1
};
-const RingIdList RING_ID_LIST_PR[] =
+const RingIdList RING_ID_LIST_PDR[] =
{
/* ringName ringId chipletId vpdKeyword */
/* min max */
@@ -140,18 +140,18 @@ const RingIdList RING_ID_LIST_PR[] =
{"pci0_repr", 159, 0x0D, 0x0D, VPD_KEYWORD_PDR, VPD_RING_CLASS_NEST},
{"pci1_repr", 165, 0x0E, 0x0E, VPD_KEYWORD_PDR, VPD_RING_CLASS_NEST},
{"pci2_repr", 171, 0x0F, 0x0F, VPD_KEYWORD_PDR, VPD_RING_CLASS_NEST},
- {"eq_repr", 220, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EQ},
- {"ex_l3_refr_time", 185, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX},
- {"ex_l3_repr", 221, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX},
- {"ex_l2_repr", 222, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX},
- {"ex_l3_refr_repr", 223, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX},
- {"ec_repr", 228, 0x20, 0x37, VPD_KEYWORD_PDR, VPD_RING_CLASS_EC},
+ {"eq_repr", 220, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EQ_INS},
+ {"ex_l3_refr_time", 185, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX_INS},
+ {"ex_l3_repr", 221, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX_INS},
+ {"ex_l2_repr", 222, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX_INS},
+ {"ex_l3_refr_repr", 223, 0x10, 0x15, VPD_KEYWORD_PDR, VPD_RING_CLASS_EX_INS},
+ {"ec_repr", 228, 0x20, 0x37, VPD_KEYWORD_PDR, VPD_RING_CLASS_EC_INS},
};
const VPDRingList ALL_VPD_RINGS[NUM_OF_VPD_TYPES] =
{
- {RING_ID_LIST_PG, (sizeof(RING_ID_LIST_PG) / sizeof(RING_ID_LIST_PG[0]))},
- {RING_ID_LIST_PR, (sizeof(RING_ID_LIST_PR) / sizeof(RING_ID_LIST_PR[0]))},
+ {RING_ID_LIST_PDG, (sizeof(RING_ID_LIST_PDG) / sizeof(RING_ID_LIST_PDG[0]))},
+ {RING_ID_LIST_PDR, (sizeof(RING_ID_LIST_PDR) / sizeof(RING_ID_LIST_PDR[0]))},
};
diff --git a/src/import/chips/p9/utils/imageProcs/p9_ring_identification.H b/src/import/chips/p9/utils/imageProcs/p9_ring_identification.H
index babdb63cf..ea891efdf 100644
--- a/src/import/chips/p9/utils/imageProcs/p9_ring_identification.H
+++ b/src/import/chips/p9/utils/imageProcs/p9_ring_identification.H
@@ -73,12 +73,15 @@ enum VpdKeyword
enum VpdRingClass
{
- VPD_RING_CLASS_NEST = 0, // Indicates NEST rings
- VPD_RING_CLASS_EQ = 1, // Indicates EQ rings
- VPD_RING_CLASS_EX = 2, // Indicates EX rings
- VPD_RING_CLASS_EC = 3, // Indicates EC rings
- VPD_RING_CLASS_GPTR = 4, // Indicates GPTR #G rings
- VPD_RING_CLASS_LAST = 5,
+ VPD_RING_CLASS_NEST = 0, // Indicates NEST [common] rings, except GPTR #G rings.
+ VPD_RING_CLASS_GPTR = 1, // Indicates GPTR #G [common]rings
+ VPD_RING_CLASS_EQ = 2, // Indicates EQ [common] rings
+ VPD_RING_CLASS_EX = 3, // Indicates EX [common] rings
+ VPD_RING_CLASS_EC = 4, // Indicates EC [common] rings
+ VPD_RING_CLASS_EQ_INS = 5, // Indicates EQ instance rings
+ VPD_RING_CLASS_EX_INS = 6, // Indicates EX instance rings
+ VPD_RING_CLASS_EC_INS = 7, // Indicates EC instance rings
+ VPD_RING_CLASS_LAST = 8,
};
OpenPOWER on IntegriCloud