[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [XEN][POWERPC] boot_of_allocator fixups



# HG changeset patch
# User Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
# Node ID 5d052711af78336826e5d180cb7aaca2723d0f05
# Parent  3d7759a9247f45445619348a69e32167ceafedf5
[XEN][POWERPC] boot_of_allocator fixups
This patch:
  - print devtree mod size correctly
  - find next_bit rather then test all needed bits to be zero
  - stop pre-allocating memory below image as used
Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
 xen/arch/powerpc/boot_of.c |   23 ++++-------------------
 1 files changed, 4 insertions(+), 19 deletions(-)

diff -r 3d7759a9247f -r 5d052711af78 xen/arch/powerpc/boot_of.c
--- a/xen/arch/powerpc/boot_of.c        Mon Dec 11 19:43:18 2006 -0500
+++ b/xen/arch/powerpc/boot_of.c        Mon Dec 11 20:50:32 2006 -0500
@@ -431,19 +431,8 @@ static void boot_of_alloc_init(int m, ui
         }
     }
 
-    /* FW is incorrect in that the space below our image is not safe
-     * either */
-    start = (ulong)_start >> PAGE_SHIFT;
-    pg = 0;
-    DBG("%s: marking 0x%x - 0x%lx\n", __func__,
-        pg << PAGE_SHIFT, start);
-    while (pg < start - 1) {
-        set_bit(pg, mem_available_pages);
-        ++pg;
-    }
-        
     /* Now make sure we mark our own memory */
-    pg = start;
+    pg =  (ulong)_start >> PAGE_SHIFT;
     start = (ulong)_end >> PAGE_SHIFT;
 
     DBG("%s: marking 0x%x - 0x%lx\n", __func__,
@@ -521,11 +510,8 @@ static ulong boot_of_alloc(ulong size)
         /* find a set that fits */
         DBG("%s: checking for 0x%lx bits: 0x%lx\n", __func__, bits, pos);
 
-        i = 1;
-        while (i < bits && !test_bit(pos + i, mem_available_pages))
-            ++i;
-
-        if (i == bits) {
+        i = find_next_bit(mem_available_pages, MEM_AVAILABLE_PAGES, pos);  
+        if (i - pos >= bits) {
             uint addr = pos << PAGE_SHIFT;
 
             /* make sure OF is happy with our choice */
@@ -1073,7 +1059,7 @@ static void * __init boot_of_devtree(mod
 
     mod->mod_start = (ulong)oft;
     mod->mod_end = mod->mod_start + oft_sz;
-    of_printf("%s: devtree mod @ 0x%016x[0x%x]\n", __func__,
+    of_printf("%s: devtree mod @ 0x%016x - 0x%016x\n", __func__,
               mod->mod_start, mod->mod_end);
 
     return oft;
@@ -1152,7 +1138,6 @@ static void * __init boot_of_module(ulon
         ++mod;
 
     oft = boot_of_devtree(&mods[mod], mbi);
-    of_printf("hello\n");
     if (oft == NULL)
         of_panic("%s: boot_of_devtree failed\n", __func__);
 

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.