iris: Fix lock/unlock mismatch for non-LLC coherent BO allocation.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 26 May 2019 19:58:42 +0000 (12:58 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 30 May 2019 02:40:15 +0000 (19:40 -0700)
The goto jumped over the mtx_lock, but proceeded to hit the mtx_unlock.
We can simply set the bucket to NULL and it will skip the cache without
goto, and without messing up locking.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/gallium/drivers/iris/iris_bufmgr.c

index 2d96057..d893510 100644 (file)
@@ -380,15 +380,12 @@ bo_alloc_internal(struct iris_bufmgr *bufmgr,
    if (flags & BO_ALLOC_ZEROED)
       zeroed = true;
 
-   if ((flags & BO_ALLOC_COHERENT) && !bufmgr->has_llc) {
-      bo_size = MAX2(ALIGN(size, page_size), page_size);
-      bucket = NULL;
-      goto skip_cache;
-   }
-
    /* Round the allocated size up to a power of two number of pages. */
    bucket = bucket_for_size(bufmgr, size);
 
+   if ((flags & BO_ALLOC_COHERENT) && !bufmgr->has_llc)
+      bucket = NULL;
+
    /* If we don't have caching at this size, don't actually round the
     * allocation up.
     */
@@ -444,7 +441,6 @@ retry:
          bo->gtt_offset = 0ull;
       }
    } else {
-skip_cache:
       bo = bo_calloc();
       if (!bo)
          goto err;