Commit b6819cec authored by Jay Cornwall's avatar Jay Cornwall Committed by Oded Gabbay

drm/amdkfd: Fix dqm->queue_count tracking

dqm->queue_count tracks queues in the active state only. In a few
places this count is modified unconditionally, leading to an incorrect
value when the UPDATE_QUEUE ioctl is used to make a queue inactive.
Signed-off-by: default avatarJay Cornwall <jay.cornwall@amd.com>
Reviewed-by: default avatarBen Goz <ben.goz@amd.com>
Signed-off-by: default avatarOded Gabbay <oded.gabbay@amd.com>
parent e4bf44b3
...@@ -167,7 +167,8 @@ static int create_queue_nocpsch(struct device_queue_manager *dqm, ...@@ -167,7 +167,8 @@ static int create_queue_nocpsch(struct device_queue_manager *dqm,
} }
list_add(&q->list, &qpd->queues_list); list_add(&q->list, &qpd->queues_list);
dqm->queue_count++; if (q->properties.is_active)
dqm->queue_count++;
if (q->properties.type == KFD_QUEUE_TYPE_SDMA) if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
dqm->sdma_queue_count++; dqm->sdma_queue_count++;
...@@ -313,7 +314,8 @@ static int destroy_queue_nocpsch(struct device_queue_manager *dqm, ...@@ -313,7 +314,8 @@ static int destroy_queue_nocpsch(struct device_queue_manager *dqm,
list_del(&q->list); list_del(&q->list);
if (list_empty(&qpd->queues_list)) if (list_empty(&qpd->queues_list))
deallocate_vmid(dqm, qpd, q); deallocate_vmid(dqm, qpd, q);
dqm->queue_count--; if (q->properties.is_active)
dqm->queue_count--;
/* /*
* Unconditionally decrement this counter, regardless of the queue's * Unconditionally decrement this counter, regardless of the queue's
...@@ -1018,7 +1020,8 @@ static int destroy_queue_cpsch(struct device_queue_manager *dqm, ...@@ -1018,7 +1020,8 @@ static int destroy_queue_cpsch(struct device_queue_manager *dqm,
dqm->sdma_queue_count--; dqm->sdma_queue_count--;
list_del(&q->list); list_del(&q->list);
dqm->queue_count--; if (q->properties.is_active)
dqm->queue_count--;
execute_queues_cpsch(dqm, false); execute_queues_cpsch(dqm, false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment