WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [POWERPC][XEN] Use multiboot2 data struct

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [POWERPC][XEN] Use multiboot2 data structures when present.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 01 Aug 2007 09:51:32 -0700
Delivery-date: Wed, 01 Aug 2007 09:49:33 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Date 1185833445 18000
# Node ID 553f64e4f6efb0482490324a8e7cd99d3a9a653d
# Parent  a94bf8086002290270f3e6c6a464986462ba8809
[POWERPC][XEN] Use multiboot2 data structures when present.
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
 xen/arch/powerpc/Makefile     |    1 
 xen/arch/powerpc/boot_of.c    |  180 ++++++------------------------------------
 xen/arch/powerpc/exceptions.h |    3 
 xen/arch/powerpc/memory.c     |    3 
 xen/arch/powerpc/oftree.h     |    4 
 xen/arch/powerpc/setup.c      |  155 ++++++++++++++++++++++--------------
 xen/include/asm-powerpc/mm.h  |    1 
 7 files changed, 125 insertions(+), 222 deletions(-)

diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/Makefile
--- a/xen/arch/powerpc/Makefile Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/Makefile Mon Jul 30 17:10:45 2007 -0500
@@ -27,6 +27,7 @@ obj-y += mm.o
 obj-y += mm.o
 obj-y += mpic.o
 obj-y += mpic_init.o
+obj-y += multiboot2.o
 obj-y += numa.o
 obj-y += of-devtree.o
 obj-y += of-devwalk.o
diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/boot_of.c
--- a/xen/arch/powerpc/boot_of.c        Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/boot_of.c        Mon Jul 30 17:10:45 2007 -0500
@@ -22,7 +22,6 @@
 #include <xen/config.h>
 #include <xen/init.h>
 #include <xen/lib.h>
-#include <xen/multiboot.h>
 #include <xen/version.h>
 #include <xen/spinlock.h>
 #include <xen/serial.h>
@@ -30,6 +29,7 @@
 #include <xen/sched.h>
 #include <asm/page.h>
 #include <asm/io.h>
+#include <asm/boot.h>
 #include "exceptions.h"
 #include "of-devtree.h"
 #include "oftree.h"
@@ -54,7 +54,6 @@ static ulong eomem;
 #define MEM_AVAILABLE_PAGES ((32 << 20) >> PAGE_SHIFT)
 static DECLARE_BITMAP(mem_available_pages, MEM_AVAILABLE_PAGES);
 
-extern char builtin_cmdline[];
 extern struct ns16550_defaults ns16550;
 
 #undef OF_DEBUG
@@ -648,23 +647,6 @@ static ulong boot_of_mem_init(void)
     return 0;
 }
 
-static void boot_of_bootargs(multiboot_info_t *mbi)
-{
-    int rc;
-
-    if (builtin_cmdline[0] == '\0') {
-        rc = of_getprop(bof_chosen, "bootargs", builtin_cmdline,
-                CONFIG_CMDLINE_SIZE);
-        if (rc > CONFIG_CMDLINE_SIZE)
-            of_panic("bootargs[] not big enough for /chosen/bootargs\n");
-    }
-
-    mbi->flags |= MBI_CMDLINE;
-    mbi->cmdline = (ulong)builtin_cmdline;
-
-    of_printf("bootargs = %s\n", builtin_cmdline);
-}
-
 static int save_props(void *m, ofdn_t n, int pkg)
 {
     int ret;
@@ -933,8 +915,8 @@ static void __init boot_of_fix_maple(voi
         }
     }
 }
-    
-static int __init boot_of_serial(void *oft)
+
+void __init boot_of_serial(void *oft)
 {
     int n;
     int p;
@@ -1014,11 +996,9 @@ static int __init boot_of_serial(void *o
                   __func__, ns16550.irq);
         ns16550.irq = 0;
     }
