bootm_get_devicetree returns the fixed up device tree, so it must be called after bootm_load_initrd, so the properties indicating the initrd location are included in the fixed DT.
Signed-off-by: Ahmad Fatoum <a.fat...@barebox.org> --- common/booti.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/common/booti.c b/common/booti.c index 2d4cb3598737..6a87b84c0308 100644 --- a/common/booti.c +++ b/common/booti.c @@ -66,12 +66,6 @@ void *booti_load_image(struct image_data *data, phys_addr_t *oftree) unsigned long devicetree; const struct resource *initrd_res; - fdt = bootm_get_devicetree(data); - if (IS_ERR(fdt)) - return fdt; - if (!fdt) - goto out; - initrd_res = bootm_load_initrd(data, image_end); if (IS_ERR(initrd_res)) { return ERR_CAST(initrd_res); @@ -82,6 +76,15 @@ void *booti_load_image(struct image_data *data, phys_addr_t *oftree) devicetree = image_end; + fdt = bootm_get_devicetree(data); + if (IS_ERR(fdt)) + return fdt; + if (!fdt) { + if (initrd_res) + pr_warn("initrd discarded due to missing devicetree.\n"); + goto out; + } + ret = bootm_load_devicetree(data, fdt, devicetree); free(fdt); -- 2.39.5