On Tue, 2019-09-03 at 18:40 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <[email protected]>
> 
> This reverts commit 4eaceea3a00f8e936a7f48dcd0c975a57f88930f.
> 
> Several userspace clients (modesetting ddx and mutter+wayland at
> least)
> handle encoder.possible_crtcs incorrectly. What they essentially do
> is
> the following:
> 
> possible_crtcs = ~0;
> for_each_possible_encoder(connector)
>       possible_crtcs &= encoder->possible_crtcs;
> 
> Ie. they calculate the intersection of the possible_crtcs
> for the connector when they really should be calculating the
> union instead.
> 
> In our case each MST encoder now has just one unique bit set,
> and so the intersection is always zero. The end result is that
> MST connectors can't be lit up because no crtc can be found to
> drive them.
> 
> I've submitted a fix for the modesetting ddx [1], and complained
> on #wayland about mutter, so hopefully the situation will improve
> in the future. In the meantime we have regression, and so must go
> back to the old way of misconfiguring possible_crtcs in the kernel.

In the meantime are you planing to send a patch doing:

for_each_pipe(dev_priv, pipe)
                intel_encoder->crtc_mask |= BIT(pipe);

We had a patch doing that in one of the TGL enabling series but it was
dropped because of your patch looked better, I can bring it back if you
are not planning.

> 
> [1] https://gitlab.freedesktop.org/xorg/xserver/merge_requests/277

Just looked to the merge request above, not to the other userspace
clients

Reviewed-by: José Roberto de Souza <[email protected]>

> 
> Cc: Jonas Ådahl <[email protected]>
> Cc: Stanislav Lisovskiy <[email protected]>
> Cc: Lionel Landwerlin <[email protected]>
> Cc: Dhinakaran Pandiyan <[email protected]>
> Cc: Lucas De Marchi <[email protected]>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111507
> Signed-off-by: Ville Syrjälä <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 6df240a01b8c..37366f81255b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -615,7 +615,7 @@ intel_dp_create_fake_mst_encoder(struct
> intel_digital_port *intel_dig_port, enum
>       intel_encoder->type = INTEL_OUTPUT_DP_MST;
>       intel_encoder->power_domain = intel_dig_port-
> >base.power_domain;
>       intel_encoder->port = intel_dig_port->base.port;
> -     intel_encoder->crtc_mask = BIT(pipe);
> +     intel_encoder->crtc_mask = 0x7;
>       intel_encoder->cloneable = 0;
>  
>       intel_encoder->compute_config = intel_dp_mst_compute_config;
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to