On 2/15/25 04:22, Simon Glass wrote:
The app does not have this symbol. Also the memory where the app is
loaded is not under U-Boot's control.

There is no sense in relocating from one alloced region to another.
U-Boot is not able to relocate to the top of memory, nor decide what
other parts of memory are used for.

For these reasons, the EFI app skips relocation. It is not running at
the address pointed to by the _start symbol.

is there a symbol or not? If there is could we have some "relocate in place" mechanism so that it's valid? When I (finally...) get around to re-sending the symbol lookup support it would be nice if it worked for the EFI app, and it relies on _start.

So disable this reservation for the EFI app.

Signed-off-by: Simon Glass <s...@chromium.org>
Reviewed-by: Tom Rini <tr...@konsulko.com>
---

(no changes since v2)

Changes in v2:
- Expand commit message to explains that EFI_APP skips relocation

  lib/lmb.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/lmb.c b/lib/lmb.c
index 588787d2a90..420eae4d0b8 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -560,7 +560,8 @@ static void lmb_reserve_uboot_region(void)
                lmb_reserve_flags(rsv_start, bank_end - rsv_start + 1,
                                  LMB_NOOVERWRITE);
- if (gd->flags & GD_FLG_SKIP_RELOC)
+               if (!IS_ENABLED(CONFIG_EFI_APP) &&
+                   (gd->flags & GD_FLG_SKIP_RELOC))
                        lmb_reserve_flags((phys_addr_t)(uintptr_t)_start,
                                          gd->mon_len, LMB_NOOVERWRITE);

--
Caleb (they/them)

Reply via email to