From 74ffc5f0d5097ba8144eb4adc5c2fd62aef11a9c Mon Sep 17 00:00:00 2001 From: kjayapra-amd Date: Sat, 20 Apr 2024 16:07:51 -0400 Subject: [PATCH] SWDEV-413997 - Cleanup fixes for Virtual Memory Management. Change-Id: I9a4a4d9087b5daf15e3ba31e786d34db431212a1 --- rocclr/device/rocm/rocmemory.cpp | 1 - rocclr/device/rocm/rocvirtual.cpp | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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;