[Intel-gfx] [PATCH v2 1/2] drm/i915/mst: Validate modes against available link bandwidth

Srivatsa, Anusha anusha.srivatsa at intel.com
Wed Aug 17 17:42:48 UTC 2016



-----Original Message-----
From: Jani Nikula [mailto:jani.nikula at linux.intel.com] 
Sent: Tuesday, August 16, 2016 4:24 AM
To: Srivatsa, Anusha <anusha.srivatsa at intel.com>; intel-gfx at lists.freedesktop.org
Cc: Pandiyan, Dhinakaran <dhinakaran.pandiyan at intel.com>
Subject: Re: [Intel-gfx] [PATCH v2 1/2] drm/i915/mst: Validate modes against available link bandwidth

On Sat, 13 Aug 2016, Anusha Srivatsa <anusha.srivatsa at intel.com> wrote:
> Validate the modes against available link bandwidth rather than 
> maximum link bandwidth so that we have a better idea as to whether a 
> proposed mode can truly run beside existing stream.

But if the existing link was trained for the existing stream, there isn't necessarily any bandwidth left. I'd think this is something that the up front link training + atomic mode setting will take care of.

The link training is done once for the link and not everytime we add a new sink device. In MST mode, as and when a new sink device is added, the total link bandwidth reduces and hence we need to compare with the available bandwidth rather than the total link bandwidth.

-Anusha

BR,
Jani.



>
> v2: Put the Signed-off to the end of the commit message
>
> Cc: dhinakaran.pandiyan at intel.com
>
> Signed-off-by: Anusha Srivatsa <anusha.srivatsa at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp_mst.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c 
> b/drivers/gpu/drm/i915/intel_dp_mst.c
> index 629337d..e7e87d7 100644
> --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> @@ -352,13 +352,23 @@ static enum drm_mode_status  
> intel_dp_mst_mode_valid(struct drm_connector *connector,
>  			struct drm_display_mode *mode)
>  {
> +	int req_pbn = 0;
> +	int avail_pbn = 0;
> +	struct intel_connector *intel_connector = to_intel_connector(connector);
> +	struct intel_dp *intel_dp = intel_connector->mst_port;
> +	struct drm_dp_mst_topology_mgr *mgr = &intel_dp->mst_mgr;
> +	struct drm_dp_mst_port *port = (struct drm_dp_mst_port *) 
> +(intel_connector->port);
>  	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
>  
> -	/* TODO - validate mode against available PBN for link */
> +	avail_pbn = drm_dp_mst_get_avail_pbn(mgr, port);
> +	req_pbn = drm_dp_calc_pbn_mode(mode->clock, 24);
> +	if (req_pbn > avail_pbn)
> +		return MODE_H_ILLEGAL;
> +
>  	if (mode->clock < 10000)
>  		return MODE_CLOCK_LOW;
>  
> -	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
> +        if (mode->flags & DRM_MODE_FLAG_DBLCLK)
>  		return MODE_H_ILLEGAL;
>  
>  	if (mode->clock > max_dotclk)

--
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list