From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/3] drm/i915: Suppress spurious CPU FIFO underruns on ILK-IVB
Date: Tue, 24 Nov 2015 16:52:13 +0200 [thread overview]
Message-ID: <20151124145213.GI4437@intel.com> (raw)
In-Reply-To: <20151124141624.GG17050@phenom.ffwll.local>
On Tue, Nov 24, 2015 at 03:16:24PM +0100, Daniel Vetter wrote:
> On Fri, Nov 20, 2015 at 10:09:18PM +0200, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@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.syrjala@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
prev parent reply other threads:[~2015-11-24 14:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-20 20:09 [PATCH 1/3] drm/i915: Suppress spurious CPU FIFO underruns on ILK-IVB ville.syrjala
2015-11-20 20:09 ` [PATCH 2/3] drm/i915: Disable CPU underruns around eDP port and vdd enable " ville.syrjala
2015-11-21 10:52 ` Chris Wilson
2015-11-20 20:09 ` [PATCH 3/3] drm/i915: Check for underruns after crtc disable ville.syrjala
2015-11-21 10:49 ` Chris Wilson
2015-11-23 14:10 ` Ville Syrjälä
2015-11-23 14:42 ` Chris Wilson
2015-11-24 14:14 ` Daniel Vetter
2015-11-24 14:21 ` Ville Syrjälä
2015-11-21 10:51 ` [PATCH 1/3] drm/i915: Suppress spurious CPU FIFO underruns on ILK-IVB Chris Wilson
2015-11-23 14:22 ` Ville Syrjälä
2015-11-23 14:28 ` Chris Wilson
2015-11-23 14:55 ` Ville Syrjälä
2015-11-24 14:09 ` Daniel Vetter
2015-11-24 14:16 ` Daniel Vetter
2015-11-24 14:52 ` Ville Syrjälä [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151124145213.GI4437@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox