Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
From: Fernando Ramos <greenfoo@u92.eu>
To: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org, sean@poorly.run,
	linux-doc@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, linux-tegra@vger.kernel.org
Subject: [PATCH v4 13/20] drm/i915: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN() [part 2]
Date: Wed, 13 Oct 2021 22:48:39 +0200	[thread overview]
Message-ID: <20211013204846.90026-14-greenfoo@u92.eu> (raw)
In-Reply-To: <20211013204846.90026-1-greenfoo@u92.eu>

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()

NOTE:

I separated this change from the rest of modifications to the i915
driver to point out something special explained next.

The only difference between the old drm_modeset_{lock,unlock}_all()
functions and the new DRM_MODESET_LOCK_ALL_{BEGIN,END}() macros is that
the former use a global context stored in dev->mode_config.acquire_ctx
while the latter depend on a user provided one (typically in the stack).

This means that as long as no one accesses the global
dev->mode_config.acquire_ctx context in the block that runs between
lock/BEGIN and unlock/END, the code should be equivalent before and
after my changes.

The only place where I had to take special action to preserve this
condition was here, where I need to modify the old call to
intel_modeset_setup_hw_state() to use the new stack allocated context
structure instead of the global one.

Signed-off-by: Fernando Ramos <greenfoo@u92.eu>
---
 drivers/gpu/drm/i915/display/intel_display.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c7d9a58f9f98..75b45c01c573 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -10992,6 +10992,7 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 int intel_modeset_init_nogem(struct drm_i915_private *i915)
 {
 	struct drm_device *dev = &i915->drm;
+	struct drm_modeset_acquire_ctx ctx;
 	enum pipe pipe;
 	struct intel_crtc *crtc;
 	int ret;
@@ -11043,10 +11044,10 @@ int intel_modeset_init_nogem(struct drm_i915_private *i915)
 	intel_vga_disable(i915);
 	intel_setup_outputs(i915);
 
-	drm_modeset_lock_all(dev);
-	intel_modeset_setup_hw_state(dev, dev->mode_config.acquire_ctx);
+	DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
+	intel_modeset_setup_hw_state(dev, &ctx);
 	intel_acpi_assign_connector_fwnodes(i915);
-	drm_modeset_unlock_all(dev);
+	DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
 
 	for_each_intel_crtc(dev, crtc) {
 		if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
-- 
2.33.0


  parent reply	other threads:[~2021-10-13 20:49 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-13 20:48 [PATCH v4 00/20] drm: cleanup: Use DRM_MODESET_LOCK_ALL_* helpers Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 01/20] drm: cleanup: drm_modeset_lock_all_ctx() --> DRM_MODESET_LOCK_ALL_BEGIN() Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 02/20] drm/i915: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 03/20] drm/msm: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 04/20] drm: cleanup: drm_modeset_lock_all() " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 05/20] drm/vmwgfx: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 06/20] drm/tegra: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 07/20] drm/shmobile: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 08/20] drm/radeon: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 09/20] drm/omapdrm: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 10/20] drm/nouveau: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 11/20] drm/msm: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 12/20] drm/i915: " Fernando Ramos
2021-10-13 20:48 ` Fernando Ramos [this message]
2021-10-13 20:48 ` [PATCH v4 14/20] drm/i915: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN() [part 3] Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 15/20] drm/gma500: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN() Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 16/20] drm/amd: " Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 17/20] drm/amd: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN() [part 2] Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 18/20] drm/amd: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN() [part 3] Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 19/20] drm: cleanup: remove drm_modeset_(un)lock_all() Fernando Ramos
2021-10-13 20:48 ` [PATCH v4 20/20] drm: cleanup: remove acquire_ctx from drm_mode_config Fernando Ramos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211013204846.90026-14-greenfoo@u92.eu \
    --to=greenfoo@u92.eu \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=sean@poorly.run \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox