@@ -2924,29 +2924,21 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) {
29242924 dispatchBarrierPacket (kBarrierPacketHeader , false );
29252925 Barriers ().WaitCurrent ();
29262926
2927- size_t total_unmapped_buffers_size = 0 ;
2928- auto sub_buffers = vaddr_base_obj->subBuffers ();
2929- for (auto buffer : sub_buffers) {
2930- if (total_unmapped_buffers_size + buffer->getSize () <= vcmd.size ()) {
2931- // Unmap the object, since the physical addr is set.
2932- if ((hsa_status = hsa_amd_vmem_unmap (buffer->getSvmPtr (), buffer->getSize ())) ==
2933- HSA_STATUS_SUCCESS) {
2934- buffer->getContext ().devices ()[0 ]->DestroyVirtualBuffer (buffer);
2935- amd::MemObjMap::RemoveMemObj (buffer->getSvmPtr ());
2936- if (buffer->getUserData ().phys_mem_obj != nullptr ) {
2937- auto & phys_mem_user_data = buffer->getUserData ().phys_mem_obj ->getUserData ();
2938- phys_mem_user_data.vaddr_mem_obj = nullptr ;
2939- if (phys_mem_user_data.data != nullptr ) {
2940- reinterpret_cast <amd::RuntimeObject*>(phys_mem_user_data.data )->release ();
2941- }
2942- buffer->getUserData ().phys_mem_obj = nullptr ;
2943- total_unmapped_buffers_size += buffer->getSize ();
2944- }
2945- buffer->release ();
2946- } else {
2947- LogError (" HSA Command: hsa_amd_vmem_unmap failed" );
2948- }
2927+ amd::Memory* vaddr_sub_obj = amd::MemObjMap::FindMemObj (vcmd.ptr ());
2928+ assert (vaddr_sub_obj != nullptr );
2929+
2930+ // Unmap the object, since the physical addr is set.
2931+ if ((hsa_status = hsa_amd_vmem_unmap (vaddr_sub_obj->getSvmPtr (), vcmd.size ()))
2932+ == HSA_STATUS_SUCCESS) {
2933+ // assert the va is mapped and needs to be removed
2934+ vaddr_sub_obj->getContext ().devices ()[0 ]->DestroyVirtualBuffer (vaddr_sub_obj);
2935+ amd::MemObjMap::RemoveMemObj (vcmd.ptr ());
2936+ if (vaddr_sub_obj->getUserData ().phys_mem_obj != nullptr ) {
2937+ vaddr_sub_obj->getUserData ().phys_mem_obj ->getUserData ().vaddr_mem_obj = nullptr ;
2938+ vaddr_sub_obj->getUserData ().phys_mem_obj = nullptr ;
29492939 }
2940+ } else {
2941+ LogError (" HSA Command: hsa_amd_vmem_unmap failed" );
29502942 }
29512943 }
29522944
0 commit comments