dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* build failure of next-20220906 for vkms
@ 2022-09-06 15:59 Sudip Mukherjee (Codethink)
  2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee
  0 siblings, 1 reply; 10+ messages in thread
From: Sudip Mukherjee (Codethink) @ 2022-09-06 15:59 UTC (permalink / raw)
  To: Rodrigo Siqueira, Melissa Wen, Haneen Mohammed, Daniel Vetter,
	David Airlie
  Cc: linux-next, linux-kernel, dri-devel

Hi All,

The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.

The errors in mips and xtensa are:

ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!

The error in arm is:

ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!


Trying to do a git bisect to find out the offending commit.

I will be happy to test any patch or provide any extra log if needed.


-- 
Regards
Sudip


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-06 15:59 build failure of next-20220906 for vkms Sudip Mukherjee (Codethink)
@ 2022-09-06 21:26 ` Sudip Mukherjee
  2022-09-06 23:35   ` Igor Matheus Andrade Torrente
  2022-09-07 17:04   ` Melissa Wen
  0 siblings, 2 replies; 10+ messages in thread
From: Sudip Mukherjee @ 2022-09-06 21:26 UTC (permalink / raw)
  To: Igor Torrente, Melissa Wen
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, linux-next

On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
<sudipm.mukherjee@gmail.com> wrote:
>
> Hi All,
>
> The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
>
> The errors in mips and xtensa are:
>
> ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>
> The error in arm is:
>
> ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>
>
> Trying to do a git bisect to find out the offending commit.

git bisect points to 396369d67549 ("drm: vkms: Add support to the
RGB565 format")


-- 
Regards
Sudip

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee
@ 2022-09-06 23:35   ` Igor Matheus Andrade Torrente
  2022-09-07  5:47     ` Daniel Vetter
  2022-09-07 17:04   ` Melissa Wen
  1 sibling, 1 reply; 10+ messages in thread
From: Igor Matheus Andrade Torrente @ 2022-09-06 23:35 UTC (permalink / raw)
  To: Sudip Mukherjee, Melissa Wen
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, linux-next

