Commit 94dd80fe authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/panfrost: Shrink sched_lock



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.

Reviewed-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Rob Herring <robh@kernel.org>
Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Cc: Steven Price <steven.price@arm.com>
Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210622165511.3169559-5-daniel.vetter@ffwll.ch
parent 2254e49c
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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) {