The big change is device_add so that device_del can auto-cleanup
devres resources. This allows us to use devm_drm_dev_alloc, which
removes the last user of drm_dev_init.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
---
 .../gpu/drm/i915/selftests/mock_gem_device.c  | 31 +++++++++----------
 .../gpu/drm/i915/selftests/mock_gem_device.h  |  2 +-
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c 
b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 03607647cdeb..ea73d1f7cf12 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -123,12 +123,6 @@ struct drm_i915_private *mock_gem_device(void)
        pdev = kzalloc(sizeof(*pdev), GFP_KERNEL);
        if (!pdev)
                return NULL;
-       i915 = kzalloc(sizeof(*i915), GFP_KERNEL);
-       if (!i915) {
-               kfree(pdev);
-               return NULL;
-       }
-
        device_initialize(&pdev->dev);
        pdev->class = PCI_BASE_CLASS_DISPLAY << 16;
        pdev->dev.release = release_dev;
@@ -139,8 +133,23 @@ struct drm_i915_private *mock_gem_device(void)
        /* hack to disable iommu for the fake device; force identity mapping */
        pdev->dev.archdata.iommu = (void *)-1;
 #endif
+       err = device_add(&pdev->dev);
+       if (err) {
+               kfree(pdev);
+               return NULL;
+       }
+
+       i915 = devm_drm_dev_alloc(&pdev->dev, &mock_driver,
+                                 struct drm_i915_private, drm);
+       if (err) {
+               pr_err("Failed to allocate mock GEM device: err=%d\n", err);
+               put_device(&pdev->dev);
+
+               return NULL;
+       }
 
        pci_set_drvdata(pdev, i915);
+       i915->drm.pdev = pdev;
 
        dev_pm_domain_set(&pdev->dev, &pm_domain);
        pm_runtime_enable(&pdev->dev);
@@ -148,16 +157,6 @@ struct drm_i915_private *mock_gem_device(void)
        if (pm_runtime_enabled(&pdev->dev))
                WARN_ON(pm_runtime_get_sync(&pdev->dev));
 
-       err = drm_dev_init(&i915->drm, &mock_driver, &pdev->dev);
-       if (err) {
-               pr_err("Failed to initialise mock GEM device: err=%d\n", err);
-               put_device(&pdev->dev);
-               kfree(i915);
-
-               return NULL;
-       }
-       i915->drm.pdev = pdev;
-       drmm_add_final_kfree(&i915->drm, i915);
 
        intel_runtime_pm_init_early(&i915->runtime_pm);
 
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.h 
b/drivers/gpu/drm/i915/selftests/mock_gem_device.h
index 2e3c7585a7bb..4f309a05c85a 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.h
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.h
@@ -9,7 +9,7 @@ void mock_device_flush(struct drm_i915_private *i915);
 
 static inline void mock_destroy_device(struct drm_i915_private *i915)
 {
-       drm_dev_put(&i915->drm);
+       device_del(i915->drm.dev);
 }
 
 #endif /* !__MOCK_GEM_DEVICE_H__ */
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to