diff options
author | Christian König <christian.koenig@amd.com> | 2018-08-21 05:11:36 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-27 16:10:07 -0400 |
commit | 7876fa4f55fda4a57348832f4a668279ed2b2fc4 (patch) | |
tree | 3a2c8d39c5a86fff4f5f71906b26c4aa69be7a6c /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |
parent | 07e6d3f03b5ff7b93af37932ee0f4b775812274f (diff) |
drm/amdgpu: add ring soft recovery v4
Instead of hammering hard on the GPU try a soft recovery first.
v2: reorder code a bit
v3: increase timeout to 10ms, increment GPU reset counter
v4: squash in compile fix (Christian)
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_job.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index facc0f08d804..34e54d41f5ca 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |||
@@ -33,6 +33,12 @@ static void amdgpu_job_timedout(struct drm_sched_job *s_job) | |||
33 | struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched); | 33 | struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched); |
34 | struct amdgpu_job *job = to_amdgpu_job(s_job); | 34 | struct amdgpu_job *job = to_amdgpu_job(s_job); |
35 | 35 | ||
36 | if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) { | ||
37 | DRM_ERROR("ring %s timeout, but soft recovered\n", | ||
38 | s_job->sched->name); | ||
39 | return; | ||
40 | } | ||
41 | |||
36 | DRM_ERROR("ring %s timeout, signaled seq=%u, emitted seq=%u\n", | 42 | DRM_ERROR("ring %s timeout, signaled seq=%u, emitted seq=%u\n", |
37 | job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), | 43 | job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), |
38 | ring->fence_drv.sync_seq); | 44 | ring->fence_drv.sync_seq); |