On Mon, 10 Nov 2014 12:40:47 +0200 Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > On Fri, Nov 07, 2014 at 04:07:50PM -0800, Bob Paauwe wrote: > > The pipe config needs to be initialized before calling crtc_compute_clock > > since this will update the new_config structure DPLL values. Initializing > > the new_config structure after calling crtc_compute_clock can result in > > incorrect timing values. > > > > This regression was introduced in > > > > commit 0dbdf89f27b17ae1eceed6782c2917f74cbb5d59 > > Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > > Date: Wed Oct 29 11:32:33 2014 +0200 > > > > drm/i915: Add infrastructure for choosing DPLLs before disabling crtcs > > > > and > > > > commit 00d958817dd3daaa452c221387ddaf23d1e4c06f > > Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > > Date: Wed Oct 29 11:32:36 2014 +0200 > > > > drm/i915: Covert remaining platforms to choose DPLLS before disabling CRTCs > > > > Signed-off-by: Bob Paauwe <bob.j.paauwe@xxxxxxxxx> > > CC: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_display.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > > index ff071a7..53f3d3a 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -10774,7 +10774,11 @@ static int __intel_set_mode(struct drm_crtc *crtc, > > } > > intel_dump_pipe_config(to_intel_crtc(crtc), pipe_config, > > "[modeset]"); > > - to_intel_crtc(crtc)->new_config = pipe_config; > > new_config _is_ initialized here. > > > + > > + /* mode_set/enable/disable functions rely on a correct pipe > > + * config. */ > > + to_intel_crtc(crtc)->config = *pipe_config; > > + to_intel_crtc(crtc)->new_config = &to_intel_crtc(crtc)->config; > > And this will clobber the old config before we even know if the modeset > will succeed. That's not what we want. Ahh, I was looking at this wrong before. For some reason I was thinking that when this was done below, it was overwriting something that was set in new_config/pipe_config. > > You didn't really describe the problem you're seeing, so coming up with > theories is a bit hard. I guess one problem could be that some piece of > code is still looking at crtc->config when it should be looking at > crtc->new_config. In any case, I suggest you tell us a bit more before > anyone spends too much time guessing. With the series that changes this to choose DPLLs before disabling CRTCs, my 945 system fails to set the initial mode (no display) and I get this error: Nov 11 03:47:07 localhost kernel: [ 2.086190] [drm:intel_pipe_config_compare [i915]] *ERROR* mismatch in adjusted_mode.crtc_clock (expected 148500, found 57600) Nov 11 03:47:07 localhost kernel: [ 2.086191] ------------[ cut here ]------------ Nov 11 03:47:07 localhost kernel: [ 2.086238] WARNING: CPU: 1 PID: 56 at /home/bpaauwe/git/otc/drm-intel/drivers/gpu/drm/i915/intel_display.c:10650 check_crtc_state+0x244/0x2ac [i915]() Nov 11 03:47:07 localhost kernel: [ 2.086239] pipe state doesn't match! I bisected it back to the commit referenced above. I had been thinking that something was not getting set property, but your insight that maybe something was using the old values is right. I found where it's doing that. I'll send out a new patch shortly. > > > } > > > > /* > > @@ -10820,10 +10824,6 @@ static int __intel_set_mode(struct drm_crtc *crtc, > > */ > > if (modeset_pipes) { > > crtc->mode = *mode; > > - /* mode_set/enable/disable functions rely on a correct pipe > > - * config. */ > > - to_intel_crtc(crtc)->config = *pipe_config; > > - to_intel_crtc(crtc)->new_config = &to_intel_crtc(crtc)->config; > > > > /* > > * Calculate and store various constants which > > -- > > 1.8.3.1 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx