diff --git a/rocclr/device/rocm/rocmemory.cpp b/rocclr/device/rocm/rocmemory.cpp index 75460957e4..65e22c7fe3 100644 --- a/rocclr/device/rocm/rocmemory.cpp +++ b/rocclr/device/rocm/rocmemory.cpp @@ -789,7 +789,6 @@ bool Buffer::create(bool alloc_local) { } owner()->setSvmPtr(reinterpret_cast(owner()->getUserData().hsa_handle)); - amd::MemObjMap::AddMemObj(owner()->getSvmPtr(), owner()); return true; } diff --git a/rocclr/device/rocm/rocvirtual.cpp b/rocclr/device/rocm/rocvirtual.cpp index 3bb892696b..4279f39bef 100644 --- a/rocclr/device/rocm/rocvirtual.cpp +++ b/rocclr/device/rocm/rocvirtual.cpp @@ -2605,12 +2605,13 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) { dispatchBarrierPacket(kBarrierPacketHeader, false); Barriers().WaitCurrent(); + amd::Memory* vaddr_sub_obj = amd::MemObjMap::FindMemObj(vcmd.ptr()); + assert(vaddr_sub_obj != nullptr); + // Unmap the object, since the physical addr is set. - if ((hsa_status = hsa_amd_vmem_unmap(vaddr_base_obj->getSvmPtr(), vcmd.size())) + if ((hsa_status = hsa_amd_vmem_unmap(vaddr_sub_obj->getSvmPtr(), vcmd.size())) == HSA_STATUS_SUCCESS) { // assert the va is mapped and needs to be removed - amd::Memory* vaddr_sub_obj = amd::MemObjMap::FindMemObj(vcmd.ptr()); - assert(vaddr_sub_obj != nullptr); vaddr_sub_obj->getContext().devices()[0]->DestroyVirtualBuffer(vaddr_sub_obj); amd::MemObjMap::RemoveMemObj(vcmd.ptr()); vaddr_sub_obj->getUserData().phys_mem_obj = nullptr;