[Intel-gfx] [PATCH] drm/i915: Provide more clues as to why MST is/is not used

Dhinakaran Pandiyan dhinakaran.pandiyan at intel.com
Wed Oct 3 19:24:53 UTC 2018


On Wednesday, October 3, 2018 11:42:10 AM PDT Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Always print out the information whether the port and sink can each
> do MST. And let's include the modparam in the debug output as well.
> Makes life a little less confusing when you don't have to wonder
> why MST isn't kicking in.
> 
> This does cause a slight change in our behaviour towards the sink.
> Previously we only read the MSTM_CAP register after passing all
> the other checks. Now we will read that register regardless. Hopefully
> some crazy sink doesn't get confused by a simple register read.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 33 ++++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c
> b/drivers/gpu/drm/i915/intel_dp.c index 15a981ef5966..1a510cf58fb5 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4050,16 +4050,10 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
>  }
> 
>  static bool
> -intel_dp_can_mst(struct intel_dp *intel_dp)
> +intel_dp_sink_can_mst(struct intel_dp *intel_dp)
>  {
>  	u8 mstm_cap;
> 
> -	if (!i915_modparams.enable_dp_mst)
> -		return false;
> -
> -	if (!intel_dp->can_mst)
> -		return false;
> -
>  	if (intel_dp->dpcd[DP_DPCD_REV] < 0x12)
>  		return false;
> 
> @@ -4069,21 +4063,30 @@ intel_dp_can_mst(struct intel_dp *intel_dp)
>  	return mstm_cap & DP_MST_CAP;
>  }
> 
> +static bool
> +intel_dp_can_mst(struct intel_dp *intel_dp)
> +{
> +	return i915_modparams.enable_dp_mst &&
> +		intel_dp->can_mst &&
> +		intel_dp_sink_can_mst(intel_dp);
> +}
> +
>  static void
>  intel_dp_configure_mst(struct intel_dp *intel_dp)
>  {
> -	if (!i915_modparams.enable_dp_mst)
> -		return;
> +	struct intel_encoder *encoder =
> +		&dp_to_dig_port(intel_dp)->base;
> +	bool sink_can_mst = intel_dp_sink_can_mst(intel_dp);
> +
> +	DRM_DEBUG_KMS("MST support? port %c: %s, sink: %s, modparam: %s\n",
> +		      port_name(encoder->port), yesno(intel_dp->can_mst),
> +		      yesno(sink_can_mst), yesno(i915_modparams.enable_dp_mst));
> 
>  	if (!intel_dp->can_mst)
>  		return;
> 
> -	intel_dp->is_mst = intel_dp_can_mst(intel_dp);
> -
> -	if (intel_dp->is_mst)
> -		DRM_DEBUG_KMS("Sink is MST capable\n");
> -	else
> -		DRM_DEBUG_KMS("Sink is not MST capable\n");
> +	intel_dp->is_mst = sink_can_mst &&
> +		i915_modparams.enable_dp_mst;
Should we still keep this modparam around? I don't know if anyone actually 
uses it to work around MST issues. Even if there are MST issues, we should be 
fixing them.

I see the value in the debug message, 
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>

> 
>  	drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
>  					intel_dp->is_mst);






More information about the Intel-gfx mailing list