Mesa (staging/20.0): iris: fix aux buf map failure in 32bits app on Android

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 13 19:01:46 UTC 2020


Module: Mesa
Branch: staging/20.0
Commit: 1c0b76a3826185f9d0572eea1fec8464b0516b4e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c0b76a3826185f9d0572eea1fec8464b0516b4e

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Wed Feb 12 08:45:47 2020 +0200

iris: fix aux buf map failure in 32bits app on Android

Cc: mesa-stable at lists.freedesktop.org
Reported-by: Zhifang Long <zhifang.long at intel.com>
Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3784>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3784>
(cherry picked from commit fdd20be324eabab7da1ba67cf7e379398d771186)

---

 .pick_status.json                      |  2 +-
 src/gallium/drivers/iris/iris_bufmgr.c | 17 +++++++++--------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 083d493f663..be815567586 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -112,7 +112,7 @@
         "description": "iris: fix aux buf map failure in 32bits app on Android",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": null
     },
diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c
index d0e641b2068..b0259e7d607 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.c
+++ b/src/gallium/drivers/iris/iris_bufmgr.c
@@ -57,6 +57,7 @@
 #include "common/gen_gem.h"
 #include "dev/gen_device_info.h"
 #include "main/macros.h"
+#include "os/os_mman.h"
 #include "util/debug.h"
 #include "util/macros.h"
 #include "util/hash_table.h"
@@ -750,15 +751,15 @@ bo_free(struct iris_bo *bo)
 
    if (bo->map_cpu && !bo->userptr) {
       VG_NOACCESS(bo->map_cpu, bo->size);
-      munmap(bo->map_cpu, bo->size);
+      os_munmap(bo->map_cpu, bo->size);
    }
    if (bo->map_wc) {
       VG_NOACCESS(bo->map_wc, bo->size);
-      munmap(bo->map_wc, bo->size);
+      os_munmap(bo->map_wc, bo->size);
    }
    if (bo->map_gtt) {
       VG_NOACCESS(bo->map_gtt, bo->size);
-      munmap(bo->map_gtt, bo->size);
+      os_munmap(bo->map_gtt, bo->size);
    }
 
    if (bo->idle) {
@@ -921,7 +922,7 @@ iris_bo_map_cpu(struct pipe_debug_callback *dbg,
 
       if (p_atomic_cmpxchg(&bo->map_cpu, NULL, map)) {
          VG_NOACCESS(map, bo->size);
-         munmap(map, bo->size);
+         os_munmap(map, bo->size);
       }
    }
    assert(bo->map_cpu);
@@ -983,7 +984,7 @@ iris_bo_map_wc(struct pipe_debug_callback *dbg,
 
       if (p_atomic_cmpxchg(&bo->map_wc, NULL, map)) {
          VG_NOACCESS(map, bo->size);
-         munmap(map, bo->size);
+         os_munmap(map, bo->size);
       }
    }
    assert(bo->map_wc);
@@ -1041,8 +1042,8 @@ iris_bo_map_gtt(struct pipe_debug_callback *dbg,
       }
 
       /* and mmap it. */
-      void *map = mmap(0, bo->size, PROT_READ | PROT_WRITE,
-                       MAP_SHARED, bufmgr->fd, mmap_arg.offset);
+      void *map = os_mmap(0, bo->size, PROT_READ | PROT_WRITE,
+                          MAP_SHARED, bufmgr->fd, mmap_arg.offset);
       if (map == MAP_FAILED) {
          DBG("%s:%d: Error mapping buffer %d (%s): %s .\n",
              __FILE__, __LINE__, bo->gem_handle, bo->name, strerror(errno));
@@ -1058,7 +1059,7 @@ iris_bo_map_gtt(struct pipe_debug_callback *dbg,
 
       if (p_atomic_cmpxchg(&bo->map_gtt, NULL, map)) {
          VG_NOACCESS(map, bo->size);
-         munmap(map, bo->size);
+         os_munmap(map, bo->size);
       }
    }
    assert(bo->map_gtt);



More information about the mesa-commit mailing list