summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C44
1 files changed, 37 insertions, 7 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
index c6cbe0fde..3380235c3 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
@@ -149,16 +149,21 @@ struct RingBufData
uint32_t iv_sizeWorkBuf1;
void* iv_pWorkBuf2;
uint32_t iv_sizeWorkBuf2;
+ void* iv_pWorkBuf3;
+ uint32_t iv_sizeWorkBuf3;
RingBufData( void* i_pRingBuf1, const uint32_t i_ringSize,
void* i_pWorkBuf1, const uint32_t i_sizeWorkBuf1,
- void* i_pWorkBuf2, const uint32_t i_sizeWorkBuf2 ) :
+ void* i_pWorkBuf2, const uint32_t i_sizeWorkBuf2,
+ void* i_pWorkBuf3, const uint32_t i_sizeWorkBuf3 ) :
iv_pRingBuffer( i_pRingBuf1),
iv_ringBufSize(i_ringSize),
iv_pWorkBuf1( i_pWorkBuf1 ),
iv_sizeWorkBuf1( i_sizeWorkBuf1 ),
iv_pWorkBuf2( i_pWorkBuf2 ),
- iv_sizeWorkBuf2( i_sizeWorkBuf2 )
+ iv_sizeWorkBuf2( i_sizeWorkBuf2 ),
+ iv_pWorkBuf3( i_pWorkBuf3 ),
+ iv_sizeWorkBuf3( i_sizeWorkBuf3 )
{}
@@ -168,7 +173,9 @@ struct RingBufData
iv_pWorkBuf1( NULL ),
iv_sizeWorkBuf1( 0 ),
iv_pWorkBuf2( NULL ),
- iv_sizeWorkBuf2( 0 )
+ iv_sizeWorkBuf2( 0 ),
+ iv_pWorkBuf3( NULL ),
+ iv_sizeWorkBuf3( 0 )
{ }
};
@@ -549,7 +556,8 @@ fapi_try_exit:
fapi2::ReturnCode validateInputArguments( void* const i_pImageIn, void* i_pImageOut,
SysPhase_t i_phase, ImageType_t i_imgType,
void* i_pBuf1, uint32_t i_bufSize1, void* i_pBuf2,
- uint32_t i_bufSize2, void* i_pBuf3, uint32_t i_bufSize3 )
+ uint32_t i_bufSize2, void* i_pBuf3, uint32_t i_bufSize3,
+ void* i_pBuf4, uint32_t i_bufSize4 )
{
uint32_t l_rc = IMG_BUILD_SUCCESS;
uint32_t hwImagSize = 0;
@@ -600,6 +608,11 @@ fapi2::ReturnCode validateInputArguments( void* const i_pImageIn, void* i_pImage
.set_TEMP3_BUF_SIZE( i_bufSize3 ),
"Invalid temp buffer3 passed for hcode image build" );
+ FAPI_ASSERT( ( i_pBuf4 != NULL ),
+ fapi2::HCODE_INVALID_TEMP4_BUF()
+ .set_TEMP4_BUF_SIZE( i_bufSize4 ),
+ "Invalid temp buffer4 passed for hcode image build" );
+
FAPI_ASSERT( ( i_bufSize1 != 0 ) ,
fapi2::HCODE_INVALID_TEMP1_BUF_SIZE()
.set_TEMP1_BUF_SIZE( i_bufSize1 ),
@@ -615,6 +628,11 @@ fapi2::ReturnCode validateInputArguments( void* const i_pImageIn, void* i_pImage
.set_TEMP3_BUF_SIZE( i_bufSize3 ),
"Invalid size for temp buf3 passed for hcode image build" );
+ FAPI_ASSERT( ( i_bufSize4 != 0 ),
+ fapi2::HCODE_INVALID_TEMP4_BUF_SIZE()
+ .set_TEMP4_BUF_SIZE( i_bufSize4 ),
+ "Invalid size for temp buf4 passed for hcode image build" );
+
FAPI_ASSERT( ( i_imgType.isBuildValid() ),
fapi2::HCODE_INVALID_IMG_TYPE(),
"Invalid image type passed for hcode image build" );
@@ -1679,6 +1697,8 @@ uint32_t getPpeScanRings( void* const i_pHwImage,
(uintptr_t)(i_ringData.iv_pWorkBuf1), i_ringData.iv_sizeWorkBuf1);
FAPI_DBG("Work buf2 (buf,size)=(0x%016llX,0x%08X)",
(uintptr_t)(i_ringData.iv_pWorkBuf2), i_ringData.iv_sizeWorkBuf2);
+ FAPI_DBG("Work buf2 (buf,size)=(0x%016llX,0x%08X)",
+ (uintptr_t)(i_ringData.iv_pWorkBuf3), i_ringData.iv_sizeWorkBuf3);
FAPI_DBG("---------------=== Buffer Specs Ends --------------------");
FAPI_DBG("--------------- Buffer Initializaiton to 0 --------------------");
@@ -1686,6 +1706,7 @@ uint32_t getPpeScanRings( void* const i_pHwImage,
memset( (uint8_t*) i_ringData.iv_pRingBuffer, 0x00, i_ringData.iv_ringBufSize );
memset( (uint8_t*) i_ringData.iv_pWorkBuf1, 0x00, i_ringData.iv_sizeWorkBuf1 );
memset( (uint8_t*) i_ringData.iv_pWorkBuf2, 0x00, i_ringData.iv_sizeWorkBuf2 );
+ memset( (uint8_t*) i_ringData.iv_pWorkBuf3, 0x00, i_ringData.iv_sizeWorkBuf3 );
uint32_t l_bootMask = ENABLE_ALL_CORE;
fapi2::ReturnCode l_fapiRc = fapi2::FAPI2_RC_SUCCESS;
@@ -1694,6 +1715,7 @@ uint32_t getPpeScanRings( void* const i_pHwImage,
p9_xip_customize,
i_procTgt,
i_pHwImage,
+ i_pHwImage,
hwImageSize,
i_ringData.iv_pRingBuffer,
i_ringData.iv_ringBufSize,
@@ -1703,6 +1725,8 @@ uint32_t getPpeScanRings( void* const i_pHwImage,
i_ringData.iv_sizeWorkBuf1,
i_ringData.iv_pWorkBuf2,
i_ringData.iv_sizeWorkBuf2,
+ i_ringData.iv_pWorkBuf3,
+ i_ringData.iv_sizeWorkBuf3,
l_bootMask );
if( l_fapiRc )
@@ -3923,7 +3947,9 @@ fapi2::ReturnCode p9_hcode_image_build( CONST_FAPI2_PROC& i_procTgt,
void* const i_pBuf2,
const uint32_t i_sizeBuf2,
void* const i_pBuf3,
- const uint32_t i_sizeBuf3 )
+ const uint32_t i_sizeBuf3,
+ void* const i_pBuf4,
+ const uint32_t i_sizeBuf4 )
{
@@ -3946,7 +3972,9 @@ fapi2::ReturnCode p9_hcode_image_build( CONST_FAPI2_PROC& i_procTgt,
i_pBuf2,
i_sizeBuf2,
i_pBuf3,
- i_sizeBuf3 );
+ i_sizeBuf3,
+ i_pBuf4,
+ i_sizeBuf4 );
FAPI_TRY( validateInputArguments( i_pImageIn,
i_pHomerImage,
@@ -3957,7 +3985,9 @@ fapi2::ReturnCode p9_hcode_image_build( CONST_FAPI2_PROC& i_procTgt,
i_pBuf2,
i_sizeBuf2,
i_pBuf3,
- i_sizeBuf3 ),
+ i_sizeBuf3,
+ i_pBuf4,
+ i_sizeBuf4 ),
"Invalid arguments, escaping hcode image build" );
// HW Image is a nested XIP Image. Let us read global TOC of hardware image
OpenPOWER on IntegriCloud