[PATCH] drm/amd/display: Move drm_dp_mst_atomic_check() to the front of dc_validate_global_state()

Mikita Lipski mlipski at amd.com
Tue Jan 28 21:47:57 UTC 2020


Reviewed-by: Mikita Lipski <mikita.lipski at amd.com>

Thanks!
Mikita

On 1/28/20 4:44 PM, Zhan Liu wrote:
> [Why]
> Need to do atomic check first, then validate global state.
> If not, when connecting both MST and HDMI displays and
> set a bad mode via xrandr, system will hang.
> 
> [How]
> Move drm_dp_mst_atomic_check() to the front of
> dc_validate_global_state().
> 
> Signed-off-by: Zhan Liu <zhan.liu at amd.com>
> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index eed3ed7180fd..805d8d84ebb8 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -8256,6 +8256,16 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
>   			goto fail;
>   #endif
>   
> +		/*
> +		 * Perform validation of MST topology in the state:
> +		 * We need to perform MST atomic check before calling
> +		 * dc_validate_global_state(), or there is a chance
> +		 * to get stuck in an infinite loop and hang eventually.
> +		 */
> +		ret = drm_dp_mst_atomic_check(state);
> +		if (ret)
> +			goto fail;
> +
>   		if (dc_validate_global_state(dc, dm_state->context, false) != DC_OK) {
>   			ret = -EINVAL;
>   			goto fail;
> @@ -8284,10 +8294,6 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
>   				dc_retain_state(old_dm_state->context);
>   		}
>   	}
> -	/* Perform validation of MST topology in the state*/
> -	ret = drm_dp_mst_atomic_check(state);
> -	if (ret)
> -		goto fail;
>   
>   	/* Store the overall update type for use later in atomic check. */
>   	for_each_new_crtc_in_state (state, crtc, new_crtc_state, i) {
> 

-- 
Thanks,
Mikita Lipski
Software Engineer 2, AMD
mikita.lipski at amd.com


More information about the amd-gfx mailing list