summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/usr/isteps/istep21/call_host_runtime_setup.C15
-rw-r--r--src/usr/util/utilmclmgr.C26
-rw-r--r--src/usr/util/utiltcemgr.C4
3 files changed, 29 insertions, 16 deletions
diff --git a/src/usr/isteps/istep21/call_host_runtime_setup.C b/src/usr/isteps/istep21/call_host_runtime_setup.C
index cbab56501..77648b9fd 100644
--- a/src/usr/isteps/istep21/call_host_runtime_setup.C
+++ b/src/usr/isteps/istep21/call_host_runtime_setup.C
@@ -238,7 +238,9 @@ errlHndl_t verifyAndMovePayload(void)
MCL::compIdToString(l_compId, l_IdStr);
// Get Temporary Virtual Address To Payload
- uint64_t payload_tmp_phys_addr = MCL_TMP_ADDR;
+ // - Need to make Memory spaces HRMOR-relative
+ uint64_t hrmorVal = cpu_spr_value(CPU_SPR_HRMOR);
+ uint64_t payload_tmp_phys_addr = hrmorVal - VMM_HRMOR_OFFSET + MCL_TMP_ADDR;
uint64_t payload_size = MCL_TMP_SIZE;
payload_tmp_virt_addr = mm_block_map(
@@ -374,9 +376,11 @@ errlHndl_t verifyAndMovePayload(void)
// Move HDAT into its proper place after it was temporarily put into
- // HDAT_TMP_ADDR (HDAT_TMP_SIZE) by the FSP via TCEs
+ // HDAT_TMP_ADDR-relative-to-HRMOR (HDAT_TMP_SIZE) by the FSP via TCEs
+ uint64_t hdat_tmp_phys_addr = hrmorVal - VMM_HRMOR_OFFSET + HDAT_TMP_ADDR;
+
hdat_tmp_virt_addr = mm_block_map(
- reinterpret_cast<void*>(HDAT_TMP_ADDR),
+ reinterpret_cast<void*>(hdat_tmp_phys_addr),
HDAT_TMP_SIZE);
// Check for nullptr being returned
@@ -431,9 +435,8 @@ errlHndl_t verifyAndMovePayload(void)
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"verifyAndMovePayload(): Copy HDAT from 0x%.16llX (va="
"0x%llX) to HDAT_FINAL = 0x%.16llX (va=0x%llX), size=0x%llX",
- HDAT_TMP_ADDR, hdat_tmp_virt_addr, payloadBase+hdat_cpy_offset,
- hdat_final_virt_addr,
- HDAT_TMP_SIZE);
+ hdat_tmp_phys_addr, hdat_tmp_virt_addr,
+ payloadBase+hdat_cpy_offset, hdat_final_virt_addr, HDAT_TMP_SIZE);
memcpy(hdat_final_virt_addr,
hdat_tmp_virt_addr,
diff --git a/src/usr/util/utilmclmgr.C b/src/usr/util/utilmclmgr.C
index a89c124b8..5df056299 100644
--- a/src/usr/util/utilmclmgr.C
+++ b/src/usr/util/utilmclmgr.C
@@ -27,6 +27,7 @@
#include <util/util_reasoncodes.H>
#include "utilbase.H"
#include <sys/mm.h>
+#include <sys/misc.h>
#include <errl/errlentry.H>
#include <errl/errlmanager.H>
#include <initservice/initserviceif.H>
@@ -94,21 +95,30 @@ void CompInfo::print() const
////////////////////////////////////////////////////////////////////////////////
MasterContainerLidMgr::MasterContainerLidMgr()
-: iv_mclAddr(MCL_ADDR), iv_mclSize(MCL_SIZE), iv_tmpAddr(MCL_TMP_ADDR),
- iv_tmpSize(MCL_TMP_SIZE), iv_maxSize(0), iv_pMclVaddr(nullptr),
- iv_pTempVaddr(nullptr), iv_pVaddr(nullptr), iv_compInfoCache{},
- iv_hasHeader(true)
+: iv_mclSize(MCL_SIZE), iv_tmpSize(MCL_TMP_SIZE), iv_maxSize(0),
+ iv_pMclVaddr(nullptr), iv_pTempVaddr(nullptr), iv_pVaddr(nullptr),
+ iv_compInfoCache{}, iv_hasHeader(true)
{
+ // Need to make Memory spaces HRMOR-relative
+ uint64_t hrmorVal = cpu_spr_value(CPU_SPR_HRMOR);
+ iv_mclAddr = hrmorVal - VMM_HRMOR_OFFSET + MCL_ADDR;
+ iv_tmpAddr = hrmorVal - VMM_HRMOR_OFFSET + MCL_TMP_ADDR;
+
initMcl();
}
MasterContainerLidMgr::MasterContainerLidMgr(const void* i_pMcl,
const size_t i_size)
-: iv_mclAddr(MCL_ADDR), iv_mclSize(MCL_SIZE), iv_tmpAddr(MCL_TMP_ADDR),
- iv_tmpSize(MCL_TMP_SIZE), iv_maxSize(0), iv_pMclVaddr(nullptr),
- iv_pTempVaddr(nullptr), iv_pVaddr(nullptr), iv_compInfoCache{},
- iv_hasHeader(false)
+: iv_mclSize(MCL_SIZE), iv_tmpSize(MCL_TMP_SIZE), iv_maxSize(0),
+ iv_pMclVaddr(nullptr), iv_pTempVaddr(nullptr), iv_pVaddr(nullptr),
+ iv_compInfoCache{}, iv_hasHeader(false)
{
+ // Need to make Memory spaces HRMOR-relative
+ uint64_t hrmorVal = cpu_spr_value(CPU_SPR_HRMOR);
+ iv_mclAddr = hrmorVal - VMM_HRMOR_OFFSET + MCL_ADDR;
+ iv_tmpAddr = hrmorVal - VMM_HRMOR_OFFSET + MCL_TMP_ADDR;
+
+
initMcl(i_pMcl, i_size);
}
diff --git a/src/usr/util/utiltcemgr.C b/src/usr/util/utiltcemgr.C
index d925c332a..a0a2d58d5 100644
--- a/src/usr/util/utiltcemgr.C
+++ b/src/usr/util/utiltcemgr.C
@@ -201,7 +201,7 @@ errlHndl_t utilSetupPayloadTces(void)
errl = utilAllocateTces(addr, size, token);
if (errl)
{
- TRACFCOMP(g_trac_tce,"utilSetupPayloadTces(): ERROR back from utilAllocateTces() for HDAT using addr=0x%.16llX, size=0x%llX", HDAT_TMP_ADDR, HDAT_TMP_SIZE);
+ TRACFCOMP(g_trac_tce,"utilSetupPayloadTces(): ERROR back from utilAllocateTces() for HDAT using addr=0x%.16llX, size=0x%llX", addr, size);
break;
}
else
@@ -262,7 +262,7 @@ errlHndl_t utilClosePayloadTces(void)
nullptr); //Master Processor
if(errl)
{
- TRACFCOMP(g_trac_tce,"utilClosePayloadTces(): ERROR back from closeUnsecureMemRegion() using start address=0x%016llX",MCL_TMP_ADDR);
+ TRACFCOMP(g_trac_tce,"utilClosePayloadTces(): ERROR back from closeUnsecureMemRegion() using start address=0x%016llX",addr);
break;
}
OpenPOWER on IntegriCloud