vserver 1.9.3
[linux-2.6.git] / arch / ia64 / mm / contig.c
index c0f8f4a..0f905a6 100644 (file)
@@ -116,19 +116,19 @@ find_bootmap_location (unsigned long start, unsigned long end, void *arg)
                range_start = max(start, free_start);
                range_end   = min(end, rsvd_region[i].start & PAGE_MASK);
 
+               free_start = PAGE_ALIGN(rsvd_region[i].end);
+
                if (range_end <= range_start)
                        continue; /* skip over empty range */
 
-               if (range_end - range_start >= needed) {
+               if (range_end - range_start >= needed) {
                        bootmap_start = __pa(range_start);
-                       return 1;       /* done */
+                       return -1;      /* done */
                }
 
                /* nothing more available in this segment */
                if (range_end == end)
                        return 0;
-
-               free_start = PAGE_ALIGN(rsvd_region[i].end);
        }
        return 0;
 }
@@ -267,9 +267,8 @@ paging_init (void)
        efi_memmap_walk(find_largest_hole, (u64 *)&max_gap);
        if (max_gap < LARGE_GAP) {
                vmem_map = (struct page *) 0;
-               free_area_init_node(0, &contig_page_data, NULL, zones_size, 0,
+               free_area_init_node(0, &contig_page_data, zones_size, 0,
                                    zholes_size);
-               mem_map = contig_page_data.node_mem_map;
        } else {
                unsigned long map_size;
 
@@ -278,12 +277,12 @@ paging_init (void)
                map_size = PAGE_ALIGN(max_low_pfn * sizeof(struct page));
                vmalloc_end -= map_size;
                vmem_map = (struct page *) vmalloc_end;
-               efi_memmap_walk(create_mem_map_page_table, 0);
+               efi_memmap_walk(create_mem_map_page_table, NULL);
 
-               free_area_init_node(0, &contig_page_data, vmem_map, zones_size,
+               mem_map = contig_page_data.node_mem_map = vmem_map;
+               free_area_init_node(0, &contig_page_data, zones_size,
                                    0, zholes_size);
 
-               mem_map = contig_page_data.node_mem_map;
                printk("Virtual mem_map starts at 0x%p\n", mem_map);
        }
 #else /* !CONFIG_VIRTUAL_MEM_MAP */