drm/i915/mst: Document the userspace fail with possible_crtcs
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 2 Oct 2019 16:25:05 +0000 (19:25 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 31 Oct 2019 14:08:11 +0000 (16:08 +0200)
To avoid accidentally breaking things in the future add a
comment explaining why we misconfigure the pipe_mask.

Also toss in a TODO for investigating a single encoder
approach as opposed to the encoder-per-pipe approach.

v2: Drop a bogus TODO comment

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191002162505.30716-6-ville.syrjala@linux.intel.com
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
drivers/gpu/drm/i915/display/intel_dp_mst.c

index 7370c9dfa8a1ce17770399c2dd633e31107bfa52..715b7109c388de5af0017c809b2f101143a61784 100644 (file)
@@ -615,6 +615,14 @@ intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum
        intel_encoder->power_domain = intel_dig_port->base.power_domain;
        intel_encoder->port = intel_dig_port->base.port;
        intel_encoder->cloneable = 0;
+       /*
+        * This is wrong, but broken userspace uses the intersection
+        * of possible_crtcs of all the encoders of a given connector
+        * to figure out which crtcs can drive said connector. What
+        * should be used instead is the union of possible_crtcs.
+        * To keep such userspace functioning we must misconfigure
+        * this to make sure the intersection is not empty :(
+        */
        intel_encoder->pipe_mask = ~0;
 
        intel_encoder->compute_config = intel_dp_mst_compute_config;