aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 21e02df63730..5ec4ea060bd0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1946,6 +1946,7 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
if (!ring)
continue;
kthread_park(ring->sched.thread);
+ amd_sched_hw_job_reset(&ring->sched);
}
/* after all hw jobs are reset, hw fence is meaningless, so force_completion */
amdgpu_fence_driver_force_completion(adev);
@@ -1990,8 +1991,9 @@ retry:
struct amdgpu_ring *ring = adev->rings[i];
if (!ring)
continue;
+ amd_sched_job_recovery(&ring->sched);
kthread_unpark(ring->sched.thread);
- amdgpu_ring_restore(ring, ring_sizes[i], ring_data[i]);
+ kfree(ring_data[i]);
ring_sizes[i] = 0;
ring_data[i] = NULL;
}