summaryrefslogtreecommitdiffstats
path: root/src/usr/runtime/populate_hbruntime.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/runtime/populate_hbruntime.C')
-rw-r--r--src/usr/runtime/populate_hbruntime.C27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C
index f36851b7d..7672a572a 100644
--- a/src/usr/runtime/populate_hbruntime.C
+++ b/src/usr/runtime/populate_hbruntime.C
@@ -462,12 +462,14 @@ errlHndl_t setNextHbRsvMemEntry(const HDAT::hdatMsVpdRhbAddrRangeType i_type,
* @param[in] i_startAddressValid Is io_start_address valid?
* @param[out] io_size if not zero, maxSize in bytes allowed
* returns Total 64kb aligned size for all the data
+ * @param[in] i_master_node = true if we are the master hb instance
* @return Error handle if error
*/
errlHndl_t fill_RsvMem_hbData(uint64_t & io_start_address,
uint64_t & io_end_address,
bool i_startAddressValid,
- uint64_t & io_size)
+ uint64_t & io_size,
+ bool i_master_node)
{
TRACFCOMP( g_trac_runtime, ENTER_MRK"fill_RsvMem_hbData> io_start_address=0x%.16llX,io_end_address=0x%.16llX,startAddressValid=%d",
io_start_address, io_end_address, i_startAddressValid?1:0 );
@@ -563,6 +565,17 @@ errlHndl_t fill_RsvMem_hbData(uint64_t & io_start_address,
ALIGN_PAGE(l_hbTOC.entry[l_hbTOC.total_entries].size);
l_hbTOC.total_entries++;
+ // Fill in the TRACEBUF only for Master Node
+ if(i_master_node == true )
+ {
+ // Fill in TRACEBUF size
+ l_hbTOC.entry[l_hbTOC.total_entries].label = Util::HBRT_MEM_LABEL_TRACEBUF;
+ l_hbTOC.entry[l_hbTOC.total_entries].offset = 0;
+ l_hbTOC.entry[l_hbTOC.total_entries].size = Util::HBRT_RSVD_TRACEBUF_SIZE;
+ l_totalSectionSize +=
+ ALIGN_PAGE(l_hbTOC.entry[l_hbTOC.total_entries].size);
+ l_hbTOC.total_entries++;
+ }
l_totalSectionSize += sizeof(l_hbTOC); // Add 4KB Table of Contents
// Fill in PADDING size
@@ -758,6 +771,14 @@ errlHndl_t fill_RsvMem_hbData(uint64_t & io_start_address,
}
break;
}
+
+ case Util::HBRT_MEM_LABEL_TRACEBUF:
+
+ TRACFCOMP( g_trac_runtime, "fill_RsvMem_hbData> TRACEBUF v address 0x%.16llX, size: %lld", l_prevDataAddr, aligned_size);
+ //Nothing much to do here, except zero-ing the memory
+ memset(reinterpret_cast<uint8_t*>(l_prevDataAddr),0,aligned_size);
+ break;
+
default:
break;
}
@@ -1103,7 +1124,7 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId, bool i_master_node)
// fills in the reserved memory with HB Data and
// will update addresses and totalSize
l_elog = fill_RsvMem_hbData(l_startAddr, l_endAddr,
- startAddressValid, l_totalSizeAligned);
+ startAddressValid, l_totalSizeAligned,i_master_node);
if (l_elog)
{
@@ -3114,7 +3135,7 @@ errlHndl_t populate_hbRuntimeData( void )
bool startAddressValid = true;
l_elog = fill_RsvMem_hbData(l_startAddr, l_endAddr,
- startAddressValid, l_totalSizeAligned);
+ startAddressValid, l_totalSizeAligned,true);
if(l_elog != nullptr)
{
TRACFCOMP( g_trac_runtime, "fill_RsvMem_hbData failed" );
OpenPOWER on IntegriCloud