From 1ca3e7867e80bec01d55449f74faf7f19fb20403 Mon Sep 17 00:00:00 2001 From: foreman Date: Wed, 1 Aug 2018 12:08:35 -0400 Subject: [PATCH] P4 to Git Change 1588185 by vsytchen@vsytchen-win10 on 2018/08/01 11:46:00 SWDEV-145570 - [HIP] Correctly handle calculating the offset when retrieving the amd::Memory object from a prepinned pointer ReviewBoardURL = http://ocltc.amd.com/reviews/r/15539/diff/ Affected files ... ... //depot/stg/opencl/drivers/opencl/api/hip/hip_memory.cpp#38 edit [ROCm/hip commit: 83ae8eb381fa6e12104da3c6c5d6ecf0fb31af11] --- projects/hip/api/hip/hip_memory.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/hip/api/hip/hip_memory.cpp b/projects/hip/api/hip/hip_memory.cpp index 7e74820852..d2cb3b7d8c 100644 --- a/projects/hip/api/hip/hip_memory.cpp +++ b/projects/hip/api/hip/hip_memory.cpp @@ -38,8 +38,16 @@ extern void getDrvChannelOrderAndType(const enum hipArray_Format Format, amd::Memory* getMemoryObject(const void* ptr, size_t& offset) { amd::Memory *memObj = amd::MemObjMap::FindMemObj(ptr); - if (memObj != nullptr && memObj->getSvmPtr() != nullptr) { - offset = reinterpret_cast(ptr) - reinterpret_cast(memObj->getSvmPtr()); + if (memObj != nullptr) { + if (memObj->getSvmPtr() != nullptr) { + // SVM pointer + offset = reinterpret_cast(ptr) - reinterpret_cast(memObj->getSvmPtr()); + } else if (memObj->getHostMem() != nullptr) { + // Prepinned memory + offset = reinterpret_cast(ptr) - reinterpret_cast(memObj->getHostMem()); + } else { + ShouldNotReachHere(); + } } return memObj; }