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

Reply via email to