drm/i915: Make intel_get_pipe_from_connector atomic
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 1 Mar 2017 09:52:24 +0000 (10:52 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 8 Mar 2017 22:42:40 +0000 (23:42 +0100)
Drive-by fixup while looking at all the connector_list walkers -
holding connection_mutex does actually _not_ give you locking to look
at the legacy drm_connector->encoder->crtc pointer chain. That one is
solely owned by the atomic commit workers. Instead we must inspect the
atomic state.

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170301095226.30584-4-daniel.vetter@ffwll.ch
drivers/gpu/drm/i915/intel_display.c

index fef6c766d0bedadf021b0a6cd4ce6b9f63a21d7d..292563ea8271501bc2d5d147a5e81e51d0ed8c87 100644 (file)
@@ -13889,15 +13889,14 @@ fail:
 
 enum pipe intel_get_pipe_from_connector(struct intel_connector *connector)
 {
-       struct drm_encoder *encoder = connector->base.encoder;
        struct drm_device *dev = connector->base.dev;
 
        WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex));
 
-       if (!encoder || WARN_ON(!encoder->crtc))
+       if (!connector->base.state->crtc)
                return INVALID_PIPE;
 
-       return to_intel_crtc(encoder->crtc)->pipe;
+       return to_intel_crtc(connector->base.state->crtc)->pipe;
 }
 
 int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,