etnaviv: drm: rename etna_drm_table_lock

This lock is used to serialize much more than just the lookup tables. In
fact it's used for all device global state including the bo cache. Rename
it to better reflect its real usage.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14466>
This commit is contained in:
Lucas Stach 2022-01-06 21:56:14 +01:00 committed by Marge Bot
parent 6e181476c3
commit ce4e5198a3
4 changed files with 25 additions and 25 deletions

View File

@ -30,12 +30,12 @@
#include "etnaviv_priv.h"
#include "etnaviv_drmif.h"
simple_mtx_t etna_drm_table_lock = _SIMPLE_MTX_INITIALIZER_NP;
simple_mtx_t etna_device_lock = _SIMPLE_MTX_INITIALIZER_NP;
/* set buffer name, and add to table, call w/ etna_drm_table_lock held: */
static void set_name(struct etna_bo *bo, uint32_t name)
{
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
bo->name = name;
/* add ourself into the name table: */
@ -56,7 +56,7 @@ static void _etna_bo_free(struct etna_bo *bo)
DEBUG_BO("Del bo:", bo);
VG_BO_FREE(bo);
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
if (bo->va)
util_vma_heap_free(&bo->dev->address_space, bo->va, bo->size);
@ -81,7 +81,7 @@ static void _etna_bo_free(struct etna_bo *bo)
void etna_bo_kill_zombies(struct etna_device *dev)
{
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
list_for_each_entry_safe(struct etna_bo, bo, &dev->zombie_list, list) {
VG_BO_OBTAIN(bo);
@ -93,7 +93,7 @@ void etna_bo_kill_zombies(struct etna_device *dev)
static void etna_bo_cleanup_zombies(struct etna_device *dev)
{
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
list_for_each_entry_safe(struct etna_bo, bo, &dev->zombie_list, list) {
/* Stop once we reach a busy BO - all others past this point were
@ -130,7 +130,7 @@ static struct etna_bo *lookup_bo(void *tbl, uint32_t handle)
struct etna_bo *bo = NULL;
struct hash_entry *entry;
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
entry = _mesa_hash_table_search(tbl, &handle);
@ -155,7 +155,7 @@ static struct etna_bo *bo_from_handle(struct etna_device *dev,
{
struct etna_bo *bo = calloc(sizeof(*bo), 1);
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
if (!bo) {
struct drm_gem_close req = {
@ -202,10 +202,10 @@ struct etna_bo *etna_bo_new(struct etna_device *dev, uint32_t size,
if (ret)
return NULL;
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
bo = bo_from_handle(dev, size, req.handle, flags);
bo->reuse = 1;
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
DEBUG_BO("New bo:", bo);
VG_BO_ALLOC(bo);
@ -229,7 +229,7 @@ struct etna_bo *etna_bo_from_name(struct etna_device *dev,
.name = name,
};
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
/* check name table first, to see if bo is already open: */
bo = lookup_bo(dev->name_table, name);
@ -253,7 +253,7 @@ struct etna_bo *etna_bo_from_name(struct etna_device *dev,
}
out_unlock:
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
return bo;
}
@ -272,11 +272,11 @@ struct etna_bo *etna_bo_from_dmabuf(struct etna_device *dev, int fd)
* racing against etna_bo_del, which might invalidate the
* returned handle.
*/
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
ret = drmPrimeFDToHandle(dev->fd, fd, &handle);
if (ret) {
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
return NULL;
}
@ -294,7 +294,7 @@ struct etna_bo *etna_bo_from_dmabuf(struct etna_device *dev, int fd)
VG_BO_ALLOC(bo);
out_unlock:
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
return bo;
}
@ -307,7 +307,7 @@ void etna_bo_del(struct etna_bo *bo)
struct etna_device *dev = bo->dev;
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
/* Must test under table lock to avoid racing with the from_dmabuf/name
* paths, which rely on the BO refcount to be stable over the lookup, so
@ -322,7 +322,7 @@ void etna_bo_del(struct etna_bo *bo)
etna_bo_free(bo);
etna_device_del_locked(dev);
out:
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
}
/* get the global flink/DRI2 buffer name */
@ -339,9 +339,9 @@ int etna_bo_get_name(struct etna_bo *bo, uint32_t *name)
return ret;
}
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
set_name(bo, req.name);
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
bo->reuse = 0;
}

View File

@ -112,7 +112,7 @@ static struct etna_bo *find_in_bucket(struct etna_bo_bucket *bucket, uint32_t fl
{
struct etna_bo *bo = NULL, *tmp;
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
if (list_is_empty(&bucket->list))
goto out_unlock;
@ -136,7 +136,7 @@ static struct etna_bo *find_in_bucket(struct etna_bo_bucket *bucket, uint32_t fl
bo = NULL;
out_unlock:
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
return bo;
}
@ -173,7 +173,7 @@ int etna_bo_cache_free(struct etna_bo_cache *cache, struct etna_bo *bo)
{
struct etna_bo_bucket *bucket;
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
bucket = get_bucket(cache, bo->size);

View File

@ -122,7 +122,7 @@ static void etna_device_del_impl(struct etna_device *dev)
void etna_device_del_locked(struct etna_device *dev)
{
simple_mtx_assert_locked(&etna_drm_table_lock);
simple_mtx_assert_locked(&etna_device_lock);
if (!p_atomic_dec_zero(&dev->refcnt))
return;
@ -135,9 +135,9 @@ void etna_device_del(struct etna_device *dev)
if (!p_atomic_dec_zero(&dev->refcnt))
return;
simple_mtx_lock(&etna_drm_table_lock);
simple_mtx_lock(&etna_device_lock);
etna_device_del_impl(dev);
simple_mtx_unlock(&etna_drm_table_lock);
simple_mtx_unlock(&etna_device_lock);
}
int etna_device_fd(struct etna_device *dev)

View File

@ -51,7 +51,7 @@
#include "etnaviv_drmif.h"
#include "drm-uapi/etnaviv_drm.h"
extern simple_mtx_t etna_drm_table_lock;
extern simple_mtx_t etna_device_lock;
struct etna_bo_bucket {
uint32_t size;