[PATCH v2 1/3] mx6sabresd: Fix U-Boot corruption after saving the environment

Igor Opaniuk igor.opaniuk at foundries.io
Fri Feb 2 21:34:48 CET 2024


On Fri, Feb 2, 2024 at 5:04 PM Fabio Estevam <festevam at gmail.com> wrote:
>
> From: Fabio Estevam <festevam at denx.de>
>
> U-Boot binary has grown in such a way that it goes beyond the reserved
> area for the environment variables.
>
> Running "saveenv" and rebooting the board causes U-Boot to hang because
> of this overlap.
>
> Fix this problem by selecting CONFIG_LTO so that the U-Boot proper
> size can be reduced.
>
> Also, to prevent this same problem to happen in the future, use
> CONFIG_BOARD_SIZE_LIMIT, which can detect the overlap in build-time.
>
> CONFIG_BOARD_SIZE_LIMIT is calculated as follows:
>
> CONFIG_BOARD_SIZE_LIMIT = CONFIG_ENV_OFFSET - u-boot-img.dtb offset
> CONFIG_BOARD_SIZE_LIMIT = 0xc000 - 69 * 1024
> CONFIG_BOARD_SIZE_LIMIT = 715766
>
> Signed-off-by: Fabio Estevam <festevam at denx.de>
> ---
> Changes since v1:
> - Select LTO. (Tom)
>
>  configs/mx6sabresd_defconfig | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/configs/mx6sabresd_defconfig b/configs/mx6sabresd_defconfig
> index a90efe4a7786..d4fb55622cf1 100644
> --- a/configs/mx6sabresd_defconfig
> +++ b/configs/mx6sabresd_defconfig
> @@ -21,6 +21,9 @@ CONFIG_SPL_SERIAL=y
>  CONFIG_SPL=y
>  CONFIG_SPL_LIBDISK_SUPPORT=y
>  CONFIG_PCI=y
> +CONFIG_LTO=y
> +CONFIG_HAS_BOARD_SIZE_LIMIT=y
> +CONFIG_BOARD_SIZE_LIMIT=715766
>  CONFIG_FIT=y
>  CONFIG_SPL_FIT_PRINT=y
>  CONFIG_SPL_LOAD_FIT=y
> --
> 2.34.1
>
Reviewed-by: Igor Opaniuk <igor.opaniuk at foundries.io>

btw, from my experience, the same issue will probably occur again in future,
especially when the current U-Boot size is already close to the defined limit
(yes, with this patch it will be reported during compile time, but still).

Have you considered adjusting the boot image layout instead
(moving CONFIG_ENV_OFFSET, so unlikely
U-Boot image will overlap again) to tackle feature problems?

-- 
Best regards - Freundliche Grüsse - Meilleures salutations

Igor Opaniuk
Senior Software Engineer, Embedded & Security
E: igor.opaniuk at foundries.io
W: www.foundries.io


More information about the U-Boot mailing list