From e9f4e404c176db85b2d4a445cdfe3ddaccad7cfa Mon Sep 17 00:00:00 2001 From: Dan Crowell Date: Mon, 3 Apr 2017 13:30:00 -0500 Subject: Ensure 64K alignment and size for Reserved Hostboot Memory sections Force Reserved Hostboot Memory sections to be at least 64KB in size. Change-Id: I981451ab7998ebda8005f3b25efc0df93ecdf118 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38748 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Reviewed-by: William G. Hoffa Reviewed-by: Martin Gloff Reviewed-by: Corey V. Swenson Reviewed-by: Daniel M. Crowell --- src/usr/runtime/populate_hbruntime.C | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/usr/runtime') diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C index 04cfb8465..987c77647 100644 --- a/src/usr/runtime/populate_hbruntime.C +++ b/src/usr/runtime/populate_hbruntime.C @@ -615,6 +615,7 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId) l_rngPtr->hdatRhbRngId = i_nodeId; l_rngPtr->hdatRhbAddrRngStrAddr = l_vpdAddr | VmmManager::FORCE_PHYS_ADDR; + // Note: VMM_RT_VPD_SIZE is already 64KB aligned l_rngPtr->hdatRhbAddrRngEndAddr = (l_vpdAddr | VmmManager::FORCE_PHYS_ADDR) + VMM_RT_VPD_SIZE - 1 ; @@ -678,9 +679,11 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId) l_rngPtr->hdatRhbRngId = i_nodeId; l_rngPtr->hdatRhbAddrRngStrAddr = l_attrDataAddr | VmmManager::FORCE_PHYS_ADDR; + // Minimum 64K size for Opal + size_t l_attrSizeAligned = ALIGN_X( l_attrSize, 64*KILOBYTE ); l_rngPtr->hdatRhbAddrRngEndAddr = (l_attrDataAddr | VmmManager::FORCE_PHYS_ADDR) - + l_attrSize - 1 ; + + l_attrSizeAligned - 1 ; l_rngPtr->hdatRhbLabelSize = l_labelSize; memcpy( l_rngPtr->hdatRhbLabelString, l_label, @@ -755,9 +758,11 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId) l_rngPtr->hdatRhbRngId = i_nodeId; l_rngPtr->hdatRhbAddrRngStrAddr = l_hbrtImageAddr | VmmManager::FORCE_PHYS_ADDR; + // Minimum 64K size for Opal + size_t l_attrSizeAligned = ALIGN_X( l_imageSize, 64*KILOBYTE ); l_rngPtr->hdatRhbAddrRngEndAddr = (l_hbrtImageAddr | VmmManager::FORCE_PHYS_ADDR) - + l_imageSize - 1 ; + + l_attrSizeAligned - 1 ; l_rngPtr->hdatRhbLabelSize = l_labelSize; memcpy( l_rngPtr->hdatRhbLabelString, l_label, -- cgit v1.2.3