[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