Commit 746826bc authored by Fernando Ramos's avatar Fernando Ramos Committed by Sean Paul

drm/i915: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN()

As requested in Documentation/gpu/todo.rst, replace driver calls to
drm_modeset_lock_all() with DRM_MODESET_LOCK_ALL_BEGIN() and
DRM_MODESET_LOCK_ALL_END()
Signed-off-by: default avatarFernando Ramos <greenfoo@u92.eu>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210924064324.229457-13-greenfoo@u92.eu
parent fd49ef52
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/i915_component.h> #include <drm/i915_component.h>
#include <drm/drm_drv.h>
#include "i915_drv.h" #include "i915_drv.h"
#include "intel_atomic.h" #include "intel_atomic.h"
...@@ -1214,7 +1215,8 @@ static int i915_audio_component_bind(struct device *i915_kdev, ...@@ -1214,7 +1215,8 @@ static int i915_audio_component_bind(struct device *i915_kdev,
{ {
struct i915_audio_component *acomp = data; struct i915_audio_component *acomp = data;
struct drm_i915_private *dev_priv = kdev_to_i915(i915_kdev); struct drm_i915_private *dev_priv = kdev_to_i915(i915_kdev);
int i; struct drm_modeset_acquire_ctx ctx;
int i, ret;
if (drm_WARN_ON(&dev_priv->drm, acomp->base.ops || acomp->base.dev)) if (drm_WARN_ON(&dev_priv->drm, acomp->base.ops || acomp->base.dev))
return -EEXIST; return -EEXIST;
...@@ -1224,16 +1226,16 @@ static int i915_audio_component_bind(struct device *i915_kdev, ...@@ -1224,16 +1226,16 @@ static int i915_audio_component_bind(struct device *i915_kdev,
DL_FLAG_STATELESS))) DL_FLAG_STATELESS)))
return -ENOMEM; return -ENOMEM;
drm_modeset_lock_all(&dev_priv->drm); DRM_MODESET_LOCK_ALL_BEGIN((&dev_priv->drm), ctx, 0, ret);
acomp->base.ops = &i915_audio_component_ops; acomp->base.ops = &i915_audio_component_ops;
acomp->base.dev = i915_kdev; acomp->base.dev = i915_kdev;
BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS); BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS);
for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++) for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++)
acomp->aud_sample_rate[i] = 0; acomp->aud_sample_rate[i] = 0;
dev_priv->audio_component = acomp; dev_priv->audio_component = acomp;
drm_modeset_unlock_all(&dev_priv->drm); DRM_MODESET_LOCK_ALL_END((&dev_priv->drm), ctx, ret);
return 0; return ret;
} }
static void i915_audio_component_unbind(struct device *i915_kdev, static void i915_audio_component_unbind(struct device *i915_kdev,
...@@ -1241,12 +1243,14 @@ static void i915_audio_component_unbind(struct device *i915_kdev, ...@@ -1241,12 +1243,14 @@ static void i915_audio_component_unbind(struct device *i915_kdev,
{ {
struct i915_audio_component *acomp = data; struct i915_audio_component *acomp = data;
struct drm_i915_private *dev_priv = kdev_to_i915(i915_kdev); struct drm_i915_private *dev_priv = kdev_to_i915(i915_kdev);
struct drm_modeset_acquire_ctx ctx;
int ret;
drm_modeset_lock_all(&dev_priv->drm); DRM_MODESET_LOCK_ALL_BEGIN((&dev_priv->drm), ctx, 0, ret);
acomp->base.ops = NULL; acomp->base.ops = NULL;
acomp->base.dev = NULL; acomp->base.dev = NULL;
dev_priv->audio_component = NULL; dev_priv->audio_component = NULL;
drm_modeset_unlock_all(&dev_priv->drm); DRM_MODESET_LOCK_ALL_END((&dev_priv->drm), ctx, ret);
device_link_remove(hda_kdev, i915_kdev); device_link_remove(hda_kdev, i915_kdev);
......
...@@ -12512,6 +12512,7 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915) ...@@ -12512,6 +12512,7 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
int intel_modeset_init_nogem(struct drm_i915_private *i915) int intel_modeset_init_nogem(struct drm_i915_private *i915)
{ {
struct drm_device *dev = &i915->drm; struct drm_device *dev = &i915->drm;
struct drm_modeset_acquire_ctx ctx;
enum pipe pipe; enum pipe pipe;
struct intel_crtc *crtc; struct intel_crtc *crtc;
int ret; int ret;
...@@ -12563,9 +12564,9 @@ int intel_modeset_init_nogem(struct drm_i915_private *i915) ...@@ -12563,9 +12564,9 @@ int intel_modeset_init_nogem(struct drm_i915_private *i915)
intel_vga_disable(i915); intel_vga_disable(i915);
intel_setup_outputs(i915); intel_setup_outputs(i915);
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
intel_modeset_setup_hw_state(dev, dev->mode_config.acquire_ctx); intel_modeset_setup_hw_state(dev, dev->mode_config.acquire_ctx);
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
for_each_intel_crtc(dev, crtc) { for_each_intel_crtc(dev, crtc) {
struct intel_initial_plane_config plane_config = {}; struct intel_initial_plane_config plane_config = {};
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <drm/drm_debugfs.h> #include <drm/drm_debugfs.h>
#include <drm/drm_fourcc.h> #include <drm/drm_fourcc.h>
#include <drm/drm_drv.h>
#include "i915_debugfs.h" #include "i915_debugfs.h"
#include "intel_display_debugfs.h" #include "intel_display_debugfs.h"
...@@ -1057,11 +1058,13 @@ static int i915_display_info(struct seq_file *m, void *unused) ...@@ -1057,11 +1058,13 @@ static int i915_display_info(struct seq_file *m, void *unused)
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct drm_connector *connector; struct drm_connector *connector;
struct drm_connector_list_iter conn_iter; struct drm_connector_list_iter conn_iter;
struct drm_modeset_acquire_ctx ctx;
intel_wakeref_t wakeref; intel_wakeref_t wakeref;
int ret;
wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
seq_printf(m, "CRTC info\n"); seq_printf(m, "CRTC info\n");
seq_printf(m, "---------\n"); seq_printf(m, "---------\n");
...@@ -1076,20 +1079,21 @@ static int i915_display_info(struct seq_file *m, void *unused) ...@@ -1076,20 +1079,21 @@ static int i915_display_info(struct seq_file *m, void *unused)
intel_connector_info(m, connector); intel_connector_info(m, connector);
drm_connector_list_iter_end(&conn_iter); drm_connector_list_iter_end(&conn_iter);
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
return 0; return ret;
} }
static int i915_shared_dplls_info(struct seq_file *m, void *unused) static int i915_shared_dplls_info(struct seq_file *m, void *unused)
{ {
struct drm_i915_private *dev_priv = node_to_i915(m->private); struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
int i; struct drm_modeset_acquire_ctx ctx;
int i, ret;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
seq_printf(m, "PLL refclks: non-SSC: %d kHz, SSC: %d kHz\n", seq_printf(m, "PLL refclks: non-SSC: %d kHz, SSC: %d kHz\n",
dev_priv->dpll.ref_clks.nssc, dev_priv->dpll.ref_clks.nssc,
...@@ -1132,9 +1136,9 @@ static int i915_shared_dplls_info(struct seq_file *m, void *unused) ...@@ -1132,9 +1136,9 @@ static int i915_shared_dplls_info(struct seq_file *m, void *unused)
seq_printf(m, " mg_pll_tdc_coldst_bias: 0x%08x\n", seq_printf(m, " mg_pll_tdc_coldst_bias: 0x%08x\n",
pll->state.hw_state.mg_pll_tdc_coldst_bias); pll->state.hw_state.mg_pll_tdc_coldst_bias);
} }
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
return 0; return ret;
} }
static int i915_ipc_status_show(struct seq_file *m, void *data) static int i915_ipc_status_show(struct seq_file *m, void *data)
...@@ -1193,13 +1197,15 @@ static int i915_ddb_info(struct seq_file *m, void *unused) ...@@ -1193,13 +1197,15 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
{ {
struct drm_i915_private *dev_priv = node_to_i915(m->private); struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
struct skl_ddb_entry *entry; struct skl_ddb_entry *entry;
struct intel_crtc *crtc; struct intel_crtc *crtc;
int ret;
if (DISPLAY_VER(dev_priv) < 9) if (DISPLAY_VER(dev_priv) < 9)
return -ENODEV; return -ENODEV;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
seq_printf(m, "%-15s%8s%8s%8s\n", "", "Start", "End", "Size"); seq_printf(m, "%-15s%8s%8s%8s\n", "", "Start", "End", "Size");
...@@ -1223,9 +1229,9 @@ static int i915_ddb_info(struct seq_file *m, void *unused) ...@@ -1223,9 +1229,9 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
entry->end, skl_ddb_entry_size(entry)); entry->end, skl_ddb_entry_size(entry));
} }
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
return 0; return ret;
} }
static void drrs_status_per_crtc(struct seq_file *m, static void drrs_status_per_crtc(struct seq_file *m,
...@@ -1303,10 +1309,12 @@ static int i915_drrs_status(struct seq_file *m, void *unused) ...@@ -1303,10 +1309,12 @@ static int i915_drrs_status(struct seq_file *m, void *unused)
{ {
struct drm_i915_private *dev_priv = node_to_i915(m->private); struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
struct intel_crtc *crtc; struct intel_crtc *crtc;
int active_crtc_cnt = 0; int active_crtc_cnt = 0;
int ret;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for_each_intel_crtc(dev, crtc) { for_each_intel_crtc(dev, crtc) {
if (crtc->base.state->active) { if (crtc->base.state->active) {
active_crtc_cnt++; active_crtc_cnt++;
...@@ -1315,7 +1323,7 @@ static int i915_drrs_status(struct seq_file *m, void *unused) ...@@ -1315,7 +1323,7 @@ static int i915_drrs_status(struct seq_file *m, void *unused)
drrs_status_per_crtc(m, dev, crtc); drrs_status_per_crtc(m, dev, crtc);
} }
} }
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
if (!active_crtc_cnt) if (!active_crtc_cnt)
seq_puts(m, "No active crtc found\n"); seq_puts(m, "No active crtc found\n");
...@@ -1607,8 +1615,10 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8]) ...@@ -1607,8 +1615,10 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8])
{ {
struct drm_i915_private *dev_priv = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
int level; int level;
int num_levels; int num_levels;
int ret;
if (IS_CHERRYVIEW(dev_priv)) if (IS_CHERRYVIEW(dev_priv))
num_levels = 3; num_levels = 3;
...@@ -1619,7 +1629,7 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8]) ...@@ -1619,7 +1629,7 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8])
else else
num_levels = ilk_wm_max_level(dev_priv) + 1; num_levels = ilk_wm_max_level(dev_priv) + 1;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for (level = 0; level < num_levels; level++) { for (level = 0; level < num_levels; level++) {
unsigned int latency = wm[level]; unsigned int latency = wm[level];
...@@ -1640,7 +1650,7 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8]) ...@@ -1640,7 +1650,7 @@ static void wm_latency_show(struct seq_file *m, const u16 wm[8])
level, wm[level], latency / 10, latency % 10); level, wm[level], latency / 10, latency % 10);
} }
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
} }
static int pri_wm_latency_show(struct seq_file *m, void *data) static int pri_wm_latency_show(struct seq_file *m, void *data)
...@@ -1724,6 +1734,7 @@ static ssize_t wm_latency_write(struct file *file, const char __user *ubuf, ...@@ -1724,6 +1734,7 @@ static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_i915_private *dev_priv = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
u16 new[8] = { 0 }; u16 new[8] = { 0 };
int num_levels; int num_levels;
int level; int level;
...@@ -1753,12 +1764,15 @@ static ssize_t wm_latency_write(struct file *file, const char __user *ubuf, ...@@ -1753,12 +1764,15 @@ static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
if (ret != num_levels) if (ret != num_levels)
return -EINVAL; return -EINVAL;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for (level = 0; level < num_levels; level++) for (level = 0; level < num_levels; level++)
wm[level] = new[level]; wm[level] = new[level];
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
if (ret)
return ret;
return len; return len;
} }
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
*/ */
#include <drm/drm_fourcc.h> #include <drm/drm_fourcc.h>
#include <drm/drm_drv.h>
#include "gem/i915_gem_pm.h" #include "gem/i915_gem_pm.h"
#include "gt/intel_gpu_commands.h" #include "gt/intel_gpu_commands.h"
...@@ -1263,6 +1264,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, ...@@ -1263,6 +1264,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data,
{ {
struct drm_intel_overlay_attrs *attrs = data; struct drm_intel_overlay_attrs *attrs = data;
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_modeset_acquire_ctx ctx;
struct intel_overlay *overlay; struct intel_overlay *overlay;
int ret; int ret;
...@@ -1272,7 +1274,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, ...@@ -1272,7 +1274,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data,
return -ENODEV; return -ENODEV;
} }
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
ret = -EINVAL; ret = -EINVAL;
if (!(attrs->flags & I915_OVERLAY_UPDATE_ATTRS)) { if (!(attrs->flags & I915_OVERLAY_UPDATE_ATTRS)) {
...@@ -1329,7 +1331,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, ...@@ -1329,7 +1331,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data,
ret = 0; ret = 0;
out_unlock: out_unlock:
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
return ret; return ret;
} }
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <drm/drm_drv.h>
#include "intel_atomic.h" #include "intel_atomic.h"
#include "intel_de.h" #include "intel_de.h"
#include "intel_display_types.h" #include "intel_display_types.h"
...@@ -76,6 +78,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv, ...@@ -76,6 +78,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv,
enum intel_pipe_crc_source *source) enum intel_pipe_crc_source *source)
{ {
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
struct intel_encoder *encoder; struct intel_encoder *encoder;
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct intel_digital_port *dig_port; struct intel_digital_port *dig_port;
...@@ -83,7 +86,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv, ...@@ -83,7 +86,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv,
*source = INTEL_PIPE_CRC_SOURCE_PIPE; *source = INTEL_PIPE_CRC_SOURCE_PIPE;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for_each_intel_encoder(dev, encoder) { for_each_intel_encoder(dev, encoder) {
if (!encoder->base.crtc) if (!encoder->base.crtc)
continue; continue;
...@@ -120,7 +123,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv, ...@@ -120,7 +123,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv,
break; break;
} }
} }
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
return ret; return ret;
} }
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <drm/drm_ioctl.h> #include <drm/drm_ioctl.h>
#include <drm/drm_managed.h> #include <drm/drm_managed.h>
#include <drm/drm_probe_helper.h> #include <drm/drm_probe_helper.h>
#include <drm/drm_drv.h>
#include "display/intel_acpi.h" #include "display/intel_acpi.h"
#include "display/intel_bw.h" #include "display/intel_bw.h"
...@@ -1009,31 +1010,35 @@ static void i915_driver_postclose(struct drm_device *dev, struct drm_file *file) ...@@ -1009,31 +1010,35 @@ static void i915_driver_postclose(struct drm_device *dev, struct drm_file *file)
static void intel_suspend_encoders(struct drm_i915_private *dev_priv) static void intel_suspend_encoders(struct drm_i915_private *dev_priv)
{ {
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
struct intel_encoder *encoder; struct intel_encoder *encoder;
int ret;
if (!HAS_DISPLAY(dev_priv)) if (!HAS_DISPLAY(dev_priv))
return; return;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for_each_intel_encoder(dev, encoder) for_each_intel_encoder(dev, encoder)
if (encoder->suspend) if (encoder->suspend)
encoder->suspend(encoder); encoder->suspend(encoder);
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
} }
static void intel_shutdown_encoders(struct drm_i915_private *dev_priv) static void intel_shutdown_encoders(struct drm_i915_private *dev_priv)
{ {
struct drm_device *dev = &dev_priv->drm; struct drm_device *dev = &dev_priv->drm;
struct drm_modeset_acquire_ctx ctx;
struct intel_encoder *encoder; struct intel_encoder *encoder;
int ret;
if (!HAS_DISPLAY(dev_priv)) if (!HAS_DISPLAY(dev_priv))
return; return;
drm_modeset_lock_all(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
for_each_intel_encoder(dev, encoder) for_each_intel_encoder(dev, encoder)
if (encoder->shutdown) if (encoder->shutdown)
encoder->shutdown(encoder); encoder->shutdown(encoder);
drm_modeset_unlock_all(dev); DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
} }
void i915_driver_shutdown(struct drm_i915_private *i915) void i915_driver_shutdown(struct drm_i915_private *i915)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment