drm/amdkfd: Add queue to MES if it becomes active
authorPhilip Yang <Philip.Yang@amd.com>
Wed, 15 Jun 2022 20:26:35 +0000 (16:26 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 22 Jun 2022 20:54:45 +0000 (16:54 -0400)
We remove the user queue from MES scheduler to update queue properties.
If the queue becomes active after updating, add the user queue to MES
scheduler, to be able to handle command packet submission.

v2: don't break pqm_set_gws

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Graham Sider <Graham.Sider@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index e1797657b04c70b4f0c782356077a5314ed5735c..21aeb05b17dbe6e6378f78f6c2721c59d14c1ee5 100644 (file)
@@ -811,7 +811,6 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q,
        struct mqd_manager *mqd_mgr;
        struct kfd_process_device *pdd;
        bool prev_active = false;
-       bool add_queue = false;
 
        dqm_lock(dqm);
        pdd = kfd_get_process_device_data(q->device, q->process);
@@ -887,7 +886,7 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q,
        if (dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) {
                if (!dqm->dev->shared_resources.enable_mes)
                        retval = map_queues_cpsch(dqm);
-               else if (add_queue)
+               else if (q->properties.is_active)
                        retval = add_queue_mes(dqm, q, &pdd->qpd);
        } else if (q->properties.is_active &&
                 (q->properties.type == KFD_QUEUE_TYPE_COMPUTE ||