The bo list is immutable during command submission since the drm_exec
conversion so we can remove the mutex.

Signed-off-by: Tvrtko Ursulin <[email protected]>
Reviewed-by: Christian König <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c |  3 +--
 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h |  4 ----
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c      | 15 ++++-----------
 3 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
index 5ce3160ce55a..fa230d480ab0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
@@ -42,7 +42,7 @@ static void amdgpu_bo_list_free_rcu(struct rcu_head *rcu)
 {
        struct amdgpu_bo_list *list = container_of(rcu, struct amdgpu_bo_list,
                                                   rhead);
-       mutex_destroy(&list->bo_list_mutex);
+
        kvfree(list);
 }
 
@@ -134,7 +134,6 @@ int amdgpu_bo_list_create(struct amdgpu_device *adev, 
struct drm_file *filp,
 
        trace_amdgpu_cs_bo_status(list->num_entries, total_size);
 
-       mutex_init(&list->bo_list_mutex);
        *result = list;
        return 0;
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h
index 2b5e7c46a39d..1acf53f8b2f9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h
@@ -51,10 +51,6 @@ struct amdgpu_bo_list {
        unsigned first_userptr;
        unsigned num_entries;
 
-       /* Protect access during command submission.
-        */
-       struct mutex bo_list_mutex;
-
        struct amdgpu_bo_list_entry entries[] __counted_by(num_entries);
 };
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 6ada57abce9d..6845342b9e7e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -870,8 +870,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
                        return r;
        }
 
-       mutex_lock(&p->bo_list->bo_list_mutex);
-
        /* Get userptr backing pages. If pages are updated after registered
         * in amdgpu_gem_userptr_ioctl(), amdgpu_cs_list_validate() will do
         * amdgpu_ttm_backend_bind() to flush and invalidate new pages
@@ -988,7 +986,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
                amdgpu_hmm_range_free(e->range);
                e->range = NULL;
        }
-       mutex_unlock(&p->bo_list->bo_list_mutex);
        return r;
 }
 
@@ -1370,7 +1367,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
        amdgpu_vm_move_to_lru_tail(p->adev, &fpriv->vm);
 
        mutex_unlock(&p->adev->notifier_lock);
-       mutex_unlock(&p->bo_list->bo_list_mutex);
        return 0;
 }
 
@@ -1442,28 +1438,25 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, 
struct drm_file *filp)
 
        r = amdgpu_cs_patch_jobs(&parser);
        if (r)
-               goto error_backoff;
+               goto error_fini;
 
        r = amdgpu_cs_vm_handling(&parser);
        if (r)
-               goto error_backoff;
+               goto error_fini;
 
        r = amdgpu_cs_sync_rings(&parser);
        if (r)
-               goto error_backoff;
+               goto error_fini;
 
        trace_amdgpu_cs_ibs(&parser);
 
        r = amdgpu_cs_submit(&parser, data);
        if (r)
-               goto error_backoff;
+               goto error_fini;
 
        amdgpu_cs_parser_fini(&parser);
        return 0;
 
-error_backoff:
-       mutex_unlock(&parser.bo_list->bo_list_mutex);
-
 error_fini:
        amdgpu_cs_parser_fini(&parser);
        return r;
-- 
2.54.0

Reply via email to