efi: Make FDT extra space configurable
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>
This commit is contained in:

committed by
Heinrich Schuchardt

parent
7b269a2bd6
commit
e8660b23f4
@@ -168,7 +168,7 @@ efi_dt_fixup(struct efi_dt_fixup_protocol *this, void *dtb,
|
|||||||
/* Check size */
|
/* Check size */
|
||||||
required_size = fdt_off_dt_strings(dtb) +
|
required_size = fdt_off_dt_strings(dtb) +
|
||||||
fdt_size_dt_strings(dtb) +
|
fdt_size_dt_strings(dtb) +
|
||||||
0x3000;
|
CONFIG_SYS_FDT_PAD;
|
||||||
total_size = fdt_totalsize(dtb);
|
total_size = fdt_totalsize(dtb);
|
||||||
if (required_size < total_size)
|
if (required_size < total_size)
|
||||||
required_size = total_size;
|
required_size = total_size;
|
||||||
|
@@ -485,7 +485,7 @@ static efi_status_t copy_fdt(void **fdtp)
|
|||||||
* needs to be expanded later.
|
* needs to be expanded later.
|
||||||
*/
|
*/
|
||||||
fdt = *fdtp;
|
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;
|
fdt_size = fdt_pages << EFI_PAGE_SHIFT;
|
||||||
|
|
||||||
ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES,
|
ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES,
|
||||||
|
Reference in New Issue
Block a user