diff options
| author | Maíra Canal <mcanal@igalia.com> | 2026-07-28 23:09:23 -0300 |
|---|---|---|
| committer | Maíra Canal <mcanal@igalia.com> | 2026-09-14 11:38:00 -0300 |
| commit | bfae5a8ac53e6d38e882d856000596f1da7df306 (patch) | |
| tree | 7a6f1538e2d71abc7d1ea3bdba0030999cca3747 | |
| parent | 65221358b6a6ea5128accbaa6117565ab8e24aa1 (diff) | |
| download | linux-next-bfae5a8ac53e6d38e882d856000596f1da7df306.tar.gz linux-next-bfae5a8ac53e6d38e882d856000596f1da7df306.zip | |
drm/v3d: Remove the now-redundant reset lock
`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 <itoral@igalia.com>
Signed-off-by: Maíra Canal <mcanal@igalia.com>
Link: https://patch.msgid.link/20260728-v3d-order-global-reset-v1-2-e47be838158d@igalia.com
| -rw-r--r-- | drivers/gpu/drm/v3d/v3d_drv.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/v3d/v3d_gem.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/v3d/v3d_sched.c | 4 |
3 files changed, 0 insertions, 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 @@ -324,9 +324,6 @@ v3d_gem_init(struct drm_device *dev) 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); if (ret) goto err_stats; 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; } |
