Patrik Jakobsson b0bfed
From 18c8485236a5e3f491b670c018ae391c9cb84dfa Mon Sep 17 00:00:00 2001
Patrik Jakobsson b0bfed
From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jose.exposito89@gmail.com>
Patrik Jakobsson b0bfed
Date: Wed, 27 Jul 2022 01:09:13 +0200
Patrik Jakobsson b0bfed
Subject: drm/format-helper: Fix test on big endian architectures
Patrik Jakobsson b0bfed
MIME-Version: 1.0
Patrik Jakobsson b0bfed
Content-Type: text/plain; charset=UTF-8
Patrik Jakobsson b0bfed
Content-Transfer-Encoding: 8bit
Patrik Jakobsson b0bfed
Git-commit: 18c8485236a5e3f491b670c018ae391c9cb84dfa
Patrik Jakobsson b0bfed
Patch-mainline: v6.1-rc1
Patrik Jakobsson b0bfed
References: git-fixes
Patrik Jakobsson b0bfed
Patrik Jakobsson b0bfed
The tests fail on big endian architectures, like PowerPC:
Patrik Jakobsson b0bfed
Patrik Jakobsson b0bfed
 $ ./tools/testing/kunit/kunit.py run \
Patrik Jakobsson b0bfed
   --kunitconfig=drivers/gpu/drm/tests \
Patrik Jakobsson b0bfed
   --arch=powerpc --cross_compile=powerpc64-linux-gnu-
Patrik Jakobsson b0bfed
Patrik Jakobsson b0bfed
Transform the XRGB8888 buffer from little endian to the CPU endian
Patrik Jakobsson b0bfed
before calling the conversion function to avoid this error.
Patrik Jakobsson b0bfed
Patrik Jakobsson b0bfed
Fixes: 8f456104915f ("drm/format-helper: Add KUnit tests for drm_fb_xrgb8888_to_rgb332()")
Patrik Jakobsson b0bfed
Reported-by: David Gow <davidgow@google.com>
Patrik Jakobsson b0bfed
Reviewed-by: David Gow <davidgow@google.com>
Patrik Jakobsson b0bfed
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Patrik Jakobsson b0bfed
Link: https://patchwork.freedesktop.org/patch/msgid/20220726230916.390575-2-jose.exposito89@gmail.com
Patrik Jakobsson b0bfed
Acked-by: Patrik Jakobsson <pjakobsson@suse.de>
Patrik Jakobsson b0bfed
---
Patrik Jakobsson b0bfed
 .../gpu/drm/tests/drm_format_helper_test.c    | 23 +++++++++++++++++--
Patrik Jakobsson b0bfed
 1 file changed, 21 insertions(+), 2 deletions(-)
Patrik Jakobsson b0bfed
Patrik Jakobsson b0bfed
diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
Patrik Jakobsson b0bfed
index 98583bf56044..eefaba3aaea2 100644
Patrik Jakobsson b0bfed
--- a/drivers/gpu/drm/tests/drm_format_helper_test.c
Patrik Jakobsson b0bfed
+++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
Patrik Jakobsson b0bfed
@@ -111,6 +111,21 @@ static size_t conversion_buf_size(u32 dst_format, unsigned int dst_pitch,
Patrik Jakobsson b0bfed
 	return dst_pitch * drm_rect_height(clip);
Patrik Jakobsson b0bfed
 }
Patrik Jakobsson b0bfed
 
Patrik Jakobsson b0bfed
+static u32 *le32buf_to_cpu(struct kunit *test, const u32 *buf, size_t buf_size)
Patrik Jakobsson b0bfed
+{
Patrik Jakobsson b0bfed
+	u32 *dst = NULL;
Patrik Jakobsson b0bfed
+	int n;
Patrik Jakobsson b0bfed
+
Patrik Jakobsson b0bfed
+	dst = kunit_kzalloc(test, sizeof(*dst) * buf_size, GFP_KERNEL);
Patrik Jakobsson b0bfed
+	if (!dst)
Patrik Jakobsson b0bfed
+		return NULL;
Patrik Jakobsson b0bfed
+
Patrik Jakobsson b0bfed
+	for (n = 0; n < buf_size; n++)
Patrik Jakobsson b0bfed
+		dst[n] = le32_to_cpu((__force __le32)buf[n]);
Patrik Jakobsson b0bfed
+
Patrik Jakobsson b0bfed
+	return dst;
Patrik Jakobsson b0bfed
+}
Patrik Jakobsson b0bfed
+
Patrik Jakobsson b0bfed
 static void xrgb8888_to_rgb332_case_desc(struct xrgb8888_to_rgb332_case *t,
Patrik Jakobsson b0bfed
 					 char *desc)
Patrik Jakobsson b0bfed
 {
Patrik Jakobsson b0bfed
@@ -125,6 +140,7 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
Patrik Jakobsson b0bfed
 	const struct xrgb8888_to_rgb332_case *params = test->param_value;
Patrik Jakobsson b0bfed
 	size_t dst_size;
Patrik Jakobsson b0bfed
 	__u8 *dst = NULL;
Patrik Jakobsson b0bfed
+	__u32 *src = NULL;
Patrik Jakobsson b0bfed
 
Patrik Jakobsson b0bfed
 	struct drm_framebuffer fb = {
Patrik Jakobsson b0bfed
 		.format = drm_format_info(DRM_FORMAT_XRGB8888),
Patrik Jakobsson b0bfed
@@ -138,8 +154,11 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
Patrik Jakobsson b0bfed
 	dst = kunit_kzalloc(test, dst_size, GFP_KERNEL);
Patrik Jakobsson b0bfed
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst);
Patrik Jakobsson b0bfed
 
Patrik Jakobsson b0bfed
-	drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888,
Patrik Jakobsson b0bfed
-				  &fb, &params->clip);
Patrik Jakobsson b0bfed
+	src = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
Patrik Jakobsson b0bfed
+	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, src);
Patrik Jakobsson b0bfed
+
Patrik Jakobsson b0bfed
+	drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, src, &fb,
Patrik Jakobsson b0bfed
+				  &params->clip);
Patrik Jakobsson b0bfed
 	KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0);
Patrik Jakobsson b0bfed
 }
Patrik Jakobsson b0bfed
 
Patrik Jakobsson b0bfed
-- 
Patrik Jakobsson b0bfed
2.39.0
Patrik Jakobsson b0bfed