SWDEV-413997 - Fixing multiple device cases.
Change-Id: I10ad3fbfca887e92cd81f68392fa1acf753cbd2b
Этот коммит содержится в:
коммит произвёл
Karthik Jayaprakash
родитель
7de7da4016
Коммит
d52d16c8e6
@@ -2434,22 +2434,12 @@ void* Device::virtualAlloc(void* req_addr, size_t size, size_t alignment) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// This mem->create() does not create an actual memory but stores the memory info with given vptr.
|
||||
auto mem = new (context()) amd::Buffer(context(), CL_MEM_VA_RANGE_AMD, size, vptr);
|
||||
constexpr bool kParent = true;
|
||||
amd::Memory* mem = CreateVirtualBuffer(context(), vptr, size, -1, kParent);
|
||||
if (mem == nullptr) {
|
||||
LogError("failed to new a va range mem object!");
|
||||
return nullptr;
|
||||
LogPrintfError("Cannot create Virtual Buffer for vptr: %p of size: %u", vptr, size);
|
||||
}
|
||||
|
||||
if (!mem->create(nullptr, false)) {
|
||||
LogError("failed to create a va range mem object");
|
||||
mem->release();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Assert to make sure that amd::Memory object has set the right ptr.
|
||||
guarantee(vptr == mem->getSvmPtr(), "amd::Memory object does not have the right ptr");
|
||||
|
||||
return mem->getSvmPtr();
|
||||
}
|
||||
|
||||
@@ -2459,6 +2449,8 @@ void Device::virtualFree(void* addr) {
|
||||
LogPrintfError("Cannot find the Virtual MemObj entry for this addr 0x%x", addr);
|
||||
}
|
||||
|
||||
memObj->getContext().devices()[0]->DestroyVirtualBuffer(memObj);
|
||||
|
||||
hsa_status_t hsa_status = hsa_amd_vmem_address_free(memObj->getSvmPtr(), memObj->getSize());
|
||||
if (hsa_status != HSA_STATUS_SUCCESS) {
|
||||
LogPrintfError("Failed hsa_amd_vmem_address_free. Failed with status:%d \n", hsa_status);
|
||||
|
||||
Ссылка в новой задаче
Block a user