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 at 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