diff mbox series

[1/2] mx6sabresd: Fix U-Boot corruption after saving the environment

Message ID 20240202014849.4022787-1-festevam@gmail.com
State Changes Requested
Delegated to: Fabio Estevam
Headers show
Series [1/2] mx6sabresd: Fix U-Boot corruption after saving the environment | expand

Commit Message

Fabio Estevam Feb. 2, 2024, 1:48 a.m. UTC
From: Fabio Estevam <festevam@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 increasing the CONFIG_ENV_OFFSET.
    
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 = 0xd000 - 69 * 1024
CONFIG_BOARD_SIZE_LIMIT = 781312

Signed-off-by: Fabio Estevam <festevam@denx.de>
---
 configs/mx6sabresd_defconfig | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Tom Rini Feb. 2, 2024, 1:51 p.m. UTC | #1
On Thu, Feb 01, 2024 at 10:48:48PM -0300, Fabio Estevam wrote:

> From: Fabio Estevam <festevam@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 increasing the CONFIG_ENV_OFFSET.
>     
> 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 = 0xd000 - 69 * 1024
> CONFIG_BOARD_SIZE_LIMIT = 781312
> 
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
>  configs/mx6sabresd_defconfig | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

I don't like when we have to move the environment like this, can we trim
things down instead? Perhaps LTO?
diff mbox series

Patch

diff --git a/configs/mx6sabresd_defconfig b/configs/mx6sabresd_defconfig
index a90efe4a7786..f19df607e7ae 100644
--- a/configs/mx6sabresd_defconfig
+++ b/configs/mx6sabresd_defconfig
@@ -9,7 +9,7 @@  CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SF_DEFAULT_SPEED=20000000
 CONFIG_ENV_SIZE=0x2000
-CONFIG_ENV_OFFSET=0xC0000
+CONFIG_ENV_OFFSET=0xd0000
 CONFIG_MX6QDL=y
 CONFIG_TARGET_MX6SABRESD=y
 CONFIG_DM_GPIO=y
@@ -24,6 +24,8 @@  CONFIG_PCI=y
 CONFIG_FIT=y
 CONFIG_SPL_FIT_PRINT=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_HAS_BOARD_SIZE_LIMIT=y
+CONFIG_BOARD_SIZE_LIMIT=781312
 CONFIG_SUPPORT_RAW_INITRD=y
 CONFIG_USE_BOOTCOMMAND=y
 CONFIG_BOOTCOMMAND="run findfdt;mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi"