Lines Matching refs:q

39 		if ((pqn->q && pqn->q->properties.queue_id == qid) ||  in get_queue_by_qid()
119 if (pqn->q) in pqm_set_gws()
120 dev = pqn->q->device; in pqm_set_gws()
146 pqn->q->gws); in pqm_set_gws()
149 pqn->q->gws = mem; in pqm_set_gws()
157 pqn->q->gws = gws ? ERR_PTR(-ENOMEM) : NULL; in pqm_set_gws()
163 return pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm, in pqm_set_gws()
164 pqn->q, &minfo); in pqm_set_gws()
193 dev = pqn->q->device; in pqm_clean_queue_resource()
201 if (pqn->q->gws) { in pqm_clean_queue_resource()
202 if (KFD_GC_VERSION(pqn->q->device) != IP_VERSION(9, 4, 3) && in pqm_clean_queue_resource()
203 KFD_GC_VERSION(pqn->q->device) != IP_VERSION(9, 4, 4) && in pqm_clean_queue_resource()
204 KFD_GC_VERSION(pqn->q->device) != IP_VERSION(9, 5, 0) && in pqm_clean_queue_resource()
207 pqm->process->kgd_process_info, pqn->q->gws); in pqm_clean_queue_resource()
212 amdgpu_amdkfd_free_gtt_mem(dev->adev, &pqn->q->gang_ctx_bo); in pqm_clean_queue_resource()
213 amdgpu_amdkfd_free_gtt_mem(dev->adev, (void **)&pqn->q->wptr_bo_gart); in pqm_clean_queue_resource()
222 if (pqn->q) { in pqm_uninit()
223 struct kfd_process_device *pdd = kfd_get_process_device_data(pqn->q->device, in pqm_uninit()
226 kfd_queue_unref_bo_vas(pdd, &pqn->q->properties); in pqm_uninit()
227 kfd_queue_release_buffers(pdd, &pqn->q->properties); in pqm_uninit()
234 kfd_procfs_del_queue(pqn->q); in pqm_uninit()
235 uninit_queue(pqn->q); in pqm_uninit()
245 struct kfd_node *dev, struct queue **q, in init_user_queue() argument
259 retval = init_queue(q, q_properties); in init_user_queue()
263 (*q)->device = dev; in init_user_queue()
264 (*q)->process = pqm->process; in init_user_queue()
269 &(*q)->gang_ctx_bo, in init_user_queue()
270 &(*q)->gang_ctx_gpu_addr, in init_user_queue()
271 &(*q)->gang_ctx_cpu_ptr, in init_user_queue()
277 memset((*q)->gang_ctx_cpu_ptr, 0, AMDGPU_MES_GANG_CTX_SIZE); in init_user_queue()
289 &(*q)->wptr_bo_gart); in init_user_queue()
300 amdgpu_amdkfd_free_gtt_mem(dev->adev, &(*q)->gang_ctx_bo); in init_user_queue()
302 uninit_queue(*q); in init_user_queue()
303 *q = NULL; in init_user_queue()
318 struct queue *q; in pqm_create_queue() local
333 q = NULL; in pqm_create_queue()
399 retval = init_user_queue(pqm, dev, &q, properties, *qid); in pqm_create_queue()
402 pqn->q = q; in pqm_create_queue()
404 retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, q_data, in pqm_create_queue()
406 print_queue(q); in pqm_create_queue()
420 retval = init_user_queue(pqm, dev, &q, properties, *qid); in pqm_create_queue()
423 pqn->q = q; in pqm_create_queue()
425 retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, q_data, in pqm_create_queue()
427 print_queue(q); in pqm_create_queue()
437 pqn->q = NULL; in pqm_create_queue()
463 if (q && p_doorbell_offset_in_process) { in pqm_create_queue()
475 *p_doorbell_offset_in_process = (q->properties.doorbell_off in pqm_create_queue()
483 if (q) { in pqm_create_queue()
485 kfd_procfs_add_queue(q); in pqm_create_queue()
486 print_queue_properties(&q->properties); in pqm_create_queue()
492 uninit_queue(q); in pqm_create_queue()
526 if (pqn->q) in pqm_destroy_queue()
527 dev = pqn->q->device; in pqm_destroy_queue()
544 if (pqn->q) { in pqm_destroy_queue()
545 retval = kfd_queue_unref_bo_vas(pdd, &pqn->q->properties); in pqm_destroy_queue()
549 dqm = pqn->q->device->dqm; in pqm_destroy_queue()
550 retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q); in pqm_destroy_queue()
554 pqn->q->properties.queue_id, retval); in pqm_destroy_queue()
558 kfd_procfs_del_queue(pqn->q); in pqm_destroy_queue()
559 kfd_queue_release_buffers(pdd, &pqn->q->properties); in pqm_destroy_queue()
561 uninit_queue(pqn->q); in pqm_destroy_queue()
583 if (!pqn || !pqn->q) { in pqm_update_queue_properties()
594 struct queue *q = pqn->q; in pqm_update_queue_properties() local
597 pdd = kfd_get_process_device_data(q->device, q->process); in pqm_update_queue_properties()
612 kfd_queue_unref_bo_va(vm, &pqn->q->properties.ring_bo); in pqm_update_queue_properties()
613 kfd_queue_buffer_put(&pqn->q->properties.ring_bo); in pqm_update_queue_properties()
616 pqn->q->properties.ring_bo = p->ring_bo; in pqm_update_queue_properties()
619 pqn->q->properties.queue_address = p->queue_address; in pqm_update_queue_properties()
620 pqn->q->properties.queue_size = p->queue_size; in pqm_update_queue_properties()
621 pqn->q->properties.queue_percent = p->queue_percent; in pqm_update_queue_properties()
622 pqn->q->properties.priority = p->priority; in pqm_update_queue_properties()
623 pqn->q->properties.pm4_target_xcc = p->pm4_target_xcc; in pqm_update_queue_properties()
625 retval = pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm, in pqm_update_queue_properties()
626 pqn->q, NULL); in pqm_update_queue_properties()
646 if (pqn->q->properties.is_dbg_wa && minfo && minfo->cu_mask.ptr) in pqm_update_mqd()
651 KFD_GC_VERSION(pqn->q->device) >= IP_VERSION(10, 0, 0)) { in pqm_update_mqd()
664 retval = pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm, in pqm_update_mqd()
665 pqn->q, minfo); in pqm_update_mqd()
670 pqn->q->properties.is_user_cu_masked = true; in pqm_update_mqd()
681 return pqn ? pqn->q : NULL; in pqm_get_user_queue()
699 return pqn->q->device->dqm->ops.get_wave_state(pqn->q->device->dqm, in pqm_get_wave_state()
700 pqn->q, in pqm_get_wave_state()
727 if (!pqn->q) in pqm_get_queue_snapshot()
731 set_queue_snapshot_entry(pqn->q, exception_clear_mask, &src); in pqm_get_queue_snapshot()
747 struct queue *q, in get_queue_data_sizes() argument
754 q->properties.queue_id, in get_queue_data_sizes()
768 struct queue *q; in kfd_process_get_queue_info() local
778 list_for_each_entry(q, &pdd->qpd.queues_list, list) { in kfd_process_get_queue_info()
779 if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE || in kfd_process_get_queue_info()
780 q->properties.type == KFD_QUEUE_TYPE_SDMA || in kfd_process_get_queue_info()
781 q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI) { in kfd_process_get_queue_info()
786 ret = get_queue_data_sizes(pdd, q, &mqd_size, &ctl_stack_size); in kfd_process_get_queue_info()
792 pr_err("Unsupported queue type (%d)\n", q->properties.type); in kfd_process_get_queue_info()
816 if (!pqn->q->device->dqm->ops.checkpoint_mqd) { in pqm_checkpoint_mqd()
821 return pqn->q->device->dqm->ops.checkpoint_mqd(pqn->q->device->dqm, in pqm_checkpoint_mqd()
822 pqn->q, mqd, ctl_stack); in pqm_checkpoint_mqd()
826 struct queue *q, in criu_checkpoint_queue() argument
836 q_data->type = q->properties.type; in criu_checkpoint_queue()
837 q_data->format = q->properties.format; in criu_checkpoint_queue()
838 q_data->q_id = q->properties.queue_id; in criu_checkpoint_queue()
839 q_data->q_address = q->properties.queue_address; in criu_checkpoint_queue()
840 q_data->q_size = q->properties.queue_size; in criu_checkpoint_queue()
841 q_data->priority = q->properties.priority; in criu_checkpoint_queue()
842 q_data->q_percent = q->properties.queue_percent; in criu_checkpoint_queue()
843 q_data->read_ptr_addr = (uint64_t)q->properties.read_ptr; in criu_checkpoint_queue()
844 q_data->write_ptr_addr = (uint64_t)q->properties.write_ptr; in criu_checkpoint_queue()
845 q_data->doorbell_id = q->doorbell_id; in criu_checkpoint_queue()
847 q_data->sdma_id = q->sdma_id; in criu_checkpoint_queue()
850 q->properties.eop_ring_buffer_address; in criu_checkpoint_queue()
852 q_data->eop_ring_buffer_size = q->properties.eop_ring_buffer_size; in criu_checkpoint_queue()
855 q->properties.ctx_save_restore_area_address; in criu_checkpoint_queue()
858 q->properties.ctx_save_restore_area_size; in criu_checkpoint_queue()
860 q_data->gws = !!q->gws; in criu_checkpoint_queue()
862 ret = pqm_checkpoint_mqd(&pdd->process->pqm, q->properties.queue_id, mqd, ctl_stack); in criu_checkpoint_queue()
879 struct queue *q; in criu_checkpoint_queues_device() local
882 list_for_each_entry(q, &pdd->qpd.queues_list, list) { in criu_checkpoint_queues_device()
888 if (q->properties.type != KFD_QUEUE_TYPE_COMPUTE && in criu_checkpoint_queues_device()
889 q->properties.type != KFD_QUEUE_TYPE_SDMA && in criu_checkpoint_queues_device()
890 q->properties.type != KFD_QUEUE_TYPE_SDMA_XGMI) { in criu_checkpoint_queues_device()
892 pr_err("Unsupported queue type (%d)\n", q->properties.type); in criu_checkpoint_queues_device()
897 ret = get_queue_data_sizes(pdd, q, &mqd_size, &ctl_stack_size); in criu_checkpoint_queues_device()
924 ret = criu_checkpoint_queue(pdd, q, q_data); in criu_checkpoint_queues_device()
1092 if (!pqn->q->device->dqm->ops.get_queue_checkpoint_info) { in pqm_get_queue_checkpoint_info()
1097 pqn->q->device->dqm->ops.get_queue_checkpoint_info(pqn->q->device->dqm, in pqm_get_queue_checkpoint_info()
1098 pqn->q, mqd_size, in pqm_get_queue_checkpoint_info()
1109 struct queue *q; in pqm_debugfs_mqds() local
1117 if (pqn->q) { in pqm_debugfs_mqds()
1118 q = pqn->q; in pqm_debugfs_mqds()
1119 switch (q->properties.type) { in pqm_debugfs_mqds()
1123 q->device->id); in pqm_debugfs_mqds()
1128 q->device->id); in pqm_debugfs_mqds()
1130 num_xccs = NUM_XCC(q->device->xcc_mask); in pqm_debugfs_mqds()
1135 q->properties.type, q->device->id); in pqm_debugfs_mqds()
1138 mqd_mgr = q->device->dqm->mqd_mgrs[mqd_type]; in pqm_debugfs_mqds()
1140 &q->properties); in pqm_debugfs_mqds()
1142 q = pqn->kq->queue; in pqm_debugfs_mqds()
1144 switch (q->properties.type) { in pqm_debugfs_mqds()
1152 q->properties.type, in pqm_debugfs_mqds()
1163 mqd = q->mqd + size * xcc; in pqm_debugfs_mqds()