Lines Matching refs:pqm

34 			struct process_queue_manager *pqm, unsigned int qid)  in get_queue_by_qid()  argument
38 list_for_each_entry(pqn, &pqm->queues, process_queue_list) { in get_queue_by_qid()
47 static int assign_queue_slot_by_qid(struct process_queue_manager *pqm, in assign_queue_slot_by_qid() argument
53 if (__test_and_set_bit(qid, pqm->queue_slot_bitmap)) { in assign_queue_slot_by_qid()
61 static int find_available_queue_slot(struct process_queue_manager *pqm, in find_available_queue_slot() argument
66 found = find_first_zero_bit(pqm->queue_slot_bitmap, in find_available_queue_slot()
73 pqm->process->lead_thread->pid); in find_available_queue_slot()
77 set_bit(found, pqm->queue_slot_bitmap); in find_available_queue_slot()
103 int pqm_set_gws(struct process_queue_manager *pqm, unsigned int qid, in pqm_set_gws() argument
113 pqn = get_queue_by_qid(pqm, qid); in pqm_set_gws()
124 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_set_gws()
175 int pqm_init(struct process_queue_manager *pqm, struct kfd_process *p) in pqm_init() argument
177 INIT_LIST_HEAD(&pqm->queues); in pqm_init()
178 pqm->queue_slot_bitmap = bitmap_zalloc(KFD_MAX_NUM_OF_QUEUES_PER_PROCESS, in pqm_init()
180 if (!pqm->queue_slot_bitmap) in pqm_init()
182 pqm->process = p; in pqm_init()
187 static void pqm_clean_queue_resource(struct process_queue_manager *pqm, in pqm_clean_queue_resource() argument
195 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_clean_queue_resource()
207 pqm->process->kgd_process_info, pqn->q->gws); in pqm_clean_queue_resource()
217 void pqm_uninit(struct process_queue_manager *pqm) in pqm_uninit() argument
221 list_for_each_entry_safe(pqn, next, &pqm->queues, process_queue_list) { in pqm_uninit()
224 pqm->process); in pqm_uninit()
231 pqm_clean_queue_resource(pqm, pqn); in pqm_uninit()
240 bitmap_free(pqm->queue_slot_bitmap); in pqm_uninit()
241 pqm->queue_slot_bitmap = NULL; in pqm_uninit()
244 static int init_user_queue(struct process_queue_manager *pqm, in init_user_queue() argument
264 (*q)->process = pqm->process; in init_user_queue()
310 int pqm_create_queue(struct process_queue_manager *pqm, in pqm_create_queue() argument
339 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_create_queue()
358 retval = assign_queue_slot_by_qid(pqm, q_data->q_id); in pqm_create_queue()
361 retval = find_available_queue_slot(pqm, qid); in pqm_create_queue()
402 retval = init_user_queue(pqm, dev, &q, properties, *qid); in pqm_create_queue()
423 retval = init_user_queue(pqm, dev, &q, properties, *qid); in pqm_create_queue()
455 pqm->process->lead_thread->pid, type, retval); in pqm_create_queue()
477 list_add(&pqn->process_queue_list, &pqm->queues); in pqm_create_queue()
494 clear_bit(*qid, pqm->queue_slot_bitmap); in pqm_create_queue()
501 int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid) in pqm_destroy_queue() argument
513 pqn = get_queue_by_qid(pqm, qid); in pqm_destroy_queue()
527 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_destroy_queue()
556 pqm_clean_queue_resource(pqm, pqn); in pqm_destroy_queue()
562 clear_bit(qid, pqm->queue_slot_bitmap); in pqm_destroy_queue()
572 int pqm_update_queue_properties(struct process_queue_manager *pqm, in pqm_update_queue_properties() argument
578 pqn = get_queue_by_qid(pqm, qid); in pqm_update_queue_properties()
629 int pqm_update_mqd(struct process_queue_manager *pqm, in pqm_update_mqd() argument
635 pqn = get_queue_by_qid(pqm, qid); in pqm_update_mqd()
671 struct queue *pqm_get_user_queue(struct process_queue_manager *pqm, in pqm_get_user_queue() argument
676 pqn = get_queue_by_qid(pqm, qid); in pqm_get_user_queue()
680 int pqm_get_wave_state(struct process_queue_manager *pqm, in pqm_get_wave_state() argument
688 pqn = get_queue_by_qid(pqm, qid); in pqm_get_wave_state()
702 int pqm_get_queue_snapshot(struct process_queue_manager *pqm, in pqm_get_queue_snapshot() argument
718 mutex_lock(&pqm->process->event_mutex); in pqm_get_queue_snapshot()
722 list_for_each_entry(pqn, &pqm->queues, process_queue_list) { in pqm_get_queue_snapshot()
738 mutex_unlock(&pqm->process->event_mutex); in pqm_get_queue_snapshot()
749 ret = pqm_get_queue_checkpoint_info(&pdd->process->pqm, in get_queue_data_sizes()
799 static int pqm_checkpoint_mqd(struct process_queue_manager *pqm, in pqm_checkpoint_mqd() argument
806 pqn = get_queue_by_qid(pqm, qid); in pqm_checkpoint_mqd()
858 ret = pqm_checkpoint_mqd(&pdd->process->pqm, q->properties.queue_id, mqd, ctl_stack); in criu_checkpoint_queue()
1044 ret = pqm_create_queue(&p->pqm, pdd->dev, &qp, &queue_id, q_data, mqd, ctl_stack, NULL); in kfd_criu_restore_queue()
1051 ret = pqm_set_gws(&p->pqm, q_data->q_id, pdd->dev->gws); in kfd_criu_restore_queue()
1065 int pqm_get_queue_checkpoint_info(struct process_queue_manager *pqm, in pqm_get_queue_checkpoint_info() argument
1072 pqn = get_queue_by_qid(pqm, qid); in pqm_get_queue_checkpoint_info()
1093 struct process_queue_manager *pqm = data; in pqm_debugfs_mqds() local
1102 list_for_each_entry(pqn, &pqm->queues, process_queue_list) { in pqm_debugfs_mqds()