Merge branch 'linus' into x86/bootmem
[cascardo/linux.git] / arch / x86 / mm / numa_64.c
index 95ea155..62cb634 100644 (file)
@@ -86,7 +86,7 @@ static int __init allocate_cachealigned_memnodemap(void)
 
        addr = 0x8000;
        nodemap_size = roundup(sizeof(s16) * memnodemapsize, L1_CACHE_BYTES);
-       nodemap_addr = memblock_find_in_range(addr, max_pfn<<PAGE_SHIFT,
+       nodemap_addr = memblock_find_in_range(addr, get_max_mapped(),
                                      nodemap_size, L1_CACHE_BYTES);
        if (nodemap_addr == MEMBLOCK_ERROR) {
                printk(KERN_ERR
@@ -598,11 +598,12 @@ static int __init numa_emulation(unsigned long start_pfn,
         * the e820 memory map.
         */
        remove_all_active_ranges();
-       for_each_node_mask(i, node_possible_map) {
+       for_each_node_mask(i, node_possible_map)
                memblock_x86_register_active_regions(i, nodes[i].start >> PAGE_SHIFT,
                                                nodes[i].end >> PAGE_SHIFT);
+       init_memory_mapping_high();
+       for_each_node_mask(i, node_possible_map)
                setup_node_bootmem(i, nodes[i].start, nodes[i].end);
-       }
        setup_physnodes(addr, max_addr, acpi, amd);
        fake_physnodes(acpi, amd, num_nodes);
        numa_init_array();
@@ -658,6 +659,7 @@ void __init initmem_init(unsigned long start_pfn, unsigned long last_pfn,
        for (i = 0; i < nr_cpu_ids; i++)
                numa_set_node(i, 0);
        memblock_x86_register_active_regions(0, start_pfn, last_pfn);
+       init_memory_mapping_high();
        setup_node_bootmem(0, start_pfn << PAGE_SHIFT, last_pfn << PAGE_SHIFT);
 }