]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
spl: spl_legacy: Fix spl_end address
authorFabio Estevam <festevam@denx.de>
Sat, 1 Jul 2023 02:30:53 +0000 (23:30 -0300)
committerTom Rini <trini@konsulko.com>
Mon, 3 Jul 2023 14:20:13 +0000 (10:20 -0400)
Currently, spl_end points to the __bss_end address, which
is an external RAM address instead of the end of the SPL text
section in the internal RAM.

This causes boot failures on imx6-colibri, for example:

```
Trying to boot from MMC1
SPL: Image overlaps SPL
resetting ...
```
Fix this problem by assigning spl_end to _image_binary_end, as this
symbol properly represents the end of the SPL text section.

From u-boot-spl.map:

.end
 *(.__end)
                0x00000000009121a4                _image_binary_end = .

Fixes: 77aed22b48ab ("spl: spl_legacy: Add extra address checks")
Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Fabio Estevam <festevam@denx.de>
Tested-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Tested-by: Marek Vasut <marex@denx.de> # DH i.MX6Q DHCOM PDK2
common/spl/spl_legacy.c

index d34bc5492e8df15fce1baa1e79cc1c5d688e1bab..095443c63d8daae0f8d29914642bcb52b0d7b164 100644 (file)
@@ -19,7 +19,7 @@
 static void spl_parse_legacy_validate(uintptr_t start, uintptr_t size)
 {
        uintptr_t spl_start = (uintptr_t)_start;
-       uintptr_t spl_end = (uintptr_t)__bss_end;
+       uintptr_t spl_end = (uintptr_t)_image_binary_end;
        uintptr_t end = start + size;
 
        if ((start >= spl_start && start < spl_end) ||