From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/i915: Skip load detect when intel_crtc->new_enable==true Date: Mon, 11 Aug 2014 13:32:28 +0200 Message-ID: <20140811113228.GN8727@phenom.ffwll.local> References: <1407752136-2973-1-git-send-email-ville.syrjala@linux.intel.com> <1407752136-2973-2-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mail-we0-f178.google.com (mail-we0-f178.google.com [74.125.82.178]) by gabe.freedesktop.org (Postfix) with ESMTP id 795CB89065 for ; Mon, 11 Aug 2014 04:32:16 -0700 (PDT) Received: by mail-we0-f178.google.com with SMTP id w61so8527032wes.37 for ; Mon, 11 Aug 2014 04:32:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1407752136-2973-2-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Mon, Aug 11, 2014 at 01:15:36PM +0300, ville.syrjala@linux.intel.com wro= te: > From: Ville Syrj=E4l=E4 > = > During suspend we turn off the crtcs, but leave the staged config in > place so that we can restore the display(s) to their previous state on > resume. > = > During resume when we attempt to apply the force pipe A quirk we use the > load detect mechanism. That doesn't check whether there was an already > staged configuration for the crtc since that's not even possible during > normal runtime load detection. But during resume it is possible, and if > we just blindly go and overwrite the staged crtc configuration for the > load detection we can no longer restore the display to the correct > state. > = > Even worse, we don't even clear all the staged connector->encoder->crtc > links so we may end up using a cloned setup for the load detection, and > after we're done we just clear the links related to the VGA output > leaving the links for the other outputs in place. This will eventually > result in calling intel_set_mode() with mode=3D=3DNULL but with valid > connector->encoder->crtc links which will result in dereferencing the > NULL mode since the code thinks it will have to a modeset. > = > To avoid these problems don't use any crtc with new_enabled=3D=3Dtrue for > load detection. > = > Signed-off-by: Ville Syrj=E4l=E4 Reviewed-by: Daniel Vetter Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/i915/intel_display.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > = > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/= intel_display.c > index 7953b46..ec12e31d1 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -8478,10 +8478,14 @@ retry: > i++; > if (!(encoder->possible_crtcs & (1 << i))) > continue; > - if (!possible_crtc->enabled) { > - crtc =3D possible_crtc; > - break; > - } > + if (possible_crtc->enabled) > + continue; > + /* This can occur when applying the pipe A quirk on resume. */ > + if (to_intel_crtc(possible_crtc)->new_enabled) > + continue; > + > + crtc =3D possible_crtc; > + break; > } > = > /* > -- = > 1.8.5.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