All of lore.kernel.org
 help / color / mirror / Atom feed
From: Egbert Eich <eich@suse.de>
To: intel-gfx@lists.freedesktop.org
Cc: Egbert Eich <eich@suse.de>
Subject: [PATCH 1/2] drm/i915: Only break encoder linked when linked to connector
Date: Mon, 14 Apr 2014 19:26:08 +0200	[thread overview]
Message-ID: <1397496369-2746-2-git-send-email-eich@suse.de> (raw)
In-Reply-To: <1397496369-2746-1-git-send-email-eich@suse.de>

Depending on the SDVO output_flags SDVO may have multiple connectors
linking to the same encoder (in intel_connector->encoder->base).
Only one of those connectors should be active (ie link to the encoder
thru drm_connector->encoder.
If intel_connector_break_all_links() is called from intel_sanitize_crtc()
we may brake the crtc connection of an encoder thru an inactive connector
in which case intel_connector_break_all_links() will not be called again
for the active connector due to
   if (connector->encoder->base.crtc != &crtc->base)
                                continue;
in intel_sanitize_crtc().
This will however leave the drm_connector->encoder linkage for this
active connector in place. Subsequently this will cause multiple
warnings in intel_connector_check_state() to trigger and the driver
will eventually die in drm_encoder_crtc_ok() (because of crtc == NULL).

To avoid this break the encoder links only if the connector is active
(ie. has drm_connector->encoder set).

Signed-off-by: Egbert Eich <eich@suse.de>
---
 drivers/gpu/drm/i915/intel_display.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 1390ab5..041f847 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11390,6 +11390,8 @@ static void
 intel_connector_break_all_links(struct intel_connector *connector)
 {
 	connector->base.dpms = DRM_MODE_DPMS_OFF;
+	if (!connector->base.encoder)
+		return;
 	connector->base.encoder = NULL;
 	connector->encoder->connectors_active = false;
 	connector->encoder->base.crtc = NULL;
-- 
1.8.4.5

  reply	other threads:[~2014-04-14 17:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-14 17:26 [PATCH 0/2] Fix if multiple SDVO outputs are flagged Egbert Eich
2014-04-14 17:26 ` Egbert Eich [this message]
2014-04-15  7:46   ` [PATCH 1/2] drm/i915: Only break encoder linked when linked to connector Chris Wilson
2014-04-15  9:14     ` Egbert Eich
2014-04-15 19:08   ` Daniel Vetter
2014-04-16  6:04     ` Egbert Eich
2014-04-16  9:16     ` [PATCH] drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc() Egbert Eich
2014-04-16 11:42       ` Daniel Vetter
2014-04-25  8:56         ` [PATCH v3] " Egbert Eich
2014-04-25 11:28           ` Jani Nikula
2014-04-14 17:26 ` [PATCH 2/2] drm/i915: Set up SDVO encoder type only at detect Egbert Eich
2014-04-15  9:39   ` Chris Wilson
2014-04-15 19:14     ` [PATCH v2] " Egbert Eich
2014-04-15 19:19       ` Chris Wilson
2014-04-15 19:12   ` [PATCH 2/2] " Daniel Vetter
2014-04-16  5:58     ` Egbert Eich
2014-04-16  7:55       ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1397496369-2746-2-git-send-email-eich@suse.de \
    --to=eich@suse.de \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.