drm/amdgpu: print process info when job timeout
authorTrigger Huang <Trigger.Huang@amd.com>
Tue, 18 Dec 2018 01:14:47 +0000 (09:14 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 20 Dec 2018 17:12:20 +0000 (12:12 -0500)
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>
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c

index e0af44fd6a0cf7b52c266400510a857b74ea5efa..0a17fb1af204f0bc235ddc453fd74a8fb04fcde2 100644 (file)
@@ -32,6 +32,9 @@ 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);
+       struct amdgpu_task_info ti;
+
+       memset(&ti, 0, sizeof(struct amdgpu_task_info));
 
        if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) {
                DRM_ERROR("ring %s timeout, but soft recovered\n",
@@ -39,9 +42,12 @@ static void amdgpu_job_timedout(struct drm_sched_job *s_job)
                return;
        }
 
+       amdgpu_vm_get_task_info(ring->adev, job->pasid, &ti);
        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);
+       DRM_ERROR("Process information: process %s pid %d thread %s pid %d\n",
+                 ti.process_name, ti.tgid, ti.task_name, ti.pid);
 
        if (amdgpu_device_should_recover_gpu(ring->adev))
                amdgpu_device_gpu_recover(ring->adev, job);