This patch cleans up xen_init_early() to construct a start_info_t only
from the devtree as Patch1 fixes xen to no longer create a start_info_t
for dom0.

-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253   T/L: 678-9253
[EMAIL PROTECTED]


diffstat output:
 setup.c |   33 +++++++++++++++------------------
 1 files changed, 15 insertions(+), 18 deletions(-)

Signed-off-by: Ryan Harper <[EMAIL PROTECTED]>
---
diff -r a6adf094e08e arch/powerpc/platforms/xen/setup.c
--- a/arch/powerpc/platforms/xen/setup.c        Tue Feb 06 13:55:48 2007 -0600
+++ b/arch/powerpc/platforms/xen/setup.c        Wed Feb 07 11:33:10 2007 -0600
@@ -88,29 +88,26 @@ static void __init xen_init_early(void)
 static void __init xen_init_early(void)
 {
        struct device_node *xen;
-       u64 *si;
 
        DBG(" -> %s\n", __func__);
 
        xen = of_find_node_by_path("/xen");
 
-       si = (u64 *)get_property(xen, "start-info", NULL);
-
-       /* build our own start_info_t if start-info property is not present */
-       if (si != NULL) {
-               xen_start_info = (start_info_t *)__va(*si);
-       } else {
-               struct device_node *console;
-               struct device_node *store;
-
-               console = of_find_node_by_path("/xen/console");
-               store = of_find_node_by_path("/xen/store");
-
-               xen_start_info = &xsi;
-
-               /* fill out start_info_t from devtree */
-               xen_start_info->shared_info = *((u64 *)get_property(xen, 
-                  "shared-info", NULL));
+       xen_start_info = &xsi;
+
+       /* fill out start_info_t from devtree */
+       if ((char *)get_property(xen, "privileged", NULL))
+               xen_start_info->flags |= SIF_PRIVILEGED;
+       if ((char *)get_property(xen, "initdomain", NULL))
+               xen_start_info->flags |= SIF_INITDOMAIN;
+       xen_start_info->shared_info = *((u64 *)get_property(xen, 
+          "shared-info", NULL));
+
+       /* only look for store and console for guest domains */
+       if (xen_start_info->flags == 0) {
+               struct device_node *console = 
of_find_node_by_path("/xen/console");
+               struct device_node *store = of_find_node_by_path("/xen/store");
+
                xen_start_info->store_mfn = (*((u64 *)get_property(store,
                   "reg", NULL))) >> PAGE_SHIFT;
                xen_start_info->store_evtchn = *((u32 *)get_property(store,

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to