xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ARM: parse separate DT properties for different commandlines
@ 2013-06-03 13:43 Andre Przywara
  2013-06-03 14:22 ` Julien Grall
  2013-07-10 11:48 ` Julien Grall
  0 siblings, 2 replies; 9+ messages in thread
From: Andre Przywara @ 2013-06-03 13:43 UTC (permalink / raw)
  To: Ian.Campbell, stefano.stabellini; +Cc: Andre Przywara, julien.grall, xen-devel

Currently we use the chosen/bootargs property as the Xen commandline
and rely on xen,dom0-bootargs for Dom0. However this brings issues
with bootloaders, which usually build bootargs by bootscripts for a
Linux kernel - and not for the entirely different Xen hypervisor.
Introduce a new possible device tree property "xen,xen-bootargs"
explicitly for the Xen hypervisor and make the selection of which to
use more fine grained:
- If xen,xen-bootargs is present, it will be used for Xen.
- 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. Like the current situation.
- 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.

The aim is to allow common bootscripts to boot both Xen and native
Linux with the same device tree blob. If needed, one could hard-code
the Xen commandline into the DTB, leaving bootargs for Dom0 to be set
by the (non Xen-aware) bootloader.
I also have a simple patch for u-boot to transfer the content of the
"xen_bootargs" environment variable into the xen,xen-bootargs dtb
property.
I will post the u-boot patch to their ML later.

Changes from v1:
- fix whitespace issues

Signed-off-by: Andre Przywara <andre.przywara@calxeda.com>
---
 xen/arch/arm/domain_build.c | 13 ++++++++++---
 xen/common/device_tree.c    |  7 ++++++-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index b92c64b..5809489 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -139,6 +139,7 @@ static int write_properties(struct domain *d, struct kernel_info *kinfo,
                             u32 address_cells, u32 size_cells)
 {
     const char *bootargs = NULL;
+    int had_dom0_bootargs = 0;
     int prop;
 
     if ( early_info.modules.nr_mods >= 1 &&
@@ -169,11 +170,17 @@ static int write_properties(struct domain *d, struct kernel_info *kinfo,
          */
         if ( device_tree_node_matches(fdt, node, "chosen") )
         {
-            if ( strcmp(prop_name, "bootargs") == 0 )
+            if ( strcmp(prop_name, "xen,xen-bootargs") == 0 )
+                continue;
+            if ( strcmp(prop_name, "xen,dom0-bootargs") == 0 )
+            {
+                had_dom0_bootargs = 1;
+                bootargs = prop_data;
                 continue;
-            else if ( strcmp(prop_name, "xen,dom0-bootargs") == 0 )
+            }
+            if ( strcmp(prop_name, "bootargs") == 0 )
             {
-                if ( !bootargs )
+                if ( !bootargs  && !had_dom0_bootargs )
                     bootargs = prop_data;
                 continue;
             }
diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
index 84d704d..e22bd22 100644
--- a/xen/common/device_tree.c
+++ b/xen/common/device_tree.c
@@ -325,7 +325,12 @@ const char *device_tree_bootargs(const void *fdt)
     if ( node < 0 )
         return NULL;
 
-    prop = fdt_get_property(fdt, node, "bootargs", NULL);
+    prop = fdt_get_property(fdt, node, "xen,xen-bootargs", NULL);
+    if ( prop == NULL )
+    {
+        if (fdt_get_property(fdt, node, "xen,dom0-bootargs", NULL))
+            prop = fdt_get_property(fdt, node, "bootargs", NULL);
+    }
     if ( prop == NULL )
         return NULL;
 
-- 
1.7.12.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-08-20 13:47 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-03 13:43 [PATCH v2] ARM: parse separate DT properties for different commandlines Andre Przywara
2013-06-03 14:22 ` Julien Grall
2013-07-10 11:48 ` Julien Grall
2013-08-20 12:09   ` Andre Przywara
2013-08-20 12:19     ` Julien Grall
2013-08-20 13:11       ` Ian Campbell
2013-08-20 13:32         ` Julien Grall
2013-08-20 13:39           ` Ian Campbell
2013-08-20 13:47             ` Julien Grall

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).