[Intel-gfx] [PATCH v2] drm/i915: Don't forget to mark crtc as inactive after disable

Patrik Jakobsson patrik.jakobsson at linux.intel.com
Fri Jul 10 04:56:30 PDT 2015


On Fri, Jul 10, 2015 at 12:22:51PM +0100, Damien Lespiau wrote:
> Hi Patrik,
> 
> Please do Cc the patch author and reviewer when finding a regression,
> they are superb candidates for the review, especially when they are busy
> rewriting the display code.

Hmm, I figured they would be picked up from the commit msg by git-send-email but
maybe that doesn't work on indented lines.

Anyways, CCing them now.

Thanks
Patrik

> 
> On Wed, Jul 08, 2015 at 03:31:52PM +0200, Patrik Jakobsson wrote:
> > Watermark calculations depend on the intel_crtc->active flag to be set
> > properly. Suspend/resume is broken on SKL and we also get DDB mismatches
> > without this patch.
> > 
> > The regression was introduced in:
> > 
> > commit eddfcbcdc27fbecb33bff098967bbdd7ca75bfa6
> > Author: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> > Date:   Mon Jun 15 12:33:53 2015 +0200
> > 
> >     drm/i915: Update less state during modeset.
> > 
> >     No need to repeatedly call update_watermarks, or update_fbc.
> >     Down to a single call to update_watermarks in .crtc_enable
> > 
> >     Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> >     Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
> >     Tested-by(IVB): Matt Roper <matthew.d.roper at intel.com>
> >     Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> > 
> > v2: Don't touch disable_shared_dpll()
> > 
> > Signed-off-by: Patrik Jakobsson <patrik.jakobsson at linux.intel.com>
> 
> We do need to update the watermarks in disable() as well, to repartition
> the DDB and update the watermarks based on the new allocation.
> 
> Maarten, Matt, I've no clue where you want the crtc state update, where
> the atomic WM work is at, could you comment?
> 
> Thanks,
> 
> -- 
> Damien
> 
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 3c2425f..b4f7a4f 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -5046,6 +5046,9 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
> >  
> >  		ironlake_fdi_pll_disable(intel_crtc);
> >  	}
> > +
> > +	intel_crtc->active = false;
> > +	intel_update_watermarks(crtc);
> >  }
> >  
> >  static void haswell_crtc_disable(struct drm_crtc *crtc)
> > @@ -5091,6 +5094,9 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
> >  	for_each_encoder_on_crtc(dev, crtc, encoder)
> >  		if (encoder->post_disable)
> >  			encoder->post_disable(encoder);
> > +
> > +	intel_crtc->active = false;
> > +	intel_update_watermarks(crtc);
> >  }
> >  
> >  static void i9xx_pfit_enable(struct intel_crtc *crtc)
> > @@ -6155,6 +6161,9 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
> >  
> >  	if (!IS_GEN2(dev))
> >  		intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
> > +
> > +	intel_crtc->active = false;
> > +	intel_update_watermarks(crtc);
> >  }
> >  
> >  static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
> > -- 
> > 2.1.4
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list