diff options
author | Trigger Huang <Trigger.Huang@amd.com> | 2018-12-17 20:14:47 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-12-20 12:12:20 -0500 |
commit | 0346bfd9fe5ade369d9f946f82d6a43d113ba493 (patch) | |
tree | 8f278dcbd486043634ba3e21032a6bfea587ca61 /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |
parent | e01f2d41895102d824c6b8f5e011dd5e286d5e8b (diff) |
drm/amdgpu: print process info when job timeout
When a job is timeout, try to print the related process information
for debugging
Signed-off-by: Trigger Huang <Trigger.Huang@amd.com>
Reviewed-by: Christian König <christian.koenig@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.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 e0af44fd6a0c..0a17fb1af204 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |||
@@ -32,6 +32,9 @@ static void amdgpu_job_timedout(struct drm_sched_job *s_job) | |||
32 | { | 32 | { |
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 | struct amdgpu_task_info ti; | ||
36 | |||
37 | memset(&ti, 0, sizeof(struct amdgpu_task_info)); | ||
35 | 38 | ||
36 | if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) { | 39 | if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) { |
37 | DRM_ERROR("ring %s timeout, but soft recovered\n", | 40 | DRM_ERROR("ring %s timeout, but soft recovered\n", |
@@ -39,9 +42,12 @@ static void amdgpu_job_timedout(struct drm_sched_job *s_job) | |||
39 | return; | 42 | return; |
40 | } | 43 | } |
41 | 44 | ||
45 | amdgpu_vm_get_task_info(ring->adev, job->pasid, &ti); | ||
42 | DRM_ERROR("ring %s timeout, signaled seq=%u, emitted seq=%u\n", | 46 | DRM_ERROR("ring %s timeout, signaled seq=%u, emitted seq=%u\n", |
43 | job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), | 47 | job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), |
44 | ring->fence_drv.sync_seq); | 48 | ring->fence_drv.sync_seq); |
49 | DRM_ERROR("Process information: process %s pid %d thread %s pid %d\n", | ||
50 | ti.process_name, ti.tgid, ti.task_name, ti.pid); | ||
45 | 51 | ||
46 | if (amdgpu_device_should_recover_gpu(ring->adev)) | 52 | if (amdgpu_device_should_recover_gpu(ring->adev)) |
47 | amdgpu_device_gpu_recover(ring->adev, job); | 53 | amdgpu_device_gpu_recover(ring->adev, job); |