[PATCH 1/2] drm/amd/display: Cleanup MST non-atomic code workaround

Lyude Paul lyude at redhat.com
Fri Nov 2 01:44:13 UTC 2018


This patch is

Reviewed-by: Lyude Paul <lyude at redhat.com>

On Tue, 2018-10-30 at 18:09 -0400, Jerry (Fangzhi) Zuo wrote:
> [why]
> It is not correct to touch aconnector within atomic_check.
> 
> [How]
> It was added as workaround before, and no longer needed.
> 
> Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo at amd.com>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  | 15 +++-------
>  .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c    | 34 -----------------
> -----
>  .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.h    |  1 -
>  3 files changed, 4 insertions(+), 46 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 f8ec8a146663..6c2441bfce90 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -2760,18 +2760,11 @@ create_stream_for_sink(struct amdgpu_dm_connector
> *aconnector,
>  	drm_connector = &aconnector->base;
>  
>  	if (!aconnector->dc_sink) {
> -		/*
> -		 * Create dc_sink when necessary to MST
> -		 * Don't apply fake_sink to MST
> -		 */
> -		if (aconnector->mst_port) {
> -			dm_dp_mst_dc_sink_create(drm_connector);
> -			return stream;
> +		if (!aconnector->mst_port) {
> +			sink = create_fake_sink(aconnector);
> +			if (!sink)
> +				return stream;
>  		}
> -
> -		sink = create_fake_sink(aconnector);
> -		if (!sink)
> -			return stream;
>  	} else {
>  		sink = aconnector->dc_sink;
>  	}
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 67683645ce2c..744d97cc0d39 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -205,40 +205,6 @@ static const struct drm_connector_funcs
> dm_dp_mst_connector_funcs = {
>  	.atomic_get_property = amdgpu_dm_connector_atomic_get_property
>  };
>  
> -void dm_dp_mst_dc_sink_create(struct drm_connector *connector)
> -{
> -	struct amdgpu_dm_connector *aconnector =
> to_amdgpu_dm_connector(connector);
> -	struct dc_sink *dc_sink;
> -	struct dc_sink_init_data init_params = {
> -			.link = aconnector->dc_link,
> -			.sink_signal = SIGNAL_TYPE_DISPLAY_PORT_MST };
> -
> -	/* FIXME none of this is safe. we shouldn't touch aconnector here in
> -	 * atomic_check
> -	 */
> -
> -	/*
> -	 * TODO: Need to further figure out why ddc.algo is NULL while MST
> port exists
> -	 */
> -	if (!aconnector->port || !aconnector->port->aux.ddc.algo)
> -		return;
> -
> -	ASSERT(aconnector->edid);
> -
> -	dc_sink = dc_link_add_remote_sink(
> -		aconnector->dc_link,
> -		(uint8_t *)aconnector->edid,
> -		(aconnector->edid->extensions + 1) * EDID_LENGTH,
> -		&init_params);
> -
> -	dc_sink->priv = aconnector;
> -	aconnector->dc_sink = dc_sink;
> -
> -	if (aconnector->dc_sink)
> -		amdgpu_dm_update_freesync_caps(
> -				connector, aconnector->edid);
> -}
> -
>  static int dm_dp_mst_get_modes(struct drm_connector *connector)
>  {
>  	struct amdgpu_dm_connector *aconnector =
> to_amdgpu_dm_connector(connector);
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h
> index 8cf51da26657..2da851b40042 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h
> @@ -31,6 +31,5 @@ struct amdgpu_dm_connector;
>  
>  void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
>  				       struct amdgpu_dm_connector
> *aconnector);
> -void dm_dp_mst_dc_sink_create(struct drm_connector *connector);
>  
>  #endif
-- 
Cheers,
	Lyude Paul



More information about the amd-gfx mailing list