diff options
author | Andrey Grodzovsky <andrey.grodzovsky@amd.com> | 2019-04-18 11:00:23 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-05-02 15:50:55 -0500 |
commit | a5343b8a2ca5799ee6370e3cca77369a4c598221 (patch) | |
tree | cca91effac12b23864f57cc409e29d7e27dbdce9 /include/drm/gpu_scheduler.h | |
parent | 290764af7e369f0001175dc8c3cb747aa9903bb8 (diff) | |
download | linux-rpi-a5343b8a2ca5799ee6370e3cca77369a4c598221.tar.gz linux-rpi-a5343b8a2ca5799ee6370e3cca77369a4c598221.tar.bz2 linux-rpi-a5343b8a2ca5799ee6370e3cca77369a4c598221.zip |
drm/scheduler: Add flag to hint the release of guilty job.
Problem:
Sched thread's cleanup function races against TO handler
and removes the guilty job from mirror list and we
have no way of differentiating if the job was removed from within the
TO handler or from the sched thread's clean-up function.
Fix:
Add a flag to scheduler to hint the TO handler that the guilty job needs
to be explicitly released.
v2: whitespace fix
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1555599624-12285-5-git-send-email-andrey.grodzovsky@amd.com
Diffstat (limited to 'include/drm/gpu_scheduler.h')
-rw-r--r-- | include/drm/gpu_scheduler.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h index 9ee0f2735d71..57b4121c750a 100644 --- a/include/drm/gpu_scheduler.h +++ b/include/drm/gpu_scheduler.h @@ -259,6 +259,7 @@ struct drm_sched_backend_ops { * guilty and it will be considered for scheduling further. * @num_jobs: the number of jobs in queue in the scheduler * @ready: marks if the underlying HW is ready to work + * @free_guilty: A hit to time out handler to free the guilty job. * * One scheduler is implemented for each hardware ring. */ @@ -279,6 +280,7 @@ struct drm_gpu_scheduler { int hang_limit; atomic_t num_jobs; bool ready; + bool free_guilty; }; int drm_sched_init(struct drm_gpu_scheduler *sched, |