drm/amd/display: Avoid get/put vblank when stream disabled
authorWayne Lin <Wayne.Lin@amd.com>
Wed, 28 Apr 2021 10:04:44 +0000 (18:04 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 20 May 2021 02:39:28 +0000 (22:39 -0400)
[Why]
amdgpu_dm_crtc_set_crc_source() will call
amdgpu_dm_crtc_configure_crc_source() to enable/disable CRC
generation. However, configuration will be deferred to stream enabled.
If stream is not enabled, current flow will still try to get/put vblank
refcount.

[How]
Return EINVAL to skip actions on vblank refcount when stream is not
enabled.

Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Reviewed-by: Chao-kai Wang <Stylon.Wang@amd.com>
Acked-by: Stylon Wang <stylon.wang@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c

index 676f413..b59eeeb 100644 (file)
@@ -9036,8 +9036,9 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
                        }
 
                        if (configure_crc)
-                               amdgpu_dm_crtc_configure_crc_source(
-                                       crtc, dm_new_crtc_state, cur_crc_src);
+                               if (amdgpu_dm_crtc_configure_crc_source(
+                                       crtc, dm_new_crtc_state, cur_crc_src))
+                                       DRM_DEBUG_DRIVER("Failed to configure crc source");
 #endif
                }
        }
index 7f36b2b..cce062a 100644 (file)
@@ -176,7 +176,7 @@ int amdgpu_dm_crtc_configure_crc_source(struct drm_crtc *crtc,
 
        /* Configuration will be deferred to stream enable. */
        if (!stream_state)
-               return 0;
+               return -EINVAL;
 
        mutex_lock(&adev->dm.dc_lock);