[PATCH] drm/i915: Exercise device remove before first bind

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Mon Aug 3 14:32:39 UTC 2020


Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig.debug |  1 +
 drivers/gpu/drm/i915/i915_pci.c    | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 206882e154bc..49a165b889d8 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -162,6 +162,7 @@ config DRM_I915_SELFTEST
 	select DRM_EXPORT_FOR_TESTS if m
 	select FAULT_INJECTION
 	select PRIME_NUMBERS
+	select DEBUG_TEST_DRIVER_REMOVE
 	help
 	  Choose this option to allow the driver to perform selftests upon
 	  loading; also requires the i915.selftest=1 module parameter. To
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 366ddfc8df6b..fac1dd56ca62 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -1098,6 +1098,18 @@ static struct pci_driver i915_pci_driver = {
 	.driver.pm = &i915_pm_ops,
 };
 
+static void i915_fake_remove(struct pci_dev *pdev)
+{
+	i915_pci_driver.remove = i915_pci_remove;
+}
+
+static int i915_fake_probe(struct pci_dev *pdev,
+			   const struct pci_device_id *ent)
+{
+	i915_pci_driver.probe = i915_pci_probe;
+	return 0;
+}
+
 static int __init i915_init(void)
 {
 	bool use_kms = true;
@@ -1129,6 +1141,11 @@ static int __init i915_init(void)
 		return 0;
 	}
 
+	if (IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE)) {
+		/* let really_probe() remove the device before first bind */
+		i915_pci_driver.probe = i915_fake_probe;
+		i915_pci_driver.remove = i915_fake_remove;
+	}
 	err = pci_register_driver(&i915_pci_driver);
 	if (err)
 		return err;
-- 
2.21.1



More information about the Intel-gfx-trybot mailing list