Lines Matching refs:gang
348 struct amdgpu_mes_gang *gang, *tmp1; in amdgpu_mes_destroy_process() local
368 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
369 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
375 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_destroy_process()
383 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_destroy_process()
391 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) { in amdgpu_mes_destroy_process()
393 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) { in amdgpu_mes_destroy_process()
398 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_destroy_process()
399 &gang->gang_ctx_gpu_addr, in amdgpu_mes_destroy_process()
400 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_destroy_process()
401 list_del(&gang->list); in amdgpu_mes_destroy_process()
402 kfree(gang); in amdgpu_mes_destroy_process()
417 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_gang() local
421 gang = kzalloc(sizeof(struct amdgpu_mes_gang), GFP_KERNEL); in amdgpu_mes_add_gang()
422 if (!gang) { in amdgpu_mes_add_gang()
429 &gang->gang_ctx_bo, in amdgpu_mes_add_gang()
430 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
431 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
436 memset(gang->gang_ctx_cpu_ptr, 0, AMDGPU_MES_GANG_CTX_SIZE); in amdgpu_mes_add_gang()
452 r = idr_alloc(&adev->mes.gang_id_idr, gang, 1, 0, in amdgpu_mes_add_gang()
459 gang->gang_id = r; in amdgpu_mes_add_gang()
462 INIT_LIST_HEAD(&gang->queue_list); in amdgpu_mes_add_gang()
463 gang->process = process; in amdgpu_mes_add_gang()
464 gang->priority = gprops->priority; in amdgpu_mes_add_gang()
465 gang->gang_quantum = gprops->gang_quantum ? in amdgpu_mes_add_gang()
467 gang->global_priority_level = gprops->global_priority_level; in amdgpu_mes_add_gang()
468 gang->inprocess_gang_priority = gprops->inprocess_gang_priority; in amdgpu_mes_add_gang()
469 list_add_tail(&gang->list, &process->gang_list); in amdgpu_mes_add_gang()
476 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_add_gang()
477 &gang->gang_ctx_gpu_addr, in amdgpu_mes_add_gang()
478 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_add_gang()
480 kfree(gang); in amdgpu_mes_add_gang()
486 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_gang() local
494 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_remove_gang()
495 if (!gang) { in amdgpu_mes_remove_gang()
501 if (!list_empty(&gang->queue_list)) { in amdgpu_mes_remove_gang()
507 idr_remove(&adev->mes.gang_id_idr, gang->gang_id); in amdgpu_mes_remove_gang()
508 list_del(&gang->list); in amdgpu_mes_remove_gang()
511 amdgpu_bo_free_kernel(&gang->gang_ctx_bo, in amdgpu_mes_remove_gang()
512 &gang->gang_ctx_gpu_addr, in amdgpu_mes_remove_gang()
513 &gang->gang_ctx_cpu_ptr); in amdgpu_mes_remove_gang()
515 kfree(gang); in amdgpu_mes_remove_gang()
524 struct amdgpu_mes_gang *gang; in amdgpu_mes_suspend() local
537 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_suspend()
541 pasid, gang->gang_id); in amdgpu_mes_suspend()
553 struct amdgpu_mes_gang *gang; in amdgpu_mes_resume() local
566 list_for_each_entry(gang, &process->gang_list, list) { in amdgpu_mes_resume()
570 pasid, gang->gang_id); in amdgpu_mes_resume()
638 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_hw_queue() local
661 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_hw_queue()
662 if (!gang) { in amdgpu_mes_add_hw_queue()
680 r = amdgpu_mes_queue_doorbell_get(adev, gang->process, in amdgpu_mes_add_hw_queue()
690 queue_input.process_id = gang->process->pasid; in amdgpu_mes_add_hw_queue()
693 adev->vm_manager.vram_base_offset + gang->process->pd_gpu_addr - in amdgpu_mes_add_hw_queue()
699 queue_input.process_quantum = gang->process->process_quantum; in amdgpu_mes_add_hw_queue()
700 queue_input.process_context_addr = gang->process->proc_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
701 queue_input.gang_quantum = gang->gang_quantum; in amdgpu_mes_add_hw_queue()
702 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_add_hw_queue()
703 queue_input.inprocess_gang_priority = gang->inprocess_gang_priority; in amdgpu_mes_add_hw_queue()
704 queue_input.gang_global_priority_level = gang->global_priority_level; in amdgpu_mes_add_hw_queue()
722 gang->process->pasid, gang_id, qprops->queue_type, in amdgpu_mes_add_hw_queue()
730 queue->gang = gang; in amdgpu_mes_add_hw_queue()
732 list_add_tail(&queue->list, &gang->queue_list); in amdgpu_mes_add_hw_queue()
738 amdgpu_mes_queue_doorbell_free(adev, gang->process, in amdgpu_mes_add_hw_queue()
756 struct amdgpu_mes_gang *gang; in amdgpu_mes_remove_hw_queue() local
783 gang = queue->gang; in amdgpu_mes_remove_hw_queue()
785 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr; in amdgpu_mes_remove_hw_queue()
793 amdgpu_mes_queue_doorbell_free(adev, gang->process, in amdgpu_mes_remove_hw_queue()
986 struct amdgpu_mes_gang *gang; in amdgpu_mes_add_ring() local
995 gang = idr_find(&adev->mes.gang_id_idr, gang_id); in amdgpu_mes_add_ring()
996 if (!gang) { in amdgpu_mes_add_ring()
1001 pasid = gang->process->pasid; in amdgpu_mes_add_ring()
1044 dma_fence_wait(gang->process->vm->last_update, false); in amdgpu_mes_add_ring()