]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
boot: Move adding initrd earlier in image_setup_libfdt()
authorSimon Glass <sjg@chromium.org>
Sun, 12 Nov 2023 15:27:48 +0000 (08:27 -0700)
committerTom Rini <trini@konsulko.com>
Wed, 13 Dec 2023 23:39:05 +0000 (18:39 -0500)
This may as well happen before the general event is emitted, so move it.
This will allow us to use the livetree for the event part, but the
flattree for the earlier part.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/image-fdt.c
include/fdt_support.h

index 6cdac6a556d84658e721aadb78c3192d9f0bf955..173ddb6e074acfbd6ec3e8e8bdc1b9d5335dc460 100644 (file)
@@ -635,6 +635,10 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob,
                        goto err;
                }
        }
+
+       if (fdt_initrd(blob, *initrd_start, *initrd_end))
+               goto err;
+
        if (!of_live_active() && CONFIG_IS_ENABLED(EVENT)) {
                struct event_ft_fixup fixup;
 
@@ -664,7 +668,6 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob,
        if (lmb)
                lmb_reserve(lmb, (ulong)blob, of_size);
 
-       fdt_initrd(blob, *initrd_start, *initrd_end);
        if (!ft_verify_fdt(blob))
                goto err;
 
index 0601f5f7dc8ba269d55ee8a0de8b986f235c9438..25600d62f2915b78731a87074674caa1dcf45d81 100644 (file)
@@ -55,7 +55,17 @@ int fdt_chosen(void *fdt);
 /**
  * Add initrd information to the FDT before booting the OS.
  *
- * @param fdt          FDT address in memory
+ * Adds linux,initrd-start and linux,initrd-end properties to the /chosen node,
+ * creating it if necessary.
+ *
+ * A memory reservation for the ramdisk is added to the FDT, or an existing one
+ * (with matching @initrd_start) updated.
+ *
+ * If @initrd_start == @initrd_end this function does nothing and returns 0.
+ *
+ * @fdt: Pointer to FDT in memory
+ * @initrd_start: Start of ramdisk
+ * @initrd_end: End of ramdisk
  * Return: 0 if ok, or -FDT_ERR_... on error
  */
 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end);