@@ -2924,29 +2924,21 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) {
2924
2924
dispatchBarrierPacket (kBarrierPacketHeader , false );
2925
2925
Barriers ().WaitCurrent ();
2926
2926
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 ;
2949
2939
}
2940
+ } else {
2941
+ LogError (" HSA Command: hsa_amd_vmem_unmap failed" );
2950
2942
}
2951
2943
}
2952
2944
0 commit comments