Scheduler takes care of its own locking, dont worry. For everything else
there's reservation locking on each bo.

So seems to be entirely redundnant and just a bit in the way.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Rob Herring <r...@kernel.org>
Cc: Tomeu Vizoso <tomeu.viz...@collabora.com>
Cc: Steven Price <steven.pr...@arm.com>
Cc: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com>
---
 drivers/gpu/drm/panfrost/panfrost_device.c |  1 -
 drivers/gpu/drm/panfrost/panfrost_device.h |  2 --
 drivers/gpu/drm/panfrost/panfrost_job.c    | 13 ++-----------
 3 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c 
b/drivers/gpu/drm/panfrost/panfrost_device.c
index 125ed973feaa..23070c01c63f 100644
--- a/drivers/gpu/drm/panfrost/panfrost_device.c
+++ b/drivers/gpu/drm/panfrost/panfrost_device.c
@@ -199,7 +199,6 @@ int panfrost_device_init(struct panfrost_device *pfdev)
        int err;
        struct resource *res;
 
-       mutex_init(&pfdev->sched_lock);
        INIT_LIST_HEAD(&pfdev->scheduled_jobs);
        INIT_LIST_HEAD(&pfdev->as_lru_list);
 
diff --git a/drivers/gpu/drm/panfrost/panfrost_device.h 
b/drivers/gpu/drm/panfrost/panfrost_device.h
index 597cf1459b0a..7519903bb031 100644
--- a/drivers/gpu/drm/panfrost/panfrost_device.h
+++ b/drivers/gpu/drm/panfrost/panfrost_device.h
@@ -105,8 +105,6 @@ struct panfrost_device {
 
        struct panfrost_perfcnt *perfcnt;
 
-       struct mutex sched_lock;
-
        struct {
                struct work_struct work;
                atomic_t pending;
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c 
b/drivers/gpu/drm/panfrost/panfrost_job.c
index 6003cfeb1322..f5d39ee14ab5 100644
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
@@ -218,26 +218,19 @@ static void panfrost_attach_object_fences(struct 
drm_gem_object **bos,
 
 int panfrost_job_push(struct panfrost_job *job)
 {
-       struct panfrost_device *pfdev = job->pfdev;
        int slot = panfrost_job_get_slot(job);
        struct drm_sched_entity *entity = &job->file_priv->sched_entity[slot];
        struct ww_acquire_ctx acquire_ctx;
        int ret = 0;
 
-       mutex_lock(&pfdev->sched_lock);
-
        ret = drm_gem_lock_reservations(job->bos, job->bo_count,
                                            &acquire_ctx);
-       if (ret) {
-               mutex_unlock(&pfdev->sched_lock);
+       if (ret)
                return ret;
-       }
 
        ret = drm_sched_job_init(&job->base, entity, NULL);
-       if (ret) {
-               mutex_unlock(&pfdev->sched_lock);
+       if (ret)
                goto unlock;
-       }
 
        job->render_done_fence = dma_fence_get(&job->base.s_fence->finished);
 
@@ -248,8 +241,6 @@ int panfrost_job_push(struct panfrost_job *job)
 
        drm_sched_entity_push_job(&job->base, entity);
 
-       mutex_unlock(&pfdev->sched_lock);
-
        panfrost_attach_object_fences(job->bos, job->bo_count,
                                      job->render_done_fence);
 
-- 
2.31.0

Reply via email to