On Wed, 25 Mar 2015, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > This is a very similar bug in the load detect code fixed in > > commit 9128b040eb774e04bc23777b005ace2b66ab2a85 > Author: Daniel Vetter <daniel.vetter@xxxxxxxx> > Date: Tue Mar 3 17:31:21 2015 +0100 > > drm/i915: Fix modeset state confusion in the load detect code > > But this time around it was the initial fb code that forgot to update > the plane->crtc pointer. Otherwise it's the exact same bug, with the > exact same restrains (any set_config call/ioctl that doesn't disable > the pipe papers over the bug for free, so fairly hard to hit in normal > testing). So if you want the full explanation just go read that one > over there - it's rather long ... > > Cc: Matt Roper <matthew.d.roper@xxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Josh Boyer <jwboyer@xxxxxxxxxxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > --- > This is the version for -next. The one for -fixes just needs an > s/primary/intel_crtc->base.primary/ and some fudge in the diff. I just > want to apply this in both trees since with all the cherry-picking the > conflicts are fun already and with this patch in both places we can > just go with the code in -next. I've also picked this up from -next to drm-intel-fixes. BR, Jani. > > Cheers, Daniel > --- > 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 ceb2e61b4c91..cb508542c6ab 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -2594,6 +2594,7 @@ intel_find_plane_obj(struct intel_crtc *intel_crtc, > > primary->fb = &plane_config->fb->base; > primary->state->crtc = &intel_crtc->base; > + primary->crtc = &intel_crtc->base; > update_state_fb(primary); > > return; > @@ -2627,6 +2628,7 @@ intel_find_plane_obj(struct intel_crtc *intel_crtc, > drm_framebuffer_reference(c->primary->fb); > primary->fb = c->primary->fb; > primary->state->crtc = &intel_crtc->base; > + primary->crtc = &intel_crtc->base; > update_state_fb(intel_crtc->base.primary); > obj->frontbuffer_bits |= INTEL_FRONTBUFFER_PRIMARY(intel_crtc->pipe); > break; > -- > 2.1.4 > -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx