]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
amdkfd: remove DIQ support
authorZhu Lingshan <lingshan.zhu@amd.com>
Mon, 13 Oct 2025 08:41:36 +0000 (16:41 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 8 Dec 2025 18:56:42 +0000 (13:56 -0500)
This commit remove DIQ support because it has been
marked as DEPRECATED since 2022

Signed-off-by: Zhu Lingshan <lingshan.zhu@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
drivers/gpu/drm/amd/amdkfd/kfd_priv.h
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c

index d701c66179cfc245d2a0269eaeb48ce35e395910..36ac35d64126945425185bf2c37aef22783f9d9d 100644 (file)
@@ -400,8 +400,7 @@ static void increment_queue_count(struct device_queue_manager *dqm,
                                  struct queue *q)
 {
        dqm->active_queue_count++;
-       if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE ||
-           q->properties.type == KFD_QUEUE_TYPE_DIQ)
+       if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE)
                dqm->active_cp_queue_count++;
 
        if (q->properties.is_gws) {
@@ -415,8 +414,7 @@ static void decrement_queue_count(struct device_queue_manager *dqm,
                                  struct queue *q)
 {
        dqm->active_queue_count--;
-       if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE ||
-           q->properties.type == KFD_QUEUE_TYPE_DIQ)
+       if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE)
                dqm->active_cp_queue_count--;
 
        if (q->properties.is_gws) {
index fb3129883a4ca6832fe2cf4713766dd0cd17827f..7ce4531ec3bc79abe78fab0d60d617903a256456 100644 (file)
@@ -57,19 +57,7 @@ static bool kq_initialize(struct kernel_queue *kq, struct kfd_node *dev,
 
        kq->dev = dev;
        kq->nop_packet = nop.u32all;
-       switch (type) {
-       case KFD_QUEUE_TYPE_DIQ:
-               kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_DIQ];
-               break;
-       case KFD_QUEUE_TYPE_HIQ:
-               kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ];
-               break;
-       default:
-               WARN(1, "Invalid queue type %d\n", type);
-               dev_err(dev->adev->dev, "Invalid queue type %d\n", type);
-               return false;
-       }
-
+       kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ];
        if (!kq->mqd_mgr)
                return false;
 
@@ -159,24 +147,11 @@ static bool kq_initialize(struct kernel_queue *kq, struct kfd_node *dev,
                kq->mqd_mgr->load_mqd(kq->mqd_mgr, kq->queue->mqd,
                                kq->queue->pipe, kq->queue->queue,
                                &kq->queue->properties, NULL);
-       } else {
-               /* allocate fence for DIQ */
-
-               retval = kfd_gtt_sa_allocate(dev, sizeof(uint32_t),
-                                               &kq->fence_mem_obj);
-
-               if (retval != 0)
-                       goto err_alloc_fence;
-
-               kq->fence_kernel_address = kq->fence_mem_obj->cpu_ptr;
-               kq->fence_gpu_addr = kq->fence_mem_obj->gpu_addr;
        }
 
        print_queue(kq->queue);
 
        return true;
-err_alloc_fence:
-       kq->mqd_mgr->free_mqd(kq->mqd_mgr, kq->queue->mqd, kq->queue->mqd_mem_obj);
 err_allocate_mqd:
        uninit_queue(kq->queue);
 err_init_queue:
@@ -206,8 +181,6 @@ static void kq_uninitialize(struct kernel_queue *kq)
                                        kq->queue->queue);
                up_read(&kq->dev->adev->reset_domain->sem);
        }
-       else if (kq->queue->properties.type == KFD_QUEUE_TYPE_DIQ)
-               kfd_gtt_sa_free(kq->dev, kq->fence_mem_obj);
 
        kq->mqd_mgr->free_mqd(kq->mqd_mgr, kq->queue->mqd,
                                kq->queue->mqd_mem_obj);
index 505036968a7759c752c1d81e840b539e884708ec..3d2375817c3e5f7d2f02cf50a3c75b5b8626760e 100644 (file)
@@ -252,10 +252,6 @@ static int pm_map_queues_v9(struct packet_manager *pm, uint32_t *buffer,
                        packet->bitfields2.queue_type =
                queue_type__mes_map_queues__normal_latency_static_queue_vi;
                break;
-       case KFD_QUEUE_TYPE_DIQ:
-               packet->bitfields2.queue_type =
-                       queue_type__mes_map_queues__debug_interface_queue_vi;
-               break;
        case KFD_QUEUE_TYPE_SDMA:
        case KFD_QUEUE_TYPE_SDMA_XGMI:
                if (q->properties.sdma_engine_id < 2 &&
index 8321dd01b67acb6bbebe281dd1362f2328fffa82..1f0b8ef7c9663f75c8d1b94baaedd70a54b101bc 100644 (file)
@@ -166,10 +166,6 @@ static int pm_map_queues_vi(struct packet_manager *pm, uint32_t *buffer,
                        packet->bitfields2.queue_type =
                queue_type__mes_map_queues__normal_latency_static_queue_vi;
                break;
-       case KFD_QUEUE_TYPE_DIQ:
-               packet->bitfields2.queue_type =
-                       queue_type__mes_map_queues__debug_interface_queue_vi;
-               break;
        case KFD_QUEUE_TYPE_SDMA:
        case KFD_QUEUE_TYPE_SDMA_XGMI:
                packet->bitfields2.engine_sel = q->properties.sdma_engine_id +
index 6388650fd6e6659f69bb0daf32c9203dc109d735..4cde21245cc8eaa9ae2371cef0f2cdef6dae2872 100644 (file)
@@ -433,7 +433,6 @@ enum kfd_queue_type  {
        KFD_QUEUE_TYPE_COMPUTE,
        KFD_QUEUE_TYPE_SDMA,
        KFD_QUEUE_TYPE_HIQ,
-       KFD_QUEUE_TYPE_DIQ,
        KFD_QUEUE_TYPE_SDMA_XGMI,
        KFD_QUEUE_TYPE_SDMA_BY_ENG_ID
 };
index fb1aeeacf02dec690c86b61c0aec4e89bd886301..5f8cda4733f9cbb697342785a8966acafb86c047 100644 (file)
@@ -345,7 +345,7 @@ int pqm_create_queue(struct process_queue_manager *pqm,
         * If we are just about to create DIQ, the is_debug flag is not set yet
         * Hence we also check the type as well
         */
-       if ((pdd->qpd.is_debug) || (type == KFD_QUEUE_TYPE_DIQ))
+       if (pdd->qpd.is_debug)
                max_queues = dev->kfd->device_info.max_no_of_hqd/2;
 
        if (pdd->qpd.queue_count >= max_queues)
@@ -426,22 +426,6 @@ int pqm_create_queue(struct process_queue_manager *pqm,
                                                    restore_mqd, restore_ctl_stack);
                print_queue(q);
                break;
-       case KFD_QUEUE_TYPE_DIQ:
-               kq = kernel_queue_init(dev, KFD_QUEUE_TYPE_DIQ);
-               if (!kq) {
-                       retval = -ENOMEM;
-                       goto err_create_queue;
-               }
-               kq->queue->properties.queue_id = *qid;
-               pqn->kq = kq;
-               pqn->q = NULL;
-               retval = kfd_process_drain_interrupts(pdd);
-               if (retval)
-                       break;
-
-               retval = dev->dqm->ops.create_kernel_queue(dev->dqm,
-                                                       kq, &pdd->qpd);
-               break;
        default:
                WARN(1, "Invalid queue type %d", type);
                retval = -EINVAL;
@@ -1131,32 +1115,13 @@ int pqm_debugfs_mqds(struct seq_file *m, void *data)
                                break;
                        default:
                                seq_printf(m,
-                               "  Bad user queue type %d on device %x\n",
+                               "  Qeueu node with bad user queue type %d on device %x\n",
                                           q->properties.type, q->device->id);
                                continue;
                        }
                        mqd_mgr = q->device->dqm->mqd_mgrs[mqd_type];
                        size = mqd_mgr->mqd_stride(mqd_mgr,
                                                        &q->properties);
-               } else if (pqn->kq) {
-                       q = pqn->kq->queue;
-                       mqd_mgr = pqn->kq->mqd_mgr;
-                       switch (q->properties.type) {
-                       case KFD_QUEUE_TYPE_DIQ:
-                               seq_printf(m, "  DIQ on device %x\n",
-                                          pqn->kq->dev->id);
-                               break;
-                       default:
-                               seq_printf(m,
-                               "  Bad kernel queue type %d on device %x\n",
-                                          q->properties.type,
-                                          pqn->kq->dev->id);
-                               continue;
-                       }
-               } else {
-                       seq_printf(m,
-               "  Weird: Queue node with neither kernel nor user queue\n");
-                       continue;
                }
 
                for (xcc = 0; xcc < num_xccs; xcc++) {