-
-    return 1;
-}
-
-static int __init boot_of_rtas(module_t *mod, multiboot_info_t *mbi)
+}
+
+static int __init boot_of_rtas(void)
 {
     int rtas_node;
     int rtas_instance;
@@ -1065,14 +1045,13 @@ static int __init boot_of_rtas(module_t 
     rtas_end = mem + size;
     rtas_msr = of_msr;
 
-    mod->mod_start = rtas_base;
-    mod->mod_end = rtas_end;
     return 1;
 }
 
-static void * __init boot_of_devtree(module_t *mod, multiboot_info_t *mbi)
+void __init *boot_of_devtree(void)
 {
     void *oft;
+    ulong oft_sz = 48 * PAGE_SIZE;
     ulong alloc_sz = 32 << 10;    /* 32KiB should be plenty */
     ulong sz;
 
@@ -1100,108 +1079,9 @@ static void * __init boot_of_devtree(mod
 
     ofd_walk(oft, __func__, OFD_ROOT, /* add_hype_props */ NULL, 2);
 
-    mod->mod_start = (ulong)oft;
-    mod->mod_end = ALIGN_UP(mod->mod_start + sz, PAGE_SIZE);
-
-    if (mod->mod_end -mod->mod_start > alloc_sz)
-        of_panic("Could not fit all devtree module in 0x%lx of memory\n",
-            alloc_sz);
-
-    of_printf("%s: devtree mod @ 0x%016x - 0x%016x\n", __func__,
-              mod->mod_start, mod->mod_end);
-
-    return oft;
-}
-
-static void * __init boot_of_module(ulong r3, ulong r4, multiboot_info_t *mbi)
-{
-    static module_t mods[4];
-    ulong mod0_start;
-    ulong mod0_size;
-    static const char * sepr[] = {" -- ", " || "};
-    int sepr_index;
-    extern char dom0_start[] __attribute__ ((weak));
-    extern char dom0_size[] __attribute__ ((weak));
-    const char *p = NULL;
-    int mod;
-    void *oft;
-
-    if ((r3 > 0) && (r4 > 0)) {
-        /* was it handed to us in registers ? */
-        mod0_start = r3;
-        mod0_size = r4;
-            of_printf("%s: Dom0 was loaded and found using r3/r4:"
-                      "0x%lx[size 0x%lx]\n",
-                      __func__, mod0_start, mod0_size);
-    } else {
-        /* see if it is in the boot params */
-        p = strstr((char *)((ulong)mbi->cmdline), "dom0_start=");
-        if ( p != NULL) {
-            p += 11;
-            mod0_start = simple_strtoul(p, NULL, 0);
-
-            p = strstr((char *)((ulong)mbi->cmdline), "dom0_size=");
-            p += 10;
-            mod0_size = simple_strtoul(p, NULL, 0);
-            of_printf("%s: Dom0 was loaded and found using cmdline:"
-                      "0x%lx[size 0x%lx]\n",
-                      __func__, mod0_start, mod0_size);
-        } else if ( ((ulong)dom0_start != 0) && ((ulong)dom0_size != 0) ) {
-            /* was it linked in ? */
-        
-            mod0_start = (ulong)dom0_start;
-            mod0_size = (ulong)dom0_size;
-            of_printf("%s: Dom0 is linked in: 0x%lx[size 0x%lx]\n",
-                      __func__, mod0_start, mod0_size);
-        } else {
-            mod0_start = (ulong)_end;
-            mod0_size = 0;
-            of_printf("%s: FYI Dom0 is unknown, will be caught later\n",
-                      __func__);
-        }
-    }
-
-    if (mod0_size > 0) {
-        const char *c = (const char *)mod0_start;
-
-        of_printf("mod0: %o %c %c %c\n", c[0], c[1], c[2], c[3]);
-    }
-
-    mod = 0;
-    mods[mod].mod_start = mod0_start;
-    mods[mod].mod_end = mod0_start + mod0_size;
-
-    of_printf("%s: dom0 mod @ 0x%016x[0x%x]\n", __func__,
-              mods[mod].mod_start, mods[mod].mod_end);
-
-    /* look for delimiter: "--" or "||" */
-    for (sepr_index = 0; sepr_index < ARRAY_SIZE(sepr); sepr_index++){
-        p = strstr((char *)(ulong)mbi->cmdline, sepr[sepr_index]);
-        if (p != NULL)
-            break;
-    }
-
-    if (p != NULL) {
-        /* Xen proper should never know about the dom0 args.  */
-        *(char *)p = '\0';
-        p += strlen(sepr[sepr_index]);
-        mods[mod].string = (u32)(ulong)p;
-        of_printf("%s: dom0 mod string: %s\n", __func__, p);
-    }
-
-    ++mod;
-    if (boot_of_rtas(&mods[mod], mbi))
-        ++mod;
-
-    oft = boot_of_devtree(&mods[mod], mbi);
-    if (oft == NULL)
-        of_panic("%s: boot_of_devtree failed\n", __func__);
-
-    ++mod;
-
-    mbi->flags |= MBI_MODULES;
-    mbi->mods_count = mod;
-    mbi->mods_addr = (u32)mods;
+    oftree = (ulong)oft;
+    oftree = (ulong)oft + oft_sz;
+    oftree_len = oft_sz; 
 
     return oft;
 }
@@ -1327,15 +1207,19 @@ static int __init boot_of_cpus(void)
     return 1;
 }
 
-multiboot_info_t __init *boot_of_init(
-        ulong r3, ulong r4, ulong vec, ulong r6, ulong r7, ulong orig_msr)
-{
-    static multiboot_info_t mbi;
-    void *oft;
+void __init boot_of_init(ulong vec, ulong orig_msr)
+{
     int r;
 
     of_vec = vec;
     of_msr = orig_msr;
+
+    if (is_kernel(vec)) {
+        of_panic("Hmm.. OF[0x%lx] seems to have stepped on our image "
+                "that ranges: %p .. %p.\n",
+                vec, _start, _end);
+    }
+    of_printf("%s: _start %p _end %p\n", __func__, _start, _end);
 
     bof_chosen = of_finddevice("/chosen");
     of_getprop(bof_chosen, "stdout", &of_out, sizeof (of_out));
@@ -1346,32 +1230,20 @@ multiboot_info_t __init *boot_of_init(
               xen_compile_by(), xen_compile_domain(),
               xen_compiler(), xen_compile_date());
 
-    of_printf("%s args: 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n"
-            "boot msr: 0x%lx\n",
-            __func__,
-            r3, r4, vec, r6, r7, orig_msr);
-
-    if (is_kernel(vec)) {
-        of_panic("Hmm.. OF[0x%lx] seems to have stepped on our image "
-                "that ranges: %p .. %p.\n",
-                vec, _start, _end);
-    }
-    of_printf("%s: _start %p _end %p 0x%lx\n", __func__, _start, _end, r6);
-
     boot_of_fix_maple();
     r = boot_of_mem_init();
     if (r == 0)
         of_panic("failure to initialize memory allocator");
-    boot_of_bootargs(&mbi);
-    oft = boot_of_module(r3, r4, &mbi);
+
+    boot_of_rtas();
     boot_of_cpus();
-    boot_of_serial(oft);
-
+}
+
+void __init boot_of_finish(void)
+{
     /* end of OF */
     of_printf("Quiescing Open Firmware ...\n");
     of_call("quiesce", 0, 0, NULL);
-
-    return &mbi;
 }
 
 /*
diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/exceptions.h
--- a/xen/arch/powerpc/exceptions.h     Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/exceptions.h     Mon Jul 30 17:10:45 2007 -0500
@@ -33,9 +33,6 @@ extern void ack_APIC_irq(void);
 extern void ack_APIC_irq(void);
 extern int ioapic_guest_read(unsigned long physbase, unsigned int reg, u32 
*pval);
 extern int ioapic_guest_write(unsigned long physbase, unsigned int reg, u32 
val);
-extern void __start_xen_ppc(
-    ulong r3, ulong r4, ulong r5, ulong r6, ulong r7, ulong orig_msr);
-extern  multiboot_info_t *boot_of_init(ulong r3, ulong r4, ulong vec, ulong 
r6, ulong r7, ulong orig_msr);
 
 extern void do_timer(struct cpu_user_regs *regs);
 extern void do_dec(struct cpu_user_regs *regs);
diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/memory.c
--- a/xen/arch/powerpc/memory.c Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/memory.c Mon Jul 30 17:10:45 2007 -0500
@@ -21,6 +21,7 @@
 #include <xen/sched.h>
 #include <xen/mm.h>
 #include <xen/numa.h>
+#include <asm/boot.h>
 #include "of-devtree.h"
 #include "oftree.h"
 #include "rtas.h"
@@ -116,7 +117,7 @@ static void ofd_walk_mem(void *m, walk_m
     }
 }
 
-void memory_init(module_t *mod, int mcount)
+void memory_init(void)
 {
     ulong eomem;
     ulong bitmap_start = ~0UL;
diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/oftree.h
--- a/xen/arch/powerpc/oftree.h Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/oftree.h Mon Jul 30 17:10:45 2007 -0500
@@ -13,7 +13,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *
- * Copyright (C) IBM Corp. 2005
+ * Copyright IBM Corp. 2005
  *
  * Authors: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
  */
@@ -35,6 +35,4 @@ extern int firmware_image_start[0];
 extern int firmware_image_start[0];
 extern int firmware_image_size[0];
 
-extern void memory_init(module_t *mod, int mcount);
-
 #endif  /* #ifndef _OFTREE_H */
diff -r a94bf8086002 -r 553f64e4f6ef xen/arch/powerpc/setup.c
--- a/xen/arch/powerpc/setup.c  Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/arch/powerpc/setup.c  Mon Jul 30 17:10:45 2007 -0500
@@ -25,7 +25,7 @@
 #include <xen/lib.h>
 #include <xen/cpumask.h>
 #include <xen/sched.h>
-#include <xen/multiboot.h>
+#include <xen/multiboot2.h>
 #include <xen/serial.h>
 #include <xen/softirq.h>
 #include <xen/console.h>
@@ -48,6 +48,7 @@
 #include <asm/delay.h>
 #include <asm/percpu.h>
 #include <asm/io.h>
+#include <asm/boot.h>
 #include "exceptions.h"
 #include "of-devtree.h"
 #include "oftree.h"
@@ -78,6 +79,17 @@ ulong oftree;
 ulong oftree;
 ulong oftree_len;
 ulong oftree_end;
+
+/* linked-in dom0: */
+extern char dom0_start[] __attribute__ ((weak));
+extern char dom0_size[] __attribute__ ((weak));
+
+char *xen_cmdline;
+char *dom0_cmdline;
+ulong dom0_addr;
+ulong dom0_len;
+ulong initrd_start;
+ulong initrd_len;
 
 uint cpu_hard_id[NR_CPUS] __initdata;
 cpumask_t cpu_present_map;
@@ -286,21 +298,15 @@ void secondary_cpu_init(int cpuid, unsig
     panic("should never get here\n");
 }
 
-static void __init __start_xen(multiboot_info_t *mbi)
-{
-    char *cmdline;
-    module_t *mod = (module_t *)((ulong)mbi->mods_addr);
-    ulong dom0_start, dom0_len;
-    ulong initrd_start, initrd_len;
-
+static void __init __start_xen(void)
+{
     memcpy(0, exception_vectors, exception_vectors_end - exception_vectors);
     synchronize_caches(0, exception_vectors_end - exception_vectors);
 
     ticks_per_usec = timebase_freq / 1000000ULL;
 
     /* Parse the command-line options. */
-    if ((mbi->flags & MBI_CMDLINE) && (mbi->cmdline != 0))
-        cmdline_parse(__va((ulong)mbi->cmdline));
+    cmdline_parse(xen_cmdline);
 
     /* we need to be able to identify this CPU early on */
     init_boot_cpu();
@@ -313,32 +319,20 @@ static void __init __start_xen(multiboot
     serial_init_preirq();
 
     init_console();
-    /* let synchronize until we really get going */
-    console_start_sync();
-
-    /* Check that we have at least one Multiboot module. */
-    if (!(mbi->flags & MBI_MODULES) || (mbi->mods_count == 0)) {
-        panic("FATAL ERROR: Require at least one Multiboot module.\n");
-    }
-
-    /* OF dev tree is the last module */
-    oftree = mod[mbi->mods_count-1].mod_start;
-    oftree_end = mod[mbi->mods_count-1].mod_end;
-    oftree_len = oftree_end - oftree;
-
-    /* remove it from consideration */
-    mod[mbi->mods_count-1].mod_start = 0;
-    mod[mbi->mods_count-1].mod_end = 0;
-    --mbi->mods_count;
-
-    if (rtas_entry) {
-        rtas_init((void *)oftree);
-        /* remove rtas module from consideration */
-        mod[mbi->mods_count-1].mod_start = 0;
-        mod[mbi->mods_count-1].mod_end = 0;
-        --mbi->mods_count;
-    }
-    memory_init(mod, mbi->mods_count);
+    console_start_sync(); /* Stay synchronous for early debugging. */
+
+    rtas_init((void *)oftree);
+
+    memory_init();
+
+    printk("xen_cmdline:  %016lx\n", (ulong)xen_cmdline);
+    printk("dom0_cmdline: %016lx\n", (ulong)dom0_cmdline);
+    printk("dom0_addr:    %016lx\n", (ulong)dom0_addr);
+    printk("dom0_len:     %016lx\n", (ulong)dom0_len);
+    printk("initrd_start: %016lx\n", (ulong)initrd_start);
+    printk("initrd_len:   %016lx\n", (ulong)initrd_len);
+
+    printk("dom0: %016llx\n", *(unsigned long long *)dom0_addr);
 
 #ifdef OF_DEBUG
     key_ofdump(0);
@@ -382,30 +376,22 @@ static void __init __start_xen(multiboot
 
     dom0->is_privileged = 1;
 
-    cmdline = (char *)(mod[0].string ? __va((ulong)mod[0].string) : NULL);
-
     /* scrub_heap_pages() requires IRQs enabled, and we're post IRQ setup... */
     local_irq_enable();
     /* Scrub RAM that is still free and so may go to an unprivileged domain. */
     scrub_heap_pages();
 
-    dom0_start = mod[0].mod_start;
-    dom0_len = mod[0].mod_end - mod[0].mod_start;
-    if (mbi->mods_count > 1) {
-        initrd_start = mod[1].mod_start;
-        initrd_len = mod[1].mod_end - mod[1].mod_start;
-    } else {
-        initrd_start = 0;
-        initrd_len = 0;
-    }
-    if (construct_dom0(dom0, dom0_start, dom0_len,
+    if ((dom0_addr == 0) || (dom0_len == 0))
+        panic("No domain 0 found.\n");
+
+    if (construct_dom0(dom0, dom0_addr, dom0_len,
                        initrd_start, initrd_len,
-                       cmdline) != 0) {
+                       dom0_cmdline) != 0) {
         panic("Could not set up DOM0 guest OS\n");
     }
 
-    init_xenheap_pages(ALIGN_UP(dom0_start, PAGE_SIZE),
-                       ALIGN_DOWN(dom0_start + dom0_len, PAGE_SIZE));
+    init_xenheap_pages(ALIGN_UP(dom0_addr, PAGE_SIZE),
+                       ALIGN_DOWN(dom0_addr + dom0_len, PAGE_SIZE));
     if (initrd_start)
         init_xenheap_pages(ALIGN_UP(initrd_start, PAGE_SIZE),
                            ALIGN_DOWN(initrd_start + initrd_len, PAGE_SIZE));
@@ -426,25 +412,74 @@ static void __init __start_xen(multiboot
     startup_cpu_idle_loop();
 }
 
+static void ofd_bootargs(void)
+{
+    static const char *sepr[] = {" -- ", " || "};
+    char *p;
+    ofdn_t chosen;
+    int sepr_index;
+    int rc;
+
+    if (builtin_cmdline[0] == '\0') {
+        chosen = ofd_node_find((void *)oftree, "/chosen");
+        rc = ofd_getprop((void *)oftree, chosen, "bootargs", builtin_cmdline,
+                         CONFIG_CMDLINE_SIZE);
+    }
+
+    /* look for delimiter: "--" or "||" */
+    for (sepr_index = 0; sepr_index < ARRAY_SIZE(sepr); sepr_index++){
+        p = strstr(builtin_cmdline, sepr[sepr_index]);
+        if (p != NULL) {
+            /* Xen proper should never know about the dom0 args.  */
+            *p = '\0';
+            p += strlen(sepr[sepr_index]);
+            dom0_cmdline = p;
+            break;
+        }
+    }
+
+    xen_cmdline = builtin_cmdline;
+}
+
+void __init __start_xen_ppc(ulong, ulong, ulong, ulong, ulong, ulong);
 void __init __start_xen_ppc(
     ulong r3, ulong r4, ulong r5, ulong r6, ulong r7, ulong orig_msr)
 {
-    multiboot_info_t *mbi = NULL;
-
     /* clear bss */
     memset(__bss_start, 0, (ulong)_end - (ulong)__bss_start);
 
-    if (r5 > 0) {
-        /* we were booted by OpenFirmware */
-        mbi = boot_of_init(r3, r4, r5, r6, r7, orig_msr);
-
+    if (r5) {
+        /* We came from Open Firmware. */
+        boot_of_init(r5, orig_msr);
+        oftree = (ulong)boot_of_devtree(); /* Copy the device tree. */
+        /* Use the device tree to find the Xen console. */
+        boot_of_serial((void *)oftree);
+        boot_of_finish(); /* End firmware. */
     } else {
-        /* booted by someone else that hopefully has a trap handler */
+        /* XXX handle flat device tree here */
         __builtin_trap();
     }
 
-    __start_xen(mbi);
-
+    ofd_bootargs();
+
+    if (r3 == MB2_BOOTLOADER_MAGIC) {
+        /* Get dom0 info from multiboot structures. */
+        parse_multiboot(r4);
+    }
+
+    if ((dom0_len == 0) && r3 && r4) {
+        /* Maybe dom0's location handed to us in registers. */
+        dom0_addr = r3;
+        dom0_len = r4;
+    }
+
+    if (dom0_len == 0) {
+        /* Dom0 had better be built in. */
+        dom0_addr = (ulong)dom0_start;
+        dom0_len = (ulong)dom0_size;
+    }
+
+    __start_xen();
 }
 
 extern void arch_get_xen_caps(xen_capabilities_info_t *info);
diff -r a94bf8086002 -r 553f64e4f6ef xen/include/asm-powerpc/mm.h
--- a/xen/include/asm-powerpc/mm.h      Mon Jul 30 13:50:14 2007 -0500
+++ b/xen/include/asm-powerpc/mm.h      Mon Jul 30 17:10:45 2007 -0500
@@ -35,7 +35,6 @@
 #define memguard_unguard_range(_p,_l)    ((void)0)
 
 extern unsigned long xenheap_phys_end;
-extern int boot_of_mem_avail(int pos, ulong *start, ulong *end);
 
 /*
  * Per-page-frame information.

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [POWERPC][XEN] Use multiboot2 data structures when present., Xen patchbot-unstable <=