<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>
    </p>
    <p style="margin:0in;font-family:Calibri;font-size:11.0pt">Reviewed-by:
      Sunil
      Khatri <a class="moz-txt-link-rfc2396E" href="mailto:sunil.khatri@amd.com"><sunil.khatri@amd.com></a></p>
    <div class="moz-cite-prefix">On 4/11/2025 7:42 PM, Alex Deucher
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:20250411141228.2722962-6-alexander.deucher@amd.com">
      <pre wrap="" class="moz-quote-pre">Unmap user queues on suspend and map them on resume.

Signed-off-by: Alex Deucher <a class="moz-txt-link-rfc2396E" href="mailto:alexander.deucher@amd.com"><alexander.deucher@amd.com></a>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index f212ce3f5d34a..e7398e70d6795 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3507,6 +3507,9 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
        amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
 
        amdgpu_amdkfd_suspend(adev, false);
+#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
+       amdgpu_userq_suspend(adev);
+#endif
 
        /* Workaround for ASICs need to disable SMC first */
        amdgpu_device_smu_fini_early(adev);
@@ -5075,8 +5078,12 @@ int amdgpu_device_suspend(struct drm_device *dev, bool notify_clients)
 
        amdgpu_device_ip_suspend_phase1(adev);
 
-       if (!adev->in_s0ix)
+       if (!adev->in_s0ix) {
                amdgpu_amdkfd_suspend(adev, adev->in_runpm);
+#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
+               amdgpu_userq_suspend(adev);
+#endif
+       }
 
        r = amdgpu_device_evict_resources(adev);
        if (r)
@@ -5143,6 +5150,11 @@ int amdgpu_device_resume(struct drm_device *dev, bool notify_clients)
                r = amdgpu_amdkfd_resume(adev, adev->in_runpm);
                if (r)
                        goto exit;
+#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
+               r = amdgpu_userq_resume(adev);
+               if (r)
+                       goto exit;
+#endif
        }
 
        r = amdgpu_device_ip_late_init(adev);
</pre>
    </blockquote>
  </body>
</html>