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]>
---
 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 72c5096c3b18..fbac929f711c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
@@ -41,7 +41,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);
 }
 
@@ -133,7 +133,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 203223fd0b54..bc9cee3fdf27 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -881,8 +881,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
@@ -998,7 +996,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;
 }
 
@@ -1381,7 +1378,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;
 }
 
@@ -1453,28 +1449,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.51.1

Reply via email to