
On the sandbox the memory addresses in the device tree refer to the virtual address space of the sandbox. This implies that the memory reservations for the fdt also have to be converted to this address space.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- common/fdt_support.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/common/fdt_support.c b/common/fdt_support.c index e6daa67990d..ec6af92dbba 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -7,6 +7,7 @@ */
#include <common.h> +#include <mapmem.h> #include <stdio_dev.h> #include <linux/ctype.h> #include <linux/types.h> @@ -240,7 +241,8 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end) } }
- err = fdt_add_mem_rsv(fdt, initrd_start, initrd_end - initrd_start); + err = fdt_add_mem_rsv((void *)(uintptr_t)map_to_sysmem(fdt), + initrd_start, initrd_end - initrd_start); if (err < 0) { printf("fdt_initrd: %s\n", fdt_strerror(err)); return err; @@ -633,7 +635,8 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize) fdt_set_totalsize(blob, actualsize);
/* Add the new reservation */ - ret = fdt_add_mem_rsv(blob, (uintptr_t)blob, actualsize); + ret = fdt_add_mem_rsv((void *)(uintptr_t)map_to_sysmem(blob), + (uintptr_t)blob, actualsize); if (ret < 0) return ret;