Hi Marek & Pali,

while building this series via Azure CI I noticed this problem for
controlcenterdc_defconfig:

arm-linux-gnueabi-ld.bfd: common/spl/spl.o: in function `board_init_r':
common/spl/spl.c:702: undefined reference to `spl_board_init'

Could you please fix this? And make sure that all boards (not only
Marvell) compile clean?

And I also had merge issues (patches did not apply) with these patches,
which I needed to fix manually:

[PATCH u-boot-mvebu v2 19/41] tools: kwbimage: Do not hide usage of secure header under CONFIG_ARMADA_38X [PATCH u-boot-mvebu v2 37/41] tools: kwbimage: Remove v1 kwbimage SPL padding to CONFIG_SYS_U_BOOT_OFFS bytes

Please fix this as well while working on v3.

Thanks,
Stefan

On 19.07.21 14:20, Marek Behún wrote:
Hi Stefan and others,

this is v2 of the series of improvements to kwboot, kwbimage and mvebu,
with main motivation the reduction of KWB image size.

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 main U-Boot 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      |   1 -
  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(+), 302 deletions(-)
  delete mode 100644 board/gdsys/a38x/spl.c



Viele Grüße,
Stefan

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de

Reply via email to