SWDEV-353281 - Corret VA unmap

Make sure graph mempool unmaps VA on release

Change-Id: Id3f1bd8d0115b533ae60aa5ba3676b8bf7e5b961
This commit is contained in:
German Andryeyev
2024-04-23 19:15:14 -04:00
parent cffff4e1cb
commit 5c1804aa14
4 changed files with 21 additions and 10 deletions
+5 -1
View File
@@ -2598,6 +2598,7 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) {
assert(amd::MemObjMap::FindMemObj(vcmd.ptr()) == nullptr);
amd::MemObjMap::AddMemObj(vcmd.ptr(), vaddr_sub_obj);
vaddr_sub_obj->getUserData().phys_mem_obj = phys_mem_obj;
phys_mem_obj->getUserData().vaddr_mem_obj = vaddr_sub_obj;
} else {
LogError("HSA Command: hsa_amd_vmem_map failed!");
}
@@ -2614,7 +2615,10 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) {
// assert the va is mapped and needs to be removed
vaddr_sub_obj->getContext().devices()[0]->DestroyVirtualBuffer(vaddr_sub_obj);
amd::MemObjMap::RemoveMemObj(vcmd.ptr());
vaddr_sub_obj->getUserData().phys_mem_obj = nullptr;
if (vaddr_sub_obj->getUserData().phys_mem_obj != nullptr) {
vaddr_sub_obj->getUserData().phys_mem_obj->getUserData().vaddr_mem_obj = nullptr;
vaddr_sub_obj->getUserData().phys_mem_obj = nullptr;
}
} else {
LogError("HSA Command: hsa_amd_vmem_unmap failed");
}