@@ -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
};
@@ -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);
@@ -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_
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 <maxime@cerno.tech> --- 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(-)