diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/isteps/istep21/call_host_runtime_setup.C | 15 | ||||
-rw-r--r-- | src/usr/util/utilmclmgr.C | 26 | ||||
-rw-r--r-- | src/usr/util/utiltcemgr.C | 4 |
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; } |