Module: Mesa Branch: master Commit: 37226269d375d3ec4d48a20c019ea9b4667f79a3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=37226269d375d3ec4d48a20c019ea9b4667f79a3
Author: Christian Gmeiner <[email protected]> Date: Mon Nov 30 09:55:39 2020 +0100 etnaviv/drm: add some locking asserts Signed-off-by: Christian Gmeiner <[email protected]> Reviewed-by: Lucas Stach <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7832> --- src/etnaviv/drm/etnaviv_bo.c | 12 +++++++++++- src/etnaviv/drm/etnaviv_bo_cache.c | 6 +++++- src/etnaviv/drm/etnaviv_cmd_stream.c | 2 ++ src/etnaviv/drm/etnaviv_device.c | 2 ++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/etnaviv/drm/etnaviv_bo.c b/src/etnaviv/drm/etnaviv_bo.c index 8c258f2b565..86c0e9afb4f 100644 --- a/src/etnaviv/drm/etnaviv_bo.c +++ b/src/etnaviv/drm/etnaviv_bo.c @@ -36,6 +36,8 @@ void _etna_bo_del(struct etna_bo *bo); /* 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); + bo->name = name; /* add ourself into the name table: */ _mesa_hash_table_insert(bo->dev->name_table, &bo->name, bo); @@ -46,6 +48,8 @@ void _etna_bo_del(struct etna_bo *bo) { VG_BO_FREE(bo); + simple_mtx_assert_locked(&etna_drm_table_lock); + if (bo->va) util_vma_heap_free(&bo->dev->address_space, bo->va, bo->size); @@ -71,7 +75,11 @@ void _etna_bo_del(struct etna_bo *bo) static struct etna_bo *lookup_bo(void *tbl, uint32_t handle) { struct etna_bo *bo = NULL; - struct hash_entry *entry = _mesa_hash_table_search(tbl, &handle); + struct hash_entry *entry; + + simple_mtx_assert_locked(&etna_drm_table_lock); + + entry = _mesa_hash_table_search(tbl, &handle); if (entry) { /* found, incr refcnt and return: */ @@ -90,6 +98,8 @@ 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); + if (!bo) { struct drm_gem_close req = { .handle = handle, diff --git a/src/etnaviv/drm/etnaviv_bo_cache.c b/src/etnaviv/drm/etnaviv_bo_cache.c index e99cf46399d..91fb17383c4 100644 --- a/src/etnaviv/drm/etnaviv_bo_cache.c +++ b/src/etnaviv/drm/etnaviv_bo_cache.c @@ -181,7 +181,11 @@ struct etna_bo *etna_bo_cache_alloc(struct etna_bo_cache *cache, uint32_t *size, int etna_bo_cache_free(struct etna_bo_cache *cache, struct etna_bo *bo) { - struct etna_bo_bucket *bucket = get_bucket(cache, bo->size); + struct etna_bo_bucket *bucket; + + simple_mtx_assert_locked(&etna_drm_table_lock); + + bucket = get_bucket(cache, bo->size); /* see if we can be green and recycle: */ if (bucket) { diff --git a/src/etnaviv/drm/etnaviv_cmd_stream.c b/src/etnaviv/drm/etnaviv_cmd_stream.c index 5555efb3e7e..0ddf47239c5 100644 --- a/src/etnaviv/drm/etnaviv_cmd_stream.c +++ b/src/etnaviv/drm/etnaviv_cmd_stream.c @@ -154,6 +154,8 @@ static uint32_t append_bo(struct etna_cmd_stream *stream, struct etna_bo *bo) struct etna_cmd_stream_priv *priv = etna_cmd_stream_priv(stream); uint32_t idx; + simple_mtx_assert_locked(&idx_lock); + idx = APPEND(&priv->submit, bos); idx = APPEND(priv, bos); diff --git a/src/etnaviv/drm/etnaviv_device.c b/src/etnaviv/drm/etnaviv_device.c index 2f2f9211467..87a3e36faf1 100644 --- a/src/etnaviv/drm/etnaviv_device.c +++ b/src/etnaviv/drm/etnaviv_device.c @@ -98,6 +98,8 @@ 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); + if (!p_atomic_dec_zero(&dev->refcnt)) return; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
