Commit 4a4d53df authored by Leif Lindholm's avatar Leif Lindholm Committed by Colin Watson

efi/fdt: Set address/size cells to 2 for empty tree

When booting an arm* system on UEFI with an empty device tree (currently
only when hardware description comes from ACPI), we don't currently set
default to 1 cell (32 bits).

Set both of these properties, to 2 cells (64 bits), to resolve issues
with kexec on some platforms.

This change corresponds with linux kernel commit ae8a442dfdc4
("efi/libstub/arm*: Set default address and size cells values for an empty dtb")
and ensures booting through grub does not behave differently from booting
the stub loader directly.

See also 's avatarLeif Lindholm <>
Reviewed-by: 's avatarDaniel Kiper <>

Origin: upstream,
Last-Update: 2018-12-06

Patch-Name: efi-fdt-set-address-size-cells-to-2-for-empty-tree.patch
parent 7630f4ab
......@@ -29,6 +29,12 @@
static void *loaded_fdt;
static void *fdt;
#define FDT_ADDR_CELLS_STRING "#address-cells"
#define FDT_SIZE_CELLS_STRING "#size-cells"
#define FDT_ADDR_SIZE_EXTRA ((2 * grub_fdt_prop_entry_size (sizeof(grub_uint32_t))) + \
void *
grub_fdt_load (grub_size_t additional_size)
......@@ -46,8 +52,11 @@ grub_fdt_load (grub_size_t additional_size)
raw_fdt = grub_efi_get_firmware_fdt();
size =
raw_fdt ? grub_fdt_get_totalsize (raw_fdt) : GRUB_FDT_EMPTY_TREE_SZ;
if (raw_fdt)
size = grub_fdt_get_totalsize (raw_fdt);
size += additional_size;
grub_dprintf ("linux", "allocating %d bytes for fdt\n", size);
......@@ -63,6 +72,8 @@ grub_fdt_load (grub_size_t additional_size)
grub_fdt_create_empty_tree (fdt, size);
grub_fdt_set_prop32 (fdt, 0, FDT_ADDR_CELLS_STRING, 2);
grub_fdt_set_prop32 (fdt, 0, FDT_SIZE_CELLS_STRING, 2);
return fdt;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment