Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Dec 2012 00:32:59 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Attilio Rao <attilio@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   Re: svn commit: r244793 - in user/attilio/membarclean/dev: drm drm2 netmap virtio
Message-ID:  <20121228223259.GX82219@kib.kiev.ua>
In-Reply-To: <201212282218.qBSMIfX2015054@svn.freebsd.org>
References:  <201212282218.qBSMIfX2015054@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--z3PcgjD2qOzdkXVS
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Dec 28, 2012 at 10:18:41PM +0000, Attilio Rao wrote:
> Author: attilio
> Date: Fri Dec 28 22:18:41 2012
> New Revision: 244793
> URL: http://svnweb.freebsd.org/changeset/base/244793
>=20
> Log:
>   - Remove rmb() usage from netmap and replace it with intended operation
>     to do actual memory fetching reads.
>   - GC unused DRM_WRITEMEMORYBARRIER() from drm and drm2.
>   - Use atomic_load_acq_*() in virtio and drm2 in places that don't need
>     to use rmb().
>  =20
>   All these changes remove completely rmb() from MI code, with the
>   exception of cxgbe which will be hammered in a followup commit.
>=20
> Modified:
>   user/attilio/membarclean/dev/drm/drmP.h
>   user/attilio/membarclean/dev/drm2/drmP.h
>   user/attilio/membarclean/dev/drm2/drm_atomic.h
>   user/attilio/membarclean/dev/drm2/drm_irq.c
>   user/attilio/membarclean/dev/netmap/netmap.c
>   user/attilio/membarclean/dev/virtio/virtqueue.c
>=20
> Modified: user/attilio/membarclean/dev/drm/drmP.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- user/attilio/membarclean/dev/drm/drmP.h	Fri Dec 28 22:06:50 2012	(r24=
4792)
> +++ user/attilio/membarclean/dev/drm/drmP.h	Fri Dec 28 22:18:41 2012	(r24=
4793)
> @@ -241,11 +241,9 @@ typedef u_int32_t u32;
>  typedef u_int16_t u16;
>  typedef u_int8_t u8;
> =20
> -/* DRM_READMEMORYBARRIER() prevents reordering of reads.
> - * DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
> +/* DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
>   * DRM_MEMORYBARRIER() prevents reordering of reads and writes.
>   */
> -#define DRM_READMEMORYBARRIER()		rmb()
>  #define DRM_WRITEMEMORYBARRIER()	wmb()
>  #define DRM_MEMORYBARRIER()		mb()
> =20
>=20
> Modified: user/attilio/membarclean/dev/drm2/drmP.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- user/attilio/membarclean/dev/drm2/drmP.h	Fri Dec 28 22:06:50 2012	(r2=
44792)
> +++ user/attilio/membarclean/dev/drm2/drmP.h	Fri Dec 28 22:18:41 2012	(r2=
44793)
> @@ -263,11 +263,9 @@ typedef int32_t s32;
>  typedef int16_t s16;
>  typedef int8_t s8;
> =20
> -/* DRM_READMEMORYBARRIER() prevents reordering of reads.
> - * DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
> +/* DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
>   * DRM_MEMORYBARRIER() prevents reordering of reads and writes.
>   */
> -#define DRM_READMEMORYBARRIER()		rmb()
>  #define DRM_WRITEMEMORYBARRIER()	wmb()
>  #define DRM_MEMORYBARRIER()		mb()
> =20
>=20
> Modified: user/attilio/membarclean/dev/drm2/drm_atomic.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- user/attilio/membarclean/dev/drm2/drm_atomic.h	Fri Dec 28 22:06:50 20=
12	(r244792)
> +++ user/attilio/membarclean/dev/drm2/drm_atomic.h	Fri Dec 28 22:18:41 20=
12	(r244793)
> @@ -38,6 +38,7 @@ typedef u_int32_t atomic_t;
> =20
>  #define atomic_set(p, v)	(*(p) =3D (v))
>  #define atomic_read(p)		(*(p))
> +#define atomic_read_acq(p)	atomic_load_acq_int(p)
>  #define atomic_inc(p)		atomic_add_int(p, 1)
>  #define atomic_dec(p)		atomic_subtract_int(p, 1)
>  #define atomic_add(n, p)	atomic_add_int(p, n)
>=20
> Modified: user/attilio/membarclean/dev/drm2/drm_irq.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- user/attilio/membarclean/dev/drm2/drm_irq.c	Fri Dec 28 22:06:50 2012	=
(r244792)
> +++ user/attilio/membarclean/dev/drm2/drm_irq.c	Fri Dec 28 22:18:41 2012	=
(r244793)
> @@ -701,8 +701,7 @@ u32 drm_vblank_count_and_time(struct drm
>  	do {
>  		cur_vblank =3D atomic_read(&dev->_vblank_count[crtc]);
>  		*vblanktime =3D vblanktimestamp(dev, crtc, cur_vblank);
> -		rmb();
> -	} while (cur_vblank !=3D atomic_read(&dev->_vblank_count[crtc]));
> +	} while (cur_vblank !=3D atomic_read_acq(&dev->_vblank_count[crtc]));
> =20
>  	return cur_vblank;
>  }

The drm/drm2 is the contributed code, maintained outside the tree, and I
explicitely decided to keep the original approach. I will appreciate if
this would be left as it is.

--z3PcgjD2qOzdkXVS
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJQ3h4aAAoJEJDCuSvBvK1BTkUP/Rq6cHGYXC9alB9UWKMAT4yv
toLNOi6noDo2dAVbwS1Fu39PB/jnpiBjs07F+j2SEIS/W1MuxCDDrpRuPvORR6p8
xIctwYpTkf+A35b0uGV+WN35RqoNu+6C+ERJE3FoA9kppht/lCxL3zG7v7iLHgwT
bzvhokenFzWOPm2BhK+DENLfqGqLR7bCsyhMsrRxnyiEvSknztrxmcROASY5Krl7
F478Gjs0X/oQI8vS25YLCatDE4a6FKGIFSJbTzXJq9yY9dQMvC3d8FmewoeHR5FL
RLKUwpPD2Gmo2Bj686ZI5OzzF/RcgmTbkwJ38uF195nxMd1dwzFF/QPWjKL1rYR3
vDHaaCmBlshfeP4MVVOLggEU1Pl11Cf3HgjDAeWhA8/djMonuS8/3bEHtg+noz2a
s9G5xV8+k+Nh+Kac296Xi4NvKgBqZB3Q7N4Qw0yiXbiuCJGS9MZfJr1AIbwNepuG
3JOwEaI8KkgFe3XeaAVz2LS0/n93d+F39asEM6rqV43250sW6L/JXRPo7u5mF+UX
rtoACnWNpBw6v67Jiup28m63Fk56ayQf7T4JWA/zK9GycCK91Tf942ILaLj5hMnV
nir5diUhhNBNZ4whLl3Nka2QItAOqAUw4Vyi2h6Yhc+2qc/RMNoFxROaWtc1wsql
6EO9egzoHfq8S11V8LD+
=5JOY
-----END PGP SIGNATURE-----

--z3PcgjD2qOzdkXVS--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121228223259.GX82219>