aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
diff options
context:
space:
mode:
authorTrigger Huang <Trigger.Huang@amd.com>2018-12-17 20:14:47 -0500
committerAlex Deucher <alexander.deucher@amd.com>2018-12-20 12:12:20 -0500
commit0346bfd9fe5ade369d9f946f82d6a43d113ba493 (patch)
tree8f278dcbd486043634ba3e21032a6bfea587ca61 /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
parente01f2d41895102d824c6b8f5e011dd5e286d5e8b (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.c6
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);