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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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

On Sat, 13 Aug 2016, Anusha Srivatsa <anusha.srivatsa@xxxxxxxxx> 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@xxxxxxxxx
>
> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@xxxxxxxxx>
> ---
>  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
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux