diff options
| author | Christian König <[email protected]> | 2016-05-18 12:19:32 +0000 |
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2016-07-07 18:50:53 +0000 |
| commit | 0e51a772e2014db55b969c06814e8fe01d167ba2 (patch) | |
| tree | e9d8e576348a73ac72b5cdf256789c1154ee9436 /drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | |
| parent | drm/amdgpu: remove use_shed hack in job cleanup (diff) | |
| download | kernel-0e51a772e2014db55b969c06814e8fe01d167ba2.tar.gz kernel-0e51a772e2014db55b969c06814e8fe01d167ba2.zip | |
drm/amdgpu: properly abstract scheduler timeout handling
The driver shouldn't mess with the scheduler internals.
Signed-off-by: Christian König <[email protected]>
Reviewed-by: Monk.Liu <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/scheduler/gpu_scheduler.c')
| -rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index e8ee90fa6899..f2ed8c56a07e 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@ -362,6 +362,14 @@ static void amd_sched_job_begin(struct amd_sched_job *s_job) } } +static void amd_sched_job_timedout(struct work_struct *work) +{ + struct amd_sched_job *job = container_of(work, struct amd_sched_job, + work_tdr.work); + + job->sched->ops->timedout_job(job); +} + /** * Submit a job to the job queue * @@ -384,7 +392,6 @@ void amd_sched_entity_push_job(struct amd_sched_job *sched_job) int amd_sched_job_init(struct amd_sched_job *job, struct amd_gpu_scheduler *sched, struct amd_sched_entity *entity, - void (*timeout_cb)(struct work_struct *work), void (*free_cb)(struct kref *refcount), void *owner, struct fence **fence) { @@ -397,7 +404,7 @@ int amd_sched_job_init(struct amd_sched_job *job, return -ENOMEM; job->s_fence->s_job = job; - INIT_DELAYED_WORK(&job->work_tdr, timeout_cb); + INIT_DELAYED_WORK(&job->work_tdr, amd_sched_job_timedout); job->free_callback = free_cb; if (fence) |
