[Intel-gfx] [PATCH 2/7] drm/i915: Fixup Oops in the pipe config computation
Daniel Vetter
daniel at ffwll.ch
Fri Apr 12 10:10:10 CEST 2013
On Thu, Apr 11, 2013 at 11:09:00PM +0200, Daniel Vetter wrote:
> On Thu, Apr 11, 2013 at 04:29:05PM +0200, Daniel Vetter wrote:
> > Yet again our current confusion between doing the modeset globally,
> > but only having the new parameters for one crtc at a time.
> >
> > This time things blew up when restoring modes in the switchless resume
> > code - intel_modeset_affected_pipes figured out that pipe 2 should
> > be restored, but since pipe 1 was disabled there was no mode nor fb
> > when trying to restore the first crtc.
> >
> > Hilarity ensued and broke resume on my i945gme machine since the
> > pipe_config_set_bpp added in
> >
> > commit 4e53c2e010e531b4a014692199e978482d471c7e
> > Author: Daniel Vetter <daniel.vetter at ffwll.ch>
> > Date: Wed Mar 27 00:44:58 2013 +0100
> >
> > drm/i915: precompute pipe bpp before touching the hw
> >
> > fell over the lack of an fb.
> >
> > Fix this mess by now by justing shunting all the cool new global
> > modeset logic in intel_modeset_affected_pipes.
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>
> Potentially the same bug reported against 3.8.1:
>
> Bugzill: https://bugzilla.redhat.com/show_bug.cgi?id=917725
> Cc: stable at vger.kernel.org
References: http://www.mail-archive.com/stable@vger.kernel.org/msg38084.html
Tested-by: Richard Cochran <richardcochran at gmail.com>
> > ---
> > drivers/gpu/drm/i915/intel_display.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index f60493b..58c6bb6 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -7629,6 +7629,10 @@ intel_modeset_affected_pipes(struct drm_crtc *crtc, unsigned *modeset_pipes,
> > /* ... and mask these out. */
> > *modeset_pipes &= ~(*disable_pipes);
> > *prepare_pipes &= ~(*disable_pipes);
> > +
> > + /* HACK: We don't (yet) fully support global modesets. */
> > + *modeset_pipes &= 1 << intel_crtc->pipe;
> > + *prepare_pipes &= 1 << intel_crtc->pipe;
> > }
> >
> > static bool intel_crtc_in_use(struct drm_crtc *crtc)
> > --
> > 1.7.10.4
> >
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list