Skip duplicate VKMS mode-config suspend/resume while an internal
reset is in progress. This removes the remaining reset_domain->sem
-> clientlist_mutex edge without changing the lock order documented
by amdgpu_lockdep_init().

Signed-off-by: Prike Liang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
index d6b51b3f216b..a49c7dda4c4e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
@@ -491,6 +491,9 @@ static int amdgpu_vkms_suspend(struct amdgpu_ip_block 
*ip_block)
        struct amdgpu_device *adev = ip_block->adev;
        int r;
 
+       if (amdgpu_in_reset(adev))
+               return 0;
+
        r = drm_mode_config_helper_suspend(adev_to_drm(adev));
        if (r)
                return r;
@@ -505,6 +508,9 @@ static int amdgpu_vkms_resume(struct amdgpu_ip_block 
*ip_block)
        r = amdgpu_vkms_hw_init(ip_block);
        if (r)
                return r;
+       if (amdgpu_in_reset(ip_block->adev))
+               return 0;
+
        return drm_mode_config_helper_resume(adev_to_drm(ip_block->adev));
 }
 
-- 
2.34.1

Reply via email to