Skip to content

Commit 86a9fe8

Browse files
LuizOt31rodrigovivi
authored andcommitted
drm/i915: Move struct_mutex to drm_i915_private
Move legacy BKL struct_mutex from drm_device to drm_i915_private, which is the last remaining user. Signed-off-by: Luiz Otavio Mello <luiz.mello@estudante.ufscar.br> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://lore.kernel.org/r/20250908131518.36625-2-luiz.mello@estudante.ufscar.br Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent f985e10 commit 86a9fe8

File tree

6 files changed

+17
-16
lines changed

6 files changed

+17
-16
lines changed

drivers/gpu/drm/drm_drv.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,6 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
697697
mutex_destroy(&dev->master_mutex);
698698
mutex_destroy(&dev->clientlist_mutex);
699699
mutex_destroy(&dev->filelist_mutex);
700-
mutex_destroy(&dev->struct_mutex);
701700
}
702701

703702
static int drm_dev_init(struct drm_device *dev,
@@ -738,7 +737,6 @@ static int drm_dev_init(struct drm_device *dev,
738737
INIT_LIST_HEAD(&dev->vblank_event_list);
739738

740739
spin_lock_init(&dev->event_lock);
741-
mutex_init(&dev->struct_mutex);
742740
mutex_init(&dev->filelist_mutex);
743741
mutex_init(&dev->clientlist_mutex);
744742
mutex_init(&dev->master_mutex);

drivers/gpu/drm/i915/gt/uc/intel_guc_log.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ int intel_guc_log_set_level(struct intel_guc_log *log, u32 level)
678678
if (level < GUC_LOG_LEVEL_DISABLED || level > GUC_LOG_LEVEL_MAX)
679679
return -EINVAL;
680680

681-
mutex_lock(&i915->drm.struct_mutex);
681+
mutex_lock(&i915->struct_mutex);
682682

683683
if (log->level == level)
684684
goto out_unlock;
@@ -696,7 +696,7 @@ int intel_guc_log_set_level(struct intel_guc_log *log, u32 level)
696696
log->level = level;
697697

698698
out_unlock:
699-
mutex_unlock(&i915->drm.struct_mutex);
699+
mutex_unlock(&i915->struct_mutex);
700700

701701
return ret;
702702
}

drivers/gpu/drm/i915/i915_driver.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
235235

236236
intel_sbi_init(display);
237237
vlv_iosf_sb_init(dev_priv);
238+
mutex_init(&dev_priv->struct_mutex);
238239
mutex_init(&dev_priv->sb_lock);
239240

240241
i915_memcpy_init_early(dev_priv);
@@ -293,6 +294,7 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv)
293294
i915_workqueues_cleanup(dev_priv);
294295

295296
mutex_destroy(&dev_priv->sb_lock);
297+
mutex_destroy(&dev_priv->struct_mutex);
296298
vlv_iosf_sb_fini(dev_priv);
297299
intel_sbi_fini(display);
298300

drivers/gpu/drm/i915/i915_drv.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,17 @@ struct drm_i915_private {
224224

225225
bool irqs_enabled;
226226

227+
/*
228+
* Currently, struct_mutex is only used by the i915 driver as a replacement
229+
* for BKL.
230+
*
231+
* For this reason, it is no longer part of struct drm_device.
232+
*/
233+
struct mutex struct_mutex;
234+
235+
/* LPT/WPT IOSF sideband protection */
236+
struct mutex sbi_lock;
237+
227238
/* VLV/CHV IOSF sideband */
228239
struct {
229240
struct mutex lock; /* protect sideband access */

drivers/gpu/drm/i915/i915_irq.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ static void ivb_parity_work(struct work_struct *work)
167167
* In order to prevent a get/put style interface, acquire struct mutex
168168
* any time we access those registers.
169169
*/
170-
mutex_lock(&dev_priv->drm.struct_mutex);
170+
mutex_lock(&dev_priv->struct_mutex);
171171

172172
/* If we've screwed up tracking, just let the interrupt fire again */
173173
if (drm_WARN_ON(&dev_priv->drm, !dev_priv->l3_parity.which_slice))
@@ -225,7 +225,7 @@ static void ivb_parity_work(struct work_struct *work)
225225
gen5_gt_enable_irq(gt, GT_PARITY_ERROR(dev_priv));
226226
spin_unlock_irq(gt->irq_lock);
227227

228-
mutex_unlock(&dev_priv->drm.struct_mutex);
228+
mutex_unlock(&dev_priv->struct_mutex);
229229
}
230230

231231
static irqreturn_t valleyview_irq_handler(int irq, void *arg)

include/drm/drm_device.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -186,16 +186,6 @@ struct drm_device {
186186
/** @unique: Unique name of the device */
187187
char *unique;
188188

189-
/**
190-
* @struct_mutex:
191-
*
192-
* Lock for others (not &drm_minor.master and &drm_file.is_master)
193-
*
194-
* TODO: This lock used to be the BKL of the DRM subsystem. Move the
195-
* lock into i915, which is the only remaining user.
196-
*/
197-
struct mutex struct_mutex;
198-
199189
/**
200190
* @master_mutex:
201191
*

0 commit comments

Comments
 (0)