We need to make sure the user queues are preempted so
GFX can enter gfxoff.

Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 24 +++++++++-------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 2325a64fe6f12..136f0b6d0ba22 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -5203,7 +5203,7 @@ int amdgpu_device_suspend(struct drm_device *dev, bool 
notify_clients)
        adev->in_suspend = true;
 
        if (amdgpu_sriov_vf(adev)) {
-               if (!adev->in_s0ix && !adev->in_runpm)
+               if (!adev->in_runpm)
                        amdgpu_amdkfd_suspend_process(adev);
                amdgpu_virt_fini_data_exchange(adev);
                r = amdgpu_virt_request_full_gpu(adev, false);
@@ -5223,10 +5223,8 @@ int amdgpu_device_suspend(struct drm_device *dev, bool 
notify_clients)
 
        amdgpu_device_ip_suspend_phase1(adev);
 
-       if (!adev->in_s0ix) {
-               amdgpu_amdkfd_suspend(adev, !amdgpu_sriov_vf(adev) && 
!adev->in_runpm);
-               amdgpu_userq_suspend(adev);
-       }
+       amdgpu_amdkfd_suspend(adev, !amdgpu_sriov_vf(adev) && !adev->in_runpm);
+       amdgpu_userq_suspend(adev);
 
        r = amdgpu_device_evict_resources(adev);
        if (r)
@@ -5321,15 +5319,13 @@ int amdgpu_device_resume(struct drm_device *dev, bool 
notify_clients)
                goto exit;
        }
 
-       if (!adev->in_s0ix) {
-               r = amdgpu_amdkfd_resume(adev, !amdgpu_sriov_vf(adev) && 
!adev->in_runpm);
-               if (r)
-                       goto exit;
+       r = amdgpu_amdkfd_resume(adev, !amdgpu_sriov_vf(adev) && 
!adev->in_runpm);
+       if (r)
+               goto exit;
 
-               r = amdgpu_userq_resume(adev);
-               if (r)
-                       goto exit;
-       }
+       r = amdgpu_userq_resume(adev);
+       if (r)
+               goto exit;
 
        r = amdgpu_device_ip_late_init(adev);
        if (r)
@@ -5342,7 +5338,7 @@ int amdgpu_device_resume(struct drm_device *dev, bool 
notify_clients)
                amdgpu_virt_init_data_exchange(adev);
                amdgpu_virt_release_full_gpu(adev, true);
 
-               if (!adev->in_s0ix && !r && !adev->in_runpm)
+               if (!r && !adev->in_runpm)
                        r = amdgpu_amdkfd_resume_process(adev);
        }
 
-- 
2.51.0

Reply via email to