On 9/6/22 18:26, Sudip Mukherjee wrote:
> On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> <sudipm.mukherjee@gmail.com> wrote:
>>
>> Hi All,
>>
>> The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
>>
>> The errors in mips and xtensa are:
>>
>> ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>> ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>>
>> The error in arm is:
>>
>> ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>> ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
>>
>>
>> Trying to do a git bisect to find out the offending commit.
> 
> git bisect points to 396369d67549 ("drm: vkms: Add support to the
> RGB565 format")

Are these architectures incapable of doing 64bits int division?

> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-06 23:35   ` Igor Matheus Andrade Torrente
@ 2022-09-07  5:47     ` Daniel Vetter
  2022-09-07  5:50       ` Daniel Vetter
  0 siblings, 1 reply; 10+ messages in thread
From: Daniel Vetter @ 2022-09-07  5:47 UTC (permalink / raw)
  To: Igor Matheus Andrade Torrente
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Sudip Mukherjee

On Tue, Sep 06, 2022 at 08:35:49PM -0300, Igor Matheus Andrade Torrente wrote:
> On 9/6/22 18:26, Sudip Mukherjee wrote:
> > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > <sudipm.mukherjee@gmail.com> wrote:
> > > 
> > > Hi All,
> > > 
> > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > > 
> > > The errors in mips and xtensa are:
> > > 
> > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > 
> > > The error in arm is:
> > > 
> > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > 
> > > 
> > > Trying to do a git bisect to find out the offending commit.
> > 
> > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > RGB565 format")
> 
> Are these architectures incapable of doing 64bits int division?

Yeah 32bit archs in general can't do that, and you have to use the right
macros because otherwise gcc falls back to its own built-ins, and those
don't exist in the kernel since the kernel isn't (cannot!) linked against
any userspace library.

For pretty much this reasons it's really good to build test against 32bit
x86, or probably more relevant these days, 32bit arm.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-07  5:47     ` Daniel Vetter
@ 2022-09-07  5:50       ` Daniel Vetter
  0 siblings, 0 replies; 10+ messages in thread
From: Daniel Vetter @ 2022-09-07  5:50 UTC (permalink / raw)
  To: Igor Matheus Andrade Torrente
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Sudip Mukherjee

On Wed, Sep 07, 2022 at 07:47:32AM +0200, Daniel Vetter wrote:
> On Tue, Sep 06, 2022 at 08:35:49PM -0300, Igor Matheus Andrade Torrente wrote:
> > On 9/6/22 18:26, Sudip Mukherjee wrote:
> > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > > <sudipm.mukherjee@gmail.com> wrote:
> > > > 
> > > > Hi All,
> > > > 
> > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > > > 
> > > > The errors in mips and xtensa are:
> > > > 
> > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > 
> > > > The error in arm is:
> > > > 
> > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > 
> > > > 
> > > > Trying to do a git bisect to find out the offending commit.
> > > 
> > > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > > RGB565 format")
> > 
> > Are these architectures incapable of doing 64bits int division?
> 
> Yeah 32bit archs in general can't do that, and you have to use the right
> macros because otherwise gcc falls back to its own built-ins, and those
> don't exist in the kernel since the kernel isn't (cannot!) linked against
> any userspace library.
> 
> For pretty much this reasons it's really good to build test against 32bit
> x86, or probably more relevant these days, 32bit arm.

Forgot to add: include/math.h for all your division needs.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee
  2022-09-06 23:35   ` Igor Matheus Andrade Torrente
@ 2022-09-07 17:04   ` Melissa Wen
  2022-09-07 18:34     ` Sudip Mukherjee
  1 sibling, 1 reply; 10+ messages in thread
From: Melissa Wen @ 2022-09-07 17:04 UTC (permalink / raw)
  To: Sudip Mukherjee
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Igor Torrente

[-- Attachment #1: Type: text/plain, Size: 5925 bytes --]

On 09/06, Sudip Mukherjee wrote:
> On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> <sudipm.mukherjee@gmail.com> wrote:
> >
> > Hi All,
> >
> > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> >
> > The errors in mips and xtensa are:
> >
> > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> >
> > The error in arm is:
> >
> > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> >
> >
> > Trying to do a git bisect to find out the offending commit.
> 
> git bisect points to 396369d67549 ("drm: vkms: Add support to the
> RGB565 format")

Hi Sudip,

Thanks for pointing out this issue.

I think we can replace the macros that are triggering those compilation
error by functions in drm/drm_fixed.h that do the same calculation.

I checked those errors when building for arm and i386 and the issues are
fixed after applying the patch below. I appreciate if you can test.

I didn't check with mips and xtensa, but I guess it works in the same
way.

Igor,

it would be good if you double-check the calculation and compare to your
previous results.

Thanks,

Melissa

---

From 0853d85c0b9d6108f916665ff55efa079f28bc53 Mon Sep 17 00:00:00 2001
From: Melissa Wen <mwen@igalia.com>
Date: Wed, 7 Sep 2022 15:14:31 -0100
Subject: [PATCH] drm/vkms: fix 32 bits compilation error by replacing macros

Replace vkms_formats macro for fixed-point operations with functions
from drm/drm_fixed.h to do the same job and fix 32-bits compilation
errors.

Fixes: a19c2ac9858 ("drm: vkms: Add support to the RGB565 format")
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
 drivers/gpu/drm/vkms/vkms_formats.c | 54 +++++++++++------------------
 1 file changed, 20 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c
index 30bf8e6660ad..5c2612b822d4 100644
--- a/drivers/gpu/drm/vkms/vkms_formats.c
+++ b/drivers/gpu/drm/vkms/vkms_formats.c
@@ -1,27 +1,12 @@
 // SPDX-License-Identifier: GPL-2.0+
 
-#include <drm/drm_rect.h>
+#include <linux/kernel.h>
 #include <linux/minmax.h>
+#include <drm/drm_rect.h>
+#include <drm/drm_fixed.h>
 
 #include "vkms_formats.h"
 
-/* The following macros help doing fixed point arithmetic. */
-/*
- * With Fixed-Point scale 15 we have 17 and 15 bits of integer and fractional
- * parts respectively.
- *  | 0000 0000 0000 0000 0.000 0000 0000 0000 |
- * 31                                          0
- */
-#define SHIFT 15
-
-#define INT_TO_FIXED(a) ((a) << SHIFT)
-#define FIXED_MUL(a, b) ((s32)(((s64)(a) * (b)) >> SHIFT))
-#define FIXED_DIV(a, b) ((s32)(((s64)(a) << SHIFT) / (b)))
-/* This macro converts a fixed point number to int, and round half up it */
-#define FIXED_TO_INT_ROUND(a) (((a) + (1 << (SHIFT - 1))) >> SHIFT)
-#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b)))
-#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b)))
-
 static size_t pixel_offset(const struct vkms_frame_info *frame_info, int x, int y)
 {
 	return frame_info->offset + (y * frame_info->pitch)
@@ -137,20 +122,21 @@ static void RGB565_to_argb_u16(struct line_buffer *stage_buffer,
 	int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst),
 			       stage_buffer->n_pixels);
 
-	s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31);
-	s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63);
+	s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31);
+	s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63);
 
 	for (size_t x = 0; x < x_limit; x++, src_pixels++) {
 		u16 rgb_565 = le16_to_cpu(*src_pixels);
-		s32 fp_r = INT_TO_FIXED((rgb_565 >> 11) & 0x1f);
-		s32 fp_g = INT_TO_FIXED((rgb_565 >> 5) & 0x3f);
-		s32 fp_b = INT_TO_FIXED(rgb_565 & 0x1f);
+		s32 fp_r = drm_int2fixp((rgb_565 >> 11) & 0x1f);
+		s32 fp_g = drm_int2fixp((rgb_565 >> 5) & 0x3f);
+		s32 fp_b = drm_int2fixp(rgb_565 & 0x1f);
 
 		out_pixels[x].a = (u16)0xffff;
-		out_pixels[x].r = FIXED_TO_INT_ROUND(FIXED_MUL(fp_r, fp_rb_ratio));
-		out_pixels[x].g = FIXED_TO_INT_ROUND(FIXED_MUL(fp_g, fp_g_ratio));
-		out_pixels[x].b = FIXED_TO_INT_ROUND(FIXED_MUL(fp_b, fp_rb_ratio));
+		out_pixels[x].r = drm_fixp2int(drm_fixp_mul(fp_r, fp_rb_ratio));
+		out_pixels[x].g = drm_fixp2int(drm_fixp_mul(fp_g, fp_g_ratio));
+		out_pixels[x].b = drm_fixp2int(drm_fixp_mul(fp_b, fp_rb_ratio));
 	}
