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

Jani Nikula jani.nikula at linux.intel.com
Tue Aug 16 11:23:37 UTC 2016


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.

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