Message ID | 20210723091435.20388-1-marek.behun@nic.cz |
---|---|
Headers | show |
Series | kwboot / kwbimage improvements reducing image size | expand |
On 23.07.21 11:13, Marek Behún wrote: > Hi Stefan and others, > > this is v3 of the series of improvements to kwboot, kwbimage and mvebu, > with main motivation the reduction of KWB image size. > > CI successful, see > https://dev.azure.com/u-boot/u-boot/_build/results?buildId=2569&view=results > > Changes since v2: > - rebased 2 patches that wouldn't apply anymore > - fixed controlcenterdc build (updated patch 39) > - changed "main U-Boot" phrases to "U-Boot proper" in commit messages > - added Stefan's Reviewed-by tags > > Changes since v1: > - change of cover letter message + information about boot times added > - some additional small fix patches are added > - we do not remove the SPL code for loading U-Boot, but add the option to > make BootROM do it. By default SPL code is used to load main U-Boot > binary, since it seems to be faster than BootROM (at least on Turris > Omnia). If users want to use BootROM for this, they need to disable > the necessary media (SPI NOR / NAND / SATA) support in SPL > > This series makes correct usage of BootROM's code for loading U-Boot > from NOR / NAND: currently, only SPL is read by BootROM and the main > U-Boot is read by SPL. > > We can use BootROM to also load main U-Boot. This reduces the size of > the u-boot-spl.bin by about ~7 KiB, since it does not need to contain > code for reading NOR / NAND. This patch series makes it possible to > use BootROM for this, but since SPL code may read the main U-Boot > binary faster, we leave it to board maintainers to decide whether they > want to use BootROM or SPL code to load the main U-Boot binary. (The > rule of thumb, I guess, is to use SPL if you have enough space, and > BootROM if you need the additional 7 KiB.) > > This patch series also reduces the size of the u-boot-spl.kwb binary > by addutuibak ~29 KiB (depending on board, this is on Turris Omnia), > by getting rid of the offseting of main U-Boot binary to a specific > point on the boot device, and instead using information from the > kwbimage header to find main U-Boot binary. > > On Turris Omnia, the size differences and boot time differences are: > before after after with booting via BootROM > u-boot-spl.kwb 901632 B 872960 B 864768 B > u-boot-spl.bin 115526 B 115898 B 107994 B > boot time 2426 ms 2411 ms 3283 ms > > As can be seen, after this patch series, when still loading main U-Boot > binary via SPL code, the boot time is on Turris Omnia reduced from > 2426 ms to 2411 ms. When booting via BootROM is preferred, the boot time > increases to 3283 ms, but we save additional 7 KiB in the u-boot-spl.kwb > binary. > > Before merging, this series should be tested on as many relevant > boards as possible. The affected boards are: > - clearfog > - controlcenterdc > - db-88f6720 > - db-88f6820-amc > - db-88f6820-gp > - db-mv784mp-gp > - ds414 > - helios4 > - theadorable_debug > - turris_omnia > - x530 > > Marek Behún (2): > tools: kwbimage: Add constant for SDIO bootfrom > tools: kwbimage: Cosmetic fix - remove redundant space character > > Pali Rohár (39): > tools: kwbimage: Fix compilation without CONFIG_SYS_U_BOOT_OFFS > tools: kwbimage: Simplify aligning and calculating checksum > tools: kwbimage: Align SPI and NAND images to 256 bytes > tools: kwbimage: Fix generation of SATA, SDIO and PCIe images > tools: kwbimage: Don't crash when binary file name does not contain > '/' > tools: kwbimage: Fix check for v0 extended header checksum > tools: kwbimage: Validate extended headers of v1 images > tools: kwbimage: Validate data checksum of v1 images > tools: kwbimage: Print size of binary header in > kwbimage_print_header() > tools: kwbimage: Use -a parameter (load address) for v1 images > tools: kwbimage: Change maximum number of arguments in binary header > to 256 > tools: kwbimage: Fix calculating size of binary header > tools: kwbimage: Add support for more BINARY headers > tools: kwbimage: Don't parse PAYLOAD keyword > tools: kwbimage: Add support for DATA command also for v1 images > tools: kwbimage: Add support for a new DATA_DELAY command > tools: kwbimage: Do not hide usage of secure header under > CONFIG_ARMADA_38X > tools: kwbimage: Mark all BootROM structures __packed > tools: dumpimage: Fix crashing when trying to extract data from > kwbimage > tools: dumpimage: Show error message when trying to extract data from > kwbimage > tools: kwboot: Fix wrong parameter passed to read() > tools: kwboot: Fix restoring terminal > tools: kwboot: Print trailing newline after terminal is terminated > tools: kwboot: Cosmetic fix - add missing curly brackets > tools: kwboot: Check for v1 header size > tools: kwboot: Fix checking image header version > arm: mvebu: Fix return_to_bootrom() > arm: mvebu: Mark return_to_bootrom() as a noreturn function > arm: mvebu: Implement return_to_bootrom() via U-Boot's SPL framework > arm: mvebu: Use U-Boot's SPL BootROM framework for booting from > NAND/UART > SPL: Add support for specifying offset between header and image > SPL: Add support for parsing board / BootROM specific image types > arm: mvebu: Load U-Boot proper binary in SPL code based on kwbimage > header > arm: mvebu: Remove legacy U-Boot header from kwbimage v1 files > tools: kwbimage: Remove v1 kwbimage SPL padding to > CONFIG_SYS_U_BOOT_OFFS bytes > arm: mvebu: Remove unused macro CONFIG_SYS_U_BOOT_OFFS > arm: mvebu: gdsys: Remove custom spl_board_init() > kwbimage: Add support for extracting images via dumpimage tool > kwbimage: Update help message about how to extract from an existing > image > > Makefile | 2 +- > arch/arm/mach-mvebu/Kconfig | 26 +- > arch/arm/mach-mvebu/include/mach/cpu.h | 2 +- > arch/arm/mach-mvebu/lowlevel_spl.S | 3 +- > arch/arm/mach-mvebu/spl.c | 248 ++++++++++++-- > board/gdsys/a38x/Makefile | 2 +- > board/gdsys/a38x/spl.c | 20 -- > board/kobol/helios4/Kconfig | 5 - > board/solidrun/clearfog/Kconfig | 5 - > common/spl/Kconfig | 4 +- > common/spl/spl.c | 9 + > common/spl/spl_mmc.c | 16 +- > common/spl/spl_sata.c | 12 +- > common/spl/spl_spi.c | 2 +- > configs/clearfog_defconfig | 1 - > configs/controlcenterdc_defconfig | 2 - > configs/db-88f6720_defconfig | 1 - > configs/db-88f6820-amc_defconfig | 1 - > configs/db-88f6820-gp_defconfig | 2 - > configs/db-mv784mp-gp_defconfig | 1 - > configs/ds414_defconfig | 1 - > configs/helios4_defconfig | 1 - > configs/maxbcm_defconfig | 1 - > configs/theadorable_debug_defconfig | 1 - > configs/turris_omnia_defconfig | 1 - > configs/x530_defconfig | 1 - > include/configs/clearfog.h | 7 +- > include/configs/controlcenterdc.h | 9 - > include/configs/db-88f6720.h | 3 - > include/configs/db-88f6820-amc.h | 5 - > include/configs/db-88f6820-gp.h | 7 - > include/configs/db-mv784mp-gp.h | 3 - > include/configs/ds414.h | 5 - > include/configs/helios4.h | 7 +- > include/configs/theadorable.h | 3 - > include/configs/turris_omnia.h | 7 - > include/configs/x530.h | 3 - > include/spl.h | 1 + > scripts/config_whitelist.txt | 1 - > tools/Makefile | 8 - > tools/kwbimage.c | 437 ++++++++++++++++++------- > tools/kwbimage.h | 54 ++- > tools/kwboot.c | 24 +- > 43 files changed, 651 insertions(+), 303 deletions(-) > delete mode 100644 board/gdsys/a38x/spl.c Applied to u-boot-marvell/master Thanks, Stefan