Lines Matching defs:gang
281 struct amdgpu_mes_gang *gang, *tmp1;
301 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) {
302 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) {
308 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr;
316 idr_remove(&adev->mes.gang_id_idr, gang->gang_id);
323 list_for_each_entry_safe(gang, tmp1, &process->gang_list, list) {
324 /* free all queues in the gang */
325 list_for_each_entry_safe(queue, tmp2, &gang->queue_list, list) {
330 amdgpu_bo_free_kernel(&gang->gang_ctx_bo,
331 &gang->gang_ctx_gpu_addr,
332 &gang->gang_ctx_cpu_ptr);
333 list_del(&gang->list);
334 kfree(gang);
348 struct amdgpu_mes_gang *gang;
351 /* allocate the mes gang buffer */
352 gang = kzalloc(sizeof(struct amdgpu_mes_gang), GFP_KERNEL);
353 if (!gang) {
357 /* allocate the gang context bo and map it to cpu space */
360 &gang->gang_ctx_bo,
361 &gang->gang_ctx_gpu_addr,
362 &gang->gang_ctx_cpu_ptr);
367 memset(gang->gang_ctx_cpu_ptr, 0, AMDGPU_MES_GANG_CTX_SIZE);
382 /* add the mes gang to idr list */
383 r = idr_alloc(&adev->mes.gang_id_idr, gang, 1, 0,
386 DRM_ERROR("failed to allocate idr for gang\n");
390 gang->gang_id = r;
393 INIT_LIST_HEAD(&gang->queue_list);
394 gang->process = process;
395 gang->priority = gprops->priority;
396 gang->gang_quantum = gprops->gang_quantum ?
398 gang->global_priority_level = gprops->global_priority_level;
399 gang->inprocess_gang_priority = gprops->inprocess_gang_priority;
400 list_add_tail(&gang->list, &process->gang_list);
407 amdgpu_bo_free_kernel(&gang->gang_ctx_bo,
408 &gang->gang_ctx_gpu_addr,
409 &gang->gang_ctx_cpu_ptr);
411 kfree(gang);
417 struct amdgpu_mes_gang *gang;
425 gang = idr_find(&adev->mes.gang_id_idr, gang_id);
426 if (!gang) {
427 DRM_ERROR("gang id %d doesn't exist\n", gang_id);
432 if (!list_empty(&gang->queue_list)) {
438 idr_remove(&adev->mes.gang_id_idr, gang->gang_id);
439 list_del(&gang->list);
442 amdgpu_bo_free_kernel(&gang->gang_ctx_bo,
443 &gang->gang_ctx_gpu_addr,
444 &gang->gang_ctx_cpu_ptr);
446 kfree(gang);
455 struct amdgpu_mes_gang *gang;
468 list_for_each_entry(gang, &process->gang_list, list) {
472 pasid, gang->gang_id);
484 struct amdgpu_mes_gang *gang;
497 list_for_each_entry(gang, &process->gang_list, list) {
501 pasid, gang->gang_id);
581 struct amdgpu_mes_gang *gang;
606 gang = idr_find(&adev->mes.gang_id_idr, gang_id);
607 if (!gang) {
608 DRM_ERROR("gang id %d doesn't exist\n", gang_id);
613 /* add the mes gang to idr list */
625 r = amdgpu_mes_kernel_doorbell_get(adev, gang->process,
635 queue_input.process_id = gang->process->pasid;
638 adev->vm_manager.vram_base_offset + gang->process->pd_gpu_addr -
644 queue_input.process_quantum = gang->process->process_quantum;
645 queue_input.process_context_addr = gang->process->proc_ctx_gpu_addr;
646 queue_input.gang_quantum = gang->gang_quantum;
647 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr;
648 queue_input.inprocess_gang_priority = gang->inprocess_gang_priority;
649 queue_input.gang_global_priority_level = gang->global_priority_level;
665 DRM_DEBUG("MES hw queue was added, pasid=%d, gang id=%d, "
667 gang->process->pasid, gang_id, qprops->queue_type,
675 queue->gang = gang;
677 list_add_tail(&queue->list, &gang->queue_list);
683 amdgpu_mes_kernel_doorbell_free(adev, gang->process,
701 struct amdgpu_mes_gang *gang;
711 /* remove the mes gang from idr list */
728 gang = queue->gang;
730 queue_input.gang_context_addr = gang->gang_ctx_gpu_addr;
738 amdgpu_mes_kernel_doorbell_free(adev, gang->process,
999 struct amdgpu_mes_gang *gang;
1008 gang = idr_find(&adev->mes.gang_id_idr, gang_id);
1009 if (!gang) {
1010 DRM_ERROR("gang id %d doesn't exist\n", gang_id);
1014 pasid = gang->process->pasid;
1063 dma_fence_wait(gang->process->vm->last_update, false);
1281 /* create a gang for the process */
1290 DRM_ERROR("failed to add gang\n");
1294 /* create queues for the gang */