drm/sched: Add boolean to mark if sched is ready to work v5
Problem: A particular scheduler may become unsuable (underlying HW) after some event (e.g. GPU reset). If it's later chosen by the get free sched. policy a command will fail to be submitted. Fix: Add a driver specific callback to report the sched status so rq with bad sched can be avoided in favor of working one or none in which case job init will fail. v2: Switch from driver callback to flag in scheduler. v3: rebase v4: Remove ready paramter from drm_sched_init, set uncoditionally to true once init done. v5: fix missed change in v3d in v4 (Alex) Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
2bb42410b1
commit
faf6e1a87e
@@ -420,6 +420,9 @@ int drm_sched_job_init(struct drm_sched_job *job,
|
||||
struct drm_gpu_scheduler *sched;
|
||||
|
||||
drm_sched_entity_select_rq(entity);
|
||||
if (!entity->rq)
|
||||
return -ENOENT;
|
||||
|
||||
sched = entity->rq->sched;
|
||||
|
||||
job->sched = sched;
|
||||
@@ -633,6 +636,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
|
||||
return PTR_ERR(sched->thread);
|
||||
}
|
||||
|
||||
sched->ready = true;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sched_init);
|
||||
@@ -648,5 +652,7 @@ void drm_sched_fini(struct drm_gpu_scheduler *sched)
|
||||
{
|
||||
if (sched->thread)
|
||||
kthread_stop(sched->thread);
|
||||
|
||||
sched->ready = false;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sched_fini);
|
||||
|
Reference in New Issue
Block a user