From 9a25ec266bb8f45da93567e6104fcef72582eb90 Mon Sep 17 00:00:00 2001 From: Sourabh Betigeri Date: Tue, 8 Mar 2022 17:19:25 -0800 Subject: [PATCH] SWDEV-326380 - Fixes a regression by verifying the device virtual address already exists in the memObjMap Change-Id: Ibe29f3c6b77385a8e264ab523cafa4b5d2b41325 [ROCm/clr commit: 85a25a4be2672a7aa337112420a6e46f0bfdd1e9] --- projects/clr/hipamd/src/hip_memory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index 2b3dec2b0c..88456f4466 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -994,7 +994,10 @@ hipError_t hipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) // Since the amd::Memory object is shared between all devices // it's fine to have multiple addresses mapped to it const device::Memory* devMem = mem->getDeviceMemory(*device->devices()[0]); - amd::MemObjMap::AddMemObj(reinterpret_cast(devMem->virtualAddress()), mem); + void* vAddr = reinterpret_cast(devMem->virtualAddress()); + if (amd::MemObjMap::FindMemObj(vAddr) == nullptr) { + amd::MemObjMap::AddMemObj(vAddr, mem); + } } amd::MemObjMap::AddMemObj(hostPtr, mem);