diff options
author | Prachi Gupta <pragupta@us.ibm.com> | 2016-06-22 17:02:14 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-08-30 18:08:54 -0400 |
commit | e436c6b446ac80fdf050539edc746e0082219b86 (patch) | |
tree | 7e0e9ffde270ff60a7ca9ec3be6dccc3957eac08 /src/import/chips/p9/utils | |
parent | 617c159f5cd0838bf7a805ec9f50c91e1de00d35 (diff) | |
download | talos-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')
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, }; |