46 lines
1.8 KiB
Diff
46 lines
1.8 KiB
Diff
|
From d34977cb662d9d3c74532dc175103758c47f552f Mon Sep 17 00:00:00 2001
|
||
|
From: Julien Grall <julien.grall@linaro.org>
|
||
|
Date: Wed, 29 Nov 2017 17:08:12 +0000
|
||
|
Subject: [PATCH] arm64/xen: Add missing #address-cells and #size-cells
|
||
|
properties
|
||
|
|
||
|
The properties #address-cells and #size-cells are used to know the
|
||
|
number of cells for ranges provided by "regs". If they don't exist, the
|
||
|
value are resp. 2 and 1.
|
||
|
|
||
|
Currently, when multiboot nodes are created it is assumed that #address-cells
|
||
|
and #size-cells are exactly 2. However, they are never set by GRUB and
|
||
|
will result to later failure when the device-tree is generated by GRUB
|
||
|
or contain different values.
|
||
|
|
||
|
To prevent this failure, create the both properties in the chosen nodes.
|
||
|
|
||
|
Signed-off-by: Julien Grall <julien.grall@linaro.org>
|
||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||
|
---
|
||
|
grub-core/loader/arm64/xen_boot.c | 11 +++++++++++
|
||
|
1 file changed, 11 insertions(+)
|
||
|
|
||
|
diff --git a/grub-core/loader/arm64/xen_boot.c b/grub-core/loader/arm64/xen_boot.c
|
||
|
index c95d6c5a868..6780b1f0c4a 100644
|
||
|
--- a/grub-core/loader/arm64/xen_boot.c
|
||
|
+++ b/grub-core/loader/arm64/xen_boot.c
|
||
|
@@ -115,6 +115,17 @@ prepare_xen_hypervisor_params (void *xen_boot_fdt)
|
||
|
if (chosen_node < 1)
|
||
|
return grub_error (GRUB_ERR_IO, "failed to get chosen node in FDT");
|
||
|
|
||
|
+ /*
|
||
|
+ * The address and size are always written using 64-bits value. Set
|
||
|
+ * #address-cells and #size-cells accordingly.
|
||
|
+ */
|
||
|
+ retval = grub_fdt_set_prop32 (xen_boot_fdt, chosen_node, "#address-cells", 2);
|
||
|
+ if (retval)
|
||
|
+ return grub_error (GRUB_ERR_IO, "failed to set #address-cells");
|
||
|
+ retval = grub_fdt_set_prop32 (xen_boot_fdt, chosen_node, "#size-cells", 2);
|
||
|
+ if (retval)
|
||
|
+ return grub_error (GRUB_ERR_IO, "failed to set #size-cells");
|
||
|
+
|
||
|
grub_dprintf ("xen_loader",
|
||
|
"Xen Hypervisor cmdline : %s @ %p size:%d\n",
|
||
|
xen_hypervisor->cmdline, xen_hypervisor->cmdline,
|