All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again
@ 2020-02-04 13:42 Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 1/9] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
                   ` (10 more replies)
  0 siblings, 11 replies; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

I've sent iterations of this before, here's the rebased series. It's not
perfect, especially the error paths, but then neither are the current error
paths. It takes a lot of steps towards splitting out modeset probe/cleanup from
the rest.

BR,
Jani.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>


Jani Nikula (9):
  drm/i915: register vga switcheroo later, unregister earlier
  drm/i915: switch i915_driver_probe() to use i915 local variable
  drm/i915: split intel_modeset_driver_remove() to pre/post irq
    uninstall
  drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
  drm/i915: split i915_driver_modeset_probe() to pre/post irq install
  drm/i915: split intel_modeset_init() to pre/post irq install
  drm/i915: split intel_modeset_init() pre/post gem init
  drm/i915: move more display related probe/remove stuff to display
  drm/i915: remove the now redundant i915_driver_modeset_* call layer

 drivers/gpu/drm/i915/display/intel_display.c |  82 ++++++--
 drivers/gpu/drm/i915/display/intel_display.h |   3 +
 drivers/gpu/drm/i915/i915_drv.c              | 188 +++++++------------
 3 files changed, 141 insertions(+), 132 deletions(-)

-- 
2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 1/9] drm/i915: register vga switcheroo later, unregister earlier
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 2/9] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Move vga switcheroo and dsm handler register later in
i915_driver_register(), and unregister in i915_driver_unregister(). The
dsm handler unregister is a nop, and is only added for completeness.

My unsubstantiated suspicion is that the vga switcheroo state change
would not work as early as we register the hooks currently. In any case
exposing the interfaces to the world only after we've got everything set
up seems prudent.

Also replace the error handling in vga switcheroo register with a simple
error message. This is done at the same time due to lack of error
propagation from i915_driver_register().

Cc: Lukas Wunner <lukas@wunner.de>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 516536234e97..4c75437f33af 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -292,12 +292,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	if (ret)
 		goto out;
 
-	intel_register_dsm_handler();
-
-	ret = i915_switcheroo_register(i915);
-	if (ret)
-		goto cleanup_vga_client;
-
 	intel_power_domains_init_hw(i915, false);
 
 	intel_csr_ucode_init(i915);
@@ -343,8 +337,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 cleanup_csr:
 	intel_csr_ucode_fini(i915);
 	intel_power_domains_driver_remove(i915);
-	i915_switcheroo_unregister(i915);
-cleanup_vga_client:
 	intel_vga_unregister(i915);
 out:
 	return ret;
@@ -358,8 +350,6 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 
 	intel_bios_driver_remove(i915);
 
-	i915_switcheroo_unregister(i915);
-
 	intel_vga_unregister(i915);
 
 	intel_csr_ucode_fini(i915);
@@ -1366,6 +1356,11 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
 
 	intel_power_domains_enable(dev_priv);
 	intel_runtime_pm_enable(&dev_priv->runtime_pm);
+
+	intel_register_dsm_handler();
+
+	if (i915_switcheroo_register(dev_priv))
+		drm_err(&dev_priv->drm, "Failed to register vga switcheroo!\n");
 }
 
 /**
@@ -1374,6 +1369,10 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
  */
 static void i915_driver_unregister(struct drm_i915_private *dev_priv)
 {
+	i915_switcheroo_unregister(dev_priv);
+
+	intel_unregister_dsm_handler();
+
 	intel_runtime_pm_disable(&dev_priv->runtime_pm);
 	intel_power_domains_disable(dev_priv);
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 2/9] drm/i915: switch i915_driver_probe() to use i915 local variable
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 1/9] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Prefer i915 over dev_priv where possible. No functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 54 ++++++++++++++++-----------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 4c75437f33af..6ab2de82b5f7 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1485,16 +1485,16 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	const struct intel_device_info *match_info =
 		(struct intel_device_info *)ent->driver_data;
-	struct drm_i915_private *dev_priv;
+	struct drm_i915_private *i915;
 	int ret;
 
-	dev_priv = i915_driver_create(pdev, ent);
-	if (IS_ERR(dev_priv))
-		return PTR_ERR(dev_priv);
+	i915 = i915_driver_create(pdev, ent);
+	if (IS_ERR(i915))
+		return PTR_ERR(i915);
 
 	/* Disable nuclear pageflip by default on pre-ILK */
 	if (!i915_modparams.nuclear_pageflip && match_info->gen < 5)
-		dev_priv->drm.driver_features &= ~DRIVER_ATOMIC;
+		i915->drm.driver_features &= ~DRIVER_ATOMIC;
 
 	/*
 	 * Check if we support fake LMEM -- for now we only unleash this for
@@ -1502,13 +1502,13 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 */
 #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
 	if (IS_ENABLED(CONFIG_DRM_I915_UNSTABLE_FAKE_LMEM)) {
-		if (INTEL_GEN(dev_priv) >= 9 && i915_selftest.live < 0 &&
+		if (INTEL_GEN(i915) >= 9 && i915_selftest.live < 0 &&
 		    i915_modparams.fake_lmem_start) {
-			mkwrite_device_info(dev_priv)->memory_regions =
+			mkwrite_device_info(i915)->memory_regions =
 				REGION_SMEM | REGION_LMEM | REGION_STOLEN;
-			mkwrite_device_info(dev_priv)->is_dgfx = true;
-			GEM_BUG_ON(!HAS_LMEM(dev_priv));
-			GEM_BUG_ON(!IS_DGFX(dev_priv));
+			mkwrite_device_info(i915)->is_dgfx = true;
+			GEM_BUG_ON(!HAS_LMEM(i915));
+			GEM_BUG_ON(!IS_DGFX(i915));
 		}
 	}
 #endif
@@ -1517,48 +1517,48 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		goto out_fini;
 
-	ret = i915_driver_early_probe(dev_priv);
+	ret = i915_driver_early_probe(i915);
 	if (ret < 0)
 		goto out_pci_disable;
 
-	disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+	disable_rpm_wakeref_asserts(&i915->runtime_pm);
 
-	i915_detect_vgpu(dev_priv);
+	i915_detect_vgpu(i915);
 
-	ret = i915_driver_mmio_probe(dev_priv);
+	ret = i915_driver_mmio_probe(i915);
 	if (ret < 0)
 		goto out_runtime_pm_put;
 
-	ret = i915_driver_hw_probe(dev_priv);
+	ret = i915_driver_hw_probe(i915);
 	if (ret < 0)
 		goto out_cleanup_mmio;
 
-	ret = i915_driver_modeset_probe(dev_priv);
+	ret = i915_driver_modeset_probe(i915);
 	if (ret < 0)
 		goto out_cleanup_hw;
 
-	i915_driver_register(dev_priv);
+	i915_driver_register(i915);
 
-	enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+	enable_rpm_wakeref_asserts(&i915->runtime_pm);
 
-	i915_welcome_messages(dev_priv);
+	i915_welcome_messages(i915);
 
 	return 0;
 
 out_cleanup_hw:
-	i915_driver_hw_remove(dev_priv);
-	intel_memory_regions_driver_release(dev_priv);
-	i915_ggtt_driver_release(dev_priv);
+	i915_driver_hw_remove(i915);
+	intel_memory_regions_driver_release(i915);
+	i915_ggtt_driver_release(i915);
 out_cleanup_mmio:
-	i915_driver_mmio_release(dev_priv);
+	i915_driver_mmio_release(i915);
 out_runtime_pm_put:
-	enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
-	i915_driver_late_release(dev_priv);
+	enable_rpm_wakeref_asserts(&i915->runtime_pm);
+	i915_driver_late_release(i915);
 out_pci_disable:
 	pci_disable_device(pdev);
 out_fini:
-	i915_probe_error(dev_priv, "Device initialization failed (%d)\n", ret);
-	i915_driver_destroy(dev_priv);
+	i915_probe_error(i915, "Device initialization failed (%d)\n", ret);
+	i915_driver_destroy(i915);
 	return ret;
 }
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 1/9] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 2/9] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 14:46   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Split intel_modeset_driver_remove() to two, the part with working irqs
before irq uninstall, and the part after irq uninstall. Move
irq_unintall() closer to the layer it belongs.

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.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 12 +++++-------
 drivers/gpu/drm/i915/display/intel_display.h |  1 +
 drivers/gpu/drm/i915/i915_drv.c              |  5 +++++
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index b0af37fb6d4a..69d6fe626a19 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -18826,6 +18826,7 @@ static void intel_hpd_poll_fini(struct drm_i915_private *i915)
 	drm_connector_list_iter_end(&conn_iter);
 }
 
+/* part #1: call before irq uninstall */
 void intel_modeset_driver_remove(struct drm_i915_private *i915)
 {
 	flush_workqueue(i915->flip_wq);
@@ -18833,14 +18834,11 @@ void intel_modeset_driver_remove(struct drm_i915_private *i915)
 
 	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_noirq(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 75438a136d58..f92efbbec838 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -616,6 +616,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
 void intel_modeset_init_hw(struct drm_i915_private *i915);
 int intel_modeset_init(struct drm_i915_private *i915);
 void intel_modeset_driver_remove(struct drm_i915_private *i915);
+void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
 void intel_display_resume(struct drm_device *dev);
 void intel_init_pch_refclk(struct drm_i915_private *dev_priv);
 
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 6ab2de82b5f7..5330a0f10e97 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -332,6 +332,9 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	i915_gem_driver_release(i915);
 cleanup_modeset:
 	intel_modeset_driver_remove(i915);
+	intel_irq_uninstall(i915);
+	intel_modeset_driver_remove_noirq(i915);
+	goto cleanup_csr;
 cleanup_irq:
 	intel_irq_uninstall(i915);
 cleanup_csr:
@@ -348,6 +351,8 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 
 	intel_irq_uninstall(i915);
 
+	intel_modeset_driver_remove_noirq(i915);
+
 	intel_bios_driver_remove(i915);
 
 	intel_vga_unregister(i915);
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (2 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 14:49   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Push irq uninstall further up, by splitting i915_driver_modeset_remove()
to two, the part with working irqs before irq uninstall, and the part
after irq uninstall. No functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 5330a0f10e97..2ef4b8fc5f4c 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -345,12 +345,15 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	return ret;
 }
 
+/* part #1: call before irq uninstall */
 static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 {
 	intel_modeset_driver_remove(i915);
+}
 
-	intel_irq_uninstall(i915);
-
+/* part #2: call after irq uninstall */
+static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
+{
 	intel_modeset_driver_remove_noirq(i915);
 
 	intel_bios_driver_remove(i915);
@@ -1591,6 +1594,10 @@ void i915_driver_remove(struct drm_i915_private *i915)
 
 	i915_driver_modeset_remove(i915);
 
+	intel_irq_uninstall(i915);
+
+	i915_driver_modeset_remove_noirq(i915);
+
 	i915_reset_error_state(i915);
 	i915_gem_driver_remove(i915);
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (3 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 14:53   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() " Jani Nikula
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Pair the irq install and uninstall in the same layer. There are no
functional changes in the happy day scenario. The cleanup paths are
currently a mess though.

Note that modeset probe pre-irq + post-irq install are matched by
modeset driver remove pre-irq + post-irq uninstall, together, but not
independently. They are not symmetric pairs.

v2: don't add a new probe failure point here

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 40 ++++++++++++++++++++++-----------
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 2ef4b8fc5f4c..1243638506bc 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -272,7 +272,8 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
 		release_resource(&dev_priv->mch_res);
 }
 
-static int i915_driver_modeset_probe(struct drm_i915_private *i915)
+/* part #1: call before irq install */
+static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
 {
 	int ret;
 
@@ -296,15 +297,22 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 
 	intel_csr_ucode_init(i915);
 
-	ret = intel_irq_install(i915);
-	if (ret)
-		goto cleanup_csr;
+	return 0;
+
+out:
+	return ret;
+}
+
+/* part #2: call after irq install */
+static int i915_driver_modeset_probe(struct drm_i915_private *i915)
+{
+	int ret;
 
 	/* Important: The output setup functions called by modeset_init need
 	 * working irqs for e.g. gmbus and dp aux transfers. */
 	ret = intel_modeset_init(i915);
 	if (ret)
-		goto cleanup_irq;
+		goto out;
 
 	ret = i915_gem_init(i915);
 	if (ret)
@@ -331,16 +339,10 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	i915_gem_driver_remove(i915);
 	i915_gem_driver_release(i915);
 cleanup_modeset:
+	/* FIXME */
 	intel_modeset_driver_remove(i915);
 	intel_irq_uninstall(i915);
 	intel_modeset_driver_remove_noirq(i915);
-	goto cleanup_csr;
-cleanup_irq:
-	intel_irq_uninstall(i915);
-cleanup_csr:
-	intel_csr_ucode_fini(i915);
-	intel_power_domains_driver_remove(i915);
-	intel_vga_unregister(i915);
 out:
 	return ret;
 }
@@ -1541,10 +1543,18 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret < 0)
 		goto out_cleanup_mmio;
 
-	ret = i915_driver_modeset_probe(i915);
+	ret = i915_driver_modeset_probe_noirq(i915);
 	if (ret < 0)
 		goto out_cleanup_hw;
 
+	ret = intel_irq_install(i915);
+	if (ret)
+		goto out_cleanup_modeset;
+
+	ret = i915_driver_modeset_probe(i915);
+	if (ret < 0)
+		goto out_cleanup_irq;
+
 	i915_driver_register(i915);
 
 	enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -1553,6 +1563,10 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	return 0;
 
+out_cleanup_irq:
+	intel_irq_uninstall(i915);
+out_cleanup_modeset:
+	/* FIXME */
 out_cleanup_hw:
 	i915_driver_hw_remove(i915);
 	intel_memory_regions_driver_release(i915);
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() to pre/post irq install
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (4 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 14:59   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Split inte_modeset_init() to parts before and after irq install, to
facilitate further cleanup. The error paths are a mess, otherwise no
functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 17 +++++++++++++----
 drivers/gpu/drm/i915/display/intel_display.h |  1 +
 drivers/gpu/drm/i915/i915_drv.c              |  6 ++++++
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 69d6fe626a19..2cac6d61dba2 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17854,11 +17854,9 @@ static void intel_mode_config_cleanup(struct drm_i915_private *i915)
 	drm_mode_config_cleanup(&i915->drm);
 }
 
-int intel_modeset_init(struct drm_i915_private *i915)
+/* part #1: call before irq install */
+int intel_modeset_init_noirq(struct drm_i915_private *i915)
 {
-	struct drm_device *dev = &i915->drm;
-	enum pipe pipe;
-	struct intel_crtc *crtc;
 	int ret;
 
 	i915->modeset_wq = alloc_ordered_workqueue("i915_modeset", 0);
@@ -17883,6 +17881,17 @@ int intel_modeset_init(struct drm_i915_private *i915)
 
 	intel_fbc_init(i915);
 
+	return 0;
+}
+
+/* part #2: call after irq install */
+int intel_modeset_init(struct drm_i915_private *i915)
+{
+	struct drm_device *dev = &i915->drm;
+	enum pipe pipe;
+	struct intel_crtc *crtc;
+	int ret;
+
 	intel_init_pm(i915);
 
 	intel_panel_sanitize_ssc(i915);
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index f92efbbec838..8f994244ccc7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -614,6 +614,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
 
 /* modesetting */
 void intel_modeset_init_hw(struct drm_i915_private *i915);
+int intel_modeset_init_noirq(struct drm_i915_private *i915);
 int intel_modeset_init(struct drm_i915_private *i915);
 void intel_modeset_driver_remove(struct drm_i915_private *i915);
 void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 1243638506bc..905277490024 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -297,8 +297,14 @@ static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
 
 	intel_csr_ucode_init(i915);
 
+	ret = intel_modeset_init_noirq(i915);
+	if (ret)
+		goto cleanup_vga_client;
+
 	return 0;
 
+cleanup_vga_client:
+	intel_vga_unregister(i915);
 out:
 	return ret;
 }
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (5 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() " Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 15:05   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display Jani Nikula
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Turn current intel_modeset_init() to a pre-gem init function, and add a
new intel_modeset_init() function and move all post-gem modeset init
there, in the correct layer. Again, apart from possible failure paths,
no functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 26 ++++++++++++++++++--
 drivers/gpu/drm/i915/display/intel_display.h |  1 +
 drivers/gpu/drm/i915/i915_drv.c              | 14 ++---------
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 2cac6d61dba2..39c12a608103 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17884,8 +17884,8 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 	return 0;
 }
 
-/* part #2: call after irq install */
-int intel_modeset_init(struct drm_i915_private *i915)
+/* part #2: call after irq install, but before gem init */
+int intel_modeset_init_nogem(struct drm_i915_private *i915)
 {
 	struct drm_device *dev = &i915->drm;
 	enum pipe pipe;
@@ -17974,6 +17974,28 @@ int intel_modeset_init(struct drm_i915_private *i915)
 	return 0;
 }
 
+/* part #3: call after gem init */
+int intel_modeset_init(struct drm_i915_private *i915)
+{
+	int ret;
+
+	intel_overlay_setup(i915);
+
+	if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
+		return 0;
+
+	ret = intel_fbdev_init(&i915->drm);
+	if (ret)
+		return ret;
+
+	/* Only enable hotplug handling once the fbdev is fully set up. */
+	intel_hpd_init(i915);
+
+	intel_init_ipc(i915);
+
+	return 0;
+}
+
 void i830_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
 {
 	struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 8f994244ccc7..62ee9b9d212c 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -615,6 +615,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
 /* modesetting */
 void intel_modeset_init_hw(struct drm_i915_private *i915);
 int intel_modeset_init_noirq(struct drm_i915_private *i915);
+int intel_modeset_init_nogem(struct drm_i915_private *i915);
 int intel_modeset_init(struct drm_i915_private *i915);
 void intel_modeset_driver_remove(struct drm_i915_private *i915);
 void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 905277490024..21f07709dc9e 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -316,7 +316,7 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 
 	/* Important: The output setup functions called by modeset_init need
 	 * working irqs for e.g. gmbus and dp aux transfers. */
-	ret = intel_modeset_init(i915);
+	ret = intel_modeset_init_nogem(i915);
 	if (ret)
 		goto out;
 
@@ -324,20 +324,10 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	if (ret)
 		goto cleanup_modeset;
 
-	intel_overlay_setup(i915);
-
-	if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
-		return 0;
-
-	ret = intel_fbdev_init(&i915->drm);
+	ret = intel_modeset_init(i915);
 	if (ret)
 		goto cleanup_gem;
 
-	/* Only enable hotplug handling once the fbdev is fully set up. */
-	intel_hpd_init(i915);
-
-	intel_init_ipc(i915);
-
 	return 0;
 
 cleanup_gem:
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (6 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 15:11   ` Ville Syrjälä
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

With the intel_display_* prove/remove functions clarified, we can
continue with moving more related calls to the right layer:

- drm_vblank_init()
- intel_bios_init() and intel_bios_driver_remove()
- intel_vga_register() and intel_vga_unregister()
- intel_csr_ucode_init() and intel_csr_ucode_fini()

Unfortunately, for the time being, we also need to move a call to the
*wrong* layer: the power domain init.

v2: move probe failure while at it, power domain init

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 31 ++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.c              | 39 +-------------------
 2 files changed, 32 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 39c12a608103..bf99964d8e4c 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -66,6 +66,7 @@
 #include "intel_bw.h"
 #include "intel_cdclk.h"
 #include "intel_color.h"
+#include "intel_csr.h"
 #include "intel_display_types.h"
 #include "intel_dp_link_training.h"
 #include "intel_fbc.h"
@@ -17859,6 +17860,27 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 {
 	int ret;
 
+	if (i915_inject_probe_failure(i915))
+		return -ENODEV;
+
+	if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
+		ret = drm_vblank_init(&i915->drm,
+				      INTEL_NUM_PIPES(i915));
+		if (ret)
+			goto out;
+	}
+
+	intel_bios_init(i915);
+
+	ret = intel_vga_register(i915);
+	if (ret)
+		goto out;
+
+	/* FIXME: completely on the wrong abstraction layer */
+	intel_power_domains_init_hw(i915, false);
+
+	intel_csr_ucode_init(i915);
+
 	i915->modeset_wq = alloc_ordered_workqueue("i915_modeset", 0);
 	i915->flip_wq = alloc_workqueue("i915_flip", WQ_HIGHPRI |
 					WQ_UNBOUND, WQ_UNBOUND_MAX_ACTIVE);
@@ -17882,6 +17904,9 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 	intel_fbc_init(i915);
 
 	return 0;
+
+out:
+	return ret;
 }
 
 /* part #2: call after irq install, but before gem init */
@@ -18905,6 +18930,12 @@ void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915)
 	destroy_workqueue(i915->modeset_wq);
 
 	intel_fbc_cleanup_cfb(i915);
+
+	intel_bios_driver_remove(i915);
+
+	intel_vga_unregister(i915);
+
+	intel_csr_ucode_fini(i915);
 }
 
 #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 21f07709dc9e..fca693ad6cd7 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -275,38 +275,7 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
 /* part #1: call before irq install */
 static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
 {
-	int ret;
-
-	if (i915_inject_probe_failure(i915))
-		return -ENODEV;
-
-	if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
-		ret = drm_vblank_init(&i915->drm,
-				      INTEL_NUM_PIPES(i915));
-		if (ret)
-			goto out;
-	}
-
-	intel_bios_init(i915);
-
-	ret = intel_vga_register(i915);
-	if (ret)
-		goto out;
-
-	intel_power_domains_init_hw(i915, false);
-
-	intel_csr_ucode_init(i915);
-
-	ret = intel_modeset_init_noirq(i915);
-	if (ret)
-		goto cleanup_vga_client;
-
-	return 0;
-
-cleanup_vga_client:
-	intel_vga_unregister(i915);
-out:
-	return ret;
+	return intel_modeset_init_noirq(i915);
 }
 
 /* part #2: call after irq install */
@@ -353,12 +322,6 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
 {
 	intel_modeset_driver_remove_noirq(i915);
-
-	intel_bios_driver_remove(i915);
-
-	intel_vga_unregister(i915);
-
-	intel_csr_ucode_fini(i915);
 }
 
 static void intel_init_dpio(struct drm_i915_private *dev_priv)
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (7 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display Jani Nikula
@ 2020-02-04 13:42 ` Jani Nikula
  2020-02-04 15:16   ` Ville Syrjälä
  2020-02-05  1:42 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup, again Patchwork
  2020-02-05  2:05 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
  10 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2020-02-04 13:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

The i915_driver_modeset_*() functions have become irrelevant, and the
extra layer can be removed.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 76 +++++++++------------------------
 1 file changed, 19 insertions(+), 57 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index fca693ad6cd7..c097dced0d9b 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -272,58 +272,6 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
 		release_resource(&dev_priv->mch_res);
 }
 
-/* part #1: call before irq install */
-static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
-{
-	return intel_modeset_init_noirq(i915);
-}
-
-/* part #2: call after irq install */
-static int i915_driver_modeset_probe(struct drm_i915_private *i915)
-{
-	int ret;
-
-	/* Important: The output setup functions called by modeset_init need
-	 * working irqs for e.g. gmbus and dp aux transfers. */
-	ret = intel_modeset_init_nogem(i915);
-	if (ret)
-		goto out;
-
-	ret = i915_gem_init(i915);
-	if (ret)
-		goto cleanup_modeset;
-
-	ret = intel_modeset_init(i915);
-	if (ret)
-		goto cleanup_gem;
-
-	return 0;
-
-cleanup_gem:
-	i915_gem_suspend(i915);
-	i915_gem_driver_remove(i915);
-	i915_gem_driver_release(i915);
-cleanup_modeset:
-	/* FIXME */
-	intel_modeset_driver_remove(i915);
-	intel_irq_uninstall(i915);
-	intel_modeset_driver_remove_noirq(i915);
-out:
-	return ret;
-}
-
-/* part #1: call before irq uninstall */
-static void i915_driver_modeset_remove(struct drm_i915_private *i915)
-{
-	intel_modeset_driver_remove(i915);
-}
-
-/* part #2: call after irq uninstall */
-static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
-{
-	intel_modeset_driver_remove_noirq(i915);
-}
-
 static void intel_init_dpio(struct drm_i915_private *dev_priv)
 {
 	/*
@@ -1502,7 +1450,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret < 0)
 		goto out_cleanup_mmio;
 
-	ret = i915_driver_modeset_probe_noirq(i915);
+	ret = intel_modeset_init_noirq(i915);
 	if (ret < 0)
 		goto out_cleanup_hw;
 
@@ -1510,10 +1458,20 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		goto out_cleanup_modeset;
 
-	ret = i915_driver_modeset_probe(i915);
-	if (ret < 0)
+	/* Important: The output setup functions called by modeset_init need
+	 * working irqs for e.g. gmbus and dp aux transfers. */
+	ret = intel_modeset_init_nogem(i915);
+	if (ret)
 		goto out_cleanup_irq;
 
+	ret = i915_gem_init(i915);
+	if (ret)
+		goto out_cleanup_modeset;
+
+	ret = intel_modeset_init(i915);
+	if (ret)
+		goto out_cleanup_gem;
+
 	i915_driver_register(i915);
 
 	enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -1522,6 +1480,10 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	return 0;
 
+out_cleanup_gem:
+	i915_gem_suspend(i915);
+	i915_gem_driver_remove(i915);
+	i915_gem_driver_release(i915);
 out_cleanup_irq:
 	intel_irq_uninstall(i915);
 out_cleanup_modeset:
@@ -1565,11 +1527,11 @@ void i915_driver_remove(struct drm_i915_private *i915)
 
 	intel_gvt_driver_remove(i915);
 
-	i915_driver_modeset_remove(i915);
+	intel_modeset_driver_remove(i915);
 
 	intel_irq_uninstall(i915);
 
-	i915_driver_modeset_remove_noirq(i915);
+	intel_modeset_driver_remove_noirq(i915);
 
 	i915_reset_error_state(i915);
 	i915_gem_driver_remove(i915);
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
@ 2020-02-04 14:46   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 14:46 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:22PM +0200, Jani Nikula wrote:
> Split intel_modeset_driver_remove() to two, the part with working irqs
> before irq uninstall, and the part after irq uninstall. Move
> irq_unintall() closer to the layer it belongs.
> 
> 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.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 12 +++++-------
>  drivers/gpu/drm/i915/display/intel_display.h |  1 +
>  drivers/gpu/drm/i915/i915_drv.c              |  5 +++++
>  3 files changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index b0af37fb6d4a..69d6fe626a19 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -18826,6 +18826,7 @@ static void intel_hpd_poll_fini(struct drm_i915_private *i915)
>  	drm_connector_list_iter_end(&conn_iter);
>  }
>  
> +/* part #1: call before irq uninstall */
>  void intel_modeset_driver_remove(struct drm_i915_private *i915)
>  {
>  	flush_workqueue(i915->flip_wq);
> @@ -18833,14 +18834,11 @@ void intel_modeset_driver_remove(struct drm_i915_private *i915)
>  
>  	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.
> -	 */

Maybe the comment should stay at the start of the _noirq() function?
Or maybe it's obvious now. Shrug.

> -	intel_irq_uninstall(i915);
> -
> +/* part #2: call after irq uninstall */
> +void intel_modeset_driver_remove_noirq(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 75438a136d58..f92efbbec838 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -616,6 +616,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
>  void intel_modeset_init_hw(struct drm_i915_private *i915);
>  int intel_modeset_init(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove(struct drm_i915_private *i915);
> +void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
>  void intel_display_resume(struct drm_device *dev);
>  void intel_init_pch_refclk(struct drm_i915_private *dev_priv);
>  
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 6ab2de82b5f7..5330a0f10e97 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -332,6 +332,9 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	i915_gem_driver_release(i915);
>  cleanup_modeset:
>  	intel_modeset_driver_remove(i915);
> +	intel_irq_uninstall(i915);
> +	intel_modeset_driver_remove_noirq(i915);
> +	goto cleanup_csr;
>  cleanup_irq:
>  	intel_irq_uninstall(i915);
>  cleanup_csr:
> @@ -348,6 +351,8 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)

A bit funny with the naming of driver_modeset_remove() vs.
modeset_driver_remove(). But that's already in there.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  
>  	intel_irq_uninstall(i915);
>  
> +	intel_modeset_driver_remove_noirq(i915);
> +
>  	intel_bios_driver_remove(i915);
>  
>  	intel_vga_unregister(i915);
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
@ 2020-02-04 14:49   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 14:49 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:23PM +0200, Jani Nikula wrote:
> Push irq uninstall further up, by splitting i915_driver_modeset_remove()
> to two, the part with working irqs before irq uninstall, and the part
> after irq uninstall. No functional changes.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 5330a0f10e97..2ef4b8fc5f4c 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -345,12 +345,15 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	return ret;
>  }
>  
> +/* part #1: call before irq uninstall */
>  static void i915_driver_modeset_remove(struct drm_i915_private *i915)
>  {
>  	intel_modeset_driver_remove(i915);
> +}

I wonder if we can remove some layers of this cake eventually.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  
> -	intel_irq_uninstall(i915);
> -
> +/* part #2: call after irq uninstall */
> +static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
> +{
>  	intel_modeset_driver_remove_noirq(i915);
>  
>  	intel_bios_driver_remove(i915);
> @@ -1591,6 +1594,10 @@ void i915_driver_remove(struct drm_i915_private *i915)
>  
>  	i915_driver_modeset_remove(i915);
>  
> +	intel_irq_uninstall(i915);
> +
> +	i915_driver_modeset_remove_noirq(i915);
> +
>  	i915_reset_error_state(i915);
>  	i915_gem_driver_remove(i915);
>  
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
@ 2020-02-04 14:53   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 14:53 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:24PM +0200, Jani Nikula wrote:
> Pair the irq install and uninstall in the same layer. There are no
> functional changes in the happy day scenario. The cleanup paths are
> currently a mess though.
> 
> Note that modeset probe pre-irq + post-irq install are matched by
> modeset driver remove pre-irq + post-irq uninstall, together, but not
> independently. They are not symmetric pairs.
> 
> v2: don't add a new probe failure point here
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 40 ++++++++++++++++++++++-----------
>  1 file changed, 27 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 2ef4b8fc5f4c..1243638506bc 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -272,7 +272,8 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
>  		release_resource(&dev_priv->mch_res);
>  }
>  
> -static int i915_driver_modeset_probe(struct drm_i915_private *i915)
> +/* part #1: call before irq install */
> +static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
>  {
>  	int ret;
>  
> @@ -296,15 +297,22 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  
>  	intel_csr_ucode_init(i915);
>  
> -	ret = intel_irq_install(i915);
> -	if (ret)
> -		goto cleanup_csr;
> +	return 0;
> +
> +out:
> +	return ret;
> +}
> +
> +/* part #2: call after irq install */
> +static int i915_driver_modeset_probe(struct drm_i915_private *i915)
> +{
> +	int ret;
>  
>  	/* Important: The output setup functions called by modeset_init need
>  	 * working irqs for e.g. gmbus and dp aux transfers. */
>  	ret = intel_modeset_init(i915);
>  	if (ret)
> -		goto cleanup_irq;
> +		goto out;
>  
>  	ret = i915_gem_init(i915);
>  	if (ret)
> @@ -331,16 +339,10 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	i915_gem_driver_remove(i915);
>  	i915_gem_driver_release(i915);
>  cleanup_modeset:
> +	/* FIXME */
>  	intel_modeset_driver_remove(i915);
>  	intel_irq_uninstall(i915);
>  	intel_modeset_driver_remove_noirq(i915);
> -	goto cleanup_csr;
> -cleanup_irq:
> -	intel_irq_uninstall(i915);
> -cleanup_csr:
> -	intel_csr_ucode_fini(i915);
> -	intel_power_domains_driver_remove(i915);
> -	intel_vga_unregister(i915);
>  out:
>  	return ret;
>  }
> @@ -1541,10 +1543,18 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	if (ret < 0)
>  		goto out_cleanup_mmio;
>  
> -	ret = i915_driver_modeset_probe(i915);
> +	ret = i915_driver_modeset_probe_noirq(i915);
>  	if (ret < 0)
>  		goto out_cleanup_hw;
>  
> +	ret = intel_irq_install(i915);
> +	if (ret)
> +		goto out_cleanup_modeset;
> +
> +	ret = i915_driver_modeset_probe(i915);
> +	if (ret < 0)
> +		goto out_cleanup_irq;
> +
>  	i915_driver_register(i915);
>  
>  	enable_rpm_wakeref_asserts(&i915->runtime_pm);
> @@ -1553,6 +1563,10 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  
>  	return 0;
>  
> +out_cleanup_irq:
> +	intel_irq_uninstall(i915);
> +out_cleanup_modeset:
> +	/* FIXME */

Waiting for a mysterious cleanup_noirq() I guess.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  out_cleanup_hw:
>  	i915_driver_hw_remove(i915);
>  	intel_memory_regions_driver_release(i915);
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() to pre/post irq install
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() " Jani Nikula
@ 2020-02-04 14:59   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 14:59 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:25PM +0200, Jani Nikula wrote:
> Split inte_modeset_init() to parts before and after irq install, to
> facilitate further cleanup. The error paths are a mess, otherwise no
> functional changes.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 17 +++++++++++++----
>  drivers/gpu/drm/i915/display/intel_display.h |  1 +
>  drivers/gpu/drm/i915/i915_drv.c              |  6 ++++++
>  3 files changed, 20 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 69d6fe626a19..2cac6d61dba2 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -17854,11 +17854,9 @@ static void intel_mode_config_cleanup(struct drm_i915_private *i915)
>  	drm_mode_config_cleanup(&i915->drm);
>  }
>  
> -int intel_modeset_init(struct drm_i915_private *i915)
> +/* part #1: call before irq install */
> +int intel_modeset_init_noirq(struct drm_i915_private *i915)
>  {
> -	struct drm_device *dev = &i915->drm;
> -	enum pipe pipe;
> -	struct intel_crtc *crtc;
>  	int ret;
>  
>  	i915->modeset_wq = alloc_ordered_workqueue("i915_modeset", 0);
> @@ -17883,6 +17881,17 @@ int intel_modeset_init(struct drm_i915_private *i915)
>  
>  	intel_fbc_init(i915);
>  
> +	return 0;
> +}
> +
> +/* part #2: call after irq install */
> +int intel_modeset_init(struct drm_i915_private *i915)
> +{
> +	struct drm_device *dev = &i915->drm;
> +	enum pipe pipe;
> +	struct intel_crtc *crtc;
> +	int ret;
> +

Seems like an OK split point.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  	intel_init_pm(i915);
>  
>  	intel_panel_sanitize_ssc(i915);
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index f92efbbec838..8f994244ccc7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -614,6 +614,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
>  
>  /* modesetting */
>  void intel_modeset_init_hw(struct drm_i915_private *i915);
> +int intel_modeset_init_noirq(struct drm_i915_private *i915);
>  int intel_modeset_init(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 1243638506bc..905277490024 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -297,8 +297,14 @@ static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
>  
>  	intel_csr_ucode_init(i915);
>  
> +	ret = intel_modeset_init_noirq(i915);
> +	if (ret)
> +		goto cleanup_vga_client;
> +
>  	return 0;
>  
> +cleanup_vga_client:
> +	intel_vga_unregister(i915);
>  out:
>  	return ret;
>  }
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
@ 2020-02-04 15:05   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 15:05 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:26PM +0200, Jani Nikula wrote:
> Turn current intel_modeset_init() to a pre-gem init function, and add a
> new intel_modeset_init() function and move all post-gem modeset init
> there, in the correct layer. Again, apart from possible failure paths,
> no functional changes.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 26 ++++++++++++++++++--
>  drivers/gpu/drm/i915/display/intel_display.h |  1 +
>  drivers/gpu/drm/i915/i915_drv.c              | 14 ++---------
>  3 files changed, 27 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 2cac6d61dba2..39c12a608103 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -17884,8 +17884,8 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
>  	return 0;
>  }
>  
> -/* part #2: call after irq install */
> -int intel_modeset_init(struct drm_i915_private *i915)
> +/* part #2: call after irq install, but before gem init */
> +int intel_modeset_init_nogem(struct drm_i915_private *i915)
>  {
>  	struct drm_device *dev = &i915->drm;
>  	enum pipe pipe;
> @@ -17974,6 +17974,28 @@ int intel_modeset_init(struct drm_i915_private *i915)
>  	return 0;
>  }
>  
> +/* part #3: call after gem init */
> +int intel_modeset_init(struct drm_i915_private *i915)
> +{
> +	int ret;
> +
> +	intel_overlay_setup(i915);
> +
> +	if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
> +		return 0;
> +
> +	ret = intel_fbdev_init(&i915->drm);
> +	if (ret)
> +		return ret;
> +
> +	/* Only enable hotplug handling once the fbdev is fully set up. */
> +	intel_hpd_init(i915);
> +
> +	intel_init_ipc(i915);

BTW that init_ipc() looks totally misplaced. Should probably be part of
the regular wm init stuff. But that's not for this patch to fix.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +
> +	return 0;
> +}
> +
>  void i830_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
>  {
>  	struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 8f994244ccc7..62ee9b9d212c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -615,6 +615,7 @@ intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
>  /* modesetting */
>  void intel_modeset_init_hw(struct drm_i915_private *i915);
>  int intel_modeset_init_noirq(struct drm_i915_private *i915);
> +int intel_modeset_init_nogem(struct drm_i915_private *i915);
>  int intel_modeset_init(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove(struct drm_i915_private *i915);
>  void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915);
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 905277490024..21f07709dc9e 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -316,7 +316,7 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  
>  	/* Important: The output setup functions called by modeset_init need
>  	 * working irqs for e.g. gmbus and dp aux transfers. */
> -	ret = intel_modeset_init(i915);
> +	ret = intel_modeset_init_nogem(i915);
>  	if (ret)
>  		goto out;
>  
> @@ -324,20 +324,10 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	if (ret)
>  		goto cleanup_modeset;
>  
> -	intel_overlay_setup(i915);
> -
> -	if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
> -		return 0;
> -
> -	ret = intel_fbdev_init(&i915->drm);
> +	ret = intel_modeset_init(i915);
>  	if (ret)
>  		goto cleanup_gem;
>  
> -	/* Only enable hotplug handling once the fbdev is fully set up. */
> -	intel_hpd_init(i915);
> -
> -	intel_init_ipc(i915);
> -
>  	return 0;
>  
>  cleanup_gem:
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display Jani Nikula
@ 2020-02-04 15:11   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 15:11 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:27PM +0200, Jani Nikula wrote:
> With the intel_display_* prove/remove functions clarified, we can

"probe", though I wouldn't mind functions that prove the
display code/hw works ;)

> continue with moving more related calls to the right layer:
> 
> - drm_vblank_init()
> - intel_bios_init() and intel_bios_driver_remove()
> - intel_vga_register() and intel_vga_unregister()
> - intel_csr_ucode_init() and intel_csr_ucode_fini()
> 
> Unfortunately, for the time being, we also need to move a call to the
> *wrong* layer: the power domain init.
> 
> v2: move probe failure while at it, power domain init
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 31 ++++++++++++++++
>  drivers/gpu/drm/i915/i915_drv.c              | 39 +-------------------
>  2 files changed, 32 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 39c12a608103..bf99964d8e4c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -66,6 +66,7 @@
>  #include "intel_bw.h"
>  #include "intel_cdclk.h"
>  #include "intel_color.h"
> +#include "intel_csr.h"
>  #include "intel_display_types.h"
>  #include "intel_dp_link_training.h"
>  #include "intel_fbc.h"
> @@ -17859,6 +17860,27 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
>  {
>  	int ret;
>  
> +	if (i915_inject_probe_failure(i915))
> +		return -ENODEV;
> +
> +	if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
> +		ret = drm_vblank_init(&i915->drm,
> +				      INTEL_NUM_PIPES(i915));
> +		if (ret)
> +			goto out;
> +	}
> +
> +	intel_bios_init(i915);
> +
> +	ret = intel_vga_register(i915);
> +	if (ret)
> +		goto out;
> +
> +	/* FIXME: completely on the wrong abstraction layer */
> +	intel_power_domains_init_hw(i915, false);
> +
> +	intel_csr_ucode_init(i915);
> +
>  	i915->modeset_wq = alloc_ordered_workqueue("i915_modeset", 0);
>  	i915->flip_wq = alloc_workqueue("i915_flip", WQ_HIGHPRI |
>  					WQ_UNBOUND, WQ_UNBOUND_MAX_ACTIVE);
> @@ -17882,6 +17904,9 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
>  	intel_fbc_init(i915);
>  
>  	return 0;
> +
> +out:
> +	return ret;

Empty label seems a bit pointless. But I guess we're at least missing a
intel_bios_driver_remove() call here. Hmm, the remove doesn't seem to be
the reverse of this either. Oh well.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  }
>  
>  /* part #2: call after irq install, but before gem init */
> @@ -18905,6 +18930,12 @@ void intel_modeset_driver_remove_noirq(struct drm_i915_private *i915)
>  	destroy_workqueue(i915->modeset_wq);
>  
>  	intel_fbc_cleanup_cfb(i915);
> +
> +	intel_bios_driver_remove(i915);
> +
> +	intel_vga_unregister(i915);
> +
> +	intel_csr_ucode_fini(i915);
>  }
>  
>  #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 21f07709dc9e..fca693ad6cd7 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -275,38 +275,7 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
>  /* part #1: call before irq install */
>  static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
>  {
> -	int ret;
> -
> -	if (i915_inject_probe_failure(i915))
> -		return -ENODEV;
> -
> -	if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
> -		ret = drm_vblank_init(&i915->drm,
> -				      INTEL_NUM_PIPES(i915));
> -		if (ret)
> -			goto out;
> -	}
> -
> -	intel_bios_init(i915);
> -
> -	ret = intel_vga_register(i915);
> -	if (ret)
> -		goto out;
> -
> -	intel_power_domains_init_hw(i915, false);
> -
> -	intel_csr_ucode_init(i915);
> -
> -	ret = intel_modeset_init_noirq(i915);
> -	if (ret)
> -		goto cleanup_vga_client;
> -
> -	return 0;
> -
> -cleanup_vga_client:
> -	intel_vga_unregister(i915);
> -out:
> -	return ret;
> +	return intel_modeset_init_noirq(i915);
>  }
>  
>  /* part #2: call after irq install */
> @@ -353,12 +322,6 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
>  static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
>  {
>  	intel_modeset_driver_remove_noirq(i915);
> -
> -	intel_bios_driver_remove(i915);
> -
> -	intel_vga_unregister(i915);
> -
> -	intel_csr_ucode_fini(i915);
>  }
>  
>  static void intel_init_dpio(struct drm_i915_private *dev_priv)
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
@ 2020-02-04 15:16   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2020-02-04 15:16 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 04, 2020 at 03:42:28PM +0200, Jani Nikula wrote:
> The i915_driver_modeset_*() functions have become irrelevant, and the
> extra layer can be removed.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Ok, some extraneous layers scraped off. Good.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_drv.c | 76 +++++++++------------------------
>  1 file changed, 19 insertions(+), 57 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index fca693ad6cd7..c097dced0d9b 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -272,58 +272,6 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
>  		release_resource(&dev_priv->mch_res);
>  }
>  
> -/* part #1: call before irq install */
> -static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
> -{
> -	return intel_modeset_init_noirq(i915);
> -}
> -
> -/* part #2: call after irq install */
> -static int i915_driver_modeset_probe(struct drm_i915_private *i915)
> -{
> -	int ret;
> -
> -	/* Important: The output setup functions called by modeset_init need
> -	 * working irqs for e.g. gmbus and dp aux transfers. */
> -	ret = intel_modeset_init_nogem(i915);
> -	if (ret)
> -		goto out;
> -
> -	ret = i915_gem_init(i915);
> -	if (ret)
> -		goto cleanup_modeset;
> -
> -	ret = intel_modeset_init(i915);
> -	if (ret)
> -		goto cleanup_gem;
> -
> -	return 0;
> -
> -cleanup_gem:
> -	i915_gem_suspend(i915);
> -	i915_gem_driver_remove(i915);
> -	i915_gem_driver_release(i915);
> -cleanup_modeset:
> -	/* FIXME */
> -	intel_modeset_driver_remove(i915);
> -	intel_irq_uninstall(i915);
> -	intel_modeset_driver_remove_noirq(i915);
> -out:
> -	return ret;
> -}
> -
> -/* part #1: call before irq uninstall */
> -static void i915_driver_modeset_remove(struct drm_i915_private *i915)
> -{
> -	intel_modeset_driver_remove(i915);
> -}
> -
> -/* part #2: call after irq uninstall */
> -static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915)
> -{
> -	intel_modeset_driver_remove_noirq(i915);
> -}
> -
>  static void intel_init_dpio(struct drm_i915_private *dev_priv)
>  {
>  	/*
> @@ -1502,7 +1450,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	if (ret < 0)
>  		goto out_cleanup_mmio;
>  
> -	ret = i915_driver_modeset_probe_noirq(i915);
> +	ret = intel_modeset_init_noirq(i915);
>  	if (ret < 0)
>  		goto out_cleanup_hw;
>  
> @@ -1510,10 +1458,20 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	if (ret)
>  		goto out_cleanup_modeset;
>  
> -	ret = i915_driver_modeset_probe(i915);
> -	if (ret < 0)
> +	/* Important: The output setup functions called by modeset_init need
> +	 * working irqs for e.g. gmbus and dp aux transfers. */
> +	ret = intel_modeset_init_nogem(i915);
> +	if (ret)
>  		goto out_cleanup_irq;
>  
> +	ret = i915_gem_init(i915);
> +	if (ret)
> +		goto out_cleanup_modeset;
> +
> +	ret = intel_modeset_init(i915);
> +	if (ret)
> +		goto out_cleanup_gem;
> +
>  	i915_driver_register(i915);
>  
>  	enable_rpm_wakeref_asserts(&i915->runtime_pm);
> @@ -1522,6 +1480,10 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  
>  	return 0;
>  
> +out_cleanup_gem:
> +	i915_gem_suspend(i915);
> +	i915_gem_driver_remove(i915);
> +	i915_gem_driver_release(i915);
>  out_cleanup_irq:
>  	intel_irq_uninstall(i915);
>  out_cleanup_modeset:
> @@ -1565,11 +1527,11 @@ void i915_driver_remove(struct drm_i915_private *i915)
>  
>  	intel_gvt_driver_remove(i915);
>  
> -	i915_driver_modeset_remove(i915);
> +	intel_modeset_driver_remove(i915);
>  
>  	intel_irq_uninstall(i915);
>  
> -	i915_driver_modeset_remove_noirq(i915);
> +	intel_modeset_driver_remove_noirq(i915);
>  
>  	i915_reset_error_state(i915);
>  	i915_gem_driver_remove(i915);
> -- 
> 2.20.1

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup, again
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (8 preceding siblings ...)
  2020-02-04 13:42 ` [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
@ 2020-02-05  1:42 ` Patchwork
  2020-02-05  2:05 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
  10 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2020-02-05  1:42 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: modeset probe/remove cleanup, again
URL   : https://patchwork.freedesktop.org/series/72967/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
bfd1d4acd77e drm/i915: register vga switcheroo later, unregister earlier
f9cd0e2c9313 drm/i915: switch i915_driver_probe() to use i915 local variable
ec3d44fffd64 drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
897afb1a1a69 drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
99a2a2e57bc4 drm/i915: split i915_driver_modeset_probe() to pre/post irq install
195344732323 drm/i915: split intel_modeset_init() to pre/post irq install
51b9df678a38 drm/i915: split intel_modeset_init() pre/post gem init
746a03a7f5f5 drm/i915: move more display related probe/remove stuff to display
3d71c701f713 drm/i915: remove the now redundant i915_driver_modeset_* call layer
-:96: WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line
#96: FILE: drivers/gpu/drm/i915/i915_drv.c:1462:
+	 * working irqs for e.g. gmbus and dp aux transfers. */

total: 0 errors, 1 warnings, 0 checks, 111 lines checked

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: modeset probe/remove cleanup, again
  2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
                   ` (9 preceding siblings ...)
  2020-02-05  1:42 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup, again Patchwork
@ 2020-02-05  2:05 ` Patchwork
  10 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2020-02-05  2:05 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: modeset probe/remove cleanup, again
URL   : https://patchwork.freedesktop.org/series/72967/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7867 -> Patchwork_16415
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_16415 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_16415, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_16415:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-hsw-4770:        [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-hsw-4770/igt@i915_module_load@reload-with-fault-injection.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-hsw-4770/igt@i915_module_load@reload-with-fault-injection.html
    - fi-whl-u:           [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-whl-u/igt@i915_module_load@reload-with-fault-injection.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-whl-u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-ilk-650:         [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-ilk-650/igt@i915_module_load@reload-with-fault-injection.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-ilk-650/igt@i915_module_load@reload-with-fault-injection.html
    - fi-ivb-3770:        NOTRUN -> [INCOMPLETE][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-ivb-3770/igt@i915_module_load@reload-with-fault-injection.html
    - fi-blb-e6850:       [PASS][8] -> [INCOMPLETE][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-blb-e6850/igt@i915_module_load@reload-with-fault-injection.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-blb-e6850/igt@i915_module_load@reload-with-fault-injection.html
    - fi-hsw-4770r:       [PASS][10] -> [INCOMPLETE][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-hsw-4770r/igt@i915_module_load@reload-with-fault-injection.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-hsw-4770r/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bwr-2160:        [PASS][12] -> [INCOMPLETE][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-bwr-2160/igt@i915_module_load@reload-with-fault-injection.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bwr-2160/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bdw-5557u:       NOTRUN -> [INCOMPLETE][14]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bdw-5557u/igt@i915_module_load@reload-with-fault-injection.html

  * igt@runner@aborted:
    - fi-ilk-650:         NOTRUN -> [FAIL][15]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-ilk-650/igt@runner@aborted.html
    - fi-cfl-8700k:       NOTRUN -> [FAIL][16]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cfl-8700k/igt@runner@aborted.html
    - fi-snb-2520m:       NOTRUN -> [FAIL][17]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-snb-2520m/igt@runner@aborted.html
    - fi-bdw-5557u:       NOTRUN -> [FAIL][18]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bdw-5557u/igt@runner@aborted.html
    - fi-byt-n2820:       NOTRUN -> [FAIL][19]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-byt-n2820/igt@runner@aborted.html
    - fi-whl-u:           NOTRUN -> [FAIL][20]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-whl-u/igt@runner@aborted.html
    - fi-ivb-3770:        NOTRUN -> [FAIL][21]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-ivb-3770/igt@runner@aborted.html
    - fi-cfl-guc:         NOTRUN -> [FAIL][22]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cfl-guc/igt@runner@aborted.html
    - fi-blb-e6850:       NOTRUN -> [FAIL][23]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-blb-e6850/igt@runner@aborted.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@runner@aborted:
    - {fi-ehl-1}:         NOTRUN -> [FAIL][24]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-ehl-1/igt@runner@aborted.html
    - {fi-tgl-u}:         NOTRUN -> [FAIL][25]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-tgl-u/igt@runner@aborted.html

  
Known issues
------------

  Here are the changes found in Patchwork_16415 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s0:
    - fi-cml-s:           [PASS][26] -> [FAIL][27] ([fdo#103375])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cml-s/igt@gem_exec_suspend@basic-s0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cml-s/igt@gem_exec_suspend@basic-s0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-8809g:       [PASS][28] -> [INCOMPLETE][29] ([fdo#103665] / [i915#879])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-kbl-8809g/igt@i915_module_load@reload-with-fault-injection.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-kbl-8809g/igt@i915_module_load@reload-with-fault-injection.html
    - fi-icl-guc:         [PASS][30] -> [INCOMPLETE][31] ([i915#140] / [i915#671])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cml-u2:          [PASS][32] -> [INCOMPLETE][33] ([i915#283])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bxt-dsi:         [PASS][34] -> [INCOMPLETE][35] ([fdo#103927])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cfl-guc:         [PASS][36] -> [INCOMPLETE][37] ([i915#505] / [i915#671])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cfl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cfl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-guc:         [PASS][38] -> [INCOMPLETE][39] ([i915#671])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-skl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-skl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-icl-u3:          [PASS][40] -> [INCOMPLETE][41] ([i915#140])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-u3/igt@i915_module_load@reload-with-fault-injection.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-u3/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cfl-8700k:       [PASS][42] -> [INCOMPLETE][43] ([i915#505])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
    - fi-icl-y:           [PASS][44] -> [INCOMPLETE][45] ([i915#140])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-y/igt@i915_module_load@reload-with-fault-injection.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-y/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-6700k2:      [PASS][46] -> [INCOMPLETE][47] ([i915#671])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
    - fi-elk-e7500:       [PASS][48] -> [INCOMPLETE][49] ([i915#66])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-elk-e7500/igt@i915_module_load@reload-with-fault-injection.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-elk-e7500/igt@i915_module_load@reload-with-fault-injection.html
    - fi-glk-dsi:         [PASS][50] -> [INCOMPLETE][51] ([i915#58] / [k.org#198133])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-glk-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-glk-dsi/igt@i915_module_load@reload-with-fault-injection.html
    - fi-snb-2520m:       [PASS][52] -> [INCOMPLETE][53] ([i915#82])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-snb-2520m/igt@i915_module_load@reload-with-fault-injection.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-snb-2520m/igt@i915_module_load@reload-with-fault-injection.html
    - fi-apl-guc:         [PASS][54] -> [INCOMPLETE][55] ([fdo#103927] / [i915#671])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-apl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-apl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bsw-kefka:       [PASS][56] -> [INCOMPLETE][57] ([fdo#105876])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-bsw-kefka/igt@i915_module_load@reload-with-fault-injection.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bsw-kefka/igt@i915_module_load@reload-with-fault-injection.html
    - fi-icl-dsi:         [PASS][58] -> [INCOMPLETE][59] ([i915#140])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-dsi/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-6770hq:      [PASS][60] -> [INCOMPLETE][61] ([i915#671])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
    - fi-pnv-d510:        [PASS][62] -> [INCOMPLETE][63] ([i915#299])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-pnv-d510/igt@i915_module_load@reload-with-fault-injection.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-pnv-d510/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-x1275:       [PASS][64] -> [INCOMPLETE][65] ([i915#879])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-guc:         [PASS][66] -> [INCOMPLETE][67] ([i915#671] / [i915#879])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-kbl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-kbl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bsw-nick:        [PASS][68] -> [INCOMPLETE][69] ([fdo#105876])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-bsw-nick/igt@i915_module_load@reload-with-fault-injection.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-bsw-nick/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-lmem:        [PASS][70] -> [INCOMPLETE][71] ([i915#671])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
    - fi-byt-n2820:       [PASS][72] -> [INCOMPLETE][73] ([i915#45])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-byt-n2820/igt@i915_module_load@reload-with-fault-injection.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-byt-n2820/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          [PASS][74] -> [FAIL][75] ([i915#217])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Warnings ####

  * igt@gem_exec_parallel@contexts:
    - fi-byt-n2820:       [TIMEOUT][76] ([fdo#112271] / [i915#1084]) -> [FAIL][77] ([i915#694])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-byt-n2820/igt@gem_exec_parallel@contexts.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-byt-n2820/igt@gem_exec_parallel@contexts.html

  * igt@gem_exec_parallel@fds:
    - fi-byt-n2820:       [TIMEOUT][78] ([fdo#112271]) -> [FAIL][79] ([i915#694])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-byt-n2820/igt@gem_exec_parallel@fds.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-byt-n2820/igt@gem_exec_parallel@fds.html

  * igt@gem_exec_suspend@basic-s3:
    - fi-cml-s:           [INCOMPLETE][80] ([i915#1078] / [i915#283]) -> [FAIL][81] ([fdo#103375])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cml-s/igt@gem_exec_suspend@basic-s3.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cml-s/igt@gem_exec_suspend@basic-s3.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-icl-u2:          [DMESG-WARN][82] ([i915#289]) -> [INCOMPLETE][83] ([i915#140])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-icl-u2/igt@i915_module_load@reload-with-fault-injection.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-icl-u2/igt@i915_module_load@reload-with-fault-injection.html

  * igt@runner@aborted:
    - fi-cml-s:           [FAIL][84] ([fdo#111012] / [fdo#111764] / [i915#577]) -> [FAIL][85] ([i915#577])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7867/fi-cml-s/igt@runner@aborted.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/fi-cml-s/igt@runner@aborted.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#105876]: https://bugs.freedesktop.org/show_bug.cgi?id=105876
  [fdo#111012]: https://bugs.freedesktop.org/show_bug.cgi?id=111012
  [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1078]: https://gitlab.freedesktop.org/drm/intel/issues/1078
  [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084
  [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#283]: https://gitlab.freedesktop.org/drm/intel/issues/283
  [i915#289]: https://gitlab.freedesktop.org/drm/intel/issues/289
  [i915#299]: https://gitlab.freedesktop.org/drm/intel/issues/299
  [i915#45]: https://gitlab.freedesktop.org/drm/intel/issues/45
  [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
  [i915#505]: https://gitlab.freedesktop.org/drm/intel/issues/505
  [i915#577]: https://gitlab.freedesktop.org/drm/intel/issues/577
  [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58
  [i915#66]: https://gitlab.freedesktop.org/drm/intel/issues/66
  [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
  [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#879]: https://gitlab.freedesktop.org/drm/intel/issues/879
  [i915#937]: https://gitlab.freedesktop.org/drm/intel/issues/937
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (42 -> 44)
------------------------------

  Additional (9): fi-bdw-5557u fi-bsw-n3050 fi-hsw-peppy fi-kbl-7500u fi-gdg-551 fi-ivb-3770 fi-kbl-r fi-skl-6600u fi-snb-2600 
  Missing    (7): fi-kbl-soraka fi-hsw-4200u fi-byt-squawks fi-ctg-p8600 fi-cfl-8109u fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7867 -> Patchwork_16415

  CI-20190529: 20190529
  CI_DRM_7867: a4c409e48c6281538b1e375545dfb5989fa02063 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5418: 4028bd390b41925f6e26f6f11b31e05054652527 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16415: 3d71c701f713e45918833205ac0e8d5d41b9cab9 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

3d71c701f713 drm/i915: remove the now redundant i915_driver_modeset_* call layer
746a03a7f5f5 drm/i915: move more display related probe/remove stuff to display
51b9df678a38 drm/i915: split intel_modeset_init() pre/post gem init
195344732323 drm/i915: split intel_modeset_init() to pre/post irq install
99a2a2e57bc4 drm/i915: split i915_driver_modeset_probe() to pre/post irq install
897afb1a1a69 drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
ec3d44fffd64 drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
f9cd0e2c9313 drm/i915: switch i915_driver_probe() to use i915 local variable
bfd1d4acd77e drm/i915: register vga switcheroo later, unregister earlier

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16415/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2020-02-05  2:05 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-04 13:42 [Intel-gfx] [PATCH 0/9] drm/i915: modeset probe/remove cleanup, again Jani Nikula
2020-02-04 13:42 ` [Intel-gfx] [PATCH 1/9] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
2020-02-04 13:42 ` [Intel-gfx] [PATCH 2/9] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
2020-02-04 13:42 ` [Intel-gfx] [PATCH 3/9] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
2020-02-04 14:46   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 4/9] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
2020-02-04 14:49   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 5/9] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
2020-02-04 14:53   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 6/9] drm/i915: split intel_modeset_init() " Jani Nikula
2020-02-04 14:59   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 7/9] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
2020-02-04 15:05   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 8/9] drm/i915: move more display related probe/remove stuff to display Jani Nikula
2020-02-04 15:11   ` Ville Syrjälä
2020-02-04 13:42 ` [Intel-gfx] [PATCH 9/9] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
2020-02-04 15:16   ` Ville Syrjälä
2020-02-05  1:42 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup, again Patchwork
2020-02-05  2:05 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork

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.