drm/scheduler requires a lock between _init and _push_job, but the
reservation lock dance doesn't. So shrink the critical section a
notch.

v2: Lucas pointed out how this should really work, I got it all wrong
in v1.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Lucas Stach <l.st...@pengutronix.de>
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_job.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c 
b/drivers/gpu/drm/panfrost/panfrost_job.c
index 2df3e999a38d..38f8580c19f1 100644
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
@@ -224,14 +224,13 @@ int panfrost_job_push(struct panfrost_job *job)
        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;
-       }
+
+       mutex_lock(&pfdev->sched_lock);
 
        ret = drm_sched_job_init(&job->base, entity, NULL);
        if (ret) {
-- 
2.32.0.rc2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to