
Hi Tom
On Sat, Mar 19, 2022 at 6:30 PM Tom Rini trini@konsulko.com wrote:
On Sat, Mar 19, 2022 at 06:27:38PM +0100, Michael Nazzareno Trimarchi wrote:
Hi
On Sat, Mar 19, 2022 at 6:25 PM Tom Rini trini@konsulko.com wrote:
On Sat, Mar 19, 2022 at 06:08:18PM +0100, Michael Nazzareno Trimarchi wrote:
Hi Tom
On Sat, Mar 19, 2022 at 6:03 PM Tom Rini trini@konsulko.com wrote:
On Sat, Mar 19, 2022 at 05:48:59PM +0100, Michael Nazzareno Trimarchi wrote:
Hi Tom
On Sat, Mar 19, 2022 at 5:05 PM Tom Rini trini@konsulko.com wrote: > > On Sat, Mar 19, 2022 at 02:51:01PM +0100, Michael Nazzareno Trimarchi wrote: > > Hi > > > > On Sat, Mar 19, 2022 at 2:25 PM Fabio Estevam festevam@gmail.com wrote: > > > > > > Hi Michael, > > > > > > On Sat, Mar 19, 2022 at 6:47 AM Michael Nazzareno Trimarchi > > > michael@amarulasolutions.com wrote: > > > > > > > > HI > > > > > > > > Please send me a link to apply your series > > > > > > You can get the series from patchwork (just click in the 'series' button) > > > https://patchwork.ozlabs.org/project/uboot/patch/20220112133127.16880-2-gaur... > > > > Done, well, I have tried remove DM_GPIO in SPL. Seems that I need to > > remove a lot of features. I have tested LTO build but size > > of SPL increase. Is that strange? > > That is very strange. Can you post your patches somewhere? > > -- > Tom
Start from here 9776c4e9d00ac49d6388ffe9e084ff03b37ae479 export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-
make imx6dl_mamoj_defconfig build it
Try then to enable LTO and build it again
spl/u-boot-spl.bin exceeds file size limit: limit: 0xefa0 bytes actual: 0xf071 bytes excess: 0xd1 bytes
So LTO does not help even on beginning on this board. You don't need to apply any patch for this test
I think that's some artifact of mixing LTO/non-LTO and the world not getting rebuilt? Just enabling LTO after the defconfig works fine and is smaller than before.
In order to save space I did not change what we have. Every build starts from a mrproper and new configuration. I can not mix LTO/non-LTO in this case. I'm using upstream defconfig and upstream defconfig + LTO enabled and the result is that spl increase in size for LTO building. I'm working to keep out part that are not really needed but I was hoping that LTO give me some help here
Yes, LTO saves about 5KiB on the SPL binary. You just need to enable it in the config before you start building, not after you've built everything once.
Offcourse ;) but this not the case. I don't drink enough to think that change a config, decrease the build size ;)
LTO is an entirely different way of the compiler / linker optimizing the binary. So yes, in this case enabling a single option decreases the size.
I think we are in a circle. Let's have the result with LTO
spl/keep-syms-lto.c ( cd spl && arm-linux-gnueabihf-gcc -nostdlib -nostartfiles -fuse-linker-plugin -flto=8 -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -std=gnu11 -fshort-wchar -fno-strict-aliasing -fno-PIE -Os -flto=8 -fno-stack-protector -fno-delete-null-pointer-checks -Wno-pointer-sign -Wno-stringop-truncation -Wno-array-bounds -Wno-stringop-overflow -Wno-maybe-uninitialized -fmacro-prefix-map=./= -g -fstack-usage -Wno-format-nonliteral -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=date-time -Wno-packed-not-aligned -ffunction-sections -fdata-sections -fno-stack-protector -D__KERNEL__ -D__UBOOT__ -DCONFIG_SPL_BUILD -D__ARM__ -Wa,-mimplicit-it=always -mthumb -mthumb-interwork -mabi=aapcs-linux -mno-unaligned-access -fno-common -ffixed-r9 -msoft-float -mgeneral-regs-only -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7 -mtune=generic-armv7-a -Ispl/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -nostdinc -isystem /usr/lib/gcc-cross/arm-linux-gnueabihf/9/include -Wl,-T -Wl,u-boot-spl.lds -Wl,-Bstatic -Wl,--gc-sections -Wl,--no-dynamic-linker -Wl,--build-id=none -Wl,-Ttext -Wl,0x00908000 arch/arm/cpu/armv7/start.o -Wl,--whole-archive arch/arm/cpu/armv7/built-in.o arch/arm/cpu/built-in.o arch/arm/lib/built-in.o arch/arm/mach-imx/built-in.o board/bticino/mamoj/built-in.o common/spl/built-in.o common/init/built-in.o boot/built-in.o common/built-in.o cmd/built-in.o env/built-in.o lib/built-in.o disk/built-in.o drivers/built-in.o drivers/usb/dwc3/built-in.o drivers/usb/cdns3/built-in.o dts/built-in.o fs/built-in.o keep-syms-lto.o arch/arm/lib/eabi_compat.o arch/arm/lib/lib.a -Wl,--no-whole-archive -Wl,-Map,u-boot-spl.map -o u-boot-spl ) arm-linux-gnueabihf-objcopy -j .text -j .secure_text -j .secure_data -j .rodata -j .hash -j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn -j .binman_sym_table -j .text_rest -j .dtb.init.rodata -j .efi_runtime -j .efi_runtime_rel -O binary spl/u-boot-spl spl/u-boot-spl-nodtb.bin arm-linux-gnueabihf-objdump -t spl/u-boot-spl > spl/u-boot-spl.sym cat spl/u-boot-spl-nodtb.bin spl/u-boot-spl.dtb > spl/u-boot-spl-dtb.bin cp spl/u-boot-spl-dtb.bin spl/u-boot-spl.bin spl/u-boot-spl.bin exceeds file size limit: limit: 0xefa0 bytes actual: 0xf079 bytes excess: 0xd9 bytes make: *** [Makefile:2082: spl/u-boot-spl.bin] Error 1 make: *** Deleting file 'spl/u-boot-spl.bin'
and without
NUX_ARM_ARCH__=7 -mtune=generic-armv7-a -D__ASSEMBLY__ -x c -o spl/u-boot-spl.cfgout arch/arm/mach-imx/spl_sd.cfg ./tools/mkimage -n spl/u-boot-spl.cfgout -T imximage -e 0x00908000 -d spl/u-boot-spl.bin SPL >SPL.log && cat SPL.log Image Type: Freescale IMX Boot Image Image Ver: 2 (i.MX53/6/7 compatible) Mode: DCD Data Size: 73824 Bytes = 72.09 KiB = 0.07 MiB Load Address: 00907420 Entry Point: 00908000 HAB Blocks: 0x00907400 0x00000000 0x0000fc00 DCD Blocks: 0x00910000 0x0000002c 0x00000004 make -f ./scripts/Makefile.build obj=arch/arm/mach-imx u-boot-with-spl.imx mkdir -p spl/ ./tools/mkimage -n spl/u-boot-spl.cfgout -T imximage -e 0x00908000 -d spl/u-boot-spl.bin SPL >SPL.log && cat SPL.log Image Type: Freescale IMX Boot Image Image Ver: 2 (i.MX53/6/7 compatible) Mode: DCD Data Size: 73824 Bytes = 72.09 KiB = 0.07 MiB Load Address: 00907420 Entry Point: 00908000 HAB Blocks: 0x00907400 0x00000000 0x0000fc00 DCD Blocks: 0x00910000 0x0000002c 0x00000004 arm-linux-gnueabihf-objcopy -j .text -j .secure_text -j .secure_data -j .rodata -j .hash -j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn -j .binman_sym_table -j .text_rest -j .dtb.init.rodata -j .efi_runtime -j .efi_runtime_rel -I binary -O binary --pad-to=0x11000 SPL u-boot-with-spl.imx && cat u-boot.img >> u-boot-with-spl.imx || rm -f u-boot-with-spl.imx
What I'm trying to say is that I have followed the correct steps and this is the LTO change
git diff diff --git a/configs/imx6dl_mamoj_defconfig b/configs/imx6dl_mamoj_defconfig index ae27857e6f..4a535012b2 100644 --- a/configs/imx6dl_mamoj_defconfig +++ b/configs/imx6dl_mamoj_defconfig @@ -14,6 +14,7 @@ CONFIG_SPL_TEXT_BASE=0x00908000 CONFIG_SPL_DRIVERS_MISC=y CONFIG_IMX_HAB=y # CONFIG_CMD_BMODE is not set +CONFIG_LTO=y CONFIG_DISTRO_DEFAULTS=y CONFIG_BOOTDELAY=3 CONFIG_SPL_OS_BOOT=y
Michael
-- Tom