All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: jani.nikula@intel.com
Subject: [PATCH 07/13] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
Date: Thu, 19 Sep 2019 17:03:54 +0300	[thread overview]
Message-ID: <27f91b448f5012a9925368f5cd1cc22b7e2ff4d3.1568901239.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1568901239.git.jani.nikula@intel.com>

Split intel_modeset_driver_remove() to two, the part with working irqs
before irq uninstall, and the part after irq uninstall.

The error path in i915_driver_modeset_probe() looks obviously weird
after this, but remains as good or broken as it ever was. No functional
changes.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 14 ++++++--------
 drivers/gpu/drm/i915/display/intel_display.h |  1 +
 drivers/gpu/drm/i915/i915_drv.c              |  5 +++++
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 78edb5e66cdb..2c474be4a011 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17054,21 +17054,19 @@ static void intel_hpd_poll_fini(struct drm_i915_private *i915)
 	drm_connector_list_iter_end(&conn_iter);
 }
 
-void intel_modeset_driver_remove(struct drm_i915_private *i915)
+/* part #1: call before irq uninstall */
+void intel_modeset_driver_remove_irq(struct drm_i915_private *i915)
 {
 	flush_workqueue(i915->flip_wq);
 	flush_workqueue(i915->modeset_wq);
 
 	flush_work(&i915->atomic_helper.free_work);
 	WARN_ON(!llist_empty(&i915->atomic_helper.free_list));
+}
 
-	/*
-	 * Interrupts and polling as the first thing to avoid creating havoc.
-	 * Too much stuff here (turning of connectors, ...) would
-	 * experience fancy races otherwise.
-	 */
-	intel_irq_uninstall(i915);
-
+/* part #2: call after irq uninstall */
+void intel_modeset_driver_remove(struct drm_i915_private *i915)
+{
 	/*
 	 * Due to the hpd irq storm handling the hotplug work can re-arm the
 	 * poll handlers. Hence disable polling after hpd handling is shut down.
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 0405a74b513c..1783f4062fc9 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -574,6 +574,7 @@ void intel_display_print_error_state(struct drm_i915_error_state_buf *e,
 /* modesetting */
 void intel_modeset_init_hw(struct drm_i915_private *i915);
 int intel_modeset_init(struct drm_i915_private *i915);
+void intel_modeset_driver_remove_irq(struct drm_i915_private *i915);
 void intel_modeset_driver_remove(struct drm_i915_private *i915);
 int intel_modeset_vga_set_state(struct drm_i915_private *dev_priv, bool state);
 void intel_display_resume(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index a9ee73b61f4d..f2af3ba24ce9 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -407,6 +407,7 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	i915_gem_driver_remove(i915);
 	i915_gem_driver_release(i915);
 cleanup_modeset:
+	intel_modeset_driver_remove_irq(i915);
 	intel_modeset_driver_remove(i915);
 cleanup_irq:
 	intel_irq_uninstall(i915);
@@ -425,6 +426,10 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 {
 	struct pci_dev *pdev = i915->drm.pdev;
 
+	intel_modeset_driver_remove_irq(i915);
+
+	intel_irq_uninstall(i915);
+
 	intel_modeset_driver_remove(i915);
 
 	intel_bios_driver_remove(i915);
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2019-09-19 14:04 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-19 14:03 [PATCH 00/13] drm/i915: modeset probe/remove path refactoring Jani Nikula
2019-09-19 14:03 ` [PATCH 01/13] drm/i915: add i915_driver_modeset_remove() Jani Nikula
2019-09-19 15:29   ` Chris Wilson
2019-09-19 14:03 ` [PATCH 02/13] drm/i915: pass i915 to i915_driver_modeset_probe() Jani Nikula
2019-09-19 15:29   ` Chris Wilson
2019-09-19 14:03 ` [PATCH 03/13] drm/i915: pass i915 to intel_modeset_driver_remove() Jani Nikula
2019-09-19 15:29   ` Chris Wilson
2019-09-19 14:03 ` [PATCH 04/13] drm/i915: abstract intel_panel_sanitize_ssc() from intel_modeset_init() Jani Nikula
2019-09-19 15:31   ` Chris Wilson
2019-09-19 14:03 ` [PATCH 05/13] drm/i915: abstract intel_mode_config_init() " Jani Nikula
2019-09-19 15:32   ` Chris Wilson
2019-09-19 14:03 ` [PATCH 06/13] drm/i915: pass i915 to intel_modeset_init() and intel_modeset_init_hw() Jani Nikula
2019-09-19 15:33   ` Chris Wilson
2019-09-19 14:03 ` Jani Nikula [this message]
2019-09-19 15:35   ` [PATCH 07/13] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Chris Wilson
2019-09-19 14:03 ` [PATCH 08/13] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
2019-09-19 14:03 ` [PATCH 09/13] drm/i915: move gmbus setup down to intel_modeset_init() Jani Nikula
2019-09-19 14:03 ` [PATCH 10/13] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
2019-09-19 14:03 ` [PATCH 11/13] drm/i915: move gem init up from modeset init Jani Nikula
2019-09-19 14:16   ` Chris Wilson
2019-09-19 14:40     ` Jani Nikula
2019-09-19 14:03 ` [PATCH 12/13] drm/i915: push intel_overlay_init() down to intel_modeset_init() Jani Nikula
2019-09-19 14:04 ` [PATCH 13/13] drm/i915: split intel_modeset_init() to pre/post irq install Jani Nikula
2019-09-19 16:57 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove path refactoring Patchwork
2019-09-19 17:31 ` ✗ Fi.CI.BAT: failure " Patchwork

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=27f91b448f5012a9925368f5cd1cc22b7e2ff4d3.1568901239.git.jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.