[PATCH v2 1/3] sunxi: u-boot-spl.lds: Pass _image_binary_end

From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de --- Changes since v1: - Newly introduced to avoid build failure.
arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds | 1 + arch/arm/cpu/armv7/sunxi/u-boot-spl.lds | 1 + 2 files changed, 2 insertions(+)
diff --git a/arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds index c10873681157..cf65e8c46281 100644 --- a/arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds @@ -36,6 +36,7 @@ SECTIONS . = ALIGN(4); __image_copy_end = .; _end = .; + _image_binary_end = .;
.bss : { diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds index 306a4ddf3cd2..fb7a789b28b8 100644 --- a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds @@ -45,6 +45,7 @@ SECTIONS . = ALIGN(4); __image_copy_end = .; _end = .; + _image_binary_end = .;
.bss : {

From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de --- Changes since v1: - Newly introduced to avoid build failure.
arch/microblaze/cpu/u-boot-spl.lds | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/microblaze/cpu/u-boot-spl.lds b/arch/microblaze/cpu/u-boot-spl.lds index 4ac5a21524c5..597095195cae 100644 --- a/arch/microblaze/cpu/u-boot-spl.lds +++ b/arch/microblaze/cpu/u-boot-spl.lds @@ -54,6 +54,7 @@ SECTIONS __bss_end = .; } _end = . ; + _image_binary_end = .; }
#if defined(CONFIG_SPL_MAX_FOOTPRINT)

On 7/1/23 04:30, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de
Reviewed-by: Marek Vasut marex@denx.de

On Fri, Jun 30, 2023 at 11:30:52PM -0300, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de Reviewed-by: Marek Vasut marex@denx.de
Applied to u-boot/master, thanks!

From: Fabio Estevam festevam@denx.de
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 --- Changes since v1: - None.
common/spl/spl_legacy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c index d34bc5492e8d..095443c63d8d 100644 --- a/common/spl/spl_legacy.c +++ b/common/spl/spl_legacy.c @@ -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) ||

On 7/1/23 04:30, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
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

On Fri, Jun 30, 2023 at 11:30:53PM -0300, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
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
Applied to u-boot/master, thanks!

On 7/1/23 04:30, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de
Reviewed-by: Marek Vasut marex@denx.de

On Fri, Jun 30, 2023 at 11:30:51PM -0300, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Pass _image_binary_end to make a standard way to indicate the end of the text section in SPL.
The motivation for this is to have a uniform way to handle the SPL boundary checks.
Signed-off-by: Fabio Estevam festevam@denx.de Reviewed-by: Marek Vasut marex@denx.de
Applied to u-boot/master, thanks!
participants (3)
-
Fabio Estevam
-
Marek Vasut
-
Tom Rini