Lines Matching refs:gang

350 	struct amdgpu_mes_gang *gang, *tmp1;  in amdgpu_mes_destroy_process()  local
370 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
371 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
377 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_destroy_process()
385 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_destroy_process()
393 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
395 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
400 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_destroy_process()
401 &gang->gang_ctx_gpu_addr, in amdgpu_mes_destroy_process()
402 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_destroy_process()
403 list_del(&gang->list); in amdgpu_mes_destroy_process()
404 kfree(gang); in amdgpu_mes_destroy_process()
419 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_gang() local
423 gang = kzalloc(sizeof(struct amdgpu_mes_gang), GFP_KERNEL); in amdgpu_mes_add_gang()
424 if (!gang) { in amdgpu_mes_add_gang()
431 &gang->gang_ctx_bo, in amdgpu_mes_add_gang()
432 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
433 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
438 memset(gang->gang_ctx_cpu_ptr, 0, AMDGPU_MES_GANG_CTX_SIZE); in amdgpu_mes_add_gang()
454 r = idr_alloc(&adev->mes.gang_id_idr, gang, 1, 0, in amdgpu_mes_add_gang()
461 gang->gang_id = r; in amdgpu_mes_add_gang()
464 INIT_LIST_HEAD(&gang->queue_list); in amdgpu_mes_add_gang()
465 gang->process = process; in amdgpu_mes_add_gang()
466 gang->priority = gprops->priority; in amdgpu_mes_add_gang()
467 gang->gang_quantum = gprops->gang_quantum ? in amdgpu_mes_add_gang()
469 gang->global_priority_level = gprops->global_priority_level; in amdgpu_mes_add_gang()
470 gang->inprocess_gang_priority = gprops->inprocess_gang_priority; in amdgpu_mes_add_gang()
471 list_add_tail(&gang->list, &process->gang_list); in amdgpu_mes_add_gang()
478 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_add_gang()
479 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
480 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
482 kfree(gang); in amdgpu_mes_add_gang()
488 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_gang() local
496 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_remove_gang()
497 if (!gang) { in amdgpu_mes_remove_gang()
503 if (!list_empty(&gang->queue_list)) { in amdgpu_mes_remove_gang()
509 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_remove_gang()
510 list_del(&gang->list); in amdgpu_mes_remove_gang()
513 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_remove_gang()
514 &gang->gang_ctx_gpu_addr, in amdgpu_mes_remove_gang()
515 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_remove_gang()
517 kfree(gang); in amdgpu_mes_remove_gang()
526 struct amdgpu_mes_gang *gang; in amdgpu_mes_suspend() local
539 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_suspend()
543 pasid, gang->gang_id); in amdgpu_mes_suspend()
555 struct amdgpu_mes_gang *gang; in amdgpu_mes_resume() local
568 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_resume()
572 pasid, gang->gang_id); in amdgpu_mes_resume()
640 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_hw_queue() local
663 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_hw_queue()
664 if (!gang) { in amdgpu_mes_add_hw_queue()
682 r = amdgpu_mes_queue_doorbell_get(adev, gang->process, in amdgpu_mes_add_hw_queue()
692 queue_input.process_id = gang->process->pasid; in amdgpu_mes_add_hw_queue()
695 adev->vm_manager.vram_base_offset + gang->process->pd_gpu_addr - in amdgpu_mes_add_hw_queue()
701 queue_input.process_quantum = gang->process->process_quantum; in amdgpu_mes_add_hw_queue()
702 queue_input.process_context_addr = gang->process->proc_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
703 queue_input.gang_quantum = gang->gang_quantum; in amdgpu_mes_add_hw_queue()
704 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
705 queue_input.inprocess_gang_priority = gang->inprocess_gang_priority; in amdgpu_mes_add_hw_queue()
706 queue_input.gang_global_priority_level = gang->global_priority_level; in amdgpu_mes_add_hw_queue()
724 gang->process->pasid, gang_id, qprops->queue_type, in amdgpu_mes_add_hw_queue()
732 queue->gang = gang; in amdgpu_mes_add_hw_queue()
734 list_add_tail(&queue->list, &gang->queue_list); in amdgpu_mes_add_hw_queue()
740 amdgpu_mes_queue_doorbell_free(adev, gang->process, in amdgpu_mes_add_hw_queue()
758 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_hw_queue() local
785 gang = queue->gang; in amdgpu_mes_remove_hw_queue()
787 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_remove_hw_queue()
795 amdgpu_mes_queue_doorbell_free(adev, gang->process, in amdgpu_mes_remove_hw_queue()
988 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_ring() local
997 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_ring()
998 if (!gang) { in amdgpu_mes_add_ring()
1003 pasid = gang->process->pasid; in amdgpu_mes_add_ring()
1046 dma_fence_wait(gang->process->vm->last_update, false); in amdgpu_mes_add_ring()