From e48a4c0b9e475b16366ff6c375de5186432eb1f7 Mon Sep 17 00:00:00 2001 From: Mark Salter Date: Mon, 17 Apr 2017 08:44:29 -0400 Subject: [PATCH 168/238] arm64: make sure fdt has #address-cells and #size-cells properties Recent upstream changes to kexec-tools relies on #address-cells and #size-cells properties in the FDT. If grub2 needs to create a chosen node, it is likely because firmware did not provide one. In that case, set #address-cells and #size-cells properties to make sure they exist. --- grub-core/loader/arm64/linux.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c index ad39a301527..59ff9cc05b4 100644 --- a/grub-core/loader/arm64/linux.c +++ b/grub-core/loader/arm64/linux.c @@ -79,7 +79,21 @@ finalize_params_linux (void) node = grub_fdt_find_subnode (fdt, 0, "chosen"); if (node < 0) - node = grub_fdt_add_subnode (fdt, 0, "chosen"); + { + /* + * If we have to create a chosen node, Make sure we + * have #address-cells and #size-cells properties. + */ + retval = grub_fdt_set_prop32(fdt, 0, "#address-cells", 2); + if (retval) + goto failure; + + retval = grub_fdt_set_prop32(fdt, 0, "#size-cells", 2); + if (retval) + goto failure; + + node = grub_fdt_add_subnode (fdt, 0, "chosen"); + } if (node < 1) goto failure; -- 2.17.0