From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 4/5] drm: Allow reenabling of vblank interrupts even if refcount>0
Date: Wed, 5 Mar 2014 14:33:00 +0200 [thread overview]
Message-ID: <20140305123300.GQ3852@intel.com> (raw)
In-Reply-To: <20140304091602.GR17001@phenom.ffwll.local>
On Tue, Mar 04, 2014 at 10:16:02AM +0100, Daniel Vetter wrote:
> On Fri, Feb 21, 2014 at 09:03:34PM +0200, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > If someone holds a vblank reference across the modeset, and after/during
> > the modeset someone tries to grab a vblank reference, the current code
> > won't re-enable the vblank interrupts. That's not good, so instead allow
> > the driver to choose whether drm_vblank_get() should always enable the
> > interrupts regardless of the refcount.
> >
> > Combined with the drm_vblank_off/drm_vblank_on reject mechanism, this
> > can also be used to allow drivers to use vblank interrupts during
> > modeset, whether or not someone is currently holding a vblank reference.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/drm_irq.c | 3 ++-
> > include/drm/drmP.h | 6 ++++++
> > 2 files changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> > index 6e5d820..d613b6f 100644
> > --- a/drivers/gpu/drm/drm_irq.c
> > +++ b/drivers/gpu/drm/drm_irq.c
> > @@ -897,7 +897,8 @@ int drm_vblank_get(struct drm_device *dev, int crtc)
> > }
> >
> > /* Going from 0->1 means we have to enable interrupts again */
> > - if (atomic_add_return(1, &dev->vblank[crtc].refcount) == 1) {
> > + if (atomic_add_return(1, &dev->vblank[crtc].refcount) == 1 ||
> > + dev->vblank_always_enable_on_get) {
> > spin_lock(&dev->vblank_time_lock);
> > if (!dev->vblank[crtc].enabled) {
> > /* Enable vblank irqs under vblank_time_lock protection.
> > diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> > index ee40483..3eca0ee 100644
> > --- a/include/drm/drmP.h
> > +++ b/include/drm/drmP.h
> > @@ -1156,6 +1156,12 @@ struct drm_device {
> > */
> > bool vblank_disable_allowed;
> >
> > + /*
> > + * Should a non-rejected drm_vblank_get() always enable the
> > + * vblank interrupt regardless of the current refcount?
> > + */
> > + bool vblank_always_enable_on_get;
>
> Nack for this hack. Why can't drm_vblank_on not just re-enable the vblank
> interrupt if we still have a vblank reference?
Hmm. Yeah that seems like a nicer way to go about it.
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-03-05 12:33 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-21 19:03 [PATCH 0/5] drm: Allow vblank interrupts during modeset and make the code less racy ville.syrjala
2014-02-21 19:03 ` [PATCH 1/5] drm: Use correct spinlock flavor in drm_vblank_get() ville.syrjala
2014-02-26 19:24 ` [Intel-gfx] " Jesse Barnes
2014-02-21 19:03 ` [PATCH 2/5] drm: Make the vblank disable timer per-crtc ville.syrjala
2014-02-26 19:32 ` Jesse Barnes
2014-02-21 19:03 ` [PATCH 3/5] drm: Allow the driver to reject vblank requests only when it really has the vblank interrupts disabled ville.syrjala
2014-02-26 19:41 ` Jesse Barnes
2014-03-04 9:24 ` Daniel Vetter
2014-03-05 12:38 ` Ville Syrjälä
2014-03-05 13:55 ` Daniel Vetter
2014-02-21 19:03 ` [PATCH 4/5] drm: Allow reenabling of vblank interrupts even if refcount>0 ville.syrjala
2014-02-26 19:44 ` Jesse Barnes
2014-03-04 9:16 ` Daniel Vetter
2014-03-05 12:33 ` Ville Syrjälä [this message]
2014-02-21 19:03 ` [PATCH 5/5] drm/i915: Allow vblank interrupts during modeset and eliminate some vblank races ville.syrjala
2014-02-24 3:48 ` Michel Dänzer
2014-02-24 12:11 ` Ville Syrjälä
2014-02-25 2:58 ` Michel Dänzer
2014-02-26 19:48 ` Jesse Barnes
2014-03-04 9:13 ` Daniel Vetter
2014-05-28 9:12 ` Michel Dänzer
2014-05-28 11:19 ` [Intel-gfx] " Ville Syrjälä
2014-05-29 4:11 ` Michel Dänzer
2014-05-29 10:56 ` Daniel Vetter
2014-05-30 3:13 ` Michel Dänzer
2014-02-28 8:56 ` Ville Syrjälä
2014-03-04 9:15 ` Daniel Vetter
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=20140305123300.GQ3852@intel.com \
--to=ville.syrjala@linux.intel.com \
--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.