diff options
Diffstat (limited to 'drivers/gpu/drm/scheduler/sched_entity.c')
| -rw-r--r-- | drivers/gpu/drm/scheduler/sched_entity.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c index c1ac3e4003c6..f0790e9471d1 100644 --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -453,7 +453,7 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)  	struct drm_gpu_scheduler *sched;  	struct drm_sched_rq *rq; -	if (spsc_queue_count(&entity->job_queue) || entity->num_sched_list <= 1) +	if (spsc_queue_count(&entity->job_queue) || !entity->sched_list)  		return;  	fence = READ_ONCE(entity->last_scheduled); @@ -467,8 +467,10 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)  		drm_sched_rq_remove_entity(entity->rq, entity);  		entity->rq = rq;  	} -  	spin_unlock(&entity->rq_lock); + +	if (entity->num_sched_list == 1) +		entity->sched_list = NULL;  }  /** @@ -489,7 +491,7 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job,  	bool first;  	trace_drm_sched_job(sched_job, entity); -	atomic_inc(&entity->rq->sched->score); +	atomic_inc(entity->rq->sched->score);  	WRITE_ONCE(entity->last_user, current->group_leader);  	first = spsc_queue_push(&entity->job_queue, &sched_job->queue_node); | 
