First of all it's already being called from the display code from 
amd_ip_funcs.suspend/resume hooks.
Second of all, the place in amdgpu_device_gpu_recover it's being called is 
wrong for GPU stalls since
it is called BEFORE we cancel and force completion of all jobs which were not 
yet processed.
So, as Bas pointed in the ticket we will try to wait for fence  in 
amdgpu_pm_compute_clocks but the pipe
is hanged so we end up in deadlock.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106500
Signed-off-by: Andrey Grodzovsky <andrey.grodzov...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index fcd4bb2..f5c0a2d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3200,10 +3200,6 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
        /* block TTM */
        resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
 
-       /* store modesetting */
-       if (amdgpu_device_has_dc_support(adev))
-               state = drm_atomic_helper_suspend(adev->ddev);
-
        /* block all schedulers and reset given job's ring */
        for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
                struct amdgpu_ring *ring = adev->rings[i];
@@ -3243,10 +3239,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
                kthread_unpark(ring->sched.thread);
        }
 
-       if (amdgpu_device_has_dc_support(adev)) {
-               if (drm_atomic_helper_resume(adev->ddev, state))
-                       dev_info(adev->dev, "drm resume failed:%d\n", r);
-       } else {
+       if (!amdgpu_device_has_dc_support(adev)) {
                drm_helper_resume_force_mode(adev->ddev);
        }
 
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to