How image size limiting works in U-Boot should be easier to grasp if we have all related options in one place.
Signed-off-by: Philip Oberfichtner <p...@denx.de> --- Notes: Changes in v2: - Rebase on current master - Rebase on my pending mips patch series: https://patchwork.ozlabs.org/project/uboot/list/?series=468232 Kconfig | 66 ++++++++++++++++++++++++++++++++++++++++++ common/spl/Kconfig | 45 ---------------------------- common/spl/Kconfig.tpl | 7 ----- common/spl/Kconfig.vpl | 7 ----- 4 files changed, 66 insertions(+), 59 deletions(-) diff --git a/Kconfig b/Kconfig index 99f7bb563df..ec20603883b 100644 --- a/Kconfig +++ b/Kconfig @@ -535,6 +535,8 @@ config BUILD_TARGET special image will be automatically built upon calling make / buildman. +menu "Image size limits" + config BOARD_SIZE_LIMIT int "Maximum size of the U-Boot image in bytes" default 524288 if RCAR_32 @@ -546,6 +548,70 @@ config BOARD_SIZE_LIMIT include SPL nor TPL, on platforms that use that functionality, they have separate options to restrict size. +config UBOOT_WITH_SPL_SIZE_LIMIT + hex "Maximum size of u-boot-with-spl.bin" + default 0x0 + help + Specifies the maximum length of the u-boot-with-spl.bin image. + If this value is zero, it is ignored. + +config SPL_SIZE_LIMIT + depends on SPL + hex "Maximum size of SPL image" + default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB + default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB + default 0x30000 if ARCH_MVEBU && ARMADA_32BIT + default 0x0 + help + Specifies the maximum length of the U-Boot SPL image. + If this value is zero, it is ignored. + +config SPL_SIZE_LIMIT_SUBTRACT_GD + bool "SPL image size check: provide space for global data" + depends on SPL_SIZE_LIMIT > 0 + help + If enabled, aligned size of global data is reserved in + SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM + if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when + pre-reloc global data is put into this SRAM, too. + +config SPL_SIZE_LIMIT_SUBTRACT_MALLOC + bool "SPL image size check: provide space for malloc() pool before relocation" + depends on SPL_SIZE_LIMIT > 0 + help + If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check + to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT + describes the size of SRAM available for SPL when pre-reloc malloc + pool is put into this SRAM, too. + +config SPL_SIZE_LIMIT_PROVIDE_STACK + hex "SPL image size check: provide stack space before relocation" + depends on SPL_SIZE_LIMIT > 0 + default 0x0 + help + If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such + an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size + of SRAM available for SPL when the stack required before reolcation + uses this SRAM, too. + +config TPL_SIZE_LIMIT + depends on TPL + hex "Maximum size of TPL image" + default 0x0 + help + Specifies the maximum length of the U-Boot TPL image. + If this value is zero, it is ignored. + +config VPL_SIZE_LIMIT + depends on VPL + hex "Maximum size of VPL image" + default 0x0 + help + Specifies the maximum length of the U-Boot VPL image. + If this value is zero, it is ignored. + +endmenu + config SYS_CUSTOM_LDSCRIPT bool "Use a custom location for the U-Boot linker script" depends on !COMPILE_TEST diff --git a/common/spl/Kconfig b/common/spl/Kconfig index b5c0c60ff6b..87a56bd8f8a 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -36,51 +36,6 @@ config SPL_FRAMEWORK_BOARD_INIT_F - initialize the serial (preloader_console_init) Unless you want to provide your own board_init_f, you should say Y. -config UBOOT_WITH_SPL_SIZE_LIMIT - hex "Maximum size of u-boot-with-spl.bin" - default 0x0 - help - Specifies the maximum length of the u-boot-with-spl.bin image. - If this value is zero, it is ignored. - -config SPL_SIZE_LIMIT - hex "Maximum size of SPL image" - default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB - default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB - default 0x30000 if ARCH_MVEBU && ARMADA_32BIT - default 0x0 - help - Specifies the maximum length of the U-Boot SPL image. - If this value is zero, it is ignored. - -config SPL_SIZE_LIMIT_SUBTRACT_GD - bool "SPL image size check: provide space for global data" - depends on SPL_SIZE_LIMIT > 0 - help - If enabled, aligned size of global data is reserved in - SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM - if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when - pre-reloc global data is put into this SRAM, too. - -config SPL_SIZE_LIMIT_SUBTRACT_MALLOC - bool "SPL image size check: provide space for malloc() pool before relocation" - depends on SPL_SIZE_LIMIT > 0 - help - If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check - to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT - describes the size of SRAM available for SPL when pre-reloc malloc - pool is put into this SRAM, too. - -config SPL_SIZE_LIMIT_PROVIDE_STACK - hex "SPL image size check: provide stack space before relocation" - depends on SPL_SIZE_LIMIT > 0 - default 0x0 - help - If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such - an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size - of SRAM available for SPL when the stack required before reolcation - uses this SRAM, too. - config SPL_MAX_SIZE hex "Maximum size of the SPL image, excluding BSS" default 0x30000 if ARCH_MX6 && MX6_OCRAM_256KB diff --git a/common/spl/Kconfig.tpl b/common/spl/Kconfig.tpl index a535b61ecd3..515bbeec685 100644 --- a/common/spl/Kconfig.tpl +++ b/common/spl/Kconfig.tpl @@ -1,13 +1,6 @@ menu "TPL configuration options" depends on TPL -config TPL_SIZE_LIMIT - hex "Maximum size of TPL image" - default 0x0 - help - Specifies the maximum length of the U-Boot TPL image. - If this value is zero, it is ignored. - config TPL_BINMAN_SYMBOLS bool "Support binman symbols in TPL" depends on TPL_FRAMEWORK && BINMAN diff --git a/common/spl/Kconfig.vpl b/common/spl/Kconfig.vpl index 434562443ac..739f2805315 100644 --- a/common/spl/Kconfig.vpl +++ b/common/spl/Kconfig.vpl @@ -220,13 +220,6 @@ config VPL_SERIAL Enable support for serial in VPL. See SPL_SERIAL for details. -config VPL_SIZE_LIMIT - hex "Maximum size of VPL image" - default 0x0 - help - Specifies the maximum length of the U-Boot VPL image. - If this value is zero, it is ignored. - config VPL_SPI bool "Support SPI drivers" help -- 2.39.5