In case the 'fdt_high' environment variable is set to ~0 and DT is
at non-8-byte aligned offset, warn users about the dangers of the
fdt_high usage. This will hopefully lead to removal of most of the
fdt_high ~0 usage over time.

Signed-off-by: Marek Vasut <[email protected]>
---
Cc: "João Paulo Gonçalves" <[email protected]>
Cc: Ilias Apalodimas <[email protected]>
Cc: Sam Protsenko <[email protected]>
Cc: Sughosh Ganu <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: [email protected]
---
 boot/image-fdt.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/boot/image-fdt.c b/boot/image-fdt.c
index 3f0ac54f76f..e88525a3846 100644
--- a/boot/image-fdt.c
+++ b/boot/image-fdt.c
@@ -189,6 +189,10 @@ int boot_relocate_fdt(char **of_flat_tree, ulong *of_size)
                        /* All ones means use fdt in place */
                        of_start = fdt_blob;
                        addr = map_to_sysmem(fdt_blob);
+                       if (addr & 7) {
+                               printf("WARNING: The 'fdt_high' environment 
variable is set to ~0 and DT is at non-8-byte aligned address.\nWARNING: This 
system will likely fail to boot. Unset 'fdt_high' environment variable and 
submit fix upstream.\n");
+                       }
+
                        err = lmb_alloc_mem(LMB_MEM_ALLOC_ADDR, 0, &addr,
                                            of_len, LMB_NONE);
                        if (err) {
-- 
2.51.0

Reply via email to