Create a start_info_t structure from devtree if start_info_t is not
passed in.
--
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253 T/L: 678-9253
ryanh@xxxxxxxxxx
diffstat output:
setup.c | 28 +++++++++++++++++++++++++++-
1 files changed, 27 insertions(+), 1 deletion(-)
Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx>
---
diff -r bbf2db4ddf54 arch/powerpc/platforms/xen/setup.c
--- a/arch/powerpc/platforms/xen/setup.c Tue Dec 19 09:22:37 2006 -0500
+++ b/arch/powerpc/platforms/xen/setup.c Tue Jan 30 09:43:11 2007 -0600
@@ -32,6 +32,7 @@ EXPORT_SYMBOL(HYPERVISOR_shared_info);
EXPORT_SYMBOL(HYPERVISOR_shared_info);
/* Raw start-of-day parameters from the hypervisor. */
+start_info_t xsi;
start_info_t *xen_start_info;
extern struct machdep_calls mach_maple_md;
@@ -94,7 +95,32 @@ static void __init xen_init_early(void)
xen = of_find_node_by_path("/xen");
si = (u64 *)get_property(xen, "start-info", NULL);
- xen_start_info = (start_info_t *)__va(*si);
+
+ /* build our own start_info_t if prop start-info not found */
+ 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->store_mfn = (*((u64 *)get_property(store,
+ "reg", NULL))) >> PAGE_SHIFT;
+ xen_start_info->store_evtchn = *((u32 *)get_property(store,
+ "interrupts", NULL));
+ xen_start_info->console.domU.mfn = (*((u64
*)get_property(console,
+ "reg", NULL))) >> PAGE_SHIFT;
+ xen_start_info->console.domU.evtchn = *((u32
*)get_property(console,
+ "interrupts", NULL));
+ }
+
HYPERVISOR_shared_info = __va(xen_start_info->shared_info);
udbg_init_xen();
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|