|
@@ -1748,22 +1748,27 @@ void __init paging_init(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+ /* Setup bootmem... */
|
|
|
+ last_valid_pfn = end_pfn = bootmem_init(phys_base);
|
|
|
+
|
|
|
+#ifndef CONFIG_NEED_MULTIPLE_NODES
|
|
|
+ max_mapnr = last_valid_pfn;
|
|
|
+#endif
|
|
|
/* Once the OF device tree and MDESC have been setup, we know
|
|
|
* the list of possible cpus. Therefore we can allocate the
|
|
|
* IRQ stacks.
|
|
|
*/
|
|
|
for_each_possible_cpu(i) {
|
|
|
- /* XXX Use node local allocations... XXX */
|
|
|
- softirq_stack[i] = __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
|
|
- hardirq_stack[i] = __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
|
|
- }
|
|
|
+ int node = cpu_to_node(i);
|
|
|
|
|
|
- /* Setup bootmem... */
|
|
|
- last_valid_pfn = end_pfn = bootmem_init(phys_base);
|
|
|
+ softirq_stack[i] = __alloc_bootmem_node(NODE_DATA(node),
|
|
|
+ THREAD_SIZE,
|
|
|
+ THREAD_SIZE, 0);
|
|
|
+ hardirq_stack[i] = __alloc_bootmem_node(NODE_DATA(node),
|
|
|
+ THREAD_SIZE,
|
|
|
+ THREAD_SIZE, 0);
|
|
|
+ }
|
|
|
|
|
|
-#ifndef CONFIG_NEED_MULTIPLE_NODES
|
|
|
- max_mapnr = last_valid_pfn;
|
|
|
-#endif
|
|
|
kernel_physical_mapping_init();
|
|
|
|
|
|
{
|