All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Egbert Eich <eich@suse.de>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/2] drm/i915: Only break encoder linked when linked to connector
Date: Tue, 15 Apr 2014 21:08:53 +0200	[thread overview]
Message-ID: <20140415190853.GC1023@phenom.ffwll.local> (raw)
In-Reply-To: <1397496369-2746-2-git-send-email-eich@suse.de>

On Mon, Apr 14, 2014 at 07:26:08PM +0200, Egbert Eich wrote:
> 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;

Hm, I think to address Chris' concern we should split this into two
pieces: connector_break_all links which only breaks connector->encoder
stuff, used in both places as is. And a new encoder_break_all links which
we'll use in sanitize_crtc in a new encoder loop.

Really nice catch though!
-Daniel
>  	connector->base.encoder = NULL;
>  	connector->encoder->connectors_active = false;
>  	connector->encoder->base.crtc = NULL;
> -- 
> 1.8.4.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

  parent reply	other threads:[~2014-04-15 19:08 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 ` [PATCH 1/2] drm/i915: Only break encoder linked when linked to connector Egbert Eich
2014-04-15  7:46   ` Chris Wilson
2014-04-15  9:14     ` Egbert Eich
2014-04-15 19:08   ` Daniel Vetter [this message]
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=20140415190853.GC1023@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=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.