anv: anv_gem_mmap() returns MAP_FAILED as mapping error
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 3 May 2017 06:02:21 +0000 (08:02 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Thu, 4 May 2017 06:56:36 +0000 (08:56 +0200)
Take it into account when checking if the mapping failed.

v2:
- Remove map == NULL and its related comment (Emil)

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Fixes: 6f3e3c715a7 ("vk/allocator: Add a BO pool")
Fixes: 9919a2d34de ("anv/image: Memset hiz surfaces to 0 when binding memory")
Cc: "17.0 17.1" <mesa-stable@lists.freedesktop.org>
src/intel/vulkan/anv_allocator.c
src/intel/vulkan/anv_image.c

index 554ca4ac5fa63cc54cbc0fb0eeae87bf57af6f23..6ab2da5d64a6e073d683aff6b72a120a5bf3e6cd 100644 (file)
@@ -889,7 +889,7 @@ anv_bo_pool_alloc(struct anv_bo_pool *pool, struct anv_bo *bo, uint32_t size)
    assert(new_bo.size == pow2_size);
 
    new_bo.map = anv_gem_mmap(pool->device, new_bo.gem_handle, 0, pow2_size, 0);
-   if (new_bo.map == NULL) {
+   if (new_bo.map == MAP_FAILED) {
       anv_gem_close(pool->device, new_bo.gem_handle);
       return vk_error(VK_ERROR_MEMORY_MAP_FAILED);
    }
index 4874f2f3d383b295edc794c5073f496872290762..36f5d47e1a52d67b04c1f653ee709afb50155cb8 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <sys/mman.h>
 
 #include "anv_private.h"
 #include "util/debug.h"
@@ -363,11 +364,8 @@ VkResult anv_BindImageMemory(
                                image->aux_surface.isl.size,
                                device->info.has_llc ? 0 : I915_MMAP_WC);
 
-      /* If anv_gem_mmap returns NULL, it's likely that the kernel was
-       * not able to find space on the host to create a proper mapping.
-       */
-      if (map == NULL)
-         return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
+      if (map == MAP_FAILED)
+         return vk_error(VK_ERROR_MEMORY_MAP_FAILED);
 
       memset(map, 0, image->aux_surface.isl.size);