Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -167,6 +167,7 @@ static int create_queue_nocpsch(struct device_queue_manager *dqm,
	}

	list_add(&q->list, &qpd->queues_list);
	if (q->properties.is_active)
		dqm->queue_count++;

	if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
@@ -313,6 +314,7 @@ static int destroy_queue_nocpsch(struct device_queue_manager *dqm,
	list_del(&q->list);
	if (list_empty(&qpd->queues_list))
		deallocate_vmid(dqm, qpd, q);
	if (q->properties.is_active)
		dqm->queue_count--;

	/*
@@ -1018,6 +1020,7 @@ static int destroy_queue_cpsch(struct device_queue_manager *dqm,
		dqm->sdma_queue_count--;

	list_del(&q->list);
	if (q->properties.is_active)
		dqm->queue_count--;

	execute_queues_cpsch(dqm, false);