dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Nikola Cornij <nikola.cornij@amd.com>, amd-gfx@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	Nikola Cornij <nikola.cornij@amd.com>,
	koba.ko@canonical.com, aurabindo.pillai@amd.com,
	mikita.lipski@amd.com
Subject: Re: [Intel-gfx] [PATCH v8 1/1] drm/drm_mst: Use Extended Base Receiver Capability DPCD space
Date: Fri, 30 Apr 2021 08:43:27 +0300	[thread overview]
Message-ID: <875z042ups.fsf@intel.com> (raw)
In-Reply-To: <20210428234346.1085977-2-nikola.cornij@amd.com>

On Wed, 28 Apr 2021, Nikola Cornij <nikola.cornij@amd.com> wrote:
> [why]
> DP 1.4a spec madates that if DP_EXTENDED_RECEIVER_CAP_FIELD_PRESENT is
> set, Extended Base Receiver Capability DPCD space must be used. Without
> doing that, the three DPCD values that differ will be wrong, leading to
> incorrect or limited functionality. MST link rate, for example, could
> have a lower value. Also, Synaptics quirk wouldn't work out well when
> Extended DPCD was not read, resulting in no DSC for such hubs.
>
> [how]
> Modify MST topology manager to use the values from Extended DPCD where
> applicable.
>
> To prevent regression on the sources that have a lower maximum link rate
> capability than MAX_LINK_RATE from Extended DPCD, have the drivers
> supply maximum lane count and rate at initialization time.
>
> This also reverts 'commit 2dcab875e763 ("Revert drm/dp_mst: Retrieve
> extended DPCD caps for topology manager")', brining the change back to
> the original 'commit ad44c03208e4 ("drm/dp_mst: Retrieve extended DPCD
> caps for topology manager")'.
>
> Signed-off-by: Nikola Cornij <nikola.cornij@amd.com>
> ---
>  .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |  5 +++
>  .../gpu/drm/amd/display/dc/core/dc_link_dp.c  | 18 ++++++++++
>  drivers/gpu/drm/amd/display/dc/dc_link.h      |  2 ++
>  drivers/gpu/drm/drm_dp_mst_topology.c         | 33 ++++++++++++-------
>  drivers/gpu/drm/i915/display/intel_dp_mst.c   |  6 +++-
>  drivers/gpu/drm/nouveau/dispnv50/disp.c       |  3 +-
>  drivers/gpu/drm/radeon/radeon_dp_mst.c        |  7 ++++
>  include/drm/drm_dp_mst_helper.h               | 12 ++++++-
>  8 files changed, 71 insertions(+), 15 deletions(-)


> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 860381d68d9d..a4245eb48ef4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -942,6 +942,7 @@ intel_dp_mst_encoder_init(struct intel_digital_port *dig_port, int conn_base_id)
>  	struct intel_dp *intel_dp = &dig_port->dp;
>  	enum port port = dig_port->base.port;
>  	int ret;
> +	int bios_max_link_rate;
>  
>  	if (!HAS_DP_MST(i915) || intel_dp_is_edp(intel_dp))
>  		return 0;
> @@ -956,8 +957,11 @@ intel_dp_mst_encoder_init(struct intel_digital_port *dig_port, int conn_base_id)
>  
>  	/* create encoders */
>  	intel_dp_create_fake_mst_encoders(dig_port);
> +	bios_max_link_rate = intel_bios_dp_max_link_rate(&dig_port->base);

Wait, what? This can return 0, and usually does. This is an optional
limitation, and is generally only used if there's a need to have a
smaller max link rate than the max the platform supports. We call this
in one single place, and are not looking to add another call site.

I haven't had my doze of coffee this morning, but at a glance, I think
this will break MST for most i915 users.

See intel_dp->source_rates[] and intel_dp->num_source_rates for all the
rates the source supports, initialized at encoder
init. intel_dp->source_rates[intel_dp->num_source_rates - 1] would be
the max.

Also, I suggest using kHz for rates throughout, and specifically not the
DPCD "units". Otherwise, this is just another thing that needs fixing
with the DP 2.0 UHBR rates where the bandwidth codes don't follow the
same pattern.

Ten versions of the patch, with a benign looking subject, and none of
the i915 maintainers in Cc. Not cool.


BR,
Jani.


>  	ret = drm_dp_mst_topology_mgr_init(&intel_dp->mst_mgr, &i915->drm,
> -					   &intel_dp->aux, 16, 3, conn_base_id);
> +					   &intel_dp->aux, 16, 3,
> +					   dig_port->max_lanes,
> +					   bios_max_link_rate / 27000, conn_base_id);
>  	if (ret)
>  		return ret;
>  

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

      parent reply	other threads:[~2021-04-30  5:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-28 23:43 [PATCH v8 0/1] drm/drm_mst: Use Extended Base Receiver Capability Nikola Cornij
2021-04-28 23:43 ` [PATCH v8 1/1] drm/drm_mst: Use Extended Base Receiver Capability DPCD space Nikola Cornij
2021-04-29 19:00   ` [Heads up to maintainers] " Lyude Paul
2021-04-30  5:44     ` Jani Nikula
2021-05-03  8:33       ` Jani Nikula
2021-05-03  8:41         ` Jani Nikula
2021-05-04  7:43         ` Daniel Vetter
2021-04-30  5:43   ` Jani Nikula [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875z042ups.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=aurabindo.pillai@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=koba.ko@canonical.com \
    --cc=mikita.lipski@amd.com \
    --cc=nikola.cornij@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).