All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] drm/i915: modeset probe/remove cleanup
@ 2019-10-07 15:09 Jani Nikula
  2019-10-07 15:09 ` [PATCH 01/11] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
                   ` (12 more replies)
  0 siblings, 13 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Another attempt at trying to cleanup the probe/remove wrt
display. TL;DR: It's a mess.

I'm trying to chop up the intel_modeset_*() functions in intel_display.c
to smaller pieces, and eventually remove the extra
i915_driver_modeset_*() layer from i915_drv.c.

The intermediate steps aren't the prettiest. The error paths in
particular are hideous. (Not that they are great now.)

But I'm trying to probe (eh) if this would be a workable direction.

BR,
Jani.


Jani Nikula (11):
  drm/i915: register vga switcheroo later, unregister earlier
  drm/i915: switch i915_driver_probe() to use i915 local variable
  drm/i915: keep power domains init/remove calls at the same level
  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: move modeset probe failures down to intel_display.c
  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              | 183 +++++++------------
 3 files changed, 141 insertions(+), 127 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] 17+ messages in thread

* [PATCH 01/11] drm/i915: register vga switcheroo later, unregister earlier
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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>
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 9354924576c4..63d47d699305 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -289,12 +289,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;
-
 	/* must happen before intel_power_domains_init_hw() on VLV/CHV */
 	intel_update_rawclk(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;
@@ -356,8 +348,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);
@@ -1344,6 +1334,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_ERROR("Failed to register vga switcheroo!\n");
 }
 
 /**
@@ -1352,6 +1347,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] 17+ messages in thread

* [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
  2019-10-07 15:09 ` [PATCH 01/11] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 20:40   ` Chris Wilson
  2019-10-07 15:09 ` [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level Jani Nikula
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Prefer i915 over dev_priv where possible. No functional changes.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 42 ++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 63d47d699305..0abfece20c57 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1462,62 +1462,62 @@ 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;
 
 	ret = pci_enable_device(pdev);
 	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);
-	i915_ggtt_driver_release(dev_priv);
+	i915_driver_hw_remove(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] 17+ messages in thread

* [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
  2019-10-07 15:09 ` [PATCH 01/11] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
  2019-10-07 15:09 ` [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-08 12:14   ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 04/11] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Move intel_power_domains_init_hw() call one level higher, to be on the
same level as all the other intel_power_domains_*() calls in the
probe/remove paths.

This also moves the power domain hw init earlier in the sequence, along
with the dependent intel_update_rawclk() call. As far as I can tell
there should not be any other dependencies on the initalization that's
now done after these calls (vblank init, bios init, vga register).

Cc: Imre Deak <imre.deak@intel.com>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 0abfece20c57..16ac5e88e1ec 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -289,11 +289,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	if (ret)
 		goto out;
 
-	/* must happen before intel_power_domains_init_hw() on VLV/CHV */
-	intel_update_rawclk(i915);
-
-	intel_power_domains_init_hw(i915, false);
-
 	intel_csr_ucode_init(i915);
 
 	ret = intel_irq_install(i915);
@@ -336,7 +331,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 	intel_irq_uninstall(i915);
 cleanup_csr:
 	intel_csr_ucode_fini(i915);
-	intel_power_domains_driver_remove(i915);
 	intel_vga_unregister(i915);
 out:
 	return ret;
@@ -1493,6 +1487,11 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret < 0)
 		goto out_cleanup_mmio;
 
+	/* must happen before intel_power_domains_init_hw() on VLV/CHV */
+	intel_update_rawclk(i915);
+
+	intel_power_domains_init_hw(i915, false);
+
 	ret = i915_driver_modeset_probe(i915);
 	if (ret < 0)
 		goto out_cleanup_hw;
@@ -1506,6 +1505,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	return 0;
 
 out_cleanup_hw:
+	intel_power_domains_driver_remove(i915);
 	i915_driver_hw_remove(i915);
 	i915_ggtt_driver_release(i915);
 out_cleanup_mmio:
-- 
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] 17+ messages in thread

