`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.

Signed-off-by: Maíra Canal <[email protected]>
---
 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 8779a42c6508..7b73929e5bba 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
@@ -176,12 +176,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 23a0db9575a5..28ed9e847a8d 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
@@ -320,9 +320,6 @@ v3d_gem_init(struct drm_device *dev)
 
        spin_lock_init(&v3d->mm_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 63dd95b828c8..b0a112e65915 100644
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
@@ -700,8 +700,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);
@@ -722,8 +720,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;
 }
 

-- 
2.55.0

Reply via email to