summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2016-07-27 11:10:04 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2016-09-26 03:12:25 -0400
commit27aa5407603c20a19c93f329d9e40c6c197e914b (patch)
treea4f290ffed6974ad3637e93e43240cf4386d907a /src/import
parent7c7dcf4b110dfccea2ca730d4a7ac93d25c50fc7 (diff)
downloadtalos-sbe-27aa5407603c20a19c93f329d9e40c6c197e914b.tar.gz
talos-sbe-27aa5407603c20a19c93f329d9e40c6c197e914b.zip
p9_ipl_build: take out the read for the debug file
The debug file will be overwritten each iteration. Change-Id: If8aecf3b044cd3908ebc22acdcaea3f2de31d235 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27513 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30255 Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/import')
-rw-r--r--src/import/tools/imageProcs/p9_ipl_build.C164
1 files changed, 78 insertions, 86 deletions
diff --git a/src/import/tools/imageProcs/p9_ipl_build.C b/src/import/tools/imageProcs/p9_ipl_build.C
index 15909527..b963cb60 100644
--- a/src/import/tools/imageProcs/p9_ipl_build.C
+++ b/src/import/tools/imageProcs/p9_ipl_build.C
@@ -248,123 +248,115 @@ int ipl_build(char* i_fnSbeImage,
}
else
{
- // open it in read mode, if it does not exist this will fail, which means
- // its ok to create, otherwise we don't want to overwrite existing files.
- ddSpecificImage.open(ddSpecificFileName.c_str(), std::ios::in);
-
- // did it open ok, if so tell the user
- if(!ddSpecificImage)
+ do
{
- do
+ // get a filebuf pointer to make it easy to work with
+ std::filebuf* pbuf = sbeImageFile.rdbuf();
+
+ // get the file size
+ std::size_t sbeImageSize = pbuf->pubseekoff(0,
+ sbeImageFile.end, sbeImageFile.in);
+
+ pbuf->pubseekpos(0, sbeImageFile.in);
+
+ // allocate some space to hold the file data
+ sbeImage = (char*)malloc(sbeImageSize);
+
+ if(sbeImage == NULL)
{
- // get a filebuf pointer to make it easy to work with
- std::filebuf* pbuf = sbeImageFile.rdbuf();
+ MY_ERR("Failed to allocate memory for the SBE image\n");
+ rc = IMGBUILD_ERR_MEMORY;
+ break;
+ }
- // get the file size
- std::size_t sbeImageSize = pbuf->pubseekoff(0,
- sbeImageFile.end, sbeImageFile.in);
+ bzero(sbeImage, sbeImageSize);
- pbuf->pubseekpos(0, sbeImageFile.in);
+ // copy the SBE image into memory
+ pbuf->sgetn(sbeImage, sbeImageSize);
- // allocate some space to hold the file data
- sbeImage = (char*)malloc(sbeImageSize);
+ // validate it
+ rc = p9_xip_validate(sbeImage, sbeImageSize);
- if(sbeImage == NULL)
- {
- MY_ERR("Failed to allocate memory for the SBE image\n");
- rc = IMGBUILD_ERR_MEMORY;
- break;
- }
+ if(rc)
+ {
+ MY_ERR("The SBE image copied to memory"
+ "failed validation rc = %d", rc);
- bzero(sbeImage, sbeImageSize);
+ rc = IMGBUILD_INVALID_IMAGE;
+ break;
+ }
- // copy the SBE image into memory
- pbuf->sgetn(sbeImage, sbeImageSize);
+ MY_INF("SBE Image validated ok.. %p\n", sbeImage);
- // validate it
- rc = p9_xip_validate(sbeImage, sbeImageSize);
+ uint32_t l_blockSize = 0;
- if(rc)
- {
- MY_ERR("The SBE image copied to memory"
- "failed validation rc = %d", rc);
+ char* hwImagePtr = static_cast<char*>(i_hwImage);
- rc = IMGBUILD_INVALID_IMAGE;
- break;
- }
+ rc = get_dd_level_rings_from_hw_image(hwImagePtr,
+ i_ddLevel,
+ &l_ringBlock,
+ l_blockSize);
- MY_INF("SBE Image validated ok.. %p\n", sbeImage);
+ if(rc == IMGBUILD_SUCCESS)
+ {
+ // update our SBE image size to include the new block of rings
+ sbeImageSize += l_blockSize;
- uint32_t l_blockSize = 0;
+ // grow our workspace
+ void* tmp = realloc(sbeImage, sbeImageSize);
- char* hwImagePtr = static_cast<char*>(i_hwImage);
+ if(tmp == NULL)
+ {
+ MY_ERR("error resizing workspace..giving up errno=%d", errno);
+ rc = IMGBUILD_ERR_MEMORY;
+ break;
+ }
- rc = get_dd_level_rings_from_hw_image(hwImagePtr,
- i_ddLevel,
- &l_ringBlock,
- l_blockSize);
+ // use the new, larger space
+ sbeImage = static_cast<char*>(tmp);
+
+ rc = append_ring_block_to_image(sbeImage,
+ sbeImageSize,
+ (char*)l_ringBlock,
+ l_blockSize);
if(rc == IMGBUILD_SUCCESS)
{
- // update our SBE image size to include the new block of rings
- sbeImageSize += l_blockSize;
-
- // grow our workspace
- void* tmp = realloc(sbeImage, sbeImageSize);
+ // looks like it worked, create a debug file and write the
+ // customized image to it
+ ddSpecificImage.open(ddSpecificFileName.c_str(), std::ios::binary | std::ios::out);
- if(tmp == NULL)
+ if(!ddSpecificImage)
{
- MY_ERR("error resizing workspace..giving up errno=%d", errno);
- rc = IMGBUILD_ERR_MEMORY;
- break;
+ MY_ERR("failed to open %s for writing\n", ddSpecificFileName.c_str());
+ rc = IMGBUILD_ERR_FILE_ACCESS;
}
-
- // use the new, larger space
- sbeImage = static_cast<char*>(tmp);
-
- rc = append_ring_block_to_image(sbeImage,
- sbeImageSize,
- (char*)l_ringBlock,
- l_blockSize);
-
- if(rc == IMGBUILD_SUCCESS)
+ else
{
- // looks like it worked, create a debug file and write the
- // customized image to it
- ddSpecificImage.open(ddSpecificFileName.c_str(), std::ios::binary | std::ios::out);
-
- if(!ddSpecificImage)
- {
- MY_ERR("failed to open %s for writing\n", ddSpecificFileName.c_str());
- rc = IMGBUILD_ERR_FILE_ACCESS;
- }
- else
- {
- std::filebuf* outbuf = ddSpecificImage.rdbuf();
+ std::filebuf* outbuf = ddSpecificImage.rdbuf();
- outbuf->sputn(sbeImage, sbeImageSize);
+ outbuf->sputn(sbeImage, sbeImageSize);
- MY_INF("DD specific file created as %s\n", ddSpecificFileName.c_str());
+ MY_INF("DD specific file created as %s\n", ddSpecificFileName.c_str());
- // rewind to the beginning of the original file and write this
- // into it.
- pbuf->pubseekpos(0, sbeImageFile.in);
+ // rewind to the beginning of the original file and write this
+ // into it.
+ pbuf->pubseekpos(0, sbeImageFile.in);
- pbuf->sputn(sbeImage, sbeImageSize);
+ pbuf->sputn(sbeImage, sbeImageSize);
- }
- }
- else
- {
- MY_ERR("creating dd specific SBE image failed rc=%d\n", rc);
}
}
+ else
+ {
+ MY_ERR("creating dd specific SBE image failed rc=%d\n", rc);
+ }
}
- while(0);
-
- free(sbeImage);
- free(l_ringBlock);
}
+ while(0);
+
+ free(sbeImage);
+ free(l_ringBlock);
ddSpecificImage.close();
sbeImageFile.close();
OpenPOWER on IntegriCloud