* [PATCH 04/11] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (2 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 05/11] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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.

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              |  7 +++++++
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 05fb672a00b9..d78f2c908d8b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17066,6 +17066,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);
@@ -17073,14 +17074,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 2782f23ee887..d0705f338048 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -579,6 +579,7 @@ void intel_display_print_error_state(struct drm_i915_error_state_buf *e,
 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 16ac5e88e1ec..f0679139282d 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -327,6 +327,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:
@@ -340,6 +343,10 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
 {
 	intel_modeset_driver_remove(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] 17+ messages in thread

* [PATCH 05/11] drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (3 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 04/11] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 06/11] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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.

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 f0679139282d..c6fabe775046 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -339,12 +339,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);
@@ -1552,6 +1555,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);
+
 	/* Free error state after interrupts are fully disabled. */
 	cancel_delayed_work_sync(&i915->gt.hangcheck.work);
 	i915_reset_error_state(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] 17+ messages in thread

* [PATCH 06/11] drm/i915: split i915_driver_modeset_probe() to pre/post irq install
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (4 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 05/11] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 07/11] drm/i915: split intel_modeset_init() " Jani Nikula
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 42 +++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index c6fabe775046..cf3daa49a4d1 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -269,7 +269,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;
 
@@ -291,15 +292,25 @@ 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;
+
+	if (i915_inject_probe_failure(i915))
+		return -ENODEV;
 
 	/* 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)
@@ -326,15 +337,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_vga_unregister(i915);
 out:
 	return ret;
 }
@@ -1502,10 +1508,18 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	intel_power_domains_init_hw(i915, false);
 
-	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);
@@ -1514,6 +1528,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:
 	intel_power_domains_driver_remove(i915);
 	i915_driver_hw_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] 17+ messages in thread

* [PATCH 07/11] drm/i915: split intel_modeset_init() to pre/post irq install
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (5 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 06/11] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 08/11] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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.

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 d78f2c908d8b..2352c0b6b9fa 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -16187,11 +16187,9 @@ static void intel_mode_config_init(struct drm_i915_private *i915)
 	}
 }
 
-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);
@@ -16212,6 +16210,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 d0705f338048..568b641a38dd 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -577,6 +577,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_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 cf3daa49a4d1..3330e40724cb 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -292,8 +292,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] 17+ messages in thread

* [PATCH 08/11] drm/i915: split intel_modeset_init() pre/post gem init
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (6 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 07/11] drm/i915: split intel_modeset_init() " Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 09/11] drm/i915: move more display related probe/remove stuff to display Jani Nikula
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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.

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 2352c0b6b9fa..3e97d4d76900 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -16213,8 +16213,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;
@@ -16303,6 +16303,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 568b641a38dd..9d9085984992 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -578,6 +578,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_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 3330e40724cb..abd8bc0b0544 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -314,7 +314,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;
 
@@ -322,20 +322,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] 17+ messages in thread

* [PATCH 09/11] drm/i915: move more display related probe/remove stuff to display
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (7 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 08/11] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 10/11] drm/i915: move modeset probe failures down to intel_display.c Jani Nikula
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 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()

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 25 ++++++++++++++
 drivers/gpu/drm/i915/i915_drv.c              | 34 +-------------------
 2 files changed, 26 insertions(+), 33 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 3e97d4d76900..db79faffa7c7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -63,6 +63,7 @@
 #include "intel_bw.h"
 #include "intel_cdclk.h"
 #include "intel_color.h"
+#include "intel_csr.h"
 #include "intel_display_types.h"
 #include "intel_fbc.h"
 #include "intel_fbdev.h"
@@ -16192,6 +16193,21 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
 {
 	int ret;
 
+	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_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);
@@ -16211,6 +16227,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 */
@@ -17138,6 +17157,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 abd8bc0b0544..d092cc130acf 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -272,36 +272,10 @@ 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_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 */
@@ -351,12 +325,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] 17+ messages in thread

* [PATCH 10/11] drm/i915: move modeset probe failures down to intel_display.c
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (8 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 09/11] drm/i915: move more display related probe/remove stuff to display Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:09 ` [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Makes more sense, facilitates further cleanup.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 6 ++++++
 drivers/gpu/drm/i915/i915_drv.c              | 6 ------
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index db79faffa7c7..f4b9d4e29edc 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -16193,6 +16193,9 @@ 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));
@@ -16240,6 +16243,9 @@ int intel_modeset_init_nogem(struct drm_i915_private *i915)
 	struct intel_crtc *crtc;
 	int ret;
 
+	if (i915_inject_probe_failure(i915))
+		return -ENODEV;
+
 	intel_init_pm(i915);
 
 	intel_panel_sanitize_ssc(i915);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d092cc130acf..5a778944d7a8 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -272,9 +272,6 @@ 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)
 {
-	if (i915_inject_probe_failure(i915))
-		return -ENODEV;
-
 	return intel_modeset_init_noirq(i915);
 }
 
@@ -283,9 +280,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
 {
 	int ret;
 
-	if (i915_inject_probe_failure(i915))
-		return -ENODEV;
-
 	/* 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);
-- 
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] 17+ messages in thread

* [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (9 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 10/11] drm/i915: move modeset probe failures down to intel_display.c Jani Nikula
@ 2019-10-07 15:09 ` Jani Nikula
  2019-10-07 15:26   ` Chris Wilson
  2019-10-07 15:39 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup Patchwork
  2019-10-07 16:30 ` ✗ Fi.CI.BAT: failure " Patchwork
  12 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2019-10-07 15:09 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

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

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 5a778944d7a8..2e19e70b3963 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -269,58 +269,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)
 {
 	/*
@@ -1466,7 +1414,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	intel_power_domains_init_hw(i915, false);
 
-	ret = i915_driver_modeset_probe_noirq(i915);
+	ret = intel_modeset_init_noirq(i915);
 	if (ret < 0)
 		goto out_cleanup_hw;
 
@@ -1474,10 +1422,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);
@@ -1486,6 +1444,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:
@@ -1529,11 +1491,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);
 
 	/* Free error state after interrupts are fully disabled. */
 	cancel_delayed_work_sync(&i915->gt.hangcheck.work);
-- 
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] 17+ messages in thread

* Re: [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer
  2019-10-07 15:09 ` [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
@ 2019-10-07 15:26   ` Chris Wilson
  0 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-07 15:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Quoting Jani Nikula (2019-10-07 16:09:36)
> The i915_driver_modeset_*() functions have become irrelevant, and the
> extra layer can be removed.
> 
> 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 5a778944d7a8..2e19e70b3963 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -269,58 +269,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)
>  {
>         /*
> @@ -1466,7 +1414,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  
>         intel_power_domains_init_hw(i915, false);
>  
> -       ret = i915_driver_modeset_probe_noirq(i915);
> +       ret = intel_modeset_init_noirq(i915);
>         if (ret < 0)
>                 goto out_cleanup_hw;
>  
> @@ -1474,10 +1422,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;

Fwiw, I'm really digging the nomenclature, and I think it is the biggest
advance made in sorting out the init sequence.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (10 preceding siblings ...)
  2019-10-07 15:09 ` [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
@ 2019-10-07 15:39 ` Patchwork
  2019-10-07 16:30 ` ✗ Fi.CI.BAT: failure " Patchwork
  12 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-07 15:39 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

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

== Summary ==

$ dim checkpatch origin/drm-tip
4f485ace7f46 drm/i915: register vga switcheroo later, unregister earlier
4cea63d24b5c drm/i915: switch i915_driver_probe() to use i915 local variable
2a73bb27fbc4 drm/i915: keep power domains init/remove calls at the same level
247360baa07e drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
5032d68c656d drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
e83d085ced9a drm/i915: split i915_driver_modeset_probe() to pre/post irq install
6d6664633090 drm/i915: split intel_modeset_init() to pre/post irq install
69c89a6bb40d drm/i915: split intel_modeset_init() pre/post gem init
528fb2a4b001 drm/i915: move more display related probe/remove stuff to display
499509716c59 drm/i915: move modeset probe failures down to intel_display.c
5d53e56521e8 drm/i915: remove the now redundant i915_driver_modeset_* call layer
-:91: WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line
#91: FILE: drivers/gpu/drm/i915/i915_drv.c:1426:
+	 * 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] 17+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: modeset probe/remove cleanup
  2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
                   ` (11 preceding siblings ...)
  2019-10-07 15:39 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup Patchwork
@ 2019-10-07 16:30 ` Patchwork
  12 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2019-10-07 16:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

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

== Summary ==

CI Bug Log - changes from CI_DRM_7024 -> Patchwork_14691
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_14691 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_14691, 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_14691/index.html

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-cfl-guc:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-cfl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-guc:         [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cfl-8700k:       [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-6700k2:      [PASS][7] -> [INCOMPLETE][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
    - fi-blb-e6850:       [PASS][9] -> [INCOMPLETE][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-blb-e6850/igt@i915_module_load@reload-with-fault-injection.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-blb-e6850/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bwr-2160:        [PASS][11] -> [INCOMPLETE][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-bwr-2160/igt@i915_module_load@reload-with-fault-injection.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bwr-2160/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-guc:         [PASS][13] -> [INCOMPLETE][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cfl-8109u:       [PASS][15] -> [INCOMPLETE][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-cfl-8109u/igt@i915_module_load@reload-with-fault-injection.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-8109u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-lmem:        [PASS][17] -> [INCOMPLETE][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-r:           [PASS][19] -> [INCOMPLETE][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-r/igt@i915_module_load@reload-with-fault-injection.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-r/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-6260u:       [PASS][21] -> [INCOMPLETE][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-6260u/igt@i915_module_load@reload-with-fault-injection.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-6260u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-hsw-4770:        [PASS][23] -> [INCOMPLETE][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-hsw-4770/igt@i915_module_load@reload-with-fault-injection.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-hsw-4770/igt@i915_module_load@reload-with-fault-injection.html
    - fi-whl-u:           [PASS][25] -> [INCOMPLETE][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-whl-u/igt@i915_module_load@reload-with-fault-injection.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-whl-u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-ilk-650:         [PASS][27] -> [INCOMPLETE][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-ilk-650/igt@i915_module_load@reload-with-fault-injection.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-ilk-650/igt@i915_module_load@reload-with-fault-injection.html
    - fi-ivb-3770:        [PASS][29] -> [INCOMPLETE][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-ivb-3770/igt@i915_module_load@reload-with-fault-injection.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-ivb-3770/igt@i915_module_load@reload-with-fault-injection.html
    - fi-hsw-peppy:       [PASS][31] -> [INCOMPLETE][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-hsw-peppy/igt@i915_module_load@reload-with-fault-injection.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-hsw-peppy/igt@i915_module_load@reload-with-fault-injection.html
    - fi-hsw-4770r:       [PASS][33] -> [INCOMPLETE][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-hsw-4770r/igt@i915_module_load@reload-with-fault-injection.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-hsw-4770r/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-x1275:       [PASS][35] -> [INCOMPLETE][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
    - fi-kbl-7500u:       [PASS][37] -> [INCOMPLETE][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-7500u/igt@i915_module_load@reload-with-fault-injection.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-7500u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bdw-5557u:       [PASS][39] -> [INCOMPLETE][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-bdw-5557u/igt@i915_module_load@reload-with-fault-injection.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bdw-5557u/igt@i915_module_load@reload-with-fault-injection.html

  * igt@runner@aborted:
    - fi-ilk-650:         NOTRUN -> [FAIL][41]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-ilk-650/igt@runner@aborted.html
    - fi-cfl-8109u:       NOTRUN -> [FAIL][42]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-8109u/igt@runner@aborted.html
    - fi-whl-u:           NOTRUN -> [FAIL][43]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-whl-u/igt@runner@aborted.html
    - fi-cfl-guc:         NOTRUN -> [FAIL][44]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-guc/igt@runner@aborted.html
    - fi-bsw-n3050:       NOTRUN -> [FAIL][45]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bsw-n3050/igt@runner@aborted.html
    - fi-bsw-kefka:       NOTRUN -> [FAIL][46]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bsw-kefka/igt@runner@aborted.html
    - fi-cfl-8700k:       NOTRUN -> [FAIL][47]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cfl-8700k/igt@runner@aborted.html

  
#### Suppressed ####

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

  * igt@i915_module_load@reload-with-fault-injection:
    - {fi-tgl-u}:         [PASS][48] -> [INCOMPLETE][49]
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-tgl-u/igt@i915_module_load@reload-with-fault-injection.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-tgl-u/igt@i915_module_load@reload-with-fault-injection.html
    - {fi-kbl-soraka}:    [PASS][50] -> [INCOMPLETE][51]
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-soraka/igt@i915_module_load@reload-with-fault-injection.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-soraka/igt@i915_module_load@reload-with-fault-injection.html

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_flink_basic@flink-lifetime:
    - fi-icl-u3:          [PASS][53] -> [DMESG-WARN][54] ([fdo#107724])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-icl-u3/igt@gem_flink_basic@flink-lifetime.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-icl-u3/igt@gem_flink_basic@flink-lifetime.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-8809g:       [PASS][55] -> [INCOMPLETE][56] ([fdo#103665])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-8809g/igt@i915_module_load@reload-with-fault-injection.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-8809g/igt@i915_module_load@reload-with-fault-injection.html
    - fi-byt-j1900:       [PASS][57] -> [INCOMPLETE][58] ([fdo#102657])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-byt-j1900/igt@i915_module_load@reload-with-fault-injection.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-byt-j1900/igt@i915_module_load@reload-with-fault-injection.html
    - fi-elk-e7500:       [PASS][59] -> [INCOMPLETE][60] ([fdo#103989])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-elk-e7500/igt@i915_module_load@reload-with-fault-injection.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-elk-e7500/igt@i915_module_load@reload-with-fault-injection.html
    - fi-apl-guc:         [PASS][61] -> [INCOMPLETE][62] ([fdo#103927])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-apl-guc/igt@i915_module_load@reload-with-fault-injection.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-apl-guc/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bsw-kefka:       [PASS][63] -> [INCOMPLETE][64] ([fdo#105876])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-bsw-kefka/igt@i915_module_load@reload-with-fault-injection.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bsw-kefka/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-6600u:       [PASS][65] -> [INCOMPLETE][66] ([fdo#104108])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-6600u/igt@i915_module_load@reload-with-fault-injection.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-6600u/igt@i915_module_load@reload-with-fault-injection.html
    - fi-pnv-d510:        [PASS][67] -> [INCOMPLETE][68] ([fdo#110740])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-pnv-d510/igt@i915_module_load@reload-with-fault-injection.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-pnv-d510/igt@i915_module_load@reload-with-fault-injection.html
    - fi-gdg-551:         [PASS][69] -> [INCOMPLETE][70] ([fdo#108316])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-gdg-551/igt@i915_module_load@reload-with-fault-injection.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-gdg-551/igt@i915_module_load@reload-with-fault-injection.html
    - fi-byt-n2820:       [PASS][71] -> [INCOMPLETE][72] ([fdo#102657])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-byt-n2820/igt@i915_module_load@reload-with-fault-injection.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-byt-n2820/igt@i915_module_load@reload-with-fault-injection.html
    - fi-cml-u2:          [PASS][73] -> [INCOMPLETE][74] ([fdo#110566])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bxt-dsi:         [PASS][75] -> [INCOMPLETE][76] ([fdo#103927])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html
    - fi-snb-2600:        [PASS][77] -> [INCOMPLETE][78] ([fdo#105411])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-snb-2600/igt@i915_module_load@reload-with-fault-injection.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-snb-2600/igt@i915_module_load@reload-with-fault-injection.html
    - fi-icl-u3:          [PASS][79] -> [INCOMPLETE][80] ([fdo#107713])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-icl-u3/igt@i915_module_load@reload-with-fault-injection.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-icl-u3/igt@i915_module_load@reload-with-fault-injection.html
    - fi-bsw-n3050:       [PASS][81] -> [INCOMPLETE][82] ([fdo#105876])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-bsw-n3050/igt@i915_module_load@reload-with-fault-injection.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-bsw-n3050/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-iommu:       [PASS][83] -> [INCOMPLETE][84] ([fdo#104108])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-skl-iommu/igt@i915_module_load@reload-with-fault-injection.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-skl-iommu/igt@i915_module_load@reload-with-fault-injection.html
    - fi-glk-dsi:         [PASS][85] -> [INCOMPLETE][86] ([fdo#103359] / [k.org#198133])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-glk-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-glk-dsi/igt@i915_module_load@reload-with-fault-injection.html
    - fi-snb-2520m:       [PASS][87] -> [INCOMPLETE][88] ([fdo#105411])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-snb-2520m/igt@i915_module_load@reload-with-fault-injection.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-snb-2520m/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [PASS][89] -> [FAIL][90] ([fdo#111407])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Possible fixes ####

  * igt@gem_mmap_gtt@basic-write-gtt:
    - fi-icl-u3:          [DMESG-WARN][91] ([fdo#107724]) -> [PASS][92] +1 similar issue
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-icl-u3/igt@gem_mmap_gtt@basic-write-gtt.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-icl-u3/igt@gem_mmap_gtt@basic-write-gtt.html

  * igt@kms_chamelium@dp-edid-read:
    - fi-kbl-7500u:       [WARN][93] ([fdo#109483]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html

  
#### Warnings ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-icl-u2:          [DMESG-WARN][95] ([fdo#110595]) -> [INCOMPLETE][96] ([fdo#107713])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7024/fi-icl-u2/igt@i915_module_load@reload-with-fault-injection.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14691/fi-icl-u2/igt@i915_module_load@reload-with-fault-injection.html

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

  [fdo#102657]: https://bugs.freedesktop.org/show_bug.cgi?id=102657
  [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#103989]: https://bugs.freedesktop.org/show_bug.cgi?id=103989
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
  [fdo#105876]: https://bugs.freedesktop.org/show_bug.cgi?id=105876
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#108316]: https://bugs.freedesktop.org/show_bug.cgi?id=108316
  [fdo#109483]: https://bugs.freedesktop.org/show_bug.cgi?id=109483
  [fdo#110566]: https://bugs.freedesktop.org/show_bug.cgi?id=110566
  [fdo#110595]: https://bugs.freedesktop.org/show_bug.cgi?id=110595
  [fdo#110740]: https://bugs.freedesktop.org/show_bug.cgi?id=110740
  [fdo#111381]: https://bugs.freedesktop.org/show_bug.cgi?id=111381
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (52 -> 45)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7024 -> Patchwork_14691

  CI-20190529: 20190529
  CI_DRM_7024: b149aba92ace27b28e068c2541270653c23bca75 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5215: 880c8d3c9831349a269ac6822c8d44e80807089f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14691: 5d53e56521e87c9f2b703626457847035c1aba91 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

5d53e56521e8 drm/i915: remove the now redundant i915_driver_modeset_* call layer
499509716c59 drm/i915: move modeset probe failures down to intel_display.c
528fb2a4b001 drm/i915: move more display related probe/remove stuff to display
69c89a6bb40d drm/i915: split intel_modeset_init() pre/post gem init
6d6664633090 drm/i915: split intel_modeset_init() to pre/post irq install
e83d085ced9a drm/i915: split i915_driver_modeset_probe() to pre/post irq install
5032d68c656d drm/i915: split i915_driver_modeset_remove() to pre/post irq uninstall
247360baa07e drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall
2a73bb27fbc4 drm/i915: keep power domains init/remove calls at the same level
4cea63d24b5c drm/i915: switch i915_driver_probe() to use i915 local variable
4f485ace7f46 drm/i915: register vga switcheroo later, unregister earlier

== Logs ==

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

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

* Re: [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable
  2019-10-07 15:09 ` [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
@ 2019-10-07 20:40   ` Chris Wilson
  0 siblings, 0 replies; 17+ messages in thread
From: Chris Wilson @ 2019-10-07 20:40 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Quoting Jani Nikula (2019-10-07 16:09:27)
> Prefer i915 over dev_priv where possible. No functional changes.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level
  2019-10-07 15:09 ` [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level Jani Nikula
@ 2019-10-08 12:14   ` Jani Nikula
  0 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2019-10-08 12:14 UTC (permalink / raw)
  To: intel-gfx

On Mon, 07 Oct 2019, Jani Nikula <jani.nikula@intel.com> wrote:
> Move intel_power_domains_init_hw() call one level higher, to be on the
> same level as all the other intel_power_domains_*() calls in the
> probe/remove paths.
>
> This also moves the power domain hw init earlier in the sequence, along
> with the dependent intel_update_rawclk() call. As far as I can tell
> there should not be any other dependencies on the initalization that's
> now done after these calls (vblank init, bios init, vga register).

As Imre told me, the power domain code depends on both the vga and bios
inits. Drawing board, here we go again.

BR,
Jani.


>
> Cc: Imre Deak <imre.deak@intel.com>
> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 0abfece20c57..16ac5e88e1ec 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -289,11 +289,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	if (ret)
>  		goto out;
>  
> -	/* must happen before intel_power_domains_init_hw() on VLV/CHV */
> -	intel_update_rawclk(i915);
> -
> -	intel_power_domains_init_hw(i915, false);
> -
>  	intel_csr_ucode_init(i915);
>  
>  	ret = intel_irq_install(i915);
> @@ -336,7 +331,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
>  	intel_irq_uninstall(i915);
>  cleanup_csr:
>  	intel_csr_ucode_fini(i915);
> -	intel_power_domains_driver_remove(i915);
>  	intel_vga_unregister(i915);
>  out:
>  	return ret;
> @@ -1493,6 +1487,11 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	if (ret < 0)
>  		goto out_cleanup_mmio;
>  
> +	/* must happen before intel_power_domains_init_hw() on VLV/CHV */
> +	intel_update_rawclk(i915);
> +
> +	intel_power_domains_init_hw(i915, false);
> +
>  	ret = i915_driver_modeset_probe(i915);
>  	if (ret < 0)
>  		goto out_cleanup_hw;
> @@ -1506,6 +1505,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	return 0;
>  
>  out_cleanup_hw:
> +	intel_power_domains_driver_remove(i915);
>  	i915_driver_hw_remove(i915);
>  	i915_ggtt_driver_release(i915);
>  out_cleanup_mmio:

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2019-10-08 12:14 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-07 15:09 [PATCH 00/11] drm/i915: modeset probe/remove cleanup Jani Nikula
2019-10-07 15:09 ` [PATCH 01/11] drm/i915: register vga switcheroo later, unregister earlier Jani Nikula
2019-10-07 15:09 ` [PATCH 02/11] drm/i915: switch i915_driver_probe() to use i915 local variable Jani Nikula
2019-10-07 20:40   ` Chris Wilson
2019-10-07 15:09 ` [PATCH 03/11] drm/i915: keep power domains init/remove calls at the same level Jani Nikula
2019-10-08 12:14   ` Jani Nikula
2019-10-07 15:09 ` [PATCH 04/11] drm/i915: split intel_modeset_driver_remove() to pre/post irq uninstall Jani Nikula
2019-10-07 15:09 ` [PATCH 05/11] drm/i915: split i915_driver_modeset_remove() " Jani Nikula
2019-10-07 15:09 ` [PATCH 06/11] drm/i915: split i915_driver_modeset_probe() to pre/post irq install Jani Nikula
2019-10-07 15:09 ` [PATCH 07/11] drm/i915: split intel_modeset_init() " Jani Nikula
2019-10-07 15:09 ` [PATCH 08/11] drm/i915: split intel_modeset_init() pre/post gem init Jani Nikula
2019-10-07 15:09 ` [PATCH 09/11] drm/i915: move more display related probe/remove stuff to display Jani Nikula
2019-10-07 15:09 ` [PATCH 10/11] drm/i915: move modeset probe failures down to intel_display.c Jani Nikula
2019-10-07 15:09 ` [PATCH 11/11] drm/i915: remove the now redundant i915_driver_modeset_* call layer Jani Nikula
2019-10-07 15:26   ` Chris Wilson
2019-10-07 15:39 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: modeset probe/remove cleanup Patchwork
2019-10-07 16:30 ` ✗ 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.