summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-05-18 14:19:32 +0200
committerAlex Deucher <alexander.deucher@amd.com>2016-07-07 14:50:53 -0400
commit0e51a772e2014db55b969c06814e8fe01d167ba2 (patch)
treee9d8e576348a73ac72b5cdf256789c1154ee9436 /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
parent1e24e31f22a69e0983c3dbc31dc725cd940ad258 (diff)
downloadblackbird-op-linux-0e51a772e2014db55b969c06814e8fe01d167ba2.tar.gz
blackbird-op-linux-0e51a772e2014db55b969c06814e8fe01d167ba2.zip
drm/amdgpu: properly abstract scheduler timeout handling
The driver shouldn't mess with the scheduler internals. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Monk.Liu <monk.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_job.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_job.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index be4698b0b33b..32132f2e236d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -34,13 +34,14 @@ static void amdgpu_job_free_handler(struct work_struct *ws)
amd_sched_job_put(&job->base);
}
-void amdgpu_job_timeout_func(struct work_struct *work)
+static void amdgpu_job_timedout(struct amd_sched_job *s_job)
{
- struct amdgpu_job *job = container_of(work, struct amdgpu_job, base.work_tdr.work);
+ struct amdgpu_job *job = container_of(s_job, struct amdgpu_job, base);
+
DRM_ERROR("ring %s timeout, last signaled seq=%u, last emitted seq=%u\n",
- job->base.sched->name,
- (uint32_t)atomic_read(&job->ring->fence_drv.last_seq),
- job->ring->fence_drv.sync_seq);
+ job->base.sched->name,
+ atomic_read(&job->ring->fence_drv.last_seq),
+ job->ring->fence_drv.sync_seq);
amd_sched_job_put(&job->base);
}
@@ -126,8 +127,7 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
return -EINVAL;
r = amd_sched_job_init(&job->base, &ring->sched,
- entity, amdgpu_job_timeout_func,
- amdgpu_job_free_func, owner, &fence);
+ entity, amdgpu_job_free_func, owner, &fence);
if (r)
return r;
@@ -197,4 +197,5 @@ err:
const struct amd_sched_backend_ops amdgpu_sched_ops = {
.dependency = amdgpu_job_dependency,
.run_job = amdgpu_job_run,
+ .timedout_job = amdgpu_job_timedout,
};
OpenPOWER on IntegriCloud