From: Rob Clark Date: Sat, 7 Nov 2020 19:50:18 +0000 (-0800) Subject: freedreno/drm: Convert to simple_mtx X-Git-Tag: upstream/21.0.0~2755 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78b3f58c9985d14d11e580277cb5b2cf61234e21;p=platform%2Fupstream%2Fmesa.git freedreno/drm: Convert to simple_mtx Signed-off-by: Rob Clark Part-of: --- diff --git a/src/freedreno/drm/freedreno_bo.c b/src/freedreno/drm/freedreno_bo.c index 4310287..1ea514c 100644 --- a/src/freedreno/drm/freedreno_bo.c +++ b/src/freedreno/drm/freedreno_bo.c @@ -29,7 +29,7 @@ #include "freedreno_drmif.h" #include "freedreno_priv.h" -pthread_mutex_t table_lock = PTHREAD_MUTEX_INITIALIZER; +simple_mtx_t table_lock = _SIMPLE_MTX_INITIALIZER_NP; void bo_del(struct fd_bo *bo); /* set buffer name, and add to table, call w/ table_lock held: */ @@ -98,9 +98,9 @@ bo_new(struct fd_device *dev, uint32_t size, uint32_t flags, if (ret) return NULL; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); bo = bo_from_handle(dev, size, handle); - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); VG_BO_ALLOC(bo); @@ -145,7 +145,7 @@ fd_bo_from_handle(struct fd_device *dev, uint32_t handle, uint32_t size) { struct fd_bo *bo = NULL; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); bo = lookup_bo(dev->handle_table, handle); if (bo) @@ -156,7 +156,7 @@ fd_bo_from_handle(struct fd_device *dev, uint32_t handle, uint32_t size) VG_BO_ALLOC(bo); out_unlock: - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); return bo; } @@ -168,10 +168,10 @@ fd_bo_from_dmabuf(struct fd_device *dev, int fd) uint32_t handle; struct fd_bo *bo; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); ret = drmPrimeFDToHandle(dev->fd, fd, &handle); if (ret) { - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); return NULL; } @@ -188,7 +188,7 @@ fd_bo_from_dmabuf(struct fd_device *dev, int fd) VG_BO_ALLOC(bo); out_unlock: - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); return bo; } @@ -200,7 +200,7 @@ struct fd_bo * fd_bo_from_name(struct fd_device *dev, uint32_t name) }; struct fd_bo *bo; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); /* check name table first, to see if bo is already open: */ bo = lookup_bo(dev->name_table, name); @@ -223,7 +223,7 @@ struct fd_bo * fd_bo_from_name(struct fd_device *dev, uint32_t name) } out_unlock: - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); return bo; } @@ -254,7 +254,7 @@ void fd_bo_del(struct fd_bo *bo) if (!atomic_dec_and_test(&bo->refcnt)) return; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); if ((bo->bo_reuse == BO_CACHE) && (fd_bo_cache_free(&dev->bo_cache, bo) == 0)) goto out; @@ -264,7 +264,7 @@ void fd_bo_del(struct fd_bo *bo) bo_del(bo); out: - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); } /* Called under table_lock */ @@ -305,9 +305,9 @@ int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) return ret; } - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); set_name(bo, req.name); - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); bo->bo_reuse = NO_CACHE; } diff --git a/src/freedreno/drm/freedreno_bo_cache.c b/src/freedreno/drm/freedreno_bo_cache.c index b2587d6..6094c73 100644 --- a/src/freedreno/drm/freedreno_bo_cache.c +++ b/src/freedreno/drm/freedreno_bo_cache.c @@ -28,7 +28,7 @@ #include "freedreno_priv.h" void bo_del(struct fd_bo *bo); -extern pthread_mutex_t table_lock; +extern simple_mtx_t table_lock; static void add_bucket(struct fd_bo_cache *cache, int size) @@ -140,7 +140,7 @@ static struct fd_bo *find_in_bucket(struct fd_bo_bucket *bucket, uint32_t flags) * NOTE that intel takes ALLOC_FOR_RENDER bo's from the list tail * (MRU, since likely to be in GPU cache), rather than head (LRU).. */ - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); if (!list_is_empty(&bucket->list)) { bo = LIST_ENTRY(struct fd_bo, bucket->list.next, list); /* TODO check for compatible flags? */ @@ -150,7 +150,7 @@ static struct fd_bo *find_in_bucket(struct fd_bo_bucket *bucket, uint32_t flags) bo = NULL; } } - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); return bo; } @@ -174,9 +174,9 @@ retry: VG_BO_OBTAIN(bo); if (bo->funcs->madvise(bo, true) <= 0) { /* we've lost the backing pages, delete and try again: */ - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); bo_del(bo); - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); goto retry; } p_atomic_set(&bo->refcnt, 1); diff --git a/src/freedreno/drm/freedreno_device.c b/src/freedreno/drm/freedreno_device.c index a119c36..e64640c 100644 --- a/src/freedreno/drm/freedreno_device.c +++ b/src/freedreno/drm/freedreno_device.c @@ -33,7 +33,7 @@ #include "freedreno_drmif.h" #include "freedreno_priv.h" -static pthread_mutex_t table_lock = PTHREAD_MUTEX_INITIALIZER; +static simple_mtx_t table_lock = _SIMPLE_MTX_INITIALIZER_NP; struct fd_device * kgsl_device_new(int fd); struct fd_device * msm_device_new(int fd); @@ -130,9 +130,9 @@ void fd_device_del(struct fd_device *dev) { if (!atomic_dec_and_test(&dev->refcnt)) return; - pthread_mutex_lock(&table_lock); + simple_mtx_lock(&table_lock); fd_device_del_impl(dev); - pthread_mutex_unlock(&table_lock); + simple_mtx_unlock(&table_lock); } int fd_device_fd(struct fd_device *dev) diff --git a/src/freedreno/drm/freedreno_priv.h b/src/freedreno/drm/freedreno_priv.h index 32ab54f..3375614 100644 --- a/src/freedreno/drm/freedreno_priv.h +++ b/src/freedreno/drm/freedreno_priv.h @@ -35,13 +35,13 @@ #include #include #include -#include #include #include #include "util/hash_table.h" #include "util/list.h" +#include "util/simple_mtx.h" #include "util/u_debug.h" #include "util/u_atomic.h" #include "util/u_math.h"