*
  * 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;
 }
 
 /**
        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);
 
  * 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.
  *
  */
 struct drm_sched_rq {
        spinlock_t                      lock;
+       struct drm_gpu_scheduler        *sched;
        struct list_head                entities;
        struct drm_sched_entity         *current_entity;
 };