[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libdrm: Changes to 'upstream-unstable'



 Android.mk                       |   63 +++++++
 CleanSpec.mk                     |    3 
 Makefile.am                      |   29 +--
 Makefile.sources                 |   32 +++
 configure.ac                     |  194 ++++++++++++----------
 exynos/Makefile.am               |    1 
 exynos/exynos_drm.c              |   37 ++--
 exynos/exynos_fimg2d.c           |   19 +-
 freedreno/Android.mk             |   30 +++
 freedreno/Makefile.am            |   27 ---
 freedreno/Makefile.sources       |   24 ++
 freedreno/freedreno_bo.c         |   77 +++++++-
 freedreno/freedreno_device.c     |   12 -
 freedreno/freedreno_drmif.h      |    2 
 freedreno/freedreno_pipe.c       |   15 +
 freedreno/freedreno_priv.h       |   10 -
 freedreno/freedreno_ringbuffer.c |   42 ++--
 freedreno/kgsl/kgsl_bo.c         |   10 -
 freedreno/kgsl/kgsl_device.c     |    4 
 freedreno/kgsl/kgsl_pipe.c       |    4 
 freedreno/kgsl/kgsl_ringbuffer.c |    8 
 freedreno/msm/msm_bo.c           |    4 
 freedreno/msm/msm_device.c       |    4 
 freedreno/msm/msm_pipe.c         |    4 
 freedreno/msm/msm_ringbuffer.c   |    4 
 include/Makefile.am              |    1 
 include/drm/Makefile.am          |   44 -----
 include/drm/i810_drm.h           |  281 --------------------------------
 include/drm/i830_drm.h           |  342 ---------------------------------------
 intel/Android.mk                 |   55 ++++++
 intel/Makefile.am                |   20 --
 intel/Makefile.sources           |   14 +
 intel/intel_bufmgr.c             |  107 +++++++-----
 intel/intel_bufmgr.h             |    5 
 intel/intel_bufmgr_fake.c        |   31 +--
 intel/intel_bufmgr_gem.c         |  339 +++++++++++++++++++++++++++++++++-----
 intel/intel_bufmgr_priv.h        |   12 +
 intel/intel_decode.c             |   19 +-
 intel/test_decode.c              |    9 -
 libdrm.h                         |   89 ++++++++++
 libkms/Android.mk                |   53 ++++++
 libkms/Makefile.am               |   25 +-
 libkms/Makefile.sources          |   23 ++
 libkms/api.c                     |    2 
 libkms/dumb.c                    |   13 -
 libkms/exynos.c                  |    5 
 libkms/intel.c                   |   11 -
 libkms/linux.c                   |   18 +-
 libkms/nouveau.c                 |   11 -
 libkms/radeon.c                  |   13 -
 libkms/vmwgfx.c                  |   11 -
 nouveau/Android.mk               |   30 +++
 nouveau/Makefile.am              |   14 -
 nouveau/Makefile.sources         |    9 +
 nouveau/abi16.c                  |    4 
 nouveau/bufctx.c                 |   10 -
 nouveau/nouveau.c                |   46 ++---
 nouveau/private.h                |    1 
 nouveau/pushbuf.c                |   20 +-
 omap/Makefile.am                 |    1 
 omap/omap_drm.c                  |   46 ++---
 radeon/Android.mk                |   30 +++
 radeon/Makefile.am               |   25 --
 radeon/Makefile.sources          |   19 ++
 radeon/r600_pci_ids.h            |    7 
 radeon/radeon_bo.c               |   46 ++---
 radeon/radeon_bo_gem.c           |   31 +--
 radeon/radeon_cs.c               |   50 ++---
 radeon/radeon_cs_gem.c           |    9 -
 radeon/radeon_cs_space.c         |   18 +-
 radeon/radeon_surface.c          |   25 +-
 tests/dristat.c                  |    4 
 tests/drmstat.c                  |    2 
 tests/modetest/Android.mk        |   14 +
 tests/modetest/Makefile.am       |    9 -
 tests/modetest/Makefile.sources  |    6 
 tests/modetest/buffers.c         |    2 
 tests/modetest/cursor.c          |    2 
 tests/modetest/modetest.c        |    4 
 tests/vbltest/vbltest.c          |    2 
 xf86atomic.h                     |    9 +
 xf86drm.c                        |    8 
 xf86drmMode.c                    |    2 
 83 files changed, 1514 insertions(+), 1203 deletions(-)

New commits:
commit 7068d987f4dc1260a948f2b4782c66d3d80e9978
Author: Rob Clark <robclark@freedesktop.org>
Date:   Sun Sep 28 14:53:34 2014 -0400

    configure.ac: bump version to 2.4.58 for release
    
    Signed-off-by: Rob Clark <robclark@freedesktop.org>

diff --git a/configure.ac b/configure.ac
index 39312ce..ee59b03 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 
 AC_PREREQ([2.63])
 AC_INIT([libdrm],
-        [2.4.57],
+        [2.4.58],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
         [libdrm])
 

commit 0599f2fd6aea0421a91d9297dcd454aa416dfbaa
Author: Rob Clark <robdclark@gmail.com>
Date:   Sun Sep 28 14:48:16 2014 -0400

    more compile fix
    
    Signed-off-by: Rob Clark <robdclark@gmail.com>

diff --git a/tests/dristat.c b/tests/dristat.c
index 900a3e6..4f2ee80 100644
--- a/tests/dristat.c
+++ b/tests/dristat.c
@@ -27,6 +27,10 @@
  * 
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>

commit c09dcbc736afb2e6a05d4cfc5c3d878ace43e2ba
Author: Rob Clark <robdclark@gmail.com>
Date:   Sun Sep 28 14:19:14 2014 -0400

    fix compile error on 32bit systems
    
    4c2766b (drm_mmap/drm_unmap) brought this error for every .c file that
    was not #including config.h:
    
      In file included from private.h:4:0,
                       from abi16.c:29:
      ../libdrm.h: In function 'drm_munmap':
      ../libdrm.h:81:4: error: size of unnamed array is negative
    
    Signed-off-by: Rob Clark <robdclark@gmail.com>

diff --git a/freedreno/freedreno_bo.c b/freedreno/freedreno_bo.c
index dacb34c..fe8f503 100644
--- a/freedreno/freedreno_bo.c
+++ b/freedreno/freedreno_bo.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "freedreno_drmif.h"
 #include "freedreno_priv.h"
 
diff --git a/freedreno/freedreno_device.c b/freedreno/freedreno_device.c
index 2d3aa33..09bc5e9 100644
--- a/freedreno/freedreno_device.c
+++ b/freedreno/freedreno_device.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/freedreno/freedreno_pipe.c b/freedreno/freedreno_pipe.c
index f55aaa4..54e957b 100644
--- a/freedreno/freedreno_pipe.c
+++ b/freedreno/freedreno_pipe.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "freedreno_drmif.h"
 #include "freedreno_priv.h"
 
diff --git a/freedreno/freedreno_ringbuffer.c b/freedreno/freedreno_ringbuffer.c
index def869f..c13dfe9 100644
--- a/freedreno/freedreno_ringbuffer.c
+++ b/freedreno/freedreno_ringbuffer.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <assert.h>
 
 #include "freedreno_drmif.h"
diff --git a/freedreno/kgsl/kgsl_bo.c b/freedreno/kgsl/kgsl_bo.c
index 4e492dd..fab3350 100644
--- a/freedreno/kgsl/kgsl_bo.c
+++ b/freedreno/kgsl/kgsl_bo.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "kgsl_priv.h"
 
 #include <linux/fb.h>
diff --git a/freedreno/kgsl/kgsl_device.c b/freedreno/kgsl/kgsl_device.c
index fb6d6d2..5f2dfea 100644
--- a/freedreno/kgsl/kgsl_device.c
+++ b/freedreno/kgsl/kgsl_device.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/freedreno/kgsl/kgsl_pipe.c b/freedreno/kgsl/kgsl_pipe.c
index 88d9505..1a795ba 100644
--- a/freedreno/kgsl/kgsl_pipe.c
+++ b/freedreno/kgsl/kgsl_pipe.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "kgsl_priv.h"
 
 
diff --git a/freedreno/kgsl/kgsl_ringbuffer.c b/freedreno/kgsl/kgsl_ringbuffer.c
index da99741..d1e8321 100644
--- a/freedreno/kgsl/kgsl_ringbuffer.c
+++ b/freedreno/kgsl/kgsl_ringbuffer.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <assert.h>
 
 #include "freedreno_ringbuffer.h"
diff --git a/freedreno/msm/msm_bo.c b/freedreno/msm/msm_bo.c
index 57d8725..0cac1c6 100644
--- a/freedreno/msm/msm_bo.c
+++ b/freedreno/msm/msm_bo.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "msm_priv.h"
 
 static int bo_allocate(struct msm_bo *msm_bo)
diff --git a/freedreno/msm/msm_device.c b/freedreno/msm/msm_device.c
index cadcc85..b9c5a3e 100644
--- a/freedreno/msm/msm_device.c
+++ b/freedreno/msm/msm_device.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/freedreno/msm/msm_pipe.c b/freedreno/msm/msm_pipe.c
index 5650503..6955f2c 100644
--- a/freedreno/msm/msm_pipe.c
+++ b/freedreno/msm/msm_pipe.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "msm_priv.h"
 
 
diff --git a/freedreno/msm/msm_ringbuffer.c b/freedreno/msm/msm_ringbuffer.c
index e4d9561..6a4043f 100644
--- a/freedreno/msm/msm_ringbuffer.c
+++ b/freedreno/msm/msm_ringbuffer.c
@@ -26,6 +26,10 @@
  *    Rob Clark <robclark@freedesktop.org>
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <assert.h>
 
 #include "freedreno_ringbuffer.h"
diff --git a/nouveau/abi16.c b/nouveau/abi16.c
index f34175e..ae13821 100644
--- a/nouveau/abi16.c
+++ b/nouveau/abi16.c
@@ -22,6 +22,10 @@
  * Authors: Ben Skeggs
  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <stdlib.h>
 #include <stdint.h>
 #include <stddef.h>

commit a6cddb34105d6d0e488e847028c57db0335e8e85
Author: Rob Clark <robclark@freedesktop.org>
Date:   Sun Sep 28 12:25:21 2014 -0400

    configure.ac: bump version to 2.4.57 for release
    
    Signed-off-by: Rob Clark <robclark@freedesktop.org>

diff --git a/configure.ac b/configure.ac
index f1d3451..39312ce 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 
 AC_PREREQ([2.63])
 AC_INIT([libdrm],
-        [2.4.56],
+        [2.4.57],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
         [libdrm])
 

commit 537b1ca8d53f985a2c3f1c20d0671d5e8be94fd0
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:47:06 2014 +0100

    intel: use drm_mmap/drm_munmap wrappers
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index ba65527..ee69cf8 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -48,7 +48,6 @@
 #include <assert.h>
 #include <pthread.h>
 #include <sys/ioctl.h>
-#include <sys/mman.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <stdbool.h>
@@ -1051,11 +1050,11 @@ drm_intel_gem_bo_free(drm_intel_bo *bo)
 	DRMLISTDEL(&bo_gem->vma_list);
 	if (bo_gem->mem_virtual) {
 		VG(VALGRIND_FREELIKE_BLOCK(bo_gem->mem_virtual, 0));
-		munmap(bo_gem->mem_virtual, bo_gem->bo.size);
+		drm_munmap(bo_gem->mem_virtual, bo_gem->bo.size);
 		bufmgr_gem->vma_count--;
 	}
 	if (bo_gem->gtt_virtual) {
-		munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
+		drm_munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
 		bufmgr_gem->vma_count--;
 	}
 
@@ -1140,12 +1139,12 @@ static void drm_intel_gem_bo_purge_vma_cache(drm_intel_bufmgr_gem *bufmgr_gem)
 		DRMLISTDELINIT(&bo_gem->vma_list);
 
 		if (bo_gem->mem_virtual) {
-			munmap(bo_gem->mem_virtual, bo_gem->bo.size);
+			drm_munmap(bo_gem->mem_virtual, bo_gem->bo.size);
 			bo_gem->mem_virtual = NULL;
 			bufmgr_gem->vma_count--;
 		}
 		if (bo_gem->gtt_virtual) {
-			munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
+			drm_munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
 			bo_gem->gtt_virtual = NULL;
 			bufmgr_gem->vma_count--;
 		}
@@ -1381,9 +1380,9 @@ map_gtt(drm_intel_bo *bo)
 		}
 
 		/* and mmap it */
-		bo_gem->gtt_virtual = mmap(0, bo->size, PROT_READ | PROT_WRITE,
-					   MAP_SHARED, bufmgr_gem->fd,
-					   mmap_arg.offset);
+		bo_gem->gtt_virtual = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE,
+					       MAP_SHARED, bufmgr_gem->fd,
+					       mmap_arg.offset);
 		if (bo_gem->gtt_virtual == MAP_FAILED) {
 			bo_gem->gtt_virtual = NULL;
 			ret = -errno;
diff --git a/intel/test_decode.c b/intel/test_decode.c
index bef9d99..d7025f0 100644
--- a/intel/test_decode.c
+++ b/intel/test_decode.c
@@ -32,9 +32,9 @@
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <sys/mman.h>
 #include <err.h>
 
+#include "libdrm.h"
 #include "intel_bufmgr.h"
 #include "intel_chipset.h"
 
@@ -64,7 +64,7 @@ read_file(const char *filename, void **ptr, size_t *size)
 		errx(1, "couldn't stat `%s'", filename);
 
 	*size = st.st_size;
-	*ptr = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
+	*ptr = drm_mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
 	if (*ptr == MAP_FAILED)
 		errx(1, "couldn't map `%s'", filename);
 

commit 84badffe5e1995eae6739267bdc3fd9ef7a55f32
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:44:48 2014 +0100

    freedreno: use drm_mmap/drm_munmap wrappers
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/freedreno/freedreno_bo.c b/freedreno/freedreno_bo.c
index b90fc56..dacb34c 100644
--- a/freedreno/freedreno_bo.c
+++ b/freedreno/freedreno_bo.c
@@ -312,7 +312,7 @@ out:
 static void bo_del(struct fd_bo *bo)
 {
 	if (bo->map)
-		munmap(bo->map, bo->size);
+		drm_munmap(bo->map, bo->size);
 
 	/* TODO probably bo's in bucket list get removed from
 	 * handle table??
@@ -394,7 +394,7 @@ drm_public void * fd_bo_map(struct fd_bo *bo)
 			return NULL;
 		}
 
-		bo->map = mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED,
+		bo->map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED,
 				bo->dev->fd, offset);
 		if (bo->map == MAP_FAILED) {
 			ERROR_MSG("mmap failed: %s", strerror(errno));
diff --git a/freedreno/freedreno_priv.h b/freedreno/freedreno_priv.h
index b204e53..8e072d9 100644
--- a/freedreno/freedreno_priv.h
+++ b/freedreno/freedreno_priv.h
@@ -40,7 +40,6 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
-#include <sys/mman.h>
 #include <pthread.h>
 #include <stdio.h>
 #include <assert.h>
diff --git a/freedreno/kgsl/kgsl_bo.c b/freedreno/kgsl/kgsl_bo.c
index c868097..4e492dd 100644
--- a/freedreno/kgsl/kgsl_bo.c
+++ b/freedreno/kgsl/kgsl_bo.c
@@ -186,7 +186,7 @@ fd_bo_from_fbdev(struct fd_pipe *pipe, int fbfd, uint32_t size)
 	 * thinks the buffer hasn't be allocate and fails
 	 */
 	if (bo) {
-		void *fbmem = mmap(NULL, size, PROT_READ | PROT_WRITE,
+		void *fbmem = drm_mmap(NULL, size, PROT_READ | PROT_WRITE,
 				MAP_SHARED, fbfd, 0);
 		struct kgsl_map_user_mem req = {
 				.memtype = KGSL_USER_MEM_TYPE_ADDR,
diff --git a/freedreno/kgsl/kgsl_ringbuffer.c b/freedreno/kgsl/kgsl_ringbuffer.c
index dc3c9c2..da99741 100644
--- a/freedreno/kgsl/kgsl_ringbuffer.c
+++ b/freedreno/kgsl/kgsl_ringbuffer.c
@@ -60,7 +60,7 @@ static void kgsl_rb_bo_del(struct kgsl_rb_bo *bo)
 	};
 	int ret;
 
-	munmap(bo->hostptr, bo->size);
+	drm_munmap(bo->hostptr, bo->size);
 
 	ret = ioctl(bo->pipe->fd, IOCTL_KGSL_SHAREDMEM_FREE, &req);
 	if (ret) {
@@ -93,7 +93,7 @@ static struct kgsl_rb_bo * kgsl_rb_bo_new(struct kgsl_pipe *pipe, uint32_t size)
 	bo->pipe = pipe;
 	bo->gpuaddr = req.gpuaddr;
 	bo->size = size;
-	bo->hostptr = mmap(NULL, size, PROT_WRITE|PROT_READ,
+	bo->hostptr = drm_mmap(NULL, size, PROT_WRITE|PROT_READ,
 				MAP_SHARED, pipe->fd, req.gpuaddr);
 
 	return bo;

commit 6281cf1b4310ff0b7670677cb4113a89ebf0b619
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:43:53 2014 +0100

    radeon: use drm_mmap/drm_munmap wrappers
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/radeon/radeon_bo_gem.c b/radeon/radeon_bo_gem.c
index 251ec1b..e78303a 100644
--- a/radeon/radeon_bo_gem.c
+++ b/radeon/radeon_bo_gem.c
@@ -36,7 +36,6 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/mman.h>
 #include <errno.h>
 #include "libdrm.h"
 #include "xf86drm.h"
@@ -135,7 +134,7 @@ static struct radeon_bo *bo_unref(struct radeon_bo_int *boi)
         return (struct radeon_bo *)boi;
     }
     if (bo_gem->priv_ptr) {
-        munmap(bo_gem->priv_ptr, boi->size);
+        drm_munmap(bo_gem->priv_ptr, boi->size);
     }
 
     /* Zero out args to make valgrind happy */
@@ -179,7 +178,7 @@ static int bo_map(struct radeon_bo_int *boi, int write)
                 boi, boi->handle, r);
         return r;
     }
-    ptr = mmap(0, args.size, PROT_READ|PROT_WRITE, MAP_SHARED, boi->bom->fd, args.addr_ptr);
+    ptr = drm_mmap(0, args.size, PROT_READ|PROT_WRITE, MAP_SHARED, boi->bom->fd, args.addr_ptr);
     if (ptr == MAP_FAILED)
         return -errno;
     bo_gem->priv_ptr = ptr;
@@ -198,7 +197,7 @@ static int bo_unmap(struct radeon_bo_int *boi)
     if (--bo_gem->map_count > 0) {
         return 0;
     }
-    //munmap(bo->ptr, bo->size);
+    //drm_munmap(bo->ptr, bo->size);
     boi->ptr = NULL;
     return 0;
 }
diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c
index 2020e1a..705ee05 100644
--- a/radeon/radeon_cs_gem.c
+++ b/radeon/radeon_cs_gem.c
@@ -37,7 +37,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "radeon_cs.h"
 #include "radeon_cs_int.h"
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index 40a544a..0723425 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -35,7 +35,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "drm.h"
 #include "libdrm.h"

commit c98c54f8434e2d38353bbf65b538bfcbf709409b
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:42:08 2014 +0100

    nouveau: use drm_mmap/drm_munmap wrappers
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c
index 43f0d3c..da49e17 100644
--- a/nouveau/nouveau.c
+++ b/nouveau/nouveau.c
@@ -33,11 +33,11 @@
 #include <stdbool.h>
 #include <assert.h>
 #include <errno.h>
-#include <sys/mman.h>
 #include <fcntl.h>
 
 #include <xf86drm.h>
 #include <xf86atomic.h>
+#include "libdrm.h"
 #include "libdrm_lists.h"
 #include "nouveau_drm.h"
 
@@ -381,7 +381,7 @@ nouveau_bo_del(struct nouveau_bo *bo)
 		drmIoctl(bo->device->fd, DRM_IOCTL_GEM_CLOSE, &req);
 	}
 	if (bo->map)
-		munmap(bo->map, bo->size);
+		drm_munmap(bo->map, bo->size);
 	free(nvbo);
 }
 
