
On Wed, Apr 27, 2016 at 05:50:35PM +0200, Stefano Babic wrote:
Hi Peter,
On 27/04/2016 12:15, Peter Robinson wrote:
Hi All,
I didn't look closely when it happened with rc1 because I saw a pull req from Stefano shortly afterwards and I decided to try again after that landed. With rc3 I'm still seeing the same issue.
Basically all the i.MX6 devices (cm_fx6,mx6cuboxi,novena,riotboard,udoo,wandboard,warp) we currently build for Fedora are failing to build. It looks very similar to some 64 bit math issues [1] [2] a search gives me although from the linker command I'm failing to see what code is at fault so any assistance in debugging this would be great. I've checked it failed on < gcc6 too and 2016.03 builds so it appears a regression in 05rcX.
The (for cuboxi example) basic error is: ld.bfd -pie --gc-sections -Bstatic -Ttext 0x17800000 -o u-boot -T u-boot.lds arch/arm/cpu/armv7/start.o --start-group arch/arm/cpu/built-in.o arch/arm/cpu/armv7/built-in.o arch/arm/imx-common/built-in.o arch/arm/lib/built-in.o board/solidrun/mx6cuboxi/built-in.o cmd/built-in.o common/built-in.o disk/built-in.o drivers/built-in.o drivers/dma/built-in.o drivers/gpio/built-in.o drivers/i2c/built-in.o drivers/mmc/built-in.o drivers/mtd/built-in.o drivers/mtd/onenand/built-in.o drivers/mtd/spi/built-in.o drivers/net/built-in.o drivers/net/phy/built-in.o drivers/pci/built-in.o drivers/power/built-in.o drivers/power/battery/built-in.o drivers/power/fuel_gauge/built-in.o drivers/power/mfd/built-in.o drivers/power/pmic/built-in.o drivers/power/regulator/built-in.o drivers/serial/built-in.o drivers/spi/built-in.o drivers/usb/common/built-in.o drivers/usb/dwc3/built-in.o drivers/usb/emul/built-in.o drivers/usb/eth/built-in.o drivers/usb/gadget/built-in.o drivers/usb/gadget/udc/built-in.o drivers/usb/host/built-in.o drivers/usb/musb-new/built-in.o drivers/usb/musb/built-in.o drivers/usb/phy/built-in.o drivers/usb/ulpi/built-in.o fs/built-in.o lib/built-in.o net/built-in.o test/built-in.o test/dm/built-in.o --end-group arch/arm/lib/eabi_compat.o -L /usr/lib/gcc/armv7hl-redhat-linux-gnueabi/6.0.0 -lgcc -Map u-boot.map ld.bfd: error: /usr/lib/gcc/armv7hl-redhat-linux-gnueabi/6.0.0/libgcc.a(_udivmoddi4.o) uses VFP register arguments, u-boot does not ld.bfd: failed to merge target specific data of file /usr/lib/gcc/armv7hl-redhat-linux-gnueabi/6.0.0/libgcc.a(_udivmoddi4.o)
Full log at https://pbrobinson.fedorapeople.org/u-boot-mx6cuboxi-fail.txt
I can confirm this - I started bisect and I have found this one:
commit 3cb4f25cc702db17455583599d0940c81337a17a Author: Peng Fan van.freenix@gmail.com Date: Wed Mar 9 16:07:21 2016 +0800
video: ipu: avoid overflow issue Multiplication, as "clk->parent->rate * 16" may overflow. So use do_div to avoid such issue. Signed-off-by: Peng Fan <van.freenix@gmail.com> Signed-off-by: Sandor Yu <sandor.yu@nxp.com> Cc: Anatolij Gustschin <agust@denx.de> Cc: Stefano Babic <sbabic@denx.de> Cc: Fabio Estevam <fabio.estevam@nxp.com>
:040000 040000 9672cb921a1051b5357931e8835884e2cccf8ec6 3cbbeea448780bb4855f5458dd98d017239b729a M drivers
Checking the patch, I have found:
clk->rate = (u64)(clk->parent->rate * 16) / div;
This seems the cause for the failing build.
This confirms an issue. IMHO we can replace it with:
clk->rate = (u64)lldiv(clk->parent->rate * 16, div);
Peng, what do you mind ?
I think other than the cast being in the wrong place for lldiv (rate is ulong, but we want to treat clk->parent->rate * 16 as possibly u64) this is right. Can you send out a formal patch? Thanks!