Lines Matching refs:queue
63 struct amdgpu_usermode_queue *queue, in mes_userq_create_wptr_mapping() argument
68 struct amdgpu_userq_obj *wptr_obj = &queue->wptr_obj; in mes_userq_create_wptr_mapping()
71 wptr_vm = queue->vm; in mes_userq_create_wptr_mapping()
96 queue->wptr_obj.gpu_addr = amdgpu_bo_gpu_offset_no_check(wptr_obj->obj); in mes_userq_create_wptr_mapping()
116 struct amdgpu_usermode_queue *queue) in mes_userq_map() argument
119 struct amdgpu_userq_obj *ctx = &queue->fw_obj; in mes_userq_map()
120 struct amdgpu_mqd_prop *userq_props = queue->userq_prop; in mes_userq_map()
137 queue_input.gang_global_priority_level = convert_to_mes_priority(queue->priority); in mes_userq_map()
139 queue_input.process_id = queue->vm->pasid; in mes_userq_map()
140 queue_input.queue_type = queue->queue_type; in mes_userq_map()
141 queue_input.mqd_addr = queue->mqd.gpu_addr; in mes_userq_map()
145 queue_input.page_table_base_addr = amdgpu_gmc_pd_addr(queue->vm->root.bo); in mes_userq_map()
146 queue_input.wptr_mc_addr = queue->wptr_obj.gpu_addr; in mes_userq_map()
161 struct amdgpu_usermode_queue *queue) in mes_userq_unmap() argument
165 struct amdgpu_userq_obj *ctx = &queue->fw_obj; in mes_userq_unmap()
169 queue_input.doorbell_offset = queue->doorbell_index; in mes_userq_unmap()
181 struct amdgpu_usermode_queue *queue, in mes_userq_create_ctx_space() argument
184 struct amdgpu_userq_obj *ctx = &queue->fw_obj; in mes_userq_create_ctx_space()
207 struct amdgpu_usermode_queue *queue; in mes_userq_detect_and_reset() local
231 xa_for_each(&adev->userq_doorbell_xa, queue_id, queue) { in mes_userq_detect_and_reset()
232 if (queue->queue_type == queue_type) { in mes_userq_detect_and_reset()
234 if (queue->doorbell_index == db_array[i]) { in mes_userq_detect_and_reset()
235 queue->state = AMDGPU_USERQ_STATE_HUNG; in mes_userq_detect_and_reset()
238 amdgpu_userq_fence_driver_force_completion(queue); in mes_userq_detect_and_reset()
256 struct amdgpu_usermode_queue *queue) in mes_userq_mqd_create() argument
259 struct amdgpu_mqd *mqd_hw_default = &adev->mqds[queue->queue_type]; in mes_userq_mqd_create()
271 r = amdgpu_userq_create_object(uq_mgr, &queue->mqd, mqd_hw_default->mqd_size); in mes_userq_mqd_create()
282 userq_props->mqd_gpu_addr = queue->mqd.gpu_addr; in mes_userq_mqd_create()
284 userq_props->doorbell_index = queue->doorbell_index; in mes_userq_mqd_create()
285 userq_props->fence_address = queue->fence_drv->gpu_addr; in mes_userq_mqd_create()
287 if (queue->queue_type == AMDGPU_HW_IP_COMPUTE) { in mes_userq_mqd_create()
303 r = amdgpu_userq_input_va_validate(queue, compute_mqd->eop_va, in mes_userq_mqd_create()
315 } else if (queue->queue_type == AMDGPU_HW_IP_GFX) { in mes_userq_mqd_create()
344 r = amdgpu_userq_input_va_validate(queue, mqd_gfx_v11->shadow_va, in mes_userq_mqd_create()
348 r = amdgpu_userq_input_va_validate(queue, mqd_gfx_v11->csa_va, in mes_userq_mqd_create()
354 } else if (queue->queue_type == AMDGPU_HW_IP_DMA) { in mes_userq_mqd_create()
369 r = amdgpu_userq_input_va_validate(queue, mqd_sdma_v11->csa_va, in mes_userq_mqd_create()
378 queue->userq_prop = userq_props; in mes_userq_mqd_create()
380 r = mqd_hw_default->init_mqd(adev, (void *)queue->mqd.cpu_ptr, userq_props); in mes_userq_mqd_create()
387 r = mes_userq_create_ctx_space(uq_mgr, queue, mqd_user); in mes_userq_mqd_create()
394 r = mes_userq_create_wptr_mapping(uq_mgr, queue, userq_props->wptr_gpu_addr); in mes_userq_mqd_create()
403 amdgpu_userq_destroy_object(uq_mgr, &queue->fw_obj); in mes_userq_mqd_create()
406 amdgpu_userq_destroy_object(uq_mgr, &queue->mqd); in mes_userq_mqd_create()
416 struct amdgpu_usermode_queue *queue) in mes_userq_mqd_destroy() argument
418 amdgpu_userq_destroy_object(uq_mgr, &queue->fw_obj); in mes_userq_mqd_destroy()
419 kfree(queue->userq_prop); in mes_userq_mqd_destroy()
420 amdgpu_userq_destroy_object(uq_mgr, &queue->mqd); in mes_userq_mqd_destroy()
424 struct amdgpu_usermode_queue *queue) in mes_userq_preempt() argument
428 struct amdgpu_userq_obj *ctx = &queue->fw_obj; in mes_userq_preempt()
435 if (queue->state != AMDGPU_USERQ_STATE_MAPPED) in mes_userq_preempt()
470 struct amdgpu_usermode_queue *queue) in mes_userq_restore() argument
474 struct amdgpu_userq_obj *ctx = &queue->fw_obj; in mes_userq_restore()
477 if (queue->state == AMDGPU_USERQ_STATE_HUNG) in mes_userq_restore()
479 if (queue->state != AMDGPU_USERQ_STATE_PREEMPTED) in mes_userq_restore()