summaryrefslogtreecommitdiffstats
path: root/src/import/chips
diff options
context:
space:
mode:
authorRichard J. Knight <rjknight@us.ibm.com>2016-12-11 08:50:55 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-02-07 11:42:33 -0500
commitcf651cc5c92c9692eecffafa16bfabe0e7260e8c (patch)
tree23e0e0c98e5d828bbaf43ae534531b9940c3ede8 /src/import/chips
parent5b9f806cc55bf14a9c0f74428836905d85f45509 (diff)
downloadblackbird-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.C15
-rw-r--r--src/import/chips/p9/xip/p9_xip_image.h4
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
OpenPOWER on IntegriCloud