* [PATCH v3 0/9] Increase coverage on drm_framebuffer.c
@ 2024-07-03 17:22 Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests Carlos Eduardo Gallo Filho
` (8 more replies)
0 siblings, 9 replies; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
This patchset includes new KUnit tests for 5 untested functions from
drm_framebuffer.c and improvements to the existent one.
The first patch replace the use of dev_private member from drm_device
mock on the existent test by embedding it into an outer struct containing
a generic pointer.
The patches 2 and 4 extends the test of drm_internal_framebuffer_create()
by creating a new test case and adding new parameters to the existent case.
The patch 3 just replace a strcpy() call to strscpy().
Finally, the remainder of this set contains 5 new test cases, one for each
of the follow functions:
- drm_framebuffer_check_src_coords()
- drm_framebuffer_cleanup()
- drm_framebuffer_lookup()
- drm_framebuffer_init()
- drm_framebuffer_free()
---
v3:
- Drop drm_mode_addfb2 and drm_fb_release tests (patches 10 and 11 from v2)
---
Carlos Eduardo Gallo Filho (9):
drm/tests: Stop using deprecated dev_private member on drm_framebuffer
tests
drm/tests: Add parameters to the drm_test_framebuffer_create test
drm/tests: Replace strcpy to strscpy on drm_test_framebuffer_create
test
drm/tests: Add test case for drm_internal_framebuffer_create()
drm/tests: Add test for drm_framebuffer_check_src_coords()
drm/tests: Add test for drm_framebuffer_cleanup()
drm/tests: Add test for drm_framebuffer_lookup()
drm/tests: Add test for drm_framebuffer_init()
drm/tests: Add test for drm_framebuffer_free()
drivers/gpu/drm/drm_framebuffer.c | 1 +
drivers/gpu/drm/tests/drm_framebuffer_test.c | 360 ++++++++++++++++++-
2 files changed, 344 insertions(+), 17 deletions(-)
--
2.44.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:24 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test Carlos Eduardo Gallo Filho
` (7 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
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.
The new mock struct allows to share variables and even further mocks
over the tests in a cleaner way than using dev_private void pointer.
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
v3:
- Replace the use of void pointer on drm_framebuffer_test_priv struct.
- Document struct drm_framebuffer_test_priv here.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 54 ++++++++++++++------
1 file changed, 38 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 06f03b78c9c4..3882a88b6631 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,12 +319,25 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = {
},
};
+/*
+ * This struct is intended to provide a way to mocked functions communicate
+ * with the outer test when it can't be achieved by using its return value. In
+ * this way, the functions that receive the mocked drm_device, for example, can
+ * grab a reference to this and actually return something to be used on some
+ * expectation.
+ */
+struct drm_framebuffer_test_priv {
+ struct drm_device dev;
+ bool buffer_created;
+};
+
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;
- *buffer_created = 1;
+ struct drm_framebuffer_test_priv *priv = container_of(dev, typeof(*priv), dev);
+
+ priv->buffer_created = true;
return ERR_PTR(-EINVAL);
}
@@ -332,30 +347,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;
- int buffer_created = 0;
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
- mock->dev_private = &buffer_created;
- drm_internal_framebuffer_create(mock, ¶ms->cmd, NULL);
- KUNIT_EXPECT_EQ(test, params->buffer_created, buffer_created);
+ priv->buffer_created = false;
+ drm_internal_framebuffer_create(dev, ¶ms->cmd, NULL);
+ KUNIT_EXPECT_EQ(test, params->buffer_created, priv->buffer_created);
}
static void drm_framebuffer_test_to_desc(const struct drm_framebuffer_test *t, char *desc)
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:25 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on " Carlos Eduardo Gallo Filho
` (6 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Extend the existing test case to cover:
1. Invalid flag atribute in the struct drm_mode_fb_cmd2.
2. Pixel format which requires non-linear modifier with
DRM_FORMAT_MOD_LINEAR set.
3. Buffer offset for inexistent plane
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Remove strcpy to strscpy change.
v3:
- Rename and commment the "Buffer offset for inexistent plane"
test case.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 27 ++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 3882a88b6631..3ed987423322 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -21,6 +21,8 @@
#define MIN_HEIGHT 4
#define MAX_HEIGHT 4096
+#define DRM_MODE_FB_INVALID BIT(2)
+
struct drm_framebuffer_test {
int buffer_created;
struct drm_mode_fb_cmd2 cmd;
@@ -85,6 +87,24 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = {
.pitches = { 4 * MAX_WIDTH, 0, 0 },
}
},
+
+/*
+ * All entries in members that represents per-plane values (@modifier, @handles,
+ * @pitches and @offsets) must be zero when unused.
+ */
+{ .buffer_created = 0, .name = "ABGR8888 Buffer offset for inexistent plane",
+ .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_ABGR8888,
+ .handles = { 1, 0, 0 }, .offsets = { UINT_MAX / 2, UINT_MAX / 2, 0 },
+ .pitches = { 4 * MAX_WIDTH, 0, 0 }, .flags = DRM_MODE_FB_MODIFIERS,
+ }
+},
+
+{ .buffer_created = 0, .name = "ABGR8888 Invalid flag",
+ .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_ABGR8888,
+ .handles = { 1, 0, 0 }, .offsets = { UINT_MAX / 2, 0, 0 },
+ .pitches = { 4 * MAX_WIDTH, 0, 0 }, .flags = DRM_MODE_FB_INVALID,
+ }
+},
{ .buffer_created = 1, .name = "ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers",
.cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_ABGR8888,
.handles = { 1, 0, 0 }, .offsets = { UINT_MAX / 2, 0, 0 },
@@ -264,6 +284,13 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = {
.pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) },
}
},
+{ .buffer_created = 0, .name = "YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)",
+ .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YUV420_10BIT,
+ .handles = { 1, 0, 0 }, .flags = DRM_MODE_FB_MODIFIERS,
+ .modifier = { DRM_FORMAT_MOD_LINEAR, 0, 0 },
+ .pitches = { MAX_WIDTH, 0, 0 },
+ }
+},
{ .buffer_created = 1, .name = "X0L2 Normal sizes",
.cmd = { .width = 600, .height = 600, .pixel_format = DRM_FORMAT_X0L2,
.handles = { 1, 0, 0 }, .pitches = { 1200, 0, 0 }
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on drm_test_framebuffer_create test
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:25 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create() Carlos Eduardo Gallo Filho
` (5 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Replace the use of strcpy to strscpy on the test_to_desc of the
drm_test_framebuffer_create test for better security and reliability.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 3ed987423322..4b1884be9d7a 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -409,7 +409,7 @@ static void drm_test_framebuffer_create(struct kunit *test)
static void drm_framebuffer_test_to_desc(const struct drm_framebuffer_test *t, char *desc)
{
- strcpy(desc, t->name);
+ strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
}
KUNIT_ARRAY_PARAM(drm_framebuffer_create, drm_framebuffer_create_cases,
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (2 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on " Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:28 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords() Carlos Eduardo Gallo Filho
` (4 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Introduce a test to cover the creation of framebuffer with
modifier on a device that doesn't support it.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Reorder kunit cases alphabetically.
v3:
- Replace the use of void pointer on drm_framebuffer_test_priv struct.
- Test return value of drm_internal_framebuffer_create().
- Change test documentation to don't rely on another test.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 25 ++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 4b1884be9d7a..22966ebfe9cb 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -415,8 +415,33 @@ static void drm_framebuffer_test_to_desc(const struct drm_framebuffer_test *t, c
KUNIT_ARRAY_PARAM(drm_framebuffer_create, drm_framebuffer_create_cases,
drm_framebuffer_test_to_desc);
+/* Tries to create a framebuffer with modifiers without drm_device supporting it */
+static void drm_test_framebuffer_modifiers_not_supported(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_framebuffer *fb;
+
+ /* A valid cmd with modifier */
+ struct drm_mode_fb_cmd2 cmd = {
+ .width = MAX_WIDTH, .height = MAX_HEIGHT,
+ .pixel_format = DRM_FORMAT_ABGR8888, .handles = { 1, 0, 0 },
+ .offsets = { UINT_MAX / 2, 0, 0 }, .pitches = { 4 * MAX_WIDTH, 0, 0 },
+ .flags = DRM_MODE_FB_MODIFIERS,
+ };
+
+ priv->buffer_created = false;
+ dev->mode_config.fb_modifiers_not_supported = 1;
+
+ fb = drm_internal_framebuffer_create(dev, &cmd, NULL);
+ KUNIT_EXPECT_EQ(test, false, priv->buffer_created);
+ KUNIT_ASSERT_EQ(test, IS_ERR(fb), true);
+ KUNIT_EXPECT_EQ(test, PTR_ERR(fb), -EINVAL);
+}
+
static struct kunit_case drm_framebuffer_tests[] = {
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
+ KUNIT_CASE(drm_test_framebuffer_modifiers_not_supported),
{ }
};
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (3 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create() Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:28 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup() Carlos Eduardo Gallo Filho
` (3 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Add a parametrized test for the drm_framebuffer_check_src_coords function.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Order kunit cases alphabetically.
- Rename check_src_coords_case to drm_framebuffer_check_src_coords_case.
- Remove unnecessary comments.
- Add framebuffer size as a parameter and use edge values.
---
drivers/gpu/drm/drm_framebuffer.c | 1 +
drivers/gpu/drm/tests/drm_framebuffer_test.c | 61 ++++++++++++++++++++
2 files changed, 62 insertions(+)
diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
index 888aadb6a4ac..9cd85ac789bb 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -99,6 +99,7 @@ int drm_framebuffer_check_src_coords(uint32_t src_x, uint32_t src_y,
return 0;
}
+EXPORT_SYMBOL_FOR_TESTS_ONLY(drm_framebuffer_check_src_coords);
/**
* drm_mode_addfb - add an FB to the graphics configuration
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 22966ebfe9cb..1a1c09c0326d 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -10,6 +10,7 @@
#include <drm/drm_device.h>
#include <drm/drm_drv.h>
#include <drm/drm_mode.h>
+#include <drm/drm_framebuffer.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_kunit_helpers.h>
#include <drm/drm_print.h>
@@ -439,7 +440,67 @@ static void drm_test_framebuffer_modifiers_not_supported(struct kunit *test)
KUNIT_EXPECT_EQ(test, PTR_ERR(fb), -EINVAL);
}
+/* Parameters for testing drm_framebuffer_check_src_coords function */
+struct drm_framebuffer_check_src_coords_case {
+ const char *name;
+ const int expect;
+ const unsigned int fb_size;
+ const uint32_t src_x;
+ const uint32_t src_y;
+
+ /* Deltas to be applied on source */
+ const uint32_t dsrc_w;
+ const uint32_t dsrc_h;
+};
+
+static const struct drm_framebuffer_check_src_coords_case
+drm_framebuffer_check_src_coords_cases[] = {
+ { .name = "Success: source fits into fb",
+ .expect = 0,
+ },
+ { .name = "Fail: overflowing fb with x-axis coordinate",
+ .expect = -ENOSPC, .src_x = 1, .fb_size = UINT_MAX,
+ },
+ { .name = "Fail: overflowing fb with y-axis coordinate",
+ .expect = -ENOSPC, .src_y = 1, .fb_size = UINT_MAX,
+ },
+ { .name = "Fail: overflowing fb with source width",
+ .expect = -ENOSPC, .dsrc_w = 1, .fb_size = UINT_MAX - 1,
+ },
+ { .name = "Fail: overflowing fb with source height",
+ .expect = -ENOSPC, .dsrc_h = 1, .fb_size = UINT_MAX - 1,
+ },
+};
+
+static void drm_test_framebuffer_check_src_coords(struct kunit *test)
+{
+ const struct drm_framebuffer_check_src_coords_case *params = test->param_value;
+ const uint32_t src_x = params->src_x;
+ const uint32_t src_y = params->src_y;
+ const uint32_t src_w = (params->fb_size << 16) + params->dsrc_w;
+ const uint32_t src_h = (params->fb_size << 16) + params->dsrc_h;
+ const struct drm_framebuffer fb = {
+ .width = params->fb_size,
+ .height = params->fb_size
+ };
+ int ret;
+
+ ret = drm_framebuffer_check_src_coords(src_x, src_y, src_w, src_h, &fb);
+ KUNIT_EXPECT_EQ(test, ret, params->expect);
+}
+
+static void
+check_src_coords_test_to_desc(const struct drm_framebuffer_check_src_coords_case *t,
+ char *desc)
+{
+ strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(check_src_coords, drm_framebuffer_check_src_coords_cases,
+ check_src_coords_test_to_desc);
+
static struct kunit_case drm_framebuffer_tests[] = {
+ KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
KUNIT_CASE(drm_test_framebuffer_modifiers_not_supported),
{ }
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (4 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords() Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:29 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup() Carlos Eduardo Gallo Filho
` (2 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Add a single KUnit test case for the drm_framebuffer_cleanup function.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Reorder kunit cases alphabetically.
- Rely on drm_kunit_helper_alloc_device() for mock initialization.
v3:
- Init framebuffers using drm_framebuffer_init().
- Add documentation.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 32 ++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 1a1c09c0326d..4d0807e1090d 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -499,8 +499,40 @@ check_src_coords_test_to_desc(const struct drm_framebuffer_check_src_coords_case
KUNIT_ARRAY_PARAM(check_src_coords, drm_framebuffer_check_src_coords_cases,
check_src_coords_test_to_desc);
+/*
+ * Test if drm_framebuffer_cleanup() really pops out the framebuffer object
+ * from device's fb_list and decrement the number of framebuffers for that
+ * device, which is the only things it does.
+ */
+static void drm_test_framebuffer_cleanup(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct list_head *fb_list = &dev->mode_config.fb_list;
+ struct drm_format_info format = { };
+ struct drm_framebuffer fb1 = { .dev = dev, .format = &format };
+ struct drm_framebuffer fb2 = { .dev = dev, .format = &format };
+
+ /* This will result on [fb_list] -> fb2 -> fb1 */
+ drm_framebuffer_init(dev, &fb1, NULL);
+ drm_framebuffer_init(dev, &fb2, NULL);
+
+ drm_framebuffer_cleanup(&fb1);
+
+ /* Now fb2 is the only one element on fb_list */
+ KUNIT_ASSERT_TRUE(test, list_is_singular(&fb2.head));
+ KUNIT_ASSERT_EQ(test, dev->mode_config.num_fb, 1);
+
+ drm_framebuffer_cleanup(&fb2);
+
+ /* Now fb_list is empty */
+ KUNIT_ASSERT_TRUE(test, list_empty(fb_list));
+ KUNIT_ASSERT_EQ(test, dev->mode_config.num_fb, 0);
+}
+
static struct kunit_case drm_framebuffer_tests[] = {
KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
+ KUNIT_CASE(drm_test_framebuffer_cleanup),
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
KUNIT_CASE(drm_test_framebuffer_modifiers_not_supported),
{ }
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (5 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup() Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-08 11:29 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init() Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free() Carlos Eduardo Gallo Filho
8 siblings, 1 reply; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Add two KUnit test cases for the drm_framebuffer_lookup function, one for
the base case, that tests if the lookup finds the correct framebuffer object
and another that tests the lookup for an inexistent framebuffer.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Reorder kunit cases alphabetically.
- Replace drm_mode_object_add() call to drm_framebuffer_init().
- Rely on drm_kunit_helper_alloc_device() for mock initialization.
v3:
- Rename framebuffer variables.
- Add documentation.
- Split the lookup for inexistent framebuffer into another test.
- Call drm_framebuffer_put after lookup on drm_test_framebuffer_lookup test.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 41 ++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 4d0807e1090d..54829e832c5e 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -530,10 +530,51 @@ static void drm_test_framebuffer_cleanup(struct kunit *test)
KUNIT_ASSERT_EQ(test, dev->mode_config.num_fb, 0);
}
+/*
+ * Initialize a framebuffer, lookup its id and test if the returned reference
+ * matches.
+ */
+static void drm_test_framebuffer_lookup(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_format_info format = { };
+ struct drm_framebuffer expected_fb = { .dev = dev, .format = &format };
+ struct drm_framebuffer *returned_fb;
+ uint32_t id = 0;
+ int ret;
+
+ ret = drm_framebuffer_init(dev, &expected_fb, NULL);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+ id = expected_fb.base.id;
+
+ /* Looking for expected_fb */
+ returned_fb = drm_framebuffer_lookup(dev, NULL, id);
+ KUNIT_EXPECT_PTR_EQ(test, returned_fb, &expected_fb);
+ drm_framebuffer_put(returned_fb);
+
+ drm_framebuffer_cleanup(&expected_fb);
+}
+
+/* Try to lookup an id that is not linked to a framebuffer */
+static void drm_test_framebuffer_lookup_inexistent(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_framebuffer *fb;
+ uint32_t id = 0;
+
+ /* Looking for an inexistent framebuffer */
+ fb = drm_framebuffer_lookup(dev, NULL, id);
+ KUNIT_EXPECT_NULL(test, fb);
+}
+
static struct kunit_case drm_framebuffer_tests[] = {
KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
KUNIT_CASE(drm_test_framebuffer_cleanup),
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
+ KUNIT_CASE(drm_test_framebuffer_lookup),
+ KUNIT_CASE(drm_test_framebuffer_lookup_inexistent),
KUNIT_CASE(drm_test_framebuffer_modifiers_not_supported),
{ }
};
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (6 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup() Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-05 5:37 ` kernel test robot
2024-07-08 11:35 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free() Carlos Eduardo Gallo Filho
8 siblings, 2 replies; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Add three KUnit test cases for the drm_framebuffer_init function:
1. Test if expected values are being set after drm_framebuffer_init() call.
2. Try to init a framebuffer without setting its format.
3. Try calling drm_framebuffer_init() with mismatch of the drm_device passed
at the first argument and the one pointed by fb->dev.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Reorder kunit cases alphabetically.
- Let fb1.dev unset instead of set it to wrong_drm to test mismatched
drm_device passed as drm_framebuffer_init() argument.
- Clean the framebuffer object.
v3:
- Split into three tests.
- Add documentation.
- Stop testing lookup here.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 68 ++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 54829e832c5e..73a1a3a3987e 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -569,10 +569,78 @@ static void drm_test_framebuffer_lookup_inexistent(struct kunit *test)
KUNIT_EXPECT_NULL(test, fb);
}
+/* Test if drm_framebuffer_init initializes the framebuffer with expected values */
+static void drm_test_framebuffer_init(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_format_info format = { };
+ struct drm_framebuffer fb1 = { .dev = dev, .format = &format };
+ struct drm_framebuffer_funcs funcs = { };
+ int ret;
+
+ ret = drm_framebuffer_init(dev, &fb1, &funcs);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ /* Check if fb->funcs is actually set to the drm_framebuffer_funcs passed on */
+ KUNIT_EXPECT_PTR_EQ(test, fb1.funcs, &funcs);
+
+ /* The fb->comm must be set to the current running process */
+ KUNIT_EXPECT_STREQ(test, fb1.comm, current->comm);
+
+ /* The fb->base must be successfully initialized */
+ KUNIT_EXPECT_NE(test, fb1.base.id, 0);
+ KUNIT_EXPECT_EQ(test, fb1.base.type, DRM_MODE_OBJECT_FB);
+ KUNIT_EXPECT_EQ(test, kref_read(&fb1.base.refcount), 1);
+ KUNIT_EXPECT_PTR_EQ(test, fb1.base.free_cb, &drm_framebuffer_free);
+
+ /* There must be just that one fb initialized */
+ KUNIT_EXPECT_EQ(test, dev->mode_config.num_fb, 1);
+ KUNIT_EXPECT_PTR_EQ(test, dev->mode_config.fb_list.prev, &fb1.head);
+ KUNIT_EXPECT_PTR_EQ(test, dev->mode_config.fb_list.next, &fb1.head);
+
+ drm_framebuffer_cleanup(&fb1);
+}
+
+/* Try to init a framebuffer without setting its format */
+static void drm_test_framebuffer_init_bad_format(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_framebuffer fb1 = { .dev = dev, .format = NULL };
+ struct drm_framebuffer_funcs funcs = { };
+ int ret;
+
+ /* Fails if fb.format isn't set */
+ ret = drm_framebuffer_init(dev, &fb1, &funcs);
+ KUNIT_EXPECT_EQ(test, ret, -EINVAL);
+}
+
+/*
+ * Test calling drm_framebuffer_init() passing a framebuffer linked to a
+ * different drm_device parent from the one passed on the first argument.
+ */
+static void drm_test_framebuffer_init_dev_mismatch(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_format_info format = { };
+ struct drm_framebuffer fb1 = { .dev = NULL, .format = &format };
+ struct drm_framebuffer_funcs funcs = { };
+ int ret;
+
+ /* Fails if fb->dev doesn't point to the drm_device passed on first arg */
+ ret = drm_framebuffer_init(dev, &fb1, &funcs);
+ KUNIT_EXPECT_EQ(test, ret, -EINVAL);
+}
+
static struct kunit_case drm_framebuffer_tests[] = {
KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
KUNIT_CASE(drm_test_framebuffer_cleanup),
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
+ KUNIT_CASE(drm_test_framebuffer_init),
+ KUNIT_CASE(drm_test_framebuffer_init_bad_format),
+ KUNIT_CASE(drm_test_framebuffer_init_dev_mismatch),
KUNIT_CASE(drm_test_framebuffer_lookup),
KUNIT_CASE(drm_test_framebuffer_lookup_inexistent),
KUNIT_CASE(drm_test_framebuffer_modifiers_not_supported),
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free()
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
` (7 preceding siblings ...)
2024-07-03 17:22 ` [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init() Carlos Eduardo Gallo Filho
@ 2024-07-03 17:22 ` Carlos Eduardo Gallo Filho
2024-07-05 11:06 ` kernel test robot
2024-07-08 11:36 ` Maxime Ripard
8 siblings, 2 replies; 22+ messages in thread
From: Carlos Eduardo Gallo Filho @ 2024-07-03 17:22 UTC (permalink / raw)
To: dri-devel
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Add a single KUnit test case for the drm_framebuffer_free function.
Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
---
v2:
- Reorder kunit cases alphabetically.
v3:
- Replace the use of void pointer on drm_framebuffer_test_priv struct.
- Remove the test with unregistered framebuffer object.
- Add documentation.
---
drivers/gpu/drm/tests/drm_framebuffer_test.c | 50 ++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 73a1a3a3987e..7d1d078760f9 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -357,6 +357,7 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = {
struct drm_framebuffer_test_priv {
struct drm_device dev;
bool buffer_created;
+ bool buffer_freed;
};
static struct drm_framebuffer *fb_create_mock(struct drm_device *dev,
@@ -634,10 +635,59 @@ static void drm_test_framebuffer_init_dev_mismatch(struct kunit *test)
KUNIT_EXPECT_EQ(test, ret, -EINVAL);
}
+static void destroy_free_mock(struct drm_framebuffer *fb)
+{
+ struct drm_framebuffer_test_priv *priv = container_of(fb->dev, typeof(*priv), dev);
+
+ priv->buffer_freed = true;
+}
+
+static struct drm_framebuffer_funcs framebuffer_funcs_free_mock = {
+ .destroy = destroy_free_mock,
+};
+
+/*
+ * In summary, the drm_framebuffer_free() function must implicitly call
+ * fb->funcs->destroy() and garantee that the framebufer object is unregistered
+ * from the drm_device idr pool.
+ */
+static void drm_test_framebuffer_free(struct kunit *test)
+{
+ struct drm_framebuffer_test_priv *priv = test->priv;
+ struct drm_device *dev = &priv->dev;
+ struct drm_mode_object *obj;
+ struct drm_framebuffer fb = {
+ .dev = dev,
+ .funcs = &framebuffer_funcs_free_mock,
+ };
+ int id, ret;
+
+ priv->buffer_freed = false;
+
+ /*
+ * Mock a framebuffer that was not unregistered at the moment of the
+ * drm_framebuffer_free() call.
+ */
+ ret = drm_mode_object_add(dev, &fb.base, DRM_MODE_OBJECT_FB);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+ id = fb.base.id;
+
+ drm_framebuffer_free(&fb.base.refcount);
+
+ /* The framebuffer object must be unregistered */
+ obj = drm_mode_object_find(dev, NULL, id, DRM_MODE_OBJECT_FB);
+ KUNIT_EXPECT_PTR_EQ(test, obj, NULL);
+ KUNIT_EXPECT_EQ(test, fb.base.id, 0);
+
+ /* Test if fb->funcs->destroy() was called */
+ KUNIT_EXPECT_EQ(test, priv->buffer_freed, true);
+}
+
static struct kunit_case drm_framebuffer_tests[] = {
KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
KUNIT_CASE(drm_test_framebuffer_cleanup),
KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
+ KUNIT_CASE(drm_test_framebuffer_free),
KUNIT_CASE(drm_test_framebuffer_init),
KUNIT_CASE(drm_test_framebuffer_init_bad_format),
KUNIT_CASE(drm_test_framebuffer_init_dev_mismatch),
--
2.44.2
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init()
2024-07-03 17:22 ` [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init() Carlos Eduardo Gallo Filho
@ 2024-07-05 5:37 ` kernel test robot
2024-07-08 11:35 ` Maxime Ripard
1 sibling, 0 replies; 22+ messages in thread
From: kernel test robot @ 2024-07-05 5:37 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho, dri-devel
Cc: oe-kbuild-all, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Maíra Canal,
André Almeida, Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Hi Carlos,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.10-rc6 next-20240703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Carlos-Eduardo-Gallo-Filho/drm-tests-Stop-using-deprecated-dev_private-member-on-drm_framebuffer-tests/20240704-234045
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20240703172228.11166-9-gcarlos%40disroot.org
patch subject: [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init()
config: arc-randconfig-001-20240705 (https://download.01.org/0day-ci/archive/20240705/202407051302.m55qmD7L-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240705/202407051302.m55qmD7L-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407051302.m55qmD7L-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_maple_tree.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_memcat_p.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_blackhole_dev.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_meminit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_objpool.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/zlib_inflate/zlib_inflate.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/zlib_deflate/zlib_deflate.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/bitfield_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/checksum_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/list-test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_linear_ranges.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_bits.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/overflow_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/fortify_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/siphash_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/backlight/rt4831-backlight.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/clk/clk-gate_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/clk/clk-fractional-divider_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/dma/qcom/hdma.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/da9121-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/rt4831-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-slimbus.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/pcf50633-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/rt4831.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/qcom-pm8008.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spmi/hisi-spmi-controller.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_ncm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_phonet.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_eem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_mass_storage.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_fs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_tcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/core/usbcore.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/class/usbtmc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/storage/uas.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/misc/isight_firmware.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/misc/yurex.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/rtc/rtc-tps65910.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/rc/rc-core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/host/of_mmc_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/crypto/atmel-sha204a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-a4tech.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-aureal.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-chicony.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cypress.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-emsff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-elo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-vivaldi-common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-gyration.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-holtek-kbd.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-holtek-mouse.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ite.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kensington.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-keytouch.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lcpower.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lenovo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-letsketch.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-logitech.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lg-g15.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-logitech-hidpp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-magicmouse.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-megaworld.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-microsoft.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-monterey.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ortek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-pl.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-petalynx.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-primax.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-razer.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-retrode.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-saitek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-samsung.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sjoy.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sony.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-speedlink.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-steam.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-steelseries.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tmff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tivo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-topseed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-twinhan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-uclogic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-xinmo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-zpff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-zydacron.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-viewsonic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/of/of_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_powersave.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/nvmem/nvmem_u-boot-env.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/fsi/fsi-master-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/vdpa/vdpa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pcmcia/pcmcia_rsrc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/touchscreen/cyttsp_i2c_common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/matrix-keymap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/vivaldi-fmap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/tests/input_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hwmon/corsair-cpro.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/greybus/greybus.o
>> ERROR: modpost: "drm_framebuffer_free" [drivers/gpu/drm/tests/drm_framebuffer_test.ko] undefined!
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free()
2024-07-03 17:22 ` [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free() Carlos Eduardo Gallo Filho
@ 2024-07-05 11:06 ` kernel test robot
2024-07-08 11:36 ` Maxime Ripard
1 sibling, 0 replies; 22+ messages in thread
From: kernel test robot @ 2024-07-05 11:06 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho, dri-devel
Cc: oe-kbuild-all, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Maíra Canal,
André Almeida, Arthur Grillo, Tales Lelo da Aparecida,
Carlos Eduardo Gallo Filho
Hi Carlos,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.10-rc6 next-20240703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Carlos-Eduardo-Gallo-Filho/drm-tests-Stop-using-deprecated-dev_private-member-on-drm_framebuffer-tests/20240704-234045
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20240703172228.11166-10-gcarlos%40disroot.org
patch subject: [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free()
config: arc-randconfig-001-20240705 (https://download.01.org/0day-ci/archive/20240705/202407051851.5P18lNVW-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240705/202407051851.5P18lNVW-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407051851.5P18lNVW-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_memcat_p.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_blackhole_dev.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_meminit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_objpool.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/zlib_inflate/zlib_inflate.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/zlib_deflate/zlib_deflate.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/bitfield_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/checksum_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/list-test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_linear_ranges.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/test_bits.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/overflow_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/fortify_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/siphash_kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/backlight/rt4831-backlight.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/clk/clk-gate_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/clk/clk-fractional-divider_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/dma/qcom/hdma.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/da9121-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/rt4831-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-slimbus.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/pcf50633-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/rt4831.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/qcom-pm8008.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spmi/hisi-spmi-controller.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_ncm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_phonet.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_eem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_mass_storage.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_fs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/gadget/function/usb_f_tcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/core/usbcore.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/class/usbtmc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/storage/uas.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/misc/isight_firmware.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/usb/misc/yurex.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/rtc/rtc-tps65910.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/rc/rc-core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/host/of_mmc_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/crypto/atmel-sha204a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-a4tech.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-aureal.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-chicony.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cypress.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-emsff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-elo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-vivaldi-common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-gyration.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-holtek-kbd.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-holtek-mouse.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ite.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kensington.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-keytouch.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lcpower.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lenovo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-letsketch.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-logitech.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lg-g15.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-logitech-hidpp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-magicmouse.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-megaworld.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-microsoft.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-monterey.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ortek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-pl.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-petalynx.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-primax.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-razer.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-retrode.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-saitek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-samsung.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sjoy.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sony.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-speedlink.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-steam.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-steelseries.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tmff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tivo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-topseed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-twinhan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-uclogic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-xinmo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-zpff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-zydacron.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-viewsonic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/of/of_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_powersave.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/nvmem/nvmem_u-boot-env.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/fsi/fsi-master-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/vdpa/vdpa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pcmcia/pcmcia_rsrc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/touchscreen/cyttsp_i2c_common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/matrix-keymap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/vivaldi-fmap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/tests/input_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hwmon/corsair-cpro.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/greybus/greybus.o
ERROR: modpost: "drm_framebuffer_free" [drivers/gpu/drm/tests/drm_framebuffer_test.ko] undefined!
>> ERROR: modpost: "drm_mode_object_add" [drivers/gpu/drm/tests/drm_framebuffer_test.ko] undefined!
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests
2024-07-03 17:22 ` [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests Carlos Eduardo Gallo Filho
@ 2024-07-08 11:24 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:24 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:20 -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.
>
> The new mock struct allows to share variables and even further mocks
> over the tests in a cleaner way than using dev_private void pointer.
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test
2024-07-03 17:22 ` [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test Carlos Eduardo Gallo Filho
@ 2024-07-08 11:25 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:25 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:21 -0300, Carlos Eduardo Gallo Filho wrote:
> Extend the existing test case to cover:
> 1. Invalid flag atribute in the struct drm_mode_fb_cmd2.
> 2. Pixel format which requires non-linear modifier with
> DRM_FORMAT_MOD_LINEAR set.
> 3. Buffer offset for inexistent plane
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on drm_test_framebuffer_create test
2024-07-03 17:22 ` [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on " Carlos Eduardo Gallo Filho
@ 2024-07-08 11:25 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:25 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:22 -0300, Carlos Eduardo Gallo Filho wrote:
> Replace the use of strcpy to strscpy on the test_to_desc of the
> drm_test_framebuffer_create test for better security and reliability.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create()
2024-07-03 17:22 ` [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create() Carlos Eduardo Gallo Filho
@ 2024-07-08 11:28 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:28 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida
[-- Attachment #1: Type: text/plain, Size: 2347 bytes --]
On Wed, Jul 03, 2024 at 02:22:23PM GMT, Carlos Eduardo Gallo Filho wrote:
> Introduce a test to cover the creation of framebuffer with
> modifier on a device that doesn't support it.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
> ---
> v2:
> - Reorder kunit cases alphabetically.
> v3:
> - Replace the use of void pointer on drm_framebuffer_test_priv struct.
> - Test return value of drm_internal_framebuffer_create().
> - Change test documentation to don't rely on another test.
> ---
> drivers/gpu/drm/tests/drm_framebuffer_test.c | 25 ++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
> index 4b1884be9d7a..22966ebfe9cb 100644
> --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
> +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
> @@ -415,8 +415,33 @@ static void drm_framebuffer_test_to_desc(const struct drm_framebuffer_test *t, c
> KUNIT_ARRAY_PARAM(drm_framebuffer_create, drm_framebuffer_create_cases,
> drm_framebuffer_test_to_desc);
>
> +/* Tries to create a framebuffer with modifiers without drm_device supporting it */
> +static void drm_test_framebuffer_modifiers_not_supported(struct kunit *test)
> +{
> + struct drm_framebuffer_test_priv *priv = test->priv;
> + struct drm_device *dev = &priv->dev;
> + struct drm_framebuffer *fb;
> +
> + /* A valid cmd with modifier */
> + struct drm_mode_fb_cmd2 cmd = {
> + .width = MAX_WIDTH, .height = MAX_HEIGHT,
> + .pixel_format = DRM_FORMAT_ABGR8888, .handles = { 1, 0, 0 },
> + .offsets = { UINT_MAX / 2, 0, 0 }, .pitches = { 4 * MAX_WIDTH, 0, 0 },
> + .flags = DRM_MODE_FB_MODIFIERS,
> + };
> +
> + priv->buffer_created = false;
> + dev->mode_config.fb_modifiers_not_supported = 1;
> +
> + fb = drm_internal_framebuffer_create(dev, &cmd, NULL);
> + KUNIT_EXPECT_EQ(test, false, priv->buffer_created);
> + KUNIT_ASSERT_EQ(test, IS_ERR(fb), true);
> + KUNIT_EXPECT_EQ(test, PTR_ERR(fb), -EINVAL);
I'd rather have the actual and expected values always in the same order,
preferably the former first.
Also, is there a reason you assert that it's an error, and then expect
the error code? You can remove the assertion, it's already covered by
the expectation.
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords()
2024-07-03 17:22 ` [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords() Carlos Eduardo Gallo Filho
@ 2024-07-08 11:28 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:28 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:24 -0300, Carlos Eduardo Gallo Filho wrote:
> Add a parametrized test for the drm_framebuffer_check_src_coords function.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup()
2024-07-03 17:22 ` [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup() Carlos Eduardo Gallo Filho
@ 2024-07-08 11:29 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:29 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:25 -0300, Carlos Eduardo Gallo Filho wrote:
> Add a single KUnit test case for the drm_framebuffer_cleanup function.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup()
2024-07-03 17:22 ` [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup() Carlos Eduardo Gallo Filho
@ 2024-07-08 11:29 ` Maxime Ripard
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:29 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:26 -0300, Carlos Eduardo Gallo Filho wrote:
> Add two KUnit test cases for the drm_framebuffer_lookup function, one for
> the base case, that tests if the lookup finds the correct framebuffer object
> and another that tests the lookup for an inexistent framebuffer.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init()
2024-07-03 17:22 ` [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init() Carlos Eduardo Gallo Filho
2024-07-05 5:37 ` kernel test robot
@ 2024-07-08 11:35 ` Maxime Ripard
1 sibling, 0 replies; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:35 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, Maarten Lankhorst, Thomas Zimmermann, David Airlie,
Daniel Vetter, Maíra Canal, André Almeida,
Arthur Grillo, Tales Lelo da Aparecida
[-- Attachment #1: Type: text/plain, Size: 3977 bytes --]
On Wed, Jul 03, 2024 at 02:22:27PM GMT, Carlos Eduardo Gallo Filho wrote:
> Add three KUnit test cases for the drm_framebuffer_init function:
>
> 1. Test if expected values are being set after drm_framebuffer_init() call.
> 2. Try to init a framebuffer without setting its format.
> 3. Try calling drm_framebuffer_init() with mismatch of the drm_device passed
> at the first argument and the one pointed by fb->dev.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
> ---
> v2:
> - Reorder kunit cases alphabetically.
> - Let fb1.dev unset instead of set it to wrong_drm to test mismatched
> drm_device passed as drm_framebuffer_init() argument.
> - Clean the framebuffer object.
> v3:
> - Split into three tests.
> - Add documentation.
> - Stop testing lookup here.
> ---
> drivers/gpu/drm/tests/drm_framebuffer_test.c | 68 ++++++++++++++++++++
> 1 file changed, 68 insertions(+)
>
> diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
> index 54829e832c5e..73a1a3a3987e 100644
> --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
> +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
> @@ -569,10 +569,78 @@ static void drm_test_framebuffer_lookup_inexistent(struct kunit *test)
> KUNIT_EXPECT_NULL(test, fb);
> }
>
> +/* Test if drm_framebuffer_init initializes the framebuffer with expected values */
What are those expected values?
> +static void drm_test_framebuffer_init(struct kunit *test)
> +{
> + struct drm_framebuffer_test_priv *priv = test->priv;
> + struct drm_device *dev = &priv->dev;
> + struct drm_format_info format = { };
> + struct drm_framebuffer fb1 = { .dev = dev, .format = &format };
> + struct drm_framebuffer_funcs funcs = { };
> + int ret;
> +
> + ret = drm_framebuffer_init(dev, &fb1, &funcs);
> + KUNIT_ASSERT_EQ(test, ret, 0);
> +
> + /* Check if fb->funcs is actually set to the drm_framebuffer_funcs passed on */
> + KUNIT_EXPECT_PTR_EQ(test, fb1.funcs, &funcs);
> +
> + /* The fb->comm must be set to the current running process */
> + KUNIT_EXPECT_STREQ(test, fb1.comm, current->comm);
> +
> + /* The fb->base must be successfully initialized */
> + KUNIT_EXPECT_NE(test, fb1.base.id, 0);
> + KUNIT_EXPECT_EQ(test, fb1.base.type, DRM_MODE_OBJECT_FB);
> + KUNIT_EXPECT_EQ(test, kref_read(&fb1.base.refcount), 1);
> + KUNIT_EXPECT_PTR_EQ(test, fb1.base.free_cb, &drm_framebuffer_free);
> +
> + /* There must be just that one fb initialized */
> + KUNIT_EXPECT_EQ(test, dev->mode_config.num_fb, 1);
> + KUNIT_EXPECT_PTR_EQ(test, dev->mode_config.fb_list.prev, &fb1.head);
> + KUNIT_EXPECT_PTR_EQ(test, dev->mode_config.fb_list.next, &fb1.head);
> +
> + drm_framebuffer_cleanup(&fb1);
> +}
> +
> +/* Try to init a framebuffer without setting its format */
> +static void drm_test_framebuffer_init_bad_format(struct kunit *test)
> +{
> + struct drm_framebuffer_test_priv *priv = test->priv;
> + struct drm_device *dev = &priv->dev;
> + struct drm_framebuffer fb1 = { .dev = dev, .format = NULL };
> + struct drm_framebuffer_funcs funcs = { };
> + int ret;
> +
> + /* Fails if fb.format isn't set */
> + ret = drm_framebuffer_init(dev, &fb1, &funcs);
> + KUNIT_EXPECT_EQ(test, ret, -EINVAL);
> +}
> +
> +/*
> + * Test calling drm_framebuffer_init() passing a framebuffer linked to a
> + * different drm_device parent from the one passed on the first argument.
What would be the expected behaviour here?
> + */
> +static void drm_test_framebuffer_init_dev_mismatch(struct kunit *test)
> +{
> + struct drm_framebuffer_test_priv *priv = test->priv;
> + struct drm_device *dev = &priv->dev;
> + struct drm_format_info format = { };
> + struct drm_framebuffer fb1 = { .dev = NULL, .format = &format };
You're not really testing what you claim you test here, since dev is an
invalid pointer. You would need a different yet valid device here.
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free()
2024-07-03 17:22 ` [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free() Carlos Eduardo Gallo Filho
2024-07-05 11:06 ` kernel test robot
@ 2024-07-08 11:36 ` Maxime Ripard
2024-07-08 16:41 ` Carlos
1 sibling, 1 reply; 22+ messages in thread
From: Maxime Ripard @ 2024-07-08 11:36 UTC (permalink / raw)
To: Carlos Eduardo Gallo Filho
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
On Wed, 3 Jul 2024 14:22:28 -0300, Carlos Eduardo Gallo Filho wrote:
> Add a single KUnit test case for the drm_framebuffer_free function.
>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free()
2024-07-08 11:36 ` Maxime Ripard
@ 2024-07-08 16:41 ` Carlos
0 siblings, 0 replies; 22+ messages in thread
From: Carlos @ 2024-07-08 16:41 UTC (permalink / raw)
To: Maxime Ripard
Cc: dri-devel, André Almeida, Arthur Grillo, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maíra Canal,
Tales Lelo da Aparecida, Thomas Zimmermann
Hi Maxime, thank you for the review!
On 7/8/24 08:36, Maxime Ripard wrote:
> On Wed, 3 Jul 2024 14:22:28 -0300, Carlos Eduardo Gallo Filho wrote:
>> Add a single KUnit test case for the drm_framebuffer_free function.
>>
>> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
> Acked-by: Maxime Ripard <mripard@kernel.org>
Accordingly to the kernel bot report, I forgot to export
drm_mode_object_add symbol for the test and I'll include the
EXPORT_SYMBOL_FOR_TESTS_ONLY(drm_mode_object_add) in v4. Since this
will be a little change, must I keep your Acked-by in v4?
Thanks, Carlos
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2024-07-08 16:39 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-03 17:22 [PATCH v3 0/9] Increase coverage on drm_framebuffer.c Carlos Eduardo Gallo Filho
2024-07-03 17:22 ` [PATCH v3 1/9] drm/tests: Stop using deprecated dev_private member on drm_framebuffer tests Carlos Eduardo Gallo Filho
2024-07-08 11:24 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 2/9] drm/tests: Add parameters to the drm_test_framebuffer_create test Carlos Eduardo Gallo Filho
2024-07-08 11:25 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 3/9] drm/tests: Replace strcpy to strscpy on " Carlos Eduardo Gallo Filho
2024-07-08 11:25 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 4/9] drm/tests: Add test case for drm_internal_framebuffer_create() Carlos Eduardo Gallo Filho
2024-07-08 11:28 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 5/9] drm/tests: Add test for drm_framebuffer_check_src_coords() Carlos Eduardo Gallo Filho
2024-07-08 11:28 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 6/9] drm/tests: Add test for drm_framebuffer_cleanup() Carlos Eduardo Gallo Filho
2024-07-08 11:29 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 7/9] drm/tests: Add test for drm_framebuffer_lookup() Carlos Eduardo Gallo Filho
2024-07-08 11:29 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 8/9] drm/tests: Add test for drm_framebuffer_init() Carlos Eduardo Gallo Filho
2024-07-05 5:37 ` kernel test robot
2024-07-08 11:35 ` Maxime Ripard
2024-07-03 17:22 ` [PATCH v3 9/9] drm/tests: Add test for drm_framebuffer_free() Carlos Eduardo Gallo Filho
2024-07-05 11:06 ` kernel test robot
2024-07-08 11:36 ` Maxime Ripard
2024-07-08 16:41 ` Carlos
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.