On Tue, Nov 24, 2015 at 03:16:24PM +0100, Daniel Vetter wrote:
> On Fri, Nov 20, 2015 at 10:09:18PM +0200, ville.syrj...@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> > 
> > We still get spurious pipe underruns on ILK/SNB/IVB under two
> > circumstances when dealing with PCH ports:
> > * When the pipe has been disabled, but FDI RX/TX is still enabled
> > * During FDI link training
> > 
> > Both cases seem to happen at least when we do VGA+HDMI cloning
> > from the same pipe. I don't think I've seen them when not cloning,
> > but can't be 100% sure.
> > 
> > Disable underrun reporting around those places to eliminate the
> > dmesg errors.
> > 
> > Testcase: igt/kms_setmode/basic-clone-single-crtc
> > Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> hsw seems to have a similar problem when both vga and hdmi are used, even
> when not cloned. Bad thing is that somehow the underrun reporting gets
> into a non-recoverable state and stuck there, so that no underrun and also
> nothing else (specifically crc irqs, that's why bat notices) work any
> more.
> 
> Might be worth a shot to try the same trick there. Of course we still need
> to figure out why it can't recover from this, too.

I don't have a HSW/BDW with VGA on me. I suppose I might need to go
find one and see what's what.

Series pushed to dinq. Thanks for the acks and reviews.

> 
> Anyway just an aside, ack on the entire series.
> -Daniel
> 
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 20 +++++++++++++++++++-
> >  1 file changed, 19 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c 
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 68fb449ded77..8a8104b7947d 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -4137,6 +4137,12 @@ static void ironlake_pch_enable(struct drm_crtc 
> > *crtc)
> >     I915_WRITE(FDI_RX_TUSIZE1(pipe),
> >                I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK);
> >  
> > +   /*
> > +    * Sometimes spurious CPU pipe underruns happen during FDI
> > +    * training, at least with VGA+HDMI cloning. Suppress them.
> > +    */
> > +   intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
> > +
> >     /* For PCH output, training FDI link */
> >     dev_priv->display.fdi_link_train(crtc);
> >  
> > @@ -4170,6 +4176,8 @@ static void ironlake_pch_enable(struct drm_crtc *crtc)
> >  
> >     intel_fdi_normal_train(crtc);
> >  
> > +   intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
> > +
> >     /* For PCH DP, enable TRANS_DP_CTL */
> >     if (HAS_PCH_CPT(dev) && intel_crtc->config->has_dp_encoder) {
> >             const struct drm_display_mode *adjusted_mode =
> > @@ -5062,12 +5070,22 @@ static void ironlake_crtc_disable(struct drm_crtc 
> > *crtc)
> >     drm_crtc_vblank_off(crtc);
> >     assert_vblank_disabled(crtc);
> >  
> > +   /*
> > +    * Sometimes spurious CPU pipe underruns happen when the
> > +    * pipe is already disabled, but FDI RX/TX is still enabled.
> > +    * Happens at least with VGA+HDMI cloning. Suppress them.
> > +    */
> > +   if (intel_crtc->config->has_pch_encoder)
> > +           intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
> > +
> >     intel_disable_pipe(intel_crtc);
> >  
> >     ironlake_pfit_disable(intel_crtc, false);
> >  
> > -   if (intel_crtc->config->has_pch_encoder)
> > +   if (intel_crtc->config->has_pch_encoder) {
> >             ironlake_fdi_disable(crtc);
> > +           intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
> > +   }
> >  
> >     for_each_encoder_on_crtc(dev, crtc, encoder)
> >             if (encoder->post_disable)
> > -- 
> > 2.4.10
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to