2015-12-17 05:03:47

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the rtc tree

Hi Alexandre,

After merging the rtc tree, today's linux-next build (arm
multi_v7_defconfig) failed like this:

drivers/built-in.o: In function `rtc_time64_to_tm':
sunxi_sid.c:(.text+0x366e54): undefined reference to `__aeabi_ldivmod'
sunxi_sid.c:(.text+0x366e6c): undefined reference to `__aeabi_ldivmod'

Caused by commit

bfad4c280be0 ("rtc: fix overflow and incorrect calculation in rtc_time64_to_tm")

I have used the rtc tree from next-20151216 for today.

--
Cheers,
Stephen Rothwell [email protected]


2015-12-17 11:21:59

by Alexandre Belloni

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the rtc tree

On 17/12/2015 at 16:03:44 +1100, Stephen Rothwell wrote :
> Hi Alexandre,
>
> After merging the rtc tree, today's linux-next build (arm
> multi_v7_defconfig) failed like this:
>
> drivers/built-in.o: In function `rtc_time64_to_tm':
> sunxi_sid.c:(.text+0x366e54): undefined reference to `__aeabi_ldivmod'
> sunxi_sid.c:(.text+0x366e6c): undefined reference to `__aeabi_ldivmod'
>
> Caused by commit
>
> bfad4c280be0 ("rtc: fix overflow and incorrect calculation in rtc_time64_to_tm")
>
> I have used the rtc tree from next-20151216 for today.
>

Well, the kbuild test robot didn't complain at the time so I assumed
that it was ok to take the patch but indeed, there are more division
further in the function.

Sasha, I think I prefer having 32 bit platforms fail on the 21st of
January 11761191 rather than adding more uses of do_div in the function.
I'll have a look at the performance impact on 32 bit platforms.

--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

2015-12-18 15:30:37

by Sasha Levin

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the rtc tree

On 12/17/2015 06:21 AM, Alexandre Belloni wrote:
> On 17/12/2015 at 16:03:44 +1100, Stephen Rothwell wrote :
>> > Hi Alexandre,
>> >
>> > After merging the rtc tree, today's linux-next build (arm
>> > multi_v7_defconfig) failed like this:
>> >
>> > drivers/built-in.o: In function `rtc_time64_to_tm':
>> > sunxi_sid.c:(.text+0x366e54): undefined reference to `__aeabi_ldivmod'
>> > sunxi_sid.c:(.text+0x366e6c): undefined reference to `__aeabi_ldivmod'
>> >
>> > Caused by commit
>> >
>> > bfad4c280be0 ("rtc: fix overflow and incorrect calculation in rtc_time64_to_tm")
>> >
>> > I have used the rtc tree from next-20151216 for today.
>> >
> Well, the kbuild test robot didn't complain at the time so I assumed
> that it was ok to take the patch but indeed, there are more division
> further in the function.

Yeah, I'm not sure what happened here. Compiler optimizations?

> Sasha, I think I prefer having 32 bit platforms fail on the 21st of
> January 11761191 rather than adding more uses of do_div in the function.
> I'll have a look at the performance impact on 32 bit platforms.

I'm really fine with just adding a WARN_ON() and aborting if it's the year
11761191 :)


Thanks,
Sasha

2015-12-18 16:43:46

by Alexandre Belloni

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the rtc tree

On 18/12/2015 at 10:30:22 -0500, Sasha Levin wrote :
> On 12/17/2015 06:21 AM, Alexandre Belloni wrote:
> > On 17/12/2015 at 16:03:44 +1100, Stephen Rothwell wrote :
> >> > Hi Alexandre,
> >> >
> >> > After merging the rtc tree, today's linux-next build (arm
> >> > multi_v7_defconfig) failed like this:
> >> >
> >> > drivers/built-in.o: In function `rtc_time64_to_tm':
> >> > sunxi_sid.c:(.text+0x366e54): undefined reference to `__aeabi_ldivmod'
> >> > sunxi_sid.c:(.text+0x366e6c): undefined reference to `__aeabi_ldivmod'
> >> >
> >> > Caused by commit
> >> >
> >> > bfad4c280be0 ("rtc: fix overflow and incorrect calculation in rtc_time64_to_tm")
> >> >
> >> > I have used the rtc tree from next-20151216 for today.
> >> >
> > Well, the kbuild test robot didn't complain at the time so I assumed
> > that it was ok to take the patch but indeed, there are more division
> > further in the function.
>
> Yeah, I'm not sure what happened here. Compiler optimizations?
>
> > Sasha, I think I prefer having 32 bit platforms fail on the 21st of
> > January 11761191 rather than adding more uses of do_div in the function.
> > I'll have a look at the performance impact on 32 bit platforms.
>
> I'm really fine with just adding a WARN_ON() and aborting if it's the year
> 11761191 :)
>

One simple way to solve it for 64bit platforms is to define days as
unsigned long. Maybe throw a comment that it will fail for 32bit
platforms in January 11761191 ;).

--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

2015-12-22 19:28:06

by Alexandre Belloni

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the rtc tree

Hi Sasha,

On 18/12/2015 at 17:43:41 +0100, Alexandre Belloni wrote :
> > > Sasha, I think I prefer having 32 bit platforms fail on the 21st of
> > > January 11761191 rather than adding more uses of do_div in the function.
> > > I'll have a look at the performance impact on 32 bit platforms.
> >
> > I'm really fine with just adding a WARN_ON() and aborting if it's the year
> > 11761191 :)
> >
>
> One simple way to solve it for 64bit platforms is to define days as
> unsigned long. Maybe throw a comment that it will fail for 32bit
> platforms in January 11761191 ;).
>

I did that:

http://git.kernel.org/cgit/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=0d3da1806b985f1100615c2c09033b404941b63e

Unless you disagree, that is what I'm planning to send to Linus.

I wish you a happy end of year.

--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com