diff options
author | Corey Swenson <cswenson@us.ibm.com> | 2017-05-08 14:03:25 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-05-23 15:49:55 -0400 |
commit | 60c97af36adbda3ff015356311e4d4557d785cfe (patch) | |
tree | a1c5baa55df12f635c585a8058b0879aca1c1413 /src/usr/runtime | |
parent | 7ab9a90ab7fdf2a336ef327379001133d52d64ba (diff) | |
download | talos-hostboot-60c97af36adbda3ff015356311e4d4557d785cfe.tar.gz talos-hostboot-60c97af36adbda3ff015356311e4d4557d785cfe.zip |
Enable PM during IPL on OPAL with FSP
Change-Id: Ie77e49aed0603f39109ddf8da2e23e3e0bcac959
CQ:SW388147
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40280
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/runtime')
-rw-r--r-- | src/usr/runtime/populate_hbruntime.C | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C index 4be72cce3..2a0d57daf 100644 --- a/src/usr/runtime/populate_hbruntime.C +++ b/src/usr/runtime/populate_hbruntime.C @@ -624,37 +624,40 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId) #ifdef CONFIG_START_OCC_DURING_BOOT /////////////////////////////////////////////////// // OCC Common entry - TARGETING::Target * l_sys = nullptr; - TARGETING::targetService().getTopLevelTarget( l_sys ); - assert(l_sys != nullptr); - uint64_t l_occCommonAddr = l_sys->getAttr - <TARGETING::ATTR_OCC_COMMON_AREA_PHYS_ADDR>(); - l_label = HBRT_RSVD_MEM__OCC_COMMON; - l_labelSize = strlen(l_label) + 1; - - // Get a pointer to the next available HDAT HB Rsv Mem entry - l_rngPtr = nullptr; - l_elog = getNextRhbAddrRange(l_rngPtr); - if(l_elog) + if( !(TARGETING::is_phyp_load()) ) { - break; - } + TARGETING::Target * l_sys = nullptr; + TARGETING::targetService().getTopLevelTarget( l_sys ); + assert(l_sys != nullptr); + uint64_t l_occCommonAddr = l_sys->getAttr + <TARGETING::ATTR_OCC_COMMON_AREA_PHYS_ADDR>(); + l_label = HBRT_RSVD_MEM__OCC_COMMON; + l_labelSize = strlen(l_label) + 1; - // Fill in the entry - l_rngPtr->hdatRhbRngType = - static_cast<uint8_t>(HDAT::RHB_TYPE_HOMER_OCC); - l_rngPtr->hdatRhbRngId = i_nodeId; - l_rngPtr->hdatRhbAddrRngStrAddr = - l_occCommonAddr | VmmManager::FORCE_PHYS_ADDR; - l_rngPtr->hdatRhbAddrRngEndAddr = - (l_occCommonAddr | VmmManager::FORCE_PHYS_ADDR) - + VMM_OCC_COMMON_SIZE - 1 ; - l_rngPtr->hdatRhbLabelSize = l_labelSize; - memcpy( l_rngPtr->hdatRhbLabelString, - l_label, - l_labelSize ); + // Get a pointer to the next available HDAT HB Rsv Mem entry + l_rngPtr = nullptr; + l_elog = getNextRhbAddrRange(l_rngPtr); + if(l_elog) + { + break; + } - traceHbRsvMemRange(l_rngPtr); + // Fill in the entry + l_rngPtr->hdatRhbRngType = + static_cast<uint8_t>(HDAT::RHB_TYPE_HOMER_OCC); + l_rngPtr->hdatRhbRngId = i_nodeId; + l_rngPtr->hdatRhbAddrRngStrAddr = + l_occCommonAddr | VmmManager::FORCE_PHYS_ADDR; + l_rngPtr->hdatRhbAddrRngEndAddr = + (l_occCommonAddr | VmmManager::FORCE_PHYS_ADDR) + + VMM_OCC_COMMON_SIZE - 1 ; + l_rngPtr->hdatRhbLabelSize = l_labelSize; + memcpy( l_rngPtr->hdatRhbLabelString, + l_label, + l_labelSize ); + + traceHbRsvMemRange(l_rngPtr); + } #endif } |