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);