From: Ian Campbell Date: Mon, 21 Oct 2013 09:21:23 +0000 (+0100) Subject: xen: arm: fix usage of bootargs for Xen. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~6134 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a067a9b960f6328e6bff620f7ab24096427bcc14;p=xen.git xen: arm: fix usage of bootargs for Xen. The chosen node's bootargs property should be used for Xen if there is a dom0 kernel multiboot module with a command line, not just if xen,dom0-bootargs is present. Signed-off-by: Ian Campbell Acked-by: Julien Grall --- diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt index 08ed775185..8da1e0b8fc 100644 --- a/docs/misc/arm/device-tree/booting.txt +++ b/docs/misc/arm/device-tree/booting.txt @@ -39,6 +39,8 @@ lines for Xen and Dom0. The logic is the following: - If xen,dom0-bootargs is present, it will be used for Dom0. - If xen,xen-bootargs is _not_ present, but xen,dom0-bootargs is, bootargs will be used for Xen. + - If a kernel boot module is present and has a bootargs property then + the top-level bootargs will used for Xen. - If no Xen specific properties are present, bootargs is for Dom0. - If xen,xen-bootargs is present, but xen,dom0-bootargs is missing, bootargs will be used for Dom0. diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c index af0fb0446a..f7d0215848 100644 --- a/xen/common/device_tree.c +++ b/xen/common/device_tree.c @@ -240,7 +240,7 @@ static int __init device_tree_for_each_node(const void *fdt, */ const char *device_tree_bootargs(const void *fdt) { - int node; + int node; const struct fdt_property *prop; node = fdt_path_offset(fdt, "/chosen"); @@ -250,7 +250,13 @@ const char *device_tree_bootargs(const void *fdt) prop = fdt_get_property(fdt, node, "xen,xen-bootargs", NULL); if ( prop == NULL ) { - if (fdt_get_property(fdt, node, "xen,dom0-bootargs", NULL)) + struct dt_mb_module *dom0_mod = NULL; + + if ( early_info.modules.nr_mods >= MOD_KERNEL ) + dom0_mod = &early_info.modules.module[MOD_KERNEL]; + + if (fdt_get_property(fdt, node, "xen,dom0-bootargs", NULL) || + ( dom0_mod && dom0_mod->cmdline[0] ) ) prop = fdt_get_property(fdt, node, "bootargs", NULL); } if ( prop == NULL )