Am 18.10.18 um 17:37 schrieb : > If the hardware queue for a scheduler is empty then we don't > need to the shift the entities from their current scheduler > as they are not getting scheduled because of some dependency. That is most likely not a good idea. The scheduler might not have anything todo right now, but we can't guarantee that it will stay this way. Instead when the number of jobs on a rq is identical we should select the one with the least entities on it. This should make sure that we distribute the entities equally among the runqueues even when they are idle. Christian. > > Signed-off-by: Nayan Deshmukh <nayan26deshmukh@xxxxxxxxx> > --- > drivers/gpu/drm/scheduler/sched_entity.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c > index 3e22a54a99c2..4d18497d6ecf 100644 > --- a/drivers/gpu/drm/scheduler/sched_entity.c > +++ b/drivers/gpu/drm/scheduler/sched_entity.c > @@ -130,6 +130,12 @@ drm_sched_entity_get_free_sched(struct drm_sched_entity *entity) > int i; > > for (i = 0; i < entity->num_rq_list; ++i) { > + if (atomic_read(&entity->rq_list[i]->sched->hw_rq_count) < > + entity->rq_list[i]->sched->hw_submission_limit) { > + rq = entity->rq_list[i]; > + break; > + } > + > num_jobs = atomic_read(&entity->rq_list[i]->sched->num_jobs); > if (num_jobs < min_jobs) { > min_jobs = num_jobs; > @@ -470,6 +476,14 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity) > if (spsc_queue_count(&entity->job_queue) || entity->num_rq_list <= 1) > return; > > + /* > + * We don't need to shift entity if the hardware > + * queue of current scheduler is empty > + */ > + if (atomic_read(&entity->rq->sched->hw_rq_count) < > + entity->rq->sched->hw_submission_limit) > + return; > + > fence = READ_ONCE(entity->last_scheduled); > if (fence && !dma_fence_is_signaled(fence)) > return; _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel