From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 09/12] drm/i915: rip our vblank reset hacks for runtime PM
Date: Tue, 20 May 2014 17:03:33 +0300 [thread overview]
Message-ID: <20140520140332.GH27580@intel.com> (raw)
In-Reply-To: <20140520133814.GX8790@phenom.ffwll.local>
On Tue, May 20, 2014 at 03:38:14PM +0200, Daniel Vetter wrote:
> On Tue, May 20, 2014 at 03:03:41PM +0300, Ville Syrjälä wrote:
> > On Wed, May 14, 2014 at 08:51:11PM +0200, Daniel Vetter wrote:
> > > Now that we unconditionally dtrt when disabling/enabling crtcs we
> > > don't need any hacks any longer to keep the vblank logic sane when
> > > all the registers go poof. So let's rip it all out.
> >
> > Hmm. drm_update_vblank_count() will now see some kind of diff between
> > the last and current value when the registers got cloberred. So the
> > vblank counter reported to userspace will jump. But I guess that's fine
> > as long as userspace realizes that the counter is not at all reliable
> > across modesets.
>
> I've added checks for this (the rpm varianst) and for the similiar
> suspend/resume issues (the suspend variants) to kms_flip. It seems to work
> and we don't actually jump to far. But maybe the tests are horribly
> broken.
Hmm. If we can force the power well off at the start of the test and then
set a mode, I'd expect the vblank counter to jump by almost max_vblank_count
since the hw counter would appear to wrap.
>
> Can you please take a closer look? I've thought that the entire point of
> this series (well, one of them) was to finally fix this gag and avoid
> handing totally bogus frame counter values to userspace. Especially for
> system suspend/resume where userspace might get susprised ...
I was mostly interested in making vblank interrupts work during plane
enable/disable. Anything else is a bonus.
> -Daniel
>
> >
> > >
> > > This essentially undoes
> > >
> > > commit 9dbd8febb4dbc9199fcf340b882eb930e36b65b6
> > > Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > Date: Tue Jul 23 10:48:11 2013 -0300
> > >
> > > drm/i915: update last_vblank when disabling the power well
> > >
> > > Apparently igt/kms_flip is already powerful enough to exercise this
> > > properly, yay! See the reference regression report for details.
> > >
> > > References: https://bugs.freedesktop.org/show_bug.cgi?id=66808
> > > Testcase: igt/kms_flip/*-vs-rpm
> > > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> > > ---
> > > drivers/gpu/drm/i915/intel_pm.c | 34 ----------------------------------
> > > 1 file changed, 34 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > > index 75c1c766b507..45fa43f16bb3 100644
> > > --- a/drivers/gpu/drm/i915/intel_pm.c
> > > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > > @@ -5423,33 +5423,6 @@ static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
> > > }
> > > }
> > >
> > > -static void reset_vblank_counter(struct drm_device *dev, enum pipe pipe)
> > > -{
> > > - assert_spin_locked(&dev->vbl_lock);
> > > -
> > > - dev->vblank[pipe].last = 0;
> > > -}
> > > -
> > > -static void hsw_power_well_post_disable(struct drm_i915_private *dev_priv)
> > > -{
> > > - struct drm_device *dev = dev_priv->dev;
> > > - enum pipe pipe;
> > > - unsigned long irqflags;
> > > -
> > > - /*
> > > - * After this, the registers on the pipes that are part of the power
> > > - * well will become zero, so we have to adjust our counters according to
> > > - * that.
> > > - *
> > > - * FIXME: Should we do this in general in drm_vblank_post_modeset?
> > > - */
> > > - spin_lock_irqsave(&dev->vbl_lock, irqflags);
> > > - for_each_pipe(pipe)
> > > - if (pipe != PIPE_A)
> > > - reset_vblank_counter(dev, pipe);
> > > - spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
> > > -}
> > > -
> > > static void hsw_set_power_well(struct drm_i915_private *dev_priv,
> > > struct i915_power_well *power_well, bool enable)
> > > {
> > > @@ -5478,8 +5451,6 @@ static void hsw_set_power_well(struct drm_i915_private *dev_priv,
> > > I915_WRITE(HSW_PWR_WELL_DRIVER, 0);
> > > POSTING_READ(HSW_PWR_WELL_DRIVER);
> > > DRM_DEBUG_KMS("Requesting to disable the power well\n");
> > > -
> > > - hsw_power_well_post_disable(dev_priv);
> > > }
> > > }
> > > }
> > > @@ -5646,11 +5617,6 @@ static void vlv_display_power_well_disable(struct drm_i915_private *dev_priv,
> > > valleyview_disable_display_irqs(dev_priv);
> > > spin_unlock_irq(&dev_priv->irq_lock);
> > >
> > > - spin_lock_irq(&dev->vbl_lock);
> > > - for_each_pipe(pipe)
> > > - reset_vblank_counter(dev, pipe);
> > > - spin_unlock_irq(&dev->vbl_lock);
> > > -
> > > vlv_set_power_well(dev_priv, power_well, false);
> > > }
> > >
> > > --
> > > 1.8.3.1
> > >
> > > _______________________________________________
> > > Intel-gfx mailing list
> > > Intel-gfx@lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> >
> > --
> > Ville Syrjälä
> > Intel OTC
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-05-20 14:03 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-14 18:51 [PATCH 00/12] irq vblank handling rework Daniel Vetter
2014-05-14 18:51 ` [PATCH 01/12] drm: Use correct spinlock flavor in drm_vblank_get() Daniel Vetter
2014-05-21 11:08 ` Thierry Reding
2014-05-14 18:51 ` [PATCH 02/12] drm: Make the vblank disable timer per-crtc Daniel Vetter
2014-05-21 11:17 ` Thierry Reding
2014-05-21 12:10 ` Daniel Vetter
2014-05-14 18:51 ` [PATCH 03/12] drm: Make blocking vblank wait return when the vblank interrupts get disabled Daniel Vetter
2014-05-21 11:20 ` Thierry Reding
2014-05-21 11:24 ` Thierry Reding
2014-05-14 18:51 ` [PATCH 04/12] drm: Add drm_vblank_on() Daniel Vetter
2014-05-14 18:55 ` Daniel Vetter
2014-05-21 11:32 ` Thierry Reding
2014-05-21 12:15 ` Daniel Vetter
2014-05-14 18:51 ` [PATCH 05/12] drm/i915: Remove drm_vblank_pre/post_modeset calls Daniel Vetter
2014-05-21 11:40 ` Thierry Reding
2014-05-14 18:51 ` [PATCH 06/12] drm/doc: Discourage usage of MODESET_CTL ioctl Daniel Vetter
2014-05-15 4:27 ` Michel Dänzer
2014-05-15 13:00 ` [PATCH] " Daniel Vetter
2014-05-15 20:36 ` Laurent Pinchart
2014-05-14 18:51 ` [PATCH 07/12] drm/irq: kerneldoc polish Daniel Vetter
2014-05-15 4:44 ` Michel Dänzer
2014-05-15 9:55 ` Daniel Vetter
2014-05-15 7:21 ` Thierry Reding
2014-05-15 13:00 ` [PATCH] " Daniel Vetter
2014-05-14 18:51 ` [PATCH 08/12] drm/irq: Add kms-native crtc interface functions Daniel Vetter
2014-05-15 7:34 ` Thierry Reding
2014-05-15 10:10 ` Daniel Vetter
2014-05-15 10:42 ` Thierry Reding
2014-05-15 11:11 ` Daniel Vetter
2014-05-15 13:34 ` [PATCH 1/2] " Daniel Vetter
2014-05-15 13:34 ` [PATCH 2/2] drm/i915: Use new kms-native vblank functions Daniel Vetter
2014-05-14 18:51 ` [PATCH 09/12] drm/i915: rip our vblank reset hacks for runtime PM Daniel Vetter
2014-05-20 12:03 ` [Intel-gfx] " Ville Syrjälä
2014-05-20 13:38 ` Daniel Vetter
2014-05-20 14:03 ` Ville Syrjälä [this message]
2014-05-20 14:20 ` Daniel Vetter
2014-05-20 15:17 ` Daniel Vetter
2014-05-21 12:49 ` Thierry Reding
2014-05-14 18:51 ` [PATCH 09/12] drm/irq: Lack of interrupt support in drm_vblank_on|off Daniel Vetter
2014-05-21 12:49 ` Thierry Reding
2014-05-14 18:51 ` [PATCH 10/12] drm/i915: Accurately initialize fifo underrun state on gmch platforms Daniel Vetter
2014-05-14 18:51 ` [PATCH 10/12] drm/i915: rip our vblank reset hacks for runtime PM Daniel Vetter
2014-05-14 18:51 ` [PATCH 11/12] drm/i915: Accurately initialize fifo underrun state on gmch platforms Daniel Vetter
2014-05-14 19:39 ` Imre Deak
2014-05-14 18:51 ` [PATCH 11/12] [RFC] drm/irq: More robustness in drm_vblank_on|off Daniel Vetter
2014-05-21 12:53 ` Thierry Reding
2014-05-21 13:11 ` Daniel Vetter
2014-05-14 18:51 ` [PATCH 12/12] [RFC] drm/crtc-helper: Enforce sane vblank counter semantics Daniel Vetter
2014-05-21 8:26 ` [PATCH 00/12] irq vblank handling rework Ville Syrjälä
2014-05-21 8:35 ` Daniel Vetter
2014-05-21 8:58 ` Ville Syrjälä
2014-05-21 12:55 ` Thierry Reding
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=20140520140332.GH27580@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.