From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher James Halse Rogers Subject: Re: [PATCH] drm: Factor-out drm_emit_vblank_event code. (v2) Date: Mon, 02 May 2011 09:55:28 +1000 Message-ID: <1304294128.25088.7.camel@Ed> References: <20110428133617.18026c59@jbarnes-desktop> <1304049430-10109-1-git-send-email-christopher.halse.rogers@canonical.com> <20110429155528.GA3022@joi.lan> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1760146369==" Return-path: Received: from adelie.canonical.com (adelie.canonical.com [91.189.90.139]) by gabe.freedesktop.org (Postfix) with ESMTP id 3424E9E782 for ; Sun, 1 May 2011 16:55:39 -0700 (PDT) In-Reply-To: <20110429155528.GA3022@joi.lan> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Marcin Slusarz Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============1760146369== Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-mloU7mLahM4b+CWQR5Od" --=-mloU7mLahM4b+CWQR5Od Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2011-04-29 at 17:55 +0200, Marcin Slusarz wrote: > On Fri, Apr 29, 2011 at 01:57:10PM +1000, christopher.halse.rogers@canoni= cal.com wrote: > > From: Christopher James Halse Rogers > >=20 > > v2: Also pull out the drm_vblank_put call. > > Signed-off-by: Christopher James Halse Rogers > > --- > > drivers/gpu/drm/drm_irq.c | 44 ++++++++++++++++++-------------------= ------- > > 1 files changed, 18 insertions(+), 26 deletions(-) > >=20 > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > > index 982ca8c..da56685 100644 > > --- a/drivers/gpu/drm/drm_irq.c > > +++ b/drivers/gpu/drm/drm_irq.c > > @@ -931,6 +931,20 @@ void drm_vblank_put(struct drm_device *dev, int cr= tc) > > } > > EXPORT_SYMBOL(drm_vblank_put); > > =20 > > +static void drm_emit_vblank_event (struct drm_device *dev, > > + struct drm_pending_vblank_event *e, > > + unsigned int seq, struct timeval *now) > > +{ > > + e->event.sequence =3D seq; > > + e->event.tv_sec =3D now->tv_sec; > > + e->event.tv_usec =3D now->tv_usec; > > + drm_vblank_put(dev, e->pipe); > > + list_move_tail(&e->base.link, &e->base.file_priv->event_list); > > + wake_up_interruptible(&e->base.file_priv->event_wait); > > + trace_drm_vblank_event_delivered(e->base.pid, e->pipe, > > + e->event.sequence); > > +} > > + > > void drm_vblank_off(struct drm_device *dev, int crtc) > > { > > struct drm_pending_vblank_event *e, *t; > > @@ -951,14 +965,7 @@ void drm_vblank_off(struct drm_device *dev, int cr= tc) > > wanted %d, current %d\n", > > e->event.sequence, seq); > > =20 > > - e->event.sequence =3D seq; > > - e->event.tv_sec =3D now.tv_sec; > > - e->event.tv_usec =3D now.tv_usec; > > - drm_vblank_put(dev, e->pipe); > > - list_move_tail(&e->base.link, &e->base.file_priv->event_list); > > - wake_up_interruptible(&e->base.file_priv->event_wait); > > - trace_drm_vblank_event_delivered(e->base.pid, e->pipe, > > - e->event.sequence); > > + drm_emit_vblank_event(dev, e, seq, &now); > > } > > =20 > > WARN_ON(atomic_read(&dev->vblank_refcount[crtc]) !=3D 0); > > @@ -1104,18 +1111,10 @@ static int drm_queue_vblank_event(struct drm_de= vice *dev, int pipe, > > vblwait->request.sequence); > > =20 > > e->event.sequence =3D vblwait->request.sequence; > > + list_add_tail(&e->base.link, &dev->vblank_event_list); >=20 > Is &dev->vblank_event_list =3D=3D &e->base.file_priv->event_list? > If they are not equal this is changing the behavior... This gets moved to e->base.file_priv->event_list in drm_emit_vblank_event (). So it's doing a bit of useless work setting a couple of pointers, but this doesn't change the behaviour. >=20 > > if ((seq - vblwait->request.sequence) <=3D (1 << 23)) { > > - e->event.sequence =3D seq; > > - e->event.tv_sec =3D now.tv_sec; > > - e->event.tv_usec =3D now.tv_usec; > > - drm_vblank_put(dev, pipe); > > - list_add_tail(&e->base.link, &e->base.file_priv->event_list); > > - wake_up_interruptible(&e->base.file_priv->event_wait); > > - vblwait->reply.sequence =3D seq; >=20 > Is it OK to drop this substitution? Ahem. No, it's not. That's an overzealous delete key going off. Hm. Either the clients I was testing don't care about the reply, or the clients I was testing always set _DRM_BLANK_NEXTONMISS. I think it's the latter. Updated patch coming. >=20 > > - trace_drm_vblank_event_delivered(current->pid, pipe, > > - vblwait->request.sequence); > > + drm_emit_vblank_event(dev, e, seq, &now); > > } else { > > - list_add_tail(&e->base.link, &dev->vblank_event_list); > > vblwait->reply.sequence =3D vblwait->request.sequence; > > } > > =20 > > @@ -1249,14 +1248,7 @@ void drm_handle_vblank_events(struct drm_device = *dev, int crtc) > > DRM_DEBUG("vblank event on %d, current %d\n", > > e->event.sequence, seq); > > =20 > > - e->event.sequence =3D seq; > > - e->event.tv_sec =3D now.tv_sec; > > - e->event.tv_usec =3D now.tv_usec; > > - drm_vblank_put(dev, e->pipe); > > - list_move_tail(&e->base.link, &e->base.file_priv->event_list); > > - wake_up_interruptible(&e->base.file_priv->event_wait); > > - trace_drm_vblank_event_delivered(e->base.pid, e->pipe, > > - e->event.sequence); > > + drm_emit_vblank_event(dev, e, seq, &now); > > } > > =20 > > spin_unlock_irqrestore(&dev->event_lock, flags); > > --=20 --=-mloU7mLahM4b+CWQR5Od Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAABCAAGBQJNvfLrAAoJEBUHnPSAqAygC0oIAJXOz314BeljZcbq/jQlyiom b5RIS1RyvNr49BUd7jjaHYfgyqFhfrhOkdzwbrEy2OC/m0D76ocBg92xVo/1K16W nrtmFY5T60yMXv+k2pmC0ckRedDZVh3+eGA9JQJgsdO9pU/gMrIfoHea70BkT8Nn G/Zqd1c8KhpIOWUYnpf3cBNP6GlMn9J1iHrUAxGkqPGPvhHo+NxjaQFRc/+plmek gGHIo9WaebWvjC7Uoav6QIX4x4ZlfWMOMD96rOCnjxR2BypSdBF+jAwF61nZZUgi mQDyGvIqUjLquctCDBkuH9AHjufWGDah96ktTJXmOqq5g00XN8m/9BHLqEaqiVU= =gdVr -----END PGP SIGNATURE----- --=-mloU7mLahM4b+CWQR5Od-- --===============1760146369== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel --===============1760146369==--