2
0

SWDEV-529929 - hipMemGetHandleForAddressRange implementation. (#245)

Este cometimento está contido em:
Jayaprakash, Karthik
2025-05-20 15:56:04 -04:00
cometido por GitHub
ascendente bed454caa1
cometimento 12131de4a9
11 ficheiros modificados com 120 adições e 6 eliminações
+19
Ver ficheiro
@@ -1126,6 +1126,25 @@ std::vector<amd::CommandQueue*> Device::getActiveQueues() {
}
return std::vector<amd::CommandQueue*>(activeQueues.begin(), activeQueues.end());
}
// =================================================================================================
bool Device::GetHandleForAddressRange(void* dev_ptr, size_t size, void* handle) {
// Check if the ptr is created through VMM APIs, if true we use different ROCr APIs.
amd::Memory* amd_base_obj = amd::MemObjMap::FindVirtualMemObj(dev_ptr);
bool VmmPtr = (amd_base_obj != nullptr) ? true : false;
// Even if it is VMM ptr, check to make sure the memory is mapped. On hipMalloc'ed ptrs,
// make sure the memory is allocated.
amd::Memory* amd_mem_obj = amd::MemObjMap::FindMemObj(dev_ptr);
if (amd_mem_obj == nullptr) {
DevLogPrintfError("Cannot retrieve amd_mem_obj for dev_ptr: 0x%x", dev_ptr);
return false;
}
device::Memory* dev_mem = amd_mem_obj->getDeviceMemory(*this);
return dev_mem->GetFDHandleForMem(dev_ptr, size, VmmPtr, handle);
}
} // namespace amd
namespace amd::device {