@@ -607,7 +607,7 @@ nouveau_bo_map(struct nouveau_bo *bo, uint32_t access,
 {
 	struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
 	if (bo->map == NULL) {
-		bo->map = mmap(0, bo->size, PROT_READ | PROT_WRITE,
+		bo->map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE,
 			       MAP_SHARED, bo->device->fd, nvbo->map_handle);
 		if (bo->map == MAP_FAILED) {
 			bo->map = NULL;

commit dadc9eff9fd606335a7b3d5d58065a2e8d629672
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:41:37 2014 +0100

    libkms: use drm_mmap/drm_munmap wrappers
    
    ... for all by exynos.
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/libkms/dumb.c b/libkms/dumb.c
index 5702543..f9c16e1 100644
--- a/libkms/dumb.c
+++ b/libkms/dumb.c
@@ -36,11 +36,9 @@
 #include <string.h>
 #include "internal.h"
 
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "xf86drm.h"
-
-#include "i915_drm.h"
+#include "libdrm.h"
 
 struct dumb_bo
 {
@@ -149,7 +147,7 @@ dumb_bo_map(struct kms_bo *_bo, void **out)
 	if (ret)
 		return ret;
 
-	map = mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, arg.offset);
+	map = drm_mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, arg.offset);
 	if (map == MAP_FAILED)
 		return -errno;
 
@@ -177,7 +175,7 @@ dumb_bo_destroy(struct kms_bo *_bo)
 
 	if (bo->base.ptr) {
 		/* XXX Sanity check map_count */
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 
diff --git a/libkms/intel.c b/libkms/intel.c
index b006ea4..51a7fd2 100644
--- a/libkms/intel.c
+++ b/libkms/intel.c
@@ -36,9 +36,9 @@
 #include <string.h>
 #include "internal.h"
 
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "xf86drm.h"
+#include "libdrm.h"
 
 #include "i915_drm.h"
 
@@ -173,7 +173,7 @@ intel_bo_map(struct kms_bo *_bo, void **out)
 	if (ret)
 		return ret;
 
-	map = mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, arg.offset);
+	map = drm_mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, arg.offset);
 	if (map == MAP_FAILED)
 		return -errno;
 
@@ -201,7 +201,7 @@ intel_bo_destroy(struct kms_bo *_bo)
 
 	if (bo->base.ptr) {
 		/* XXX Sanity check map_count */
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 
diff --git a/libkms/nouveau.c b/libkms/nouveau.c
index 15c012e..228903f 100644
--- a/libkms/nouveau.c
+++ b/libkms/nouveau.c
@@ -36,9 +36,9 @@
 #include <string.h>
 #include "internal.h"
 
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "xf86drm.h"
+#include "libdrm.h"
 
 #include "nouveau_drm.h"
 
@@ -155,7 +155,7 @@ nouveau_bo_map(struct kms_bo *_bo, void **out)
 		return 0;
 	}
 
-	map = mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, bo->map_handle);
+	map = drm_mmap(0, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, bo->map_handle);
 	if (map == MAP_FAILED)
 		return -errno;
 
@@ -183,7 +183,7 @@ nouveau_bo_destroy(struct kms_bo *_bo)
 
 	if (bo->base.ptr) {
 		/* XXX Sanity check map_count */
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 
diff --git a/libkms/radeon.c b/libkms/radeon.c
index 938321b..9383a0a 100644
--- a/libkms/radeon.c
+++ b/libkms/radeon.c
@@ -36,9 +36,9 @@
 #include <string.h>
 #include "internal.h"
 
-#include <sys/mman.h>
 #include <sys/ioctl.h>
 #include "xf86drm.h"
+#include "libdrm.h"
 
 #include "radeon_drm.h"
 
@@ -172,7 +172,7 @@ radeon_bo_map(struct kms_bo *_bo, void **out)
 	if (ret)
 		return -errno;
 
-	map = mmap(0, arg.size, PROT_READ | PROT_WRITE, MAP_SHARED,
+	map = drm_mmap(0, arg.size, PROT_READ | PROT_WRITE, MAP_SHARED,
 	           bo->base.kms->fd, arg.addr_ptr);
 	if (map == MAP_FAILED)
 		return -errno;
@@ -189,7 +189,7 @@ radeon_bo_unmap(struct kms_bo *_bo)
 {
 	struct radeon_bo *bo = (struct radeon_bo *)_bo;
 	if (--bo->map_count == 0) {
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 	return 0;
@@ -204,7 +204,7 @@ radeon_bo_destroy(struct kms_bo *_bo)
 
 	if (bo->base.ptr) {
 		/* XXX Sanity check map_count */
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 
diff --git a/libkms/vmwgfx.c b/libkms/vmwgfx.c
index 08163a1..bc04133 100644
--- a/libkms/vmwgfx.c
+++ b/libkms/vmwgfx.c
@@ -35,8 +35,8 @@
 #include <string.h>
 #include "internal.h"
 
-#include <sys/mman.h>
 #include "xf86drm.h"
+#include "libdrm.h"
 #include "vmwgfx_drm.h"
 
 struct vmwgfx_bo
@@ -146,7 +146,7 @@ vmwgfx_bo_map(struct kms_bo *_bo, void **out)
 		return 0;
 	}
 
-	map = mmap(NULL, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, bo->map_handle);
+	map = drm_mmap(NULL, bo->base.size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->base.kms->fd, bo->map_handle);
 	if (map == MAP_FAILED)
 		return -errno;
 
@@ -173,7 +173,7 @@ vmwgfx_bo_destroy(struct kms_bo *_bo)
 
 	if (bo->base.ptr) {
 		/* XXX Sanity check map_count */
-		munmap(bo->base.ptr, bo->base.size);
+		drm_munmap(bo->base.ptr, bo->base.size);
 		bo->base.ptr = NULL;
 	}
 

commit faf51d5694e3f0ec12c7fa1fd2f87fc96a300fe3
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 20:03:05 2014 +0100

    drm: use drm_mmap/drm_munmap wrappers
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/xf86drm.c b/xf86drm.c
index 85beb8c..d900b4b 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -48,7 +48,6 @@
 #include <sys/stat.h>
 #define stat_t struct stat
 #include <sys/ioctl.h>
-#include <sys/mman.h>
 #include <sys/time.h>
 #include <stdarg.h>
 
@@ -58,6 +57,7 @@
 #endif
 
 #include "xf86drm.h"
+#include "libdrm.h"
 
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
 #define DRM_MAJOR 145
@@ -1137,7 +1137,7 @@ int drmMap(int fd, drm_handle_t handle, drmSize size, drmAddressPtr address)
 
     size = (size + pagesize_mask) & ~pagesize_mask;
 
-    *address = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
+    *address = drm_mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
     if (*address == MAP_FAILED)
 	return -errno;
     return 0;
@@ -1157,7 +1157,7 @@ int drmMap(int fd, drm_handle_t handle, drmSize size, drmAddressPtr address)
  */
 int drmUnmap(drmAddress address, drmSize size)
 {
-    return munmap(address, size);
+    return drm_munmap(address, size);
 }
 
 drmBufInfoPtr drmGetBufInfo(int fd)
@@ -1264,7 +1264,7 @@ int drmUnmapBufs(drmBufMapPtr bufs)
     int i;
 
     for (i = 0; i < bufs->count; i++) {
-	munmap(bufs->list[i].address, bufs->list[i].total);
+	drm_munmap(bufs->list[i].address, bufs->list[i].total);
     }
 
     drmFree(bufs->list);

commit 4c2766b69c261703c62131b5e4200d0e164b5eb4
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 19:29:00 2014 +0100

    Add private mmap/munmap wrappers
    
    Unlike Linux, Android (bionic) has separate functions - mmap & mmap64.
    Add a local wrapper (inspired by gallium) that will be used throughout
    libdrm to combat this bionic feature.
    
    v2:
     - Drop the undefined unlikely macro.
     - Use macro for munmap under Android.
     - Wrap long lines.
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com> (v1)

diff --git a/libdrm.h b/libdrm.h
index 23926e6..acfada5 100644
--- a/libdrm.h
+++ b/libdrm.h
@@ -31,4 +31,59 @@
 #  define drm_public
 #endif
 
+
+/**
+ * Static (compile-time) assertion.
+ * Basically, use COND to dimension an array.  If COND is false/zero the
+ * array size will be -1 and we'll get a compilation error.
+ */
+#define STATIC_ASSERT(COND) \
+   do { \
+      (void) sizeof(char [1 - 2*!(COND)]); \
+   } while (0)
+
+
+#include <sys/mman.h>
+
+#if defined(ANDROID)
+#include <errno.h> /* for EINVAL */
+
+extern void *__mmap2(void *, size_t, int, int, int, size_t);
+
+static inline void *drm_mmap(void *addr, size_t length, int prot, int flags,
+                             int fd, loff_t offset)
+{
+   /* offset must be aligned to 4096 (not necessarily the page size) */
+   if (offset & 4095) {
+      errno = EINVAL;
+      return MAP_FAILED;
+   }
+
+   return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
+}
+
+#  define drm_munmap(addr, length) \
+              munmap(addr, length)
+
+
+#else
+
+/* assume large file support exists */
+#  define drm_mmap(addr, length, prot, flags, fd, offset) \
+              mmap(addr, length, prot, flags, fd, offset)
+
+
+static inline int drm_munmap(void *addr, size_t length)
+{
+   /* Copied from configure code generated by AC_SYS_LARGEFILE */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + \
+                     (((off_t) 1 << 31) << 31))
+   STATIC_ASSERT(LARGE_OFF_T % 2147483629 == 721 &&
+                 LARGE_OFF_T % 2147483647 == 1);
+#undef LARGE_OFF_T
+
+   return munmap(addr, length);
+}
+#endif
+
 #endif

commit 268dce4192125ceb6a65f1c8d885e4b656310578
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Sep 7 15:48:48 2014 +0100

    automake: pick up all files for distribution.
    
    Autotools is already smart enough to pick the *.pc.in files but it
    needs some help with the Android.mk ones.
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>

diff --git a/Makefile.am b/Makefile.am
index 884841f..3952a88 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -69,7 +69,7 @@ libdrm_la_SOURCES = $(LIBDRM_FILES)
 libdrmincludedir = ${includedir}
 libdrminclude_HEADERS = $(LIBDRM_H_FILES)
 
-EXTRA_DIST = libdrm.pc.in
+EXTRA_DIST = Android.mk


Reply to: