diff options
author | Marty Gloff <mgloff@us.ibm.com> | 2016-06-01 15:38:15 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-07-03 22:41:46 -0400 |
commit | 0dffc041ec01993e9399aeb8b17c9784617102e1 (patch) | |
tree | 42121111c923d57118202f5dad537a4455c9e745 /src/usr/util/runtime | |
parent | 3abbc2756991593bee3e2ad88f36f9eb26e6bf00 (diff) | |
download | talos-hostboot-0dffc041ec01993e9399aeb8b17c9784617102e1.tar.gz talos-hostboot-0dffc041ec01993e9399aeb8b17c9784617102e1.zip |
PM Complex Implementation Deferred to Pass 2
Load a given LID only once from pnor/fsp.
Make a publicly accessible version of convertHomerPhysToVert() for HTMGT to
consume and have it handle the non-runtime case.
Use constants defined by HWP or FAPI.
Change-Id: I554d57a0b74ca674be9fa9a5b527f6bb53f9a4d6
RTC: 155384
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25273
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/util/runtime')
-rw-r--r-- | src/usr/util/runtime/test/testlidmgr_rt.H | 26 | ||||
-rw-r--r-- | src/usr/util/runtime/utillidmgr_rt.C | 31 |
2 files changed, 56 insertions, 1 deletions
diff --git a/src/usr/util/runtime/test/testlidmgr_rt.H b/src/usr/util/runtime/test/testlidmgr_rt.H index d869e3c81..36eb8bc64 100644 --- a/src/usr/util/runtime/test/testlidmgr_rt.H +++ b/src/usr/util/runtime/test/testlidmgr_rt.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014,2015 */ +/* Contributors Listed Below - COPYRIGHT 2014,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -98,6 +98,30 @@ class LidMgrRtTest : public CxxTest::TestSuite TS_FAIL("testLidInPnor: failed to get lid from PNOR"); } delete[] l_ptr; + + void* l_pLidImage = NULL; + size_t l_lidImageSize = 0; + l_errl = l_lidMgr.getStoredLidImage(l_pLidImage, + l_lidImageSize); + if (l_errl) + { + errlCommit(l_errl, UTIL_COMP_ID); + TS_FAIL("testLidInPnor: failed to store lid from PNOR"); + } + + if (l_lidImageSize != l_lidPnorInfo.size) + { + TS_FAIL("testLidInPnor: lidImageSize does not match pnor" + " TEST section size 0x%.8X != 0x%.8X", + l_lidImageSize, l_lidPnorInfo.size); + } + + l_errl = l_lidMgr.releaseLidImage(); + if(l_errl) + { + errlCommit(l_errl, UTIL_COMP_ID); + TS_FAIL("testLidInPnor: failed to release lid from PNOR"); + } }while(0); } }; diff --git a/src/usr/util/runtime/utillidmgr_rt.C b/src/usr/util/runtime/utillidmgr_rt.C index c3dcb1ec8..710159990 100644 --- a/src/usr/util/runtime/utillidmgr_rt.C +++ b/src/usr/util/runtime/utillidmgr_rt.C @@ -83,6 +83,37 @@ errlHndl_t UtilLidMgr::getLid(void* i_dest, size_t i_destSize) return l_err; } +errlHndl_t UtilLidMgr::getStoredLidImage(void*& o_pLidImage, + size_t& o_lidImageSize) +{ + errlHndl_t l_err = NULL; + + if((NULL == iv_lidBuffer) || (0 == iv_lidSize)) + { + l_err = loadLid(); + } + + if(l_err) + { + o_lidImageSize = 0; + o_pLidImage = NULL; + } + else + { + o_lidImageSize = iv_lidSize; + o_pLidImage = iv_lidBuffer; + } + + return l_err; +} + +errlHndl_t UtilLidMgr::releaseLidImage(void) +{ + errlHndl_t l_err = cleanup(); + + return l_err; +} + errlHndl_t UtilLidMgr::loadLid() { if (NULL != iv_lidBuffer) return NULL; |