Lines Matching refs:pdd
83 void kfd_process_dequeue_from_device(struct kfd_process_device *pdd) in kfd_process_dequeue_from_device() argument
85 struct kfd_node *dev = pdd->dev; in kfd_process_dequeue_from_device()
87 if (pdd->already_dequeued) in kfd_process_dequeue_from_device()
93 dev->dqm->ops.process_termination(dev->dqm, &pdd->qpd); in kfd_process_dequeue_from_device()
94 if (dev->kfd->shared_resources.enable_mes && !!pdd->proc_ctx_gpu_addr && in kfd_process_dequeue_from_device()
97 pdd->proc_ctx_gpu_addr); in kfd_process_dequeue_from_device()
100 pdd->already_dequeued = true; in kfd_process_dequeue_from_device()
109 struct kfd_process_device *pdd; in pqm_set_gws() local
124 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_set_gws()
125 if (!pdd) { in pqm_set_gws()
131 if (gws && pdd->qpd.num_gws) in pqm_set_gws()
134 if (!gws && pdd->qpd.num_gws == 0) in pqm_set_gws()
142 ret = amdgpu_amdkfd_add_gws_to_process(pdd->process->kgd_process_info, in pqm_set_gws()
145 ret = amdgpu_amdkfd_remove_gws_from_process(pdd->process->kgd_process_info, in pqm_set_gws()
160 pdd->qpd.num_gws = gws ? dev->adev->gds.gws_size : 0; in pqm_set_gws()
191 struct kfd_process_device *pdd; in pqm_clean_queue_resource() local
195 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_clean_queue_resource()
196 if (!pdd) { in pqm_clean_queue_resource()
208 pdd->qpd.num_gws = 0; in pqm_clean_queue_resource()
223 struct kfd_process_device *pdd = kfd_get_process_device_data(pqn->q->device, in pqm_uninit() local
225 if (pdd) { 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()
229 WARN_ON(!pdd); in pqm_uninit()
317 struct kfd_process_device *pdd; in pqm_create_queue() local
336 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_create_queue()
337 if (!pdd) { in pqm_create_queue()
348 if ((pdd->qpd.is_debug) || (type == KFD_QUEUE_TYPE_DIQ)) in pqm_create_queue()
351 if (pdd->qpd.queue_count >= max_queues) in pqm_create_queue()
364 if (list_empty(&pdd->qpd.queues_list) && in pqm_create_queue()
365 list_empty(&pdd->qpd.priv_queue_list)) in pqm_create_queue()
366 dev->dqm->ops.register_process(dev->dqm, &pdd->qpd); in pqm_create_queue()
369 if (!pdd->proc_ctx_cpu_ptr && dev->kfd->shared_resources.enable_mes) { in pqm_create_queue()
372 &pdd->proc_ctx_bo, in pqm_create_queue()
373 &pdd->proc_ctx_gpu_addr, in pqm_create_queue()
374 &pdd->proc_ctx_cpu_ptr, in pqm_create_queue()
380 memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE); in pqm_create_queue()
404 retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, q_data, in pqm_create_queue()
425 retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, q_data, in pqm_create_queue()
438 retval = kfd_process_drain_interrupts(pdd); in pqm_create_queue()
443 kq, &pdd->qpd); in pqm_create_queue()
470 uint32_t first_db_index = amdgpu_doorbell_index_on_bar(pdd->dev->adev, in pqm_create_queue()
471 pdd->qpd.proc_doorbells, in pqm_create_queue()
473 pdd->dev->kfd->device_info.doorbell_size); in pqm_create_queue()
499 if (list_empty(&pdd->qpd.queues_list) && in pqm_create_queue()
500 list_empty(&pdd->qpd.priv_queue_list)) in pqm_create_queue()
501 dev->dqm->ops.unregister_process(dev->dqm, &pdd->qpd); in pqm_create_queue()
508 struct kfd_process_device *pdd; in pqm_destroy_queue() local
531 pdd = kfd_get_process_device_data(dev, pqm->process); in pqm_destroy_queue()
532 if (!pdd) { in pqm_destroy_queue()
540 dqm->ops.destroy_kernel_queue(dqm, pqn->kq, &pdd->qpd); in pqm_destroy_queue()
545 retval = kfd_queue_unref_bo_vas(pdd, &pqn->q->properties); in pqm_destroy_queue()
550 retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q); in pqm_destroy_queue()
553 pdd->pasid, in pqm_destroy_queue()
559 kfd_queue_release_buffers(pdd, &pqn->q->properties); in pqm_destroy_queue()
568 if (list_empty(&pdd->qpd.queues_list) && in pqm_destroy_queue()
569 list_empty(&pdd->qpd.priv_queue_list)) in pqm_destroy_queue()
570 dqm->ops.unregister_process(dqm, &pdd->qpd); in pqm_destroy_queue()
592 struct kfd_process_device *pdd; in pqm_update_queue_properties() local
597 pdd = kfd_get_process_device_data(q->device, q->process); in pqm_update_queue_properties()
598 if (!pdd) in pqm_update_queue_properties()
600 vm = drm_priv_to_vm(pdd->drm_priv); in pqm_update_queue_properties()
746 static int get_queue_data_sizes(struct kfd_process_device *pdd, in get_queue_data_sizes() argument
753 ret = pqm_get_queue_checkpoint_info(&pdd->process->pqm, in get_queue_data_sizes()
776 struct kfd_process_device *pdd = p->pdds[i]; in kfd_process_get_queue_info() local
778 list_for_each_entry(q, &pdd->qpd.queues_list, list) { 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()
825 static int criu_checkpoint_queue(struct kfd_process_device *pdd, in criu_checkpoint_queue() argument
835 q_data->gpu_id = pdd->user_gpu_id; in criu_checkpoint_queue()
862 ret = pqm_checkpoint_mqd(&pdd->process->pqm, q->properties.queue_id, mqd, ctl_stack); in criu_checkpoint_queue()
872 static int criu_checkpoint_queues_device(struct kfd_process_device *pdd, in criu_checkpoint_queues_device() argument
882 list_for_each_entry(q, &pdd->qpd.queues_list, list) { 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()
952 struct kfd_process_device *pdd = p->pdds[pdd_index]; in kfd_criu_checkpoint_queues() local
958 ret = criu_checkpoint_queues_device(pdd, user_priv_data, &q_index, in kfd_criu_checkpoint_queues()
998 struct kfd_process_device *pdd; in kfd_criu_restore_queue() local
1039 pdd = kfd_process_device_data_by_id(p, q_data->gpu_id); in kfd_criu_restore_queue()
1040 if (!pdd) { in kfd_criu_restore_queue()
1054 set_queue_properties_from_criu(&qp, q_data, NUM_XCC(pdd->dev->adev->gfx.xcc_mask)); in kfd_criu_restore_queue()
1058 ret = pqm_create_queue(&p->pqm, pdd->dev, &qp, &queue_id, q_data, mqd, ctl_stack, NULL); in kfd_criu_restore_queue()
1065 ret = pqm_set_gws(&p->pqm, q_data->q_id, pdd->dev->gws); in kfd_criu_restore_queue()