OSDN Git Service

drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly
authorJude Shih <shenshih@amd.com>
Wed, 29 Sep 2021 03:13:56 +0000 (11:13 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Oct 2021 19:53:01 +0000 (15:53 -0400)
[Why]
Condition variable sometimes terminated unexpectedly

[How]
Use wait_for_completion_timeout to avoid unexpected termination of CV

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Wayne Lin <Wayne.Lin@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Jude Shih <shenshih@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 85a8148..b567809 100644 (file)
@@ -11410,8 +11410,9 @@ int amdgpu_dm_process_dmub_aux_transfer_sync(bool is_cmd_aux, struct dc_context
                                        (uint32_t *)operation_result);
        }
 
-       ret = wait_for_completion_interruptible_timeout(&adev->dm.dmub_aux_transfer_done, 10*HZ);
+       ret = wait_for_completion_timeout(&adev->dm.dmub_aux_transfer_done, 10 * HZ);
        if (ret == 0) {
+               DRM_ERROR("wait_for_completion_timeout timeout!");
                return amdgpu_dm_set_dmub_async_sync_status(is_cmd_aux,
                                ctx, DMUB_ASYNC_TO_SYNC_ACCESS_TIMEOUT,
                                (uint32_t *)operation_result);