microblaze: Use active regions
[deliverable/linux.git] / arch / microblaze / mm / init.c
index cbcdf24b1c891a3344cc59a1de640e4795b5c26c..43b3f604bafea7e73cdc58e4bd33f8bfa2df137f 100644 (file)
@@ -68,7 +68,8 @@ static void __init paging_init(void)
 
        zones_size[ZONE_DMA] = max_pfn;
 
-       free_area_init(zones_size);
+       /* We don't have holes in memory map */
+       free_area_init_nodes(zones_size);
 }
 
 void __init setup_memory(void)
@@ -142,8 +143,18 @@ void __init setup_memory(void)
                PFN_UP(TOPHYS((u32)klimit)), min_low_pfn, max_low_pfn);
        memblock_reserve(PFN_UP(TOPHYS((u32)klimit)) << PAGE_SHIFT, map_size);
 
+       /* Add active regions with valid PFNs */
+       for_each_memblock(memory, reg) {
+               unsigned long start_pfn, end_pfn;
+
+               start_pfn = memblock_region_memory_base_pfn(reg);
+               end_pfn = memblock_region_memory_end_pfn(reg);
+               memblock_set_node(start_pfn << PAGE_SHIFT,
+                                       (end_pfn - start_pfn) << PAGE_SHIFT, 0);
+       }
+
        /* free bootmem is whole main memory */
-       free_bootmem(memory_start, lowmem_size);
+       free_bootmem_with_active_regions(0, max_low_pfn);
 
        /* reserve allocate blocks */
        for_each_memblock(reserved, reg) {
@@ -162,6 +173,9 @@ void __init setup_memory(void)
                }
        }
 
+       /* XXX need to clip this if using highmem? */
+       sparse_memory_present_with_active_regions(0);
+
 #ifdef CONFIG_MMU
        init_bootmem_done = 1;
 #endif
This page took 0.024577 seconds and 5 git commands to generate.