From d083bcd4bda51d2b472f37beae06d70188fe670e Mon Sep 17 00:00:00 2001 From: Dean Sanner Date: Wed, 14 Dec 2016 16:00:09 -0600 Subject: Adjust MPIPL ATTR save address relative to HRMOR Change-Id: Icc0cc144d9ddf24966c0108db8d37bf4284bfd2d Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33860 Tested-by: Jenkins Server Reviewed-by: Christian R. Geddes Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/usr/runtime/populate_hbruntime.C | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/usr/runtime') diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C index f394f58bf..e3eaffdc1 100644 --- a/src/usr/runtime/populate_hbruntime.C +++ b/src/usr/runtime/populate_hbruntime.C @@ -154,9 +154,12 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId) //Create a block map of memory so we can save a copy of the attribute //data incase we need to MPIPL + //Account HRMOR (non 0 base addr) + uint64_t l_attr_data_addr = cpu_spr_value(CPU_SPR_HRMOR) + + MPIPL_ATTR_DATA_ADDR; uint64_t l_attrCopyVmemAddr = reinterpret_cast(mm_block_map( - reinterpret_cast(MPIPL_ATTR_DATA_ADDR), + reinterpret_cast(l_attr_data_addr), MPIPL_ATTR_VMM_SIZE )); //Make sure the address returned from the block map call is not NULL @@ -173,7 +176,7 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId) { TRACFCOMP( g_trac_runtime, "populate_RtDataByNode fail to unmap physical addr %p, virt addr %p", - reinterpret_cast(MPIPL_ATTR_DATA_ADDR), + reinterpret_cast(l_attr_data_addr), reinterpret_cast(l_attrCopyVmemAddr)); /*@ errorlog tag * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE @@ -188,7 +191,7 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId) l_elog = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, RUNTIME::MOD_POPULATE_RTDATABYNODE, RUNTIME::RC_UNMAP_FAIL, - MPIPL_ATTR_DATA_ADDR, + l_attr_data_addr, l_attrCopyVmemAddr, true); } @@ -197,7 +200,7 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId) { TRACFCOMP( g_trac_runtime, "populate_RtDataByNode fail to map physical addr %p, size %lx", - reinterpret_cast(MPIPL_ATTR_DATA_ADDR), + reinterpret_cast(l_attr_data_addr), MPIPL_ATTR_VMM_SIZE ); /*@ errorlog tag * @errortype ERRORLOG::ERRL_SEV_UNRECOVERABLE @@ -212,7 +215,7 @@ errlHndl_t populate_RtDataByNode(uint64_t iNodeId) l_elog = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, RUNTIME::MOD_POPULATE_RTDATABYNODE, RUNTIME::RC_CANNOT_MAP_MEMORY, - MPIPL_ATTR_DATA_ADDR, + l_attr_data_addr, MPIPL_ATTR_VMM_SIZE, true); } -- cgit v1.2.3