memblock: use separate iterators for memory and reserved regions
[linux-2.6-microblaze.git] / arch / riscv / mm / init.c
index f750e01..1dc8930 100644 (file)
@@ -145,21 +145,21 @@ static phys_addr_t dtb_early_pa __initdata;
 
 void __init setup_bootmem(void)
 {
-       struct memblock_region *reg;
        phys_addr_t mem_size = 0;
        phys_addr_t total_mem = 0;
-       phys_addr_t mem_start, end = 0;
+       phys_addr_t mem_start, start, end = 0;
        phys_addr_t vmlinux_end = __pa_symbol(&_end);
        phys_addr_t vmlinux_start = __pa_symbol(&_start);
+       u64 i;
 
        /* Find the memory region containing the kernel */
-       for_each_memblock(memory, reg) {
-               end = reg->base + reg->size;
+       for_each_mem_range(i, &start, &end) {
+               phys_addr_t size = end - start;
                if (!total_mem)
-                       mem_start = reg->base;
-               if (reg->base <= vmlinux_start && vmlinux_end <= end)
-                       BUG_ON(reg->size == 0);
-               total_mem = total_mem + reg->size;
+                       mem_start = start;
+               if (start <= vmlinux_start && vmlinux_end <= end)
+                       BUG_ON(size == 0);
+               total_mem = total_mem + size;
        }
 
        /*
@@ -191,15 +191,6 @@ void __init setup_bootmem(void)
        early_init_fdt_scan_reserved_mem();
        memblock_allow_resize();
        memblock_dump_all();
-
-       for_each_memblock(memory, reg) {
-               unsigned long start_pfn = memblock_region_memory_base_pfn(reg);
-               unsigned long end_pfn = memblock_region_memory_end_pfn(reg);
-
-               memblock_set_node(PFN_PHYS(start_pfn),
-                                 PFN_PHYS(end_pfn - start_pfn),
-                                 &memblock.memory, 0);
-       }
 }
 
 #ifdef CONFIG_MMU
@@ -464,7 +455,7 @@ static void __init setup_vm_final(void)
 {
        uintptr_t va, map_size;
        phys_addr_t pa, start, end;
-       struct memblock_region *reg;
+       u64 i;
 
        /* Set mmu_enabled flag */
        mmu_enabled = true;
@@ -475,14 +466,9 @@ static void __init setup_vm_final(void)
                           PGDIR_SIZE, PAGE_TABLE);
 
        /* Map all memory banks */
-       for_each_memblock(memory, reg) {
-               start = reg->base;
-               end = start + reg->size;
-
+       for_each_mem_range(i, &start, &end) {
                if (start >= end)
                        break;
-               if (memblock_is_nomap(reg))
-                       continue;
                if (start <= __pa(PAGE_OFFSET) &&
                    __pa(PAGE_OFFSET) < end)
                        start = __pa(PAGE_OFFSET);
@@ -545,7 +531,7 @@ static void __init resource_init(void)
 {
        struct memblock_region *region;
 
-       for_each_memblock(memory, region) {
+       for_each_mem_region(region) {
                struct resource *res;
 
                res = memblock_alloc(sizeof(struct resource), SMP_CACHE_BYTES);