The CRTC assigned to the DP port may be NULL if the DP port hasn't been
configured yet (as when sitting at a console).  So make sure we don't
dereference it or we'll an oops at unplug time when we try to down the
link.

Signed-off-by: Jesse Barnes <[email protected]>
---
 drivers/gpu/drm/i915/intel_dp.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1f4242b..0c62b94 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1426,6 +1426,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
        struct drm_device *dev = intel_dp->base.base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        uint32_t DP = intel_dp->DP;
+       struct intel_crtc *intel_crtc = to_intel_crtc(intel_dp->base.base.crtc);
 
        if ((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)
                return;
@@ -1453,9 +1454,9 @@ intel_dp_link_down(struct intel_dp *intel_dp)
        if (is_edp(intel_dp))
                DP |= DP_LINK_TRAIN_OFF;
 
-       if (!HAS_PCH_CPT(dev) &&
+       /* CRTC may be NULL if this DP link has never been configured */
+       if (!HAS_PCH_CPT(dev) && intel_crtc &&
            I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) {
-               struct intel_crtc *intel_crtc = 
to_intel_crtc(intel_dp->base.base.crtc);
                /* Hardware workaround: leaving our transcoder select
                 * set to transcoder B while it's off will prevent the
                 * corresponding HDMI output on transcoder A.
-- 
1.7.2.3

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to