drm_sched_pick_best return best selecetd ring schedul list's address. Signed-off-by: James Zhu <james....@amd.com> --- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c index 191c56064f19..f5595607995b 100644 --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -475,7 +475,7 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity) return; spin_lock(&entity->rq_lock); - sched = drm_sched_pick_best(entity->sched_list, entity->num_sched_list); + sched = *drm_sched_pick_best(entity->sched_list, entity->num_sched_list); rq = sched ? &sched->sched_rq[entity->priority] : NULL; if (rq != entity->rq) { drm_sched_rq_remove_entity(entity->rq, entity); diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index 68317d3a7a27..111277f6c53c 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -863,12 +863,12 @@ drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched) * Returns pointer of the sched with the least load or NULL if none of the * drm_gpu_schedulers are ready */ -struct drm_gpu_scheduler * +struct drm_gpu_scheduler ** drm_sched_pick_best(struct drm_gpu_scheduler **sched_list, unsigned int num_sched_list) { - struct drm_gpu_scheduler *sched, *picked_sched = NULL; - int i; + struct drm_gpu_scheduler *sched; + int i, picked_idx = -1; unsigned int min_score = UINT_MAX, num_score; for (i = 0; i < num_sched_list; ++i) { @@ -883,11 +883,13 @@ drm_sched_pick_best(struct drm_gpu_scheduler **sched_list, num_score = atomic_read(sched->score); if (num_score < min_score) { min_score = num_score; - picked_sched = sched; + picked_idx = i; } } - - return picked_sched; + if (picked_idx != -1) + return &(sched_list[picked_idx]); + else + return (struct drm_gpu_scheduler **)(NULL); } EXPORT_SYMBOL(drm_sched_pick_best); -- 2.25.1