+
 }
 
 
@@ -249,17 +235,17 @@ static void argb_u16_to_RGB565(struct vkms_frame_info *frame_info,
 	int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst),
 			    src_buffer->n_pixels);
 
-	s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31);
-	s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63);
+	s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31);
+	s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63);
 
 	for (size_t x = 0; x < x_limit; x++, dst_pixels++) {
-		s32 fp_r = INT_TO_FIXED(in_pixels[x].r);
-		s32 fp_g = INT_TO_FIXED(in_pixels[x].g);
-		s32 fp_b = INT_TO_FIXED(in_pixels[x].b);
+		s32 fp_r = drm_int2fixp(in_pixels[x].r);
+		s32 fp_g = drm_int2fixp(in_pixels[x].g);
+		s32 fp_b = drm_int2fixp(in_pixels[x].b);
 
-		u16 r = FIXED_TO_INT_ROUND(FIXED_DIV(fp_r, fp_rb_ratio));
-		u16 g = FIXED_TO_INT_ROUND(FIXED_DIV(fp_g, fp_g_ratio));
-		u16 b = FIXED_TO_INT_ROUND(FIXED_DIV(fp_b, fp_rb_ratio));
+		u16 r = drm_fixp2int(drm_fixp_div(fp_r, fp_rb_ratio));
+		u16 g = drm_fixp2int(drm_fixp_div(fp_g, fp_g_ratio));
+		u16 b = drm_fixp2int(drm_fixp_div(fp_b, fp_rb_ratio));
 
 		*dst_pixels = cpu_to_le16(r << 11 | g << 5 | b);
 	}
