Message ID | 20231024191002.1620-2-gcarlos@disroot.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Increase coverage on drm_framebuffer.c | expand |
Hi, On Tue, Oct 24, 2023 at 04:09:52PM -0300, Carlos Eduardo Gallo Filho wrote: > The dev_private member of drm_device is deprecated and its use should > be avoided. Stop using it by embedding the drm_device onto a mock struct > with a void pointer like dev_private, using it instead. > > Also start using drm_kunit_helper_alloc_drm_device() for allocating > the drm_device mock. > > Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org> > --- > v2: > - Start using drm_kunit_helper_alloc_drm_device() for drm_device mock. > - Rename struct drm_mock to drm_framebuffer_test_priv > --- > drivers/gpu/drm/tests/drm_framebuffer_test.c | 42 ++++++++++++++------ > 1 file changed, 29 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c > index f759d9f3b76e..9c6170edd5f7 100644 > --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c > +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c > @@ -8,8 +8,10 @@ > #include <kunit/test.h> > > #include <drm/drm_device.h> > +#include <drm/drm_drv.h> > #include <drm/drm_mode.h> > #include <drm/drm_fourcc.h> > +#include <drm/drm_kunit_helpers.h> > #include <drm/drm_print.h> > > #include "../drm_crtc_internal.h" > @@ -317,11 +319,17 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { > }, > }; > > +struct drm_framebuffer_test_priv { > + struct drm_device dev; > + void *private; > +}; > + I'm not super confident with using a void pointer to whatever the test wants it to be. Especially since it seems like you only use it to store whether the buffer has been created, so I guess this could just be converted to a boolean? > static struct drm_framebuffer *fb_create_mock(struct drm_device *dev, > struct drm_file *file_priv, > const struct drm_mode_fb_cmd2 *mode_cmd) > { > - int *buffer_created = dev->dev_private; > + struct drm_framebuffer_test_priv *priv = container_of(dev, typeof(*priv), dev); > + int *buffer_created = priv->private; > *buffer_created = 1; And then you just need to change that line to priv->buffer_created = true; Maxime
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c index f759d9f3b76e..9c6170edd5f7 100644 --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c @@ -8,8 +8,10 @@ #include <kunit/test.h> #include <drm/drm_device.h> +#include <drm/drm_drv.h> #include <drm/drm_mode.h> #include <drm/drm_fourcc.h> +#include <drm/drm_kunit_helpers.h> #include <drm/drm_print.h> #include "../drm_crtc_internal.h" @@ -317,11 +319,17 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { }, }; +struct drm_framebuffer_test_priv { + struct drm_device dev; + void *private; +}; + static struct drm_framebuffer *fb_create_mock(struct drm_device *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) { - int *buffer_created = dev->dev_private; + struct drm_framebuffer_test_priv *priv = container_of(dev, typeof(*priv), dev); + int *buffer_created = priv->private; *buffer_created = 1; return ERR_PTR(-EINVAL); } @@ -332,29 +340,37 @@ static struct drm_mode_config_funcs mock_config_funcs = { static int drm_framebuffer_test_init(struct kunit *test) { - struct drm_device *mock; + struct device *parent; + struct drm_framebuffer_test_priv *priv; + struct drm_device *dev; + + parent = drm_kunit_helper_alloc_device(test); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, parent); - mock = kunit_kzalloc(test, sizeof(*mock), GFP_KERNEL); - KUNIT_ASSERT_NOT_ERR_OR_NULL(test, mock); + priv = drm_kunit_helper_alloc_drm_device(test, parent, typeof(*priv), + dev, 0); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv); + dev = &priv->dev; - mock->mode_config.min_width = MIN_WIDTH; - mock->mode_config.max_width = MAX_WIDTH; - mock->mode_config.min_height = MIN_HEIGHT; - mock->mode_config.max_height = MAX_HEIGHT; - mock->mode_config.funcs = &mock_config_funcs; + dev->mode_config.min_width = MIN_WIDTH; + dev->mode_config.max_width = MAX_WIDTH; + dev->mode_config.min_height = MIN_HEIGHT; + dev->mode_config.max_height = MAX_HEIGHT; + dev->mode_config.funcs = &mock_config_funcs; - test->priv = mock; + test->priv = priv; return 0; } static void drm_test_framebuffer_create(struct kunit *test) { const struct drm_framebuffer_test *params = test->param_value; - struct drm_device *mock = test->priv; + struct drm_framebuffer_test_priv *priv = test->priv; + struct drm_device *dev = &priv->dev; int buffer_created = 0; - mock->dev_private = &buffer_created; - drm_internal_framebuffer_create(mock, ¶ms->cmd, NULL); + priv->private = &buffer_created; + drm_internal_framebuffer_create(dev, ¶ms->cmd, NULL); KUNIT_EXPECT_EQ(test, params->buffer_created, buffer_created); }
The dev_private member of drm_device is deprecated and its use should be avoided. Stop using it by embedding the drm_device onto a mock struct with a void pointer like dev_private, using it instead. Also start using drm_kunit_helper_alloc_drm_device() for allocating the drm_device mock. Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org> --- v2: - Start using drm_kunit_helper_alloc_drm_device() for drm_device mock. - Rename struct drm_mock to drm_framebuffer_test_priv --- drivers/gpu/drm/tests/drm_framebuffer_test.c | 42 ++++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-)