We'll need in some tests to control when the device needs to be added
and removed, so let's split the device creation from the DRM device
creation function.

Signed-off-by: Maxime Ripard <[email protected]>
---
 drivers/gpu/drm/tests/drm_client_modeset_test.c | 14 +++++++++++++-
 drivers/gpu/drm/tests/drm_kunit_helpers.c       | 23 ++++-------------------
 drivers/gpu/drm/tests/drm_kunit_helpers.h       |  5 ++++-
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/tests/drm_client_modeset_test.c 
b/drivers/gpu/drm/tests/drm_client_modeset_test.c
index 6920c3ffdfdf..fe95fda350ae 100644
--- a/drivers/gpu/drm/tests/drm_client_modeset_test.c
+++ b/drivers/gpu/drm/tests/drm_client_modeset_test.c
@@ -16,6 +16,7 @@
 
 struct drm_client_modeset_test_priv {
        struct drm_device *drm;
+       struct device *dev;
        struct drm_connector connector;
 };
 
@@ -41,7 +42,10 @@ static int drm_client_modeset_test_init(struct kunit *test)
 
        test->priv = priv;
 
-       priv->drm = drm_kunit_helper_alloc_drm_device(test, DRIVER_MODESET);
+       priv->dev = drm_kunit_helper_alloc_device(test);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->dev);
+
+       priv->drm = drm_kunit_helper_alloc_drm_device(test, priv->dev, 
DRIVER_MODESET);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->drm);
 
        ret = drmm_connector_init(priv->drm, &priv->connector,
@@ -55,6 +59,13 @@ static int drm_client_modeset_test_init(struct kunit *test)
        return 0;
 }
 
+static void drm_client_modeset_test_exit(struct kunit *test)
+{
+       struct drm_client_modeset_test_priv *priv = test->priv;
+
+       drm_kunit_helper_free_device(test, priv->dev);
+}
+
 static void drm_test_pick_cmdline_res_1920_1080_60(struct kunit *test)
 {
        struct drm_client_modeset_test_priv *priv = test->priv;
@@ -92,6 +103,7 @@ static struct kunit_case drm_test_pick_cmdline_tests[] = {
 static struct kunit_suite drm_test_pick_cmdline_test_suite = {
        .name = "drm_test_pick_cmdline",
        .init = drm_client_modeset_test_init,
+       .exit = drm_client_modeset_test_exit,
        .test_cases = drm_test_pick_cmdline_tests
 };
 
diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c 
b/drivers/gpu/drm/tests/drm_kunit_helpers.c
index 7f69f56f5892..2f974f45c5b4 100644
--- a/drivers/gpu/drm/tests/drm_kunit_helpers.c
+++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c
@@ -18,40 +18,25 @@ struct kunit_dev {
 static const struct drm_mode_config_funcs drm_mode_config_funcs = {
 };
 
-static int dev_init(struct kunit_resource *res, void *ptr)
+struct device *drm_kunit_helper_alloc_device(struct kunit *test)
 {
-       char *name = ptr;
-       struct device *dev;
-
-       dev = root_device_register(name);
-       if (IS_ERR(dev))
-               return PTR_ERR(dev);
-
-       res->data = dev;
-       return 0;
+       return root_device_register(FAKE_DEVICE_NAME);
 }
 
-static void dev_free(struct kunit_resource *res)
+void drm_kunit_helper_free_device(struct kunit *test, struct device *dev)
 {
-       struct device *dev = res->data;
-
        root_device_unregister(dev);
 }
 
 struct drm_device *
-drm_kunit_helper_alloc_drm_device(struct kunit *test,
+drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
                                  u32 features)
 {
        struct kunit_dev *kdev;
        struct drm_device *drm;
        struct drm_driver *driver;
-       struct device *dev;
        int ret;
 
-       dev = kunit_alloc_resource(test, dev_init, dev_free, GFP_KERNEL, 
FAKE_DEVICE_NAME);
-       if (!dev)
-               return ERR_PTR(-ENOMEM);
-
        driver = kunit_kzalloc(test, sizeof(*driver), GFP_KERNEL);
        if (!driver)
                return ERR_PTR(-ENOMEM);
diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.h 
b/drivers/gpu/drm/tests/drm_kunit_helpers.h
index 6c12b1426ba0..b4277fe92c38 100644
--- a/drivers/gpu/drm/tests/drm_kunit_helpers.h
+++ b/drivers/gpu/drm/tests/drm_kunit_helpers.h
@@ -6,8 +6,11 @@
 struct drm_device;
 struct kunit;
 
+struct device *drm_kunit_helper_alloc_device(struct kunit *test);
+void drm_kunit_helper_free_device(struct kunit *test, struct device *dev);
+
 struct drm_device *
-drm_kunit_helper_alloc_drm_device(struct kunit *test,
+drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
                                  u32 features);
 
 #endif // DRM_KUNIT_HELPERS_H_

-- 
2.38.1-b4-0.11.0-dev-d416f

Reply via email to