mirror of https://gitee.com/openkylin/linux.git
drm/amdkfd: Update queue_count before mapping queues
map_queues_cpsch uses the queue_count to decide whether to upload a new runlist. So update the counter before calling it. Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
This commit is contained in:
parent
bfd5e378a9
commit
096d1a3efc
|
@ -408,6 +408,17 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q)
|
||||||
|
|
||||||
retval = mqd->update_mqd(mqd, q->mqd, &q->properties);
|
retval = mqd->update_mqd(mqd, q->mqd, &q->properties);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check active state vs. the previous state and modify
|
||||||
|
* counter accordingly. map_queues_cpsch uses the
|
||||||
|
* dqm->queue_count to determine whether a new runlist must be
|
||||||
|
* uploaded.
|
||||||
|
*/
|
||||||
|
if (q->properties.is_active && !prev_active)
|
||||||
|
dqm->queue_count++;
|
||||||
|
else if (!q->properties.is_active && prev_active)
|
||||||
|
dqm->queue_count--;
|
||||||
|
|
||||||
if (sched_policy != KFD_SCHED_POLICY_NO_HWS)
|
if (sched_policy != KFD_SCHED_POLICY_NO_HWS)
|
||||||
retval = map_queues_cpsch(dqm);
|
retval = map_queues_cpsch(dqm);
|
||||||
else if (sched_policy == KFD_SCHED_POLICY_NO_HWS &&
|
else if (sched_policy == KFD_SCHED_POLICY_NO_HWS &&
|
||||||
|
@ -417,15 +428,6 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q)
|
||||||
retval = mqd->load_mqd(mqd, q->mqd, q->pipe, q->queue,
|
retval = mqd->load_mqd(mqd, q->mqd, q->pipe, q->queue,
|
||||||
&q->properties, q->process->mm);
|
&q->properties, q->process->mm);
|
||||||
|
|
||||||
/*
|
|
||||||
* check active state vs. the previous state
|
|
||||||
* and modify counter accordingly
|
|
||||||
*/
|
|
||||||
if (q->properties.is_active && !prev_active)
|
|
||||||
dqm->queue_count++;
|
|
||||||
else if (!q->properties.is_active && prev_active)
|
|
||||||
dqm->queue_count--;
|
|
||||||
|
|
||||||
out_unlock:
|
out_unlock:
|
||||||
mutex_unlock(&dqm->lock);
|
mutex_unlock(&dqm->lock);
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in New Issue