[PATCH v2 1/1] arm: sunxi: increase SYS_MALLOC_F_LEN

The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- v2 keep default for SPL_SYS_MALLOC_F_LEN at 0x400 --- Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Kconfig b/Kconfig index 0e7ccc0b07..67b594cd74 100644 --- a/Kconfig +++ b/Kconfig @@ -146,7 +146,7 @@ config SYS_MALLOC_F_LEN default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \ ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \ ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \ - ARCH_LS1046A) + ARCH_LS1046A || ARCH_SUNXI) default 0x400 help Before relocation, memory is very limited on many platforms. Still, @@ -166,6 +166,7 @@ config SPL_SYS_MALLOC_F_LEN hex "Size of malloc() pool in SPL before relocation" depends on SYS_MALLOC_F && SPL default 0x2800 if RCAR_GEN3 + default 0x400 if ARCH_SUNXI default SYS_MALLOC_F_LEN help Before relocation, memory is very limited on many platforms. Still, -- 2.26.2

On Mon, Jun 8, 2020 at 6:59 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Jagan Teki jagan@amarulasolutions.com

On 08.06.20 13:50, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 6:59 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
Thanks for reviewing.
All sunxi boards have at least 32 KiB SRAM and only this 32 KiB used by U-Boot for SPL on all sunxi boards. A BananaPi with A20 CPU boots fine with SPL_SYS_MALLOC_F_LEN=0x2000. So it seems that also version 1 of the patch was on the safe side.
Best regards
Heinrich

On Mon, Jun 8, 2020 at 8:25 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 08.06.20 13:50, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 6:59 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
Thanks for reviewing.
All sunxi boards have at least 32 KiB SRAM and only this 32 KiB used by U-Boot for SPL on all sunxi boards. A BananaPi with A20 CPU boots fine with SPL_SYS_MALLOC_F_LEN=0x2000. So it seems that also version 1 of the patch was on the safe side.
Okay. Planning to push this in MW, since the existing boards look fine.
Jagan.

On 6/8/20 2:59 PM, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 8:25 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 08.06.20 13:50, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 6:59 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
Thanks for reviewing.
All sunxi boards have at least 32 KiB SRAM and only this 32 KiB used by U-Boot for SPL on all sunxi boards. A BananaPi with A20 CPU boots fine with SPL_SYS_MALLOC_F_LEN=0x2000. So it seems that also version 1 of the patch was on the safe side.
Okay. Planning to push this in MW, since the existing boards look fine.
Jagan.
Hello Jangan,
unfortunately the patch has not made it into mainline yet. Could you, please, take a look.
The patch is available for download at: https://patchwork.ozlabs.org/project/uboot/patch/20200608105949.5809-1-xypro...
Best regards
Heinrich

Heinrich,
On 7/25/20 2:49 AM, Heinrich Schuchardt wrote:
On 6/8/20 2:59 PM, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 8:25 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 08.06.20 13:50, Jagan Teki wrote:
On Mon, Jun 8, 2020 at 6:59 AM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The current default of 0x400 for SYS_MALLOC_F_LEN is too small if any additional drivers marked as DM_FLAG_PRE_RELOC are loaded before relocation.
CONFIG_RSA=y which is needed for UEFI secure boot or for FIT image verification loads the driver mod_exp_sw which has DM_FLAG_PRE_RELOC.
CONFIG_LOG=Y is another setting requiring additional early malloc area, cf. log_init().
When running pine64-lts_defconfig with CONFIG_RSA=y and debug UART enabled we see as output in main U-Boot
alloc_simple() alloc space exhausted
With this patch the default values of SYS_MALLOC_F_LEN is raised to 0x2000. The default for SPL_SYS_MALLOC_F_LEN on ARCH_SUNXI is explicitely set to 0x400 to avoid an increased usage of SRAM on elder SoCs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
Thanks for reviewing.
All sunxi boards have at least 32 KiB SRAM and only this 32 KiB used by U-Boot for SPL on all sunxi boards. A BananaPi with A20 CPU boots fine with SPL_SYS_MALLOC_F_LEN=0x2000. So it seems that also version 1 of the patch was on the safe side.
Okay. Planning to push this in MW, since the existing boards look fine.
Jagan.
Hello Jangan,
unfortunately the patch has not made it into mainline yet. Could you, please, take a look.
The patch is available for download at: https://patchwork.ozlabs.org/project/uboot/patch/20200608105949.5809-1-xypro...
This patch no longer applies to U-Boot master, since ARCH_QEMU was recently added to the condition for SYS_MALLOC_F_LEN. Please send a rebased version.
Thanks, Samuel
participants (3)
-
Heinrich Schuchardt
-
Jagan Teki
-
Samuel Holland