Lines Matching refs:gang
281 struct amdgpu_mes_gang *gang, *tmp1; in amdgpu_mes_destroy_process() local
301 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
302 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
308 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_destroy_process()
316 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_destroy_process()
323 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
325 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
330 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_destroy_process()
331 &gang->gang_ctx_gpu_addr, in amdgpu_mes_destroy_process()
332 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_destroy_process()
333 list_del(&gang->list); in amdgpu_mes_destroy_process()
334 kfree(gang); in amdgpu_mes_destroy_process()
348 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_gang() local
352 gang = kzalloc(sizeof(struct amdgpu_mes_gang), GFP_KERNEL); in amdgpu_mes_add_gang()
353 if (!gang) { in amdgpu_mes_add_gang()
360 &gang->gang_ctx_bo, in amdgpu_mes_add_gang()
361 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
362 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
367 memset(gang->gang_ctx_cpu_ptr, 0, AMDGPU_MES_GANG_CTX_SIZE); in amdgpu_mes_add_gang()
383 r = idr_alloc(&adev->mes.gang_id_idr, gang, 1, 0, in amdgpu_mes_add_gang()
390 gang->gang_id = r; in amdgpu_mes_add_gang()
393 INIT_LIST_HEAD(&gang->queue_list); in amdgpu_mes_add_gang()
394 gang->process = process; in amdgpu_mes_add_gang()
395 gang->priority = gprops->priority; in amdgpu_mes_add_gang()
396 gang->gang_quantum = gprops->gang_quantum ? in amdgpu_mes_add_gang()
398 gang->global_priority_level = gprops->global_priority_level; in amdgpu_mes_add_gang()
399 gang->inprocess_gang_priority = gprops->inprocess_gang_priority; in amdgpu_mes_add_gang()
400 list_add_tail(&gang->list, &process->gang_list); in amdgpu_mes_add_gang()
407 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_add_gang()
408 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
409 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
411 kfree(gang); in amdgpu_mes_add_gang()
417 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_gang() local
425 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_remove_gang()
426 if (!gang) { in amdgpu_mes_remove_gang()
432 if (!list_empty(&gang->queue_list)) { in amdgpu_mes_remove_gang()
438 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_remove_gang()
439 list_del(&gang->list); in amdgpu_mes_remove_gang()
442 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_remove_gang()
443 &gang->gang_ctx_gpu_addr, in amdgpu_mes_remove_gang()
444 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_remove_gang()
446 kfree(gang); in amdgpu_mes_remove_gang()
455 struct amdgpu_mes_gang *gang; in amdgpu_mes_suspend() local
468 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_suspend()
472 pasid, gang->gang_id); in amdgpu_mes_suspend()
484 struct amdgpu_mes_gang *gang; in amdgpu_mes_resume() local
497 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_resume()
501 pasid, gang->gang_id); in amdgpu_mes_resume()
569 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_hw_queue() local
594 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_hw_queue()
595 if (!gang) { in amdgpu_mes_add_hw_queue()
613 r = amdgpu_mes_kernel_doorbell_get(adev, gang->process, in amdgpu_mes_add_hw_queue()
623 queue_input.process_id = gang->process->pasid; in amdgpu_mes_add_hw_queue()
626 adev->vm_manager.vram_base_offset + gang->process->pd_gpu_addr - in amdgpu_mes_add_hw_queue()
632 queue_input.process_quantum = gang->process->process_quantum; in amdgpu_mes_add_hw_queue()
633 queue_input.process_context_addr = gang->process->proc_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
634 queue_input.gang_quantum = gang->gang_quantum; in amdgpu_mes_add_hw_queue()
635 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
636 queue_input.inprocess_gang_priority = gang->inprocess_gang_priority; in amdgpu_mes_add_hw_queue()
637 queue_input.gang_global_priority_level = gang->global_priority_level; in amdgpu_mes_add_hw_queue()
655 gang->process->pasid, gang_id, qprops->queue_type, in amdgpu_mes_add_hw_queue()
663 queue->gang = gang; in amdgpu_mes_add_hw_queue()
665 list_add_tail(&queue->list, &gang->queue_list); in amdgpu_mes_add_hw_queue()
671 amdgpu_mes_kernel_doorbell_free(adev, gang->process, in amdgpu_mes_add_hw_queue()
689 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_hw_queue() local
716 gang = queue->gang; in amdgpu_mes_remove_hw_queue()
718 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_remove_hw_queue()
726 amdgpu_mes_kernel_doorbell_free(adev, gang->process, in amdgpu_mes_remove_hw_queue()
956 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_ring() local
965 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_ring()
966 if (!gang) { in amdgpu_mes_add_ring()
971 pasid = gang->process->pasid; in amdgpu_mes_add_ring()
1014 dma_fence_wait(gang->process->vm->last_update, false); in amdgpu_mes_add_ring()