Skip to content

Commit

Permalink
Revert "drm/i915: Fix DP-MST crtc_mask"
Browse files Browse the repository at this point in the history
This reverts commit 4eaceea.

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.

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

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]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Reviewed-by: José Roberto de Souza <[email protected]>
(cherry picked from commit e838bfa)
Signed-off-by: Rodrigo Vivi <[email protected]>
  • Loading branch information
vsyrjala authored and rodrigovivi committed Oct 3, 2019
1 parent eb0192f commit 485f682
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/gpu/drm/i915/display/intel_dp_mst.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 485f682

Please sign in to comment.