Subject: Re: linux-next: Tree for Sep 10 (drivers/media/pci/ttpci/dvb-ttpci)

From: Mauro Carvalho Chehab <[email-masked]>
Date: Fri, 11 Sep 2020 09:31:56 +0200

Hi Randy,

Em Thu, 10 Sep 2020 09:02:35 -0700
Randy Dunlap <[email-masked]> escreveu:

> On 9/10/20 12:42 AM, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Changes since 20200909:
> >   
> 
> 
> on i386:
> 
> ERROR: modpost: "__floatunsidf" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!
> ERROR: modpost: "__ltdf2" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!
> 
> 
> Full randconfig file is attached.

I was unable to reproduce it here with the .config file you sent.

I suspect that the only difference is the compiler version. Here, I'm
using:

	gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008

While you're using:

	gcc (SUSE Linux) 7.5.0

Yet, the only patch that could possibly have affected it is
this changeset 13c129066845 ("media: av7110_v4l: avoid a typecast").

It sounds to me that gcc 7.5.0 only does the right math at compile
time if there is a typecast. Could you please check if the enclosed
patch fixes it?

Thanks,
Mauro

[PATCH] media: av7110: don't do float point math

It sounds that earlier versions of GCC have troubles when
doing const math at compile time, if no typecast is used:

on i386:
	ERROR: modpost: "__floatunsidf" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!
	ERROR: modpost: "__ltdf2" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!

The warning was generated on gcc (SUSE Linux) 7.5.0.
Gcc 9.2 compiles it fine.

Reported-by: Randy Dunlap <[email-masked]>
Signed-off-by: Mauro Carvalho Chehab <[email-masked]>

diff --git a/drivers/media/pci/ttpci/av7110_v4l.c b/drivers/media/pci/ttpci/av7110_v4l.c
index 6d9c908be713..c89f536f699c 100644
--- a/drivers/media/pci/ttpci/av7110_v4l.c
+++ b/drivers/media/pci/ttpci/av7110_v4l.c
@@ -160,9 +160,9 @@ static int ves1820_set_tv_freq(struct saa7146_dev *dev, u32 freq)
 	buf[1] = div & 0xff;
 	buf[2] = 0x8e;
 
-	if (freq < 16U * 168.25)
+	if (freq < 16U * 16825 / 100)
 		config = 0xa0;
-	else if (freq < 16U * 447.25)
+	else if (freq < 16U * 44725 / 100)
 		config = 0x90;
 	else
 		config = 0x30;