]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
efi: Make FDT extra space configurable
authorPawel Kochanowski <pkochanowski@sii.pl>
Tue, 18 Mar 2025 09:22:18 +0000 (10:22 +0100)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 11 Apr 2025 11:20:37 +0000 (13:20 +0200)
U-Boot currently reserves only 0x3000 bytes when copying the FDT
in copy_fdt(), which may not be sufficient if additional nodes
(such as FMAN firmware) are added later.

This patch uses the exisitng SYS_FDT_PAD to reserve space for FDT fixup
instead of hardcoded value.

This change prevents potential corruption when resizing FDT after
EFI boot, especially when firmware like FMAN requires additional
space.

Signed-off-by: Gabriel Nesteruk <gnesteruk@sii.pl>
Signed-off-by: Pawel Kochanowski <pkochanowski@sii.pl>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
lib/efi_loader/efi_dt_fixup.c
lib/efi_loader/efi_helper.c

index 26928cfc454cdba1f325f3aa23de19bb1563f768..544e1aa980860873df1de2e770bf6366d4aae055 100644 (file)
@@ -168,7 +168,7 @@ efi_dt_fixup(struct efi_dt_fixup_protocol *this, void *dtb,
                /* Check size */
                required_size = fdt_off_dt_strings(dtb) +
                                fdt_size_dt_strings(dtb) +
-                               0x3000;
+                               CONFIG_SYS_FDT_PAD;
                total_size = fdt_totalsize(dtb);
                if (required_size < total_size)
                        required_size = total_size;
index 8c32059eddab866a74609b13b435a7cc5b9ba92b..3936139ca41c459553ab4906e554872a7b747611 100644 (file)
@@ -485,7 +485,7 @@ static efi_status_t copy_fdt(void **fdtp)
         * needs to be expanded later.
         */
        fdt = *fdtp;
-       fdt_pages = efi_size_in_pages(fdt_totalsize(fdt) + 0x3000);
+       fdt_pages = efi_size_in_pages(fdt_totalsize(fdt) + CONFIG_SYS_FDT_PAD);
        fdt_size = fdt_pages << EFI_PAGE_SHIFT;
 
        ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES,