diff options
author | Christian König <christian.koenig@amd.com> | 2018-08-21 11:11:36 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-27 22:10:07 +0200 |
commit | 7876fa4f55fda4a57348832f4a668279ed2b2fc4 (patch) | |
tree | 3a2c8d39c5a86fff4f5f71906b26c4aa69be7a6c /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |
parent | drm/amdgpu: move PD/PT bos on LRU again (diff) | |
download | linux-7876fa4f55fda4a57348832f4a668279ed2b2fc4.tar.xz linux-7876fa4f55fda4a57348832f4a668279ed2b2fc4.zip |
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) struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched); struct amdgpu_job *job = to_amdgpu_job(s_job); + if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) { + DRM_ERROR("ring %s timeout, but soft recovered\n", + s_job->sched->name); + return; + } + DRM_ERROR("ring %s timeout, signaled seq=%u, emitted seq=%u\n", job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), ring->fence_drv.sync_seq); |