diff options
author | Richard J. Knight <rjknight@us.ibm.com> | 2016-12-11 08:50:55 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-02-07 11:42:33 -0500 |
commit | cf651cc5c92c9692eecffafa16bfabe0e7260e8c (patch) | |
tree | 23e0e0c98e5d828bbaf43ae534531b9940c3ede8 /src/import/chips | |
parent | 5b9f806cc55bf14a9c0f74428836905d85f45509 (diff) | |
download | blackbird-hostboot-cf651cc5c92c9692eecffafa16bfabe0e7260e8c.tar.gz blackbird-hostboot-cf651cc5c92c9692eecffafa16bfabe0e7260e8c.zip |
Add check to verify SBE .ring section size
-Add option to p9_xip_tool to verify the size of the
DD specific .rings section intended for the SBE image
-Update makefiles to correctly run p9_ring_apply to insert
and extract the DD level specific rings.
-Update tor_access_ring to correctly advance the pointer
to the next DD level in the HW image so the size can
be extracted correctlty.
Change-Id: I21a53b5d11341a14a4e9cc88388c9c2050394095
RTC:165558
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33873
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33879
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips')
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_tor.C | 15 | ||||
-rw-r--r-- | src/import/chips/p9/xip/p9_xip_image.h | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.C b/src/import/chips/p9/utils/imageProcs/p9_tor.C index 2f79ce294..23912ac6f 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_tor.C +++ b/src/import/chips/p9/utils/imageProcs/p9_tor.C @@ -1191,12 +1191,14 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr MY_INF("tor_access_ring(): No of DD levels: %d \n", ddLevelCount); } - for (uint8_t i = 0; i < ddLevelCount; i++) + // start at one since we use that as an offset + for (uint8_t i = 1; i <= ddLevelCount; i++) { - local = 2; + local = 2 * (i); ddLevelOffset = *((uint32_t*)i_ringSection + local); - ddLevel = htobe32(ddLevelOffset) >> 24 & 0x000000FF; - ddLevelOffset = htobe32(ddLevelOffset) & 0x00FFFFFF; + + ddLevel = be32toh(ddLevelOffset) >> 24 & 0x000000FF; + ddLevelOffset = be32toh(ddLevelOffset) & 0x00FFFFFF; if (i_dbgl > 1) { @@ -1206,12 +1208,11 @@ int tor_access_ring( void* i_ringSection, // Ring section ptr if ( ddLevel == i_ddLevel) { - ddLevelOffset = *((uint32_t*)i_ringSection + local); - ddLevelOffset = htobe32(ddLevelOffset) & 0x00FFFFFF; ddLevelOffset = ddLevelOffset + sizeof(TorNumDdLevels_t); local = local + 1; ddBlockSize = *((uint32_t*)i_ringSection + local); - ddBlockSize = htobe32(ddBlockSize); + ddBlockSize = be32toh(ddBlockSize); + bDdCheck = 1; break; } diff --git a/src/import/chips/p9/xip/p9_xip_image.h b/src/import/chips/p9/xip/p9_xip_image.h index b380fa4a5..70357c8f5 100644 --- a/src/import/chips/p9/xip/p9_xip_image.h +++ b/src/import/chips/p9/xip/p9_xip_image.h @@ -1454,6 +1454,9 @@ p9_xip_decode_toc_dump(void* i_image, void* i_dump, /// Image has been broken and unable to restore original image. #define P9_XIP_CANT_RESTORE_IMAGE 18 +/// .rings seciton for specific dd level is larger than the allowable size +#define P9_XIP_SBE_DD_SIZE_ERR 19 + /// Applications can expand this macro to declare an array of string forms of /// the error codes if desired. #define P9_XIP_ERROR_STRINGS(var) \ @@ -1477,6 +1480,7 @@ p9_xip_decode_toc_dump(void* i_image, void* i_dump, "P9_XIP_HASH_COLLISION", \ "P9_XIP_NULL_BUFFER", \ "P9_XIP_CANT_RESTORE_IMAGE", \ + "P9_XIP_SBE_DD_SIZE_ERR", \ } /// Applications can use this macro to safely index the array of error |