I forgot to add these: On Fri, Jul 13, 2018 at 3:21 PM Nayan Deshmukh <nayan26deshmukh at gmail.com> wrote: > > This patch is in preparation for a better load balancing in > scheduler. It allows us to associate entities with the > run queues instead of binding them to a scheduler. > > Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com> Reviewed-by: Christian König <christian.koenig at amd.com> Acked-by: Eric Anholt <eric at anholt.net> > --- > drivers/gpu/drm/scheduler/gpu_scheduler.c | 6 ++++-- > include/drm/gpu_scheduler.h | 2 ++ > 2 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c b/drivers/gpu/drm/scheduler/gpu_scheduler.c > index 7d2560699b84..429b1328653a 100644 > --- a/drivers/gpu/drm/scheduler/gpu_scheduler.c > +++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c > @@ -69,11 +69,13 @@ static void drm_sched_process_job(struct dma_fence *f, struct dma_fence_cb *cb); > * > * Initializes a scheduler runqueue. > */ > -static void drm_sched_rq_init(struct drm_sched_rq *rq) > +static void drm_sched_rq_init(struct drm_gpu_scheduler *sched, > + struct drm_sched_rq *rq) > { > spin_lock_init(&rq->lock); > INIT_LIST_HEAD(&rq->entities); > rq->current_entity = NULL; > + rq->sched = sched; > } > > /** > @@ -926,7 +928,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, > sched->timeout = timeout; > sched->hang_limit = hang_limit; > for (i = DRM_SCHED_PRIORITY_MIN; i < DRM_SCHED_PRIORITY_MAX; i++) > - drm_sched_rq_init(&sched->sched_rq[i]); > + drm_sched_rq_init(sched, &sched->sched_rq[i]); > > init_waitqueue_head(&sched->wake_up_worker); > init_waitqueue_head(&sched->job_scheduled); > diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h > index 4214ceb71c05..43e93d6077cf 100644 > --- a/include/drm/gpu_scheduler.h > +++ b/include/drm/gpu_scheduler.h > @@ -93,6 +93,7 @@ struct drm_sched_entity { > * struct drm_sched_rq - queue of entities to be scheduled. > * > * @lock: to modify the entities list. > + * @sched: the scheduler to which this rq belongs to. > * @entities: list of the entities to be scheduled. > * @current_entity: the entity which is to be scheduled. > * > @@ -102,6 +103,7 @@ struct drm_sched_entity { > */ > struct drm_sched_rq { > spinlock_t lock; > + struct drm_gpu_scheduler *sched; > struct list_head entities; > struct drm_sched_entity *current_entity; > }; > -- > 2.14.3 >