diff --git a/src/include/usr/runtime/runtime.H b/src/include/usr/runtime/runtime.H index bde444d0d13..3b9dfefe15e 100644 --- a/src/include/usr/runtime/runtime.H +++ b/src/include/usr/runtime/runtime.H @@ -90,10 +90,14 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId); // How many pointers/sections there are in HB runtime data #define HBRT_NUM_PTRS 2 -// sections defined by above literal +// Sections defined by above literal #define HBRT_VPD_SECTION 0 #define HBRT_ATTRIB_SECTION 1 +// How many pointers/sections there are in HB reserved memory data +// HOMER*8/OCC_Common/VPD/ATTR/HBRT_Image/Res/Res/Res +#define HB_RSV_MEM_NUM_PTRS 15 + //Note this means the Reserved Mem sub-section is the 6th //(0 based) of the MDT section (See HDAT spec) #define MDT_RESERVED_HB_MEM_SECTION 5 diff --git a/src/usr/isteps/istep16/call_host_ipl_complete.C b/src/usr/isteps/istep16/call_host_ipl_complete.C index 9c25e00a563..30857d73c3e 100644 --- a/src/usr/isteps/istep16/call_host_ipl_complete.C +++ b/src/usr/isteps/istep16/call_host_ipl_complete.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -70,27 +70,34 @@ void* call_host_ipl_complete (void *io_pArgs) TARGETING::targetService().getTopLevelTarget( sys ); assert(sys != NULL); - // Set number of pointer pairs for HDAT + + // Set number of pointer pairs for HDAT HB RESERVED MEM //@TODO RTC:142908 Support multiple nodes in HBRT const uint32_t NUM_NODES = 1; - uint32_t l_numSections = NUM_NODES * HBRT_NUM_PTRS; - sys->setAttr(l_numSections); + uint32_t l_numRsvMemSections = NUM_NODES * HB_RSV_MEM_NUM_PTRS; + sys->setAttr(l_numRsvMemSections); + + + // Set number of pointer pairs for HDAT HBRT + //@TODO RTC:142908 Support multiple nodes in HBRT + uint32_t l_numHbrtSections = NUM_NODES * HBRT_NUM_PTRS; + sys->setAttr(l_numHbrtSections); uint64_t l_maxSecSize = VMM_RT_VPD_SIZE; - // Set max size of a section for HDAT + // Set max size of a HBRT section for HDAT TARGETING::ATTR_HDAT_HBRT_SECTION_SIZE_type l_secSize = {0}; uint64_t *l_p_secSize = reinterpret_cast(&l_secSize); uint32_t l_attrArraySize = sizeof(ATTR_HDAT_HBRT_SECTION_SIZE_type) / sizeof(l_secSize[0]); - assert(l_numSections <= l_attrArraySize); + assert(l_numHbrtSections <= l_attrArraySize); uint64_t l_attrSize = AttrRP::maxSize(); l_maxSecSize = (l_attrSize > l_maxSecSize) ? l_attrSize : l_maxSecSize; - for (uint32_t l_sect=0; (l_sect < l_numSections); l_sect++) + for (uint32_t l_sect=0; (l_sect < l_numHbrtSections); l_sect++) { l_p_secSize[l_sect] = l_maxSecSize; } diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml index feeb1638466..e052f884875 100644 --- a/src/usr/targeting/common/xmltohb/attribute_types.xml +++ b/src/usr/targeting/common/xmltohb/attribute_types.xml @@ -18938,6 +18938,21 @@ Measured in GB + + HDAT_RSV_MEM_NUM_SECTIONS + + Number of internal data pointers we have in + the hostboot reserved memory section. + + + + + + volatile-zeroed + + + + HDAT_HBRT_NUM_SECTIONS diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml index a696e5672d2..833597df8ba 100755 --- a/src/usr/targeting/common/xmltohb/target_types.xml +++ b/src/usr/targeting/common/xmltohb/target_types.xml @@ -739,6 +739,7 @@ PROC_FABRIC_CAPI_MODE PROC_FABRIC_ADDR_BAR_MODE + HDAT_RSV_MEM_NUM_SECTIONS HDAT_HBRT_NUM_SECTIONS HDAT_HBRT_SECTION_SIZE PIB_I2C_REFCLOCK @@ -937,6 +938,7 @@ MSS_VOLT_DDR4_VDDR_SLOPE_EFF_CONFIG MSS_VOLT_DDR4_VDDR_INTERCEPT_EFF_CONFIG MRW_DDR4_VDDR_MAX_LIMIT_EFF_CONFIG + HDAT_RSV_MEM_NUM_SECTIONS HDAT_HBRT_NUM_SECTIONS HDAT_HBRT_SECTION_SIZE VPD_REC_NUM