Update job earlier with the scheduler it is supposed to be scheduled on.
Otherwise we could incorrectly optimize dependencies when moving an
entity from one scheduler to another.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Nayan Deshmukh <nayan26deshmukh@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
        if (!sched_job)
                return NULL;
 
-       sched_job->sched = sched;
-       sched_job->s_fence->sched = sched;
        while ((entity->dependency = sched->ops->dependency(sched_job, entity))) {
                if (drm_sched_entity_add_dependency_cb(entity)) {
 
                spin_unlock(&entity->rq_lock);
        }
 
+       sched_job->sched = entity->rq->sched;
+       sched_job->s_fence->sched = entity->rq->sched;
        trace_drm_sched_job(sched_job, entity);
        atomic_inc(&entity->rq->sched->num_jobs);
        WRITE_ONCE(entity->last_user, current->group_leader);
 
                return NULL;
 
        fence->owner = owner;
-       fence->sched = entity->rq->sched;
+       fence->sched = NULL;
        spin_lock_init(&fence->lock);
 
        seq = atomic_inc_return(&entity->fence_seq);