From bfae5a8ac53e6d38e882d856000596f1da7df306 Mon Sep 17 00:00:00 2001 From: Maíra Canal Date: Tue, 28 Jul 2026 23:09:23 -0300 Subject: drm/v3d: Remove the now-redundant reset lock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `reset_lock` was taken by v3d_gpu_reset_for_timeout() to keep the timeout handlers of different queues from parking the schedulers and resetting the GPU at once. Now that all of the queues share an ordered workqueue for their timeout work, those handlers can no longer run concurrently and the lock guards nothing. Reviewed-by: Iago Toral Quiroga Signed-off-by: Maíra Canal Link: https://patch.msgid.link/20260728-v3d-order-global-reset-v1-2-e47be838158d@igalia.com --- drivers/gpu/drm/v3d/v3d_drv.h | 6 ------ drivers/gpu/drm/v3d/v3d_gem.c | 3 --- drivers/gpu/drm/v3d/v3d_sched.c | 4 ---- 3 files changed, 13 deletions(-) diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h index 29fa14be130b..79ef20c89ff2 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h @@ -200,12 +200,6 @@ struct v3d_dev { /* Protects bo_stats */ struct mutex bo_lock; - /* Lock taken when resetting the GPU, to keep multiple - * processes from trying to park the scheduler threads and - * reset at once. - */ - struct mutex reset_lock; - /* Ordered workqueue shared by every queue's scheduler timeout work. * V3D reset is global to all queues, so the timeout handlers must not * run concurrently. diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c index bc88ebdcdbea..532a92ab2fe7 100644 --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c @@ -322,9 +322,6 @@ v3d_gem_init(struct drm_device *dev) spin_lock_init(&v3d->mm_lock); spin_lock_init(&v3d->perfmon_state.lock); ret = drmm_mutex_init(dev, &v3d->bo_lock); - if (ret) - goto err_stats; - ret = drmm_mutex_init(dev, &v3d->reset_lock); if (ret) goto err_stats; ret = drmm_mutex_init(dev, &v3d->sched_lock); diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c index e6283a75bcdf..1924e3440dc9 100644 --- a/drivers/gpu/drm/v3d/v3d_sched.c +++ b/drivers/gpu/drm/v3d/v3d_sched.c @@ -689,8 +689,6 @@ v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job, struct v3d_job *job = to_v3d_job(sched_job); enum v3d_queue i; - mutex_lock(&v3d->reset_lock); - /* block scheduler */ for (i = 0; i < V3D_MAX_QUEUES; i++) drm_sched_stop(&v3d->queue[i].sched, sched_job); @@ -713,8 +711,6 @@ v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job, for (i = 0; i < V3D_MAX_QUEUES; i++) drm_sched_start(&v3d->queue[i].sched, 0); - mutex_unlock(&v3d->reset_lock); - return DRM_GPU_SCHED_STAT_RESET; } -- cgit v1.2.3