-- 
2.35.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-07 17:04   ` Melissa Wen
@ 2022-09-07 18:34     ` Sudip Mukherjee
  2022-09-07 19:22       ` Melissa Wen
  0 siblings, 1 reply; 10+ messages in thread
From: Sudip Mukherjee @ 2022-09-07 18:34 UTC (permalink / raw)
  To: Melissa Wen
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Igor Torrente

Hi Melissa,

On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote:
>
> On 09/06, Sudip Mukherjee wrote:
> > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > <sudipm.mukherjee@gmail.com> wrote:
> > >
> > > Hi All,
> > >
> > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > >
> > > The errors in mips and xtensa are:
> > >
> > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > >
> > > The error in arm is:
> > >
> > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > >
> > >
> > > Trying to do a git bisect to find out the offending commit.
> >
> > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > RGB565 format")
>
> Hi Sudip,
>
> Thanks for pointing out this issue.
>
> I think we can replace the macros that are triggering those compilation
> error by functions in drm/drm_fixed.h that do the same calculation.
>
> I checked those errors when building for arm and i386 and the issues are
> fixed after applying the patch below. I appreciate if you can test.

Sorry, could not test as the downloaded mbox is saying patch is
corrupted and could not be applied. Can you please attach the patch or
maybe send using git send-email.


-- 
Regards
Sudip

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-07 18:34     ` Sudip Mukherjee
@ 2022-09-07 19:22       ` Melissa Wen
  2022-09-07 20:07         ` Sudip Mukherjee
  0 siblings, 1 reply; 10+ messages in thread
From: Melissa Wen @ 2022-09-07 19:22 UTC (permalink / raw)
  To: Sudip Mukherjee
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Igor Torrente


[-- Attachment #1.1: Type: text/plain, Size: 1705 bytes --]

On 09/07, Sudip Mukherjee wrote:
> Hi Melissa,
> 
> On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote:
> >
> > On 09/06, Sudip Mukherjee wrote:
> > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > > <sudipm.mukherjee@gmail.com> wrote:
> > > >
> > > > Hi All,
> > > >
> > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > > >
> > > > The errors in mips and xtensa are:
> > > >
> > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > >
> > > > The error in arm is:
> > > >
> > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > >
> > > >
> > > > Trying to do a git bisect to find out the offending commit.
> > >
> > > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > > RGB565 format")
> >
> > Hi Sudip,
> >
> > Thanks for pointing out this issue.
> >
> > I think we can replace the macros that are triggering those compilation
> > error by functions in drm/drm_fixed.h that do the same calculation.
> >
> > I checked those errors when building for arm and i386 and the issues are
> > fixed after applying the patch below. I appreciate if you can test.
> 
> Sorry, could not test as the downloaded mbox is saying patch is
> corrupted and could not be applied. Can you please attach the patch or
> maybe send using git send-email.

Sorry, my bad. It's attached. Let me know if goes smoothly.

Thanks again,

Melissa
> 
> 
> -- 
> Regards
> Sudip

[-- Attachment #1.2: 0001-drm-vkms-fix-32-bits-compilation-error-by-replacing-.patch --]
[-- Type: text/x-diff, Size: 4563 bytes --]

From d52824abf4d3913dfd82a927f320ad4f670545d1 Mon Sep 17 00:00:00 2001
From: Melissa Wen <mwen@igalia.com>
Date: Wed, 7 Sep 2022 15:14:31 -0100
Subject: [PATCH] drm/vkms: fix 32 bits compilation error by replacing macros

Replace vkms_formats macro for fixed-point operations with functions
from drm/drm_fixed.h to do the same job and fix 32-bits compilation
errors.

Fixes: a19c2ac9858 ("drm: vkms: Add support to the RGB565 format")
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
 drivers/gpu/drm/vkms/vkms_formats.c | 53 +++++++++++------------------
 1 file changed, 19 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c
index 300abb4d1dfe..ddcd3cfeeaac 100644
--- a/drivers/gpu/drm/vkms/vkms_formats.c
+++ b/drivers/gpu/drm/vkms/vkms_formats.c
@@ -1,27 +1,12 @@
 // SPDX-License-Identifier: GPL-2.0+
 
-#include <drm/drm_rect.h>
+#include <linux/kernel.h>
 #include <linux/minmax.h>
+#include <drm/drm_rect.h>
+#include <drm/drm_fixed.h>
 
 #include "vkms_formats.h"
 
-/* The following macros help doing fixed point arithmetic. */
-/*
- * With Fixed-Point scale 15 we have 17 and 15 bits of integer and fractional
- * parts respectively.
- *  | 0000 0000 0000 0000 0.000 0000 0000 0000 |
- * 31                                          0
- */
-#define SHIFT 15
-
-#define INT_TO_FIXED(a) ((a) << SHIFT)
-#define FIXED_MUL(a, b) ((s32)(((s64)(a) * (b)) >> SHIFT))
-#define FIXED_DIV(a, b) ((s32)(((s64)(a) << SHIFT) / (b)))
-/* This macro converts a fixed point number to int, and round half up it */
-#define FIXED_TO_INT_ROUND(a) (((a) + (1 << (SHIFT - 1))) >> SHIFT)
-#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b)))
-#define INT_TO_FIXED_DIV(a, b) (FIXED_DIV(INT_TO_FIXED(a), INT_TO_FIXED(b)))
-
 static size_t pixel_offset(const struct vkms_frame_info *frame_info, int x, int y)
 {
 	return frame_info->offset + (y * frame_info->pitch)
@@ -137,19 +122,19 @@ static void RGB565_to_argb_u16(struct line_buffer *stage_buffer,
 	int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst),
 			       stage_buffer->n_pixels);
 
-	s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31);
-	s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63);
+	s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31);
+	s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63);
 
 	for (size_t x = 0; x < x_limit; x++, src_pixels++) {
 		u16 rgb_565 = le16_to_cpu(*src_pixels);
-		s32 fp_r = INT_TO_FIXED((rgb_565 >> 11) & 0x1f);
-		s32 fp_g = INT_TO_FIXED((rgb_565 >> 5) & 0x3f);
-		s32 fp_b = INT_TO_FIXED(rgb_565 & 0x1f);
+		s32 fp_r = drm_int2fixp((rgb_565 >> 11) & 0x1f);
+		s32 fp_g = drm_int2fixp((rgb_565 >> 5) & 0x3f);
+		s32 fp_b = drm_int2fixp(rgb_565 & 0x1f);
 
 		out_pixels[x].a = (u16)0xffff;
-		out_pixels[x].r = FIXED_TO_INT_ROUND(FIXED_MUL(fp_r, fp_rb_ratio));
-		out_pixels[x].g = FIXED_TO_INT_ROUND(FIXED_MUL(fp_g, fp_g_ratio));
-		out_pixels[x].b = FIXED_TO_INT_ROUND(FIXED_MUL(fp_b, fp_rb_ratio));
+		out_pixels[x].r = drm_fixp2int(drm_fixp_mul(fp_r, fp_rb_ratio));
+		out_pixels[x].g = drm_fixp2int(drm_fixp_mul(fp_g, fp_g_ratio));
+		out_pixels[x].b = drm_fixp2int(drm_fixp_mul(fp_b, fp_rb_ratio));
 	}
 }
 
@@ -248,17 +233,17 @@ static void argb_u16_to_RGB565(struct vkms_frame_info *frame_info,
 	int x_limit = min_t(size_t, drm_rect_width(&frame_info->dst),
 			    src_buffer->n_pixels);
 
-	s32 fp_rb_ratio = INT_TO_FIXED_DIV(65535, 31);
-	s32 fp_g_ratio = INT_TO_FIXED_DIV(65535, 63);
+	s32 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), 31);
+	s32 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), 63);
 
 	for (size_t x = 0; x < x_limit; x++, dst_pixels++) {
-		s32 fp_r = INT_TO_FIXED(in_pixels[x].r);
-		s32 fp_g = INT_TO_FIXED(in_pixels[x].g);
-		s32 fp_b = INT_TO_FIXED(in_pixels[x].b);
+		s32 fp_r = drm_int2fixp(in_pixels[x].r);
+		s32 fp_g = drm_int2fixp(in_pixels[x].g);
+		s32 fp_b = drm_int2fixp(in_pixels[x].b);
 
-		u16 r = FIXED_TO_INT_ROUND(FIXED_DIV(fp_r, fp_rb_ratio));
-		u16 g = FIXED_TO_INT_ROUND(FIXED_DIV(fp_g, fp_g_ratio));
-		u16 b = FIXED_TO_INT_ROUND(FIXED_DIV(fp_b, fp_rb_ratio));
+		u16 r = drm_fixp2int(drm_fixp_div(fp_r, fp_rb_ratio));
+		u16 g = drm_fixp2int(drm_fixp_div(fp_g, fp_g_ratio));
+		u16 b = drm_fixp2int(drm_fixp_div(fp_b, fp_rb_ratio));
 
 		*dst_pixels = cpu_to_le16(r << 11 | g << 5 | b);
 	}
-- 
2.35.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-07 19:22       ` Melissa Wen
@ 2022-09-07 20:07         ` Sudip Mukherjee
  2022-09-09 11:43           ` Melissa Wen
  0 siblings, 1 reply; 10+ messages in thread
From: Sudip Mukherjee @ 2022-09-07 20:07 UTC (permalink / raw)
  To: Melissa Wen
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Igor Torrente

On Wed, Sep 7, 2022 at 8:23 PM Melissa Wen <mwen@igalia.com> wrote:
>
> On 09/07, Sudip Mukherjee wrote:
> > Hi Melissa,
> >
> > On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote:
> > >
> > > On 09/06, Sudip Mukherjee wrote:
> > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > > > <sudipm.mukherjee@gmail.com> wrote:
> > > > >
> > > > > Hi All,
> > > > >
> > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > > > >
> > > > > The errors in mips and xtensa are:
> > > > >
> > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > >
> > > > > The error in arm is:
> > > > >
> > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > >
> > > > >
> > > > > Trying to do a git bisect to find out the offending commit.
> > > >
> > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > > > RGB565 format")
> > >
> > > Hi Sudip,
> > >
> > > Thanks for pointing out this issue.
> > >
> > > I think we can replace the macros that are triggering those compilation
> > > error by functions in drm/drm_fixed.h that do the same calculation.
> > >
> > > I checked those errors when building for arm and i386 and the issues are
> > > fixed after applying the patch below. I appreciate if you can test.
> >
> > Sorry, could not test as the downloaded mbox is saying patch is
> > corrupted and could not be applied. Can you please attach the patch or
> > maybe send using git send-email.
>
> Sorry, my bad. It's attached. Let me know if goes smoothly.

Thanks. That was perfect.
And with that I can confirm I don't see the failure on mips and arm.
Not tested on xtensa but should be fixed there also.

Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>


-- 
Regards
Sudip

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format")
  2022-09-07 20:07         ` Sudip Mukherjee
@ 2022-09-09 11:43           ` Melissa Wen
  0 siblings, 0 replies; 10+ messages in thread
From: Melissa Wen @ 2022-09-09 11:43 UTC (permalink / raw)
  To: Sudip Mukherjee
  Cc: Haneen Mohammed, Rodrigo Siqueira, David Airlie, linux-kernel,
	dri-devel, Melissa Wen, linux-next, Igor Torrente

[-- Attachment #1: Type: text/plain, Size: 2221 bytes --]

On 09/07, Sudip Mukherjee wrote:
> On Wed, Sep 7, 2022 at 8:23 PM Melissa Wen <mwen@igalia.com> wrote:
> >
> > On 09/07, Sudip Mukherjee wrote:
> > > Hi Melissa,
> > >
> > > On Wed, Sep 7, 2022 at 6:05 PM Melissa Wen <mwen@igalia.com> wrote:
> > > >
> > > > On 09/06, Sudip Mukherjee wrote:
> > > > > On Tue, Sep 6, 2022 at 4:59 PM Sudip Mukherjee (Codethink)
> > > > > <sudipm.mukherjee@gmail.com> wrote:
> > > > > >
> > > > > > Hi All,
> > > > > >
> > > > > > The builds of next-20220906 fails for mips, xtensa and arm allmodconfig.
> > > > > >
> > > > > > The errors in mips and xtensa are:
> > > > > >
> > > > > > ERROR: modpost: "__divdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > > ERROR: modpost: "__udivdi3" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > >
> > > > > > The error in arm is:
> > > > > >
> > > > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/gpu/drm/vkms/vkms.ko] undefined!
> > > > > >
> > > > > >
> > > > > > Trying to do a git bisect to find out the offending commit.
> > > > >
> > > > > git bisect points to 396369d67549 ("drm: vkms: Add support to the
> > > > > RGB565 format")
> > > >
> > > > Hi Sudip,
> > > >
> > > > Thanks for pointing out this issue.
> > > >
> > > > I think we can replace the macros that are triggering those compilation
> > > > error by functions in drm/drm_fixed.h that do the same calculation.
> > > >
> > > > I checked those errors when building for arm and i386 and the issues are
> > > > fixed after applying the patch below. I appreciate if you can test.
> > >
> > > Sorry, could not test as the downloaded mbox is saying patch is
> > > corrupted and could not be applied. Can you please attach the patch or
> > > maybe send using git send-email.
> >
> > Sorry, my bad. It's attached. Let me know if goes smoothly.
> 
> Thanks. That was perfect.
> And with that I can confirm I don't see the failure on mips and arm.
> Not tested on xtensa but should be fixed there also.
> 
> Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>

Thanks for testing it.

Melissa
> 
> 
> -- 
> Regards
> Sudip

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-09-09 11:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 15:59 build failure of next-20220906 for vkms Sudip Mukherjee (Codethink)
2022-09-06 21:26 ` build failure of next-20220906 due to 396369d67549 ("drm: vkms: Add support to the RGB565 format") Sudip Mukherjee
2022-09-06 23:35   ` Igor Matheus Andrade Torrente
2022-09-07  5:47     ` Daniel Vetter
2022-09-07  5:50       ` Daniel Vetter
2022-09-07 17:04   ` Melissa Wen
2022-09-07 18:34     ` Sudip Mukherjee
2022-09-07 19:22       ` Melissa Wen
2022-09-07 20:07         ` Sudip Mukherjee
2022-09-09 11:43           ` Melissa Wen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).