SWDEV-413997 - VMM IPC implementation for Linux.
Change-Id: Icfeb83ca51e96be35abb67a94d6e3e1a1ca5a934
This commit is contained in:
@@ -769,12 +769,28 @@ bool Buffer::create(bool alloc_local) {
|
||||
cl_mem_flags memFlags = owner()->getMemFlags();
|
||||
|
||||
if (memFlags & ROCCLR_MEM_PHYMEM) {
|
||||
// If this is physical memory request, then get an handle and store it in user data
|
||||
owner()->getUserData().hsa_handle = dev().deviceVmemAlloc(owner()->getSize(), 0);
|
||||
if (memFlags & ROCCLR_MEM_INTERPROCESS) {
|
||||
int dmabuf_fd = *(reinterpret_cast<int*>(owner()->getSvmPtr()));
|
||||
// if interprocess flag is set, then the memory is importable.
|
||||
if (!dev().ImportShareableVMMHandle(owner()->getSvmPtr(),
|
||||
&owner()->getUserData().hsa_handle)) {
|
||||
LogPrintfError("Importing Shareable Memory failed with os_handle: 0x%x \n",
|
||||
owner()->getSvmPtr());
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// If this is physical memory request, then get an handle and store it in user data
|
||||
owner()->getUserData().hsa_handle = dev().deviceVmemAlloc(owner()->getSize(), 0);
|
||||
}
|
||||
|
||||
if (owner()->getUserData().hsa_handle == 0) {
|
||||
LogError("HSA Opaque Handle returned was null");
|
||||
return false;
|
||||
}
|
||||
|
||||
owner()->setSvmPtr(reinterpret_cast<void*>(owner()->getUserData().hsa_handle));
|
||||
amd::MemObjMap::AddMemObj(owner()->getSvmPtr(), owner());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user