|
@@ -24,44 +24,6 @@ EXPORT_SYMBOL_GPL(node_data);
|
|
|
* latency. Each node's pgdat is node-local at the beginning of the node,
|
|
|
* immediately followed by the node mem map.
|
|
|
*/
|
|
|
-void __init setup_memory(void)
|
|
|
-{
|
|
|
- unsigned long free_pfn = PFN_UP(__pa(_end));
|
|
|
- u64 base = min_low_pfn << PAGE_SHIFT;
|
|
|
- u64 size = (max_low_pfn << PAGE_SHIFT) - base;
|
|
|
-
|
|
|
- lmb_add(base, size);
|
|
|
-
|
|
|
- /* Reserve the LMB regions used by the kernel, initrd, etc.. */
|
|
|
- lmb_reserve(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET,
|
|
|
- (PFN_PHYS(free_pfn) + PAGE_SIZE - 1) -
|
|
|
- (__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET));
|
|
|
-
|
|
|
- /*
|
|
|
- * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET.
|
|
|
- */
|
|
|
- if (CONFIG_ZERO_PAGE_OFFSET != 0)
|
|
|
- lmb_reserve(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET);
|
|
|
-
|
|
|
- lmb_analyze();
|
|
|
- lmb_dump_all();
|
|
|
-
|
|
|
- /*
|
|
|
- * Node 0 sets up its pgdat at the first available pfn,
|
|
|
- * and bumps it up before setting up the bootmem allocator.
|
|
|
- */
|
|
|
- NODE_DATA(0) = pfn_to_kaddr(free_pfn);
|
|
|
- memset(NODE_DATA(0), 0, sizeof(struct pglist_data));
|
|
|
- free_pfn += PFN_UP(sizeof(struct pglist_data));
|
|
|
- NODE_DATA(0)->bdata = &bootmem_node_data[0];
|
|
|
-
|
|
|
- /* Set up node 0 */
|
|
|
- setup_bootmem_allocator(free_pfn);
|
|
|
-
|
|
|
- /* Give the platforms a chance to hook up their nodes */
|
|
|
- plat_mem_setup();
|
|
|
-}
|
|
|
-
|
|
|
void __init setup_bootmem_node(int nid, unsigned long start, unsigned long end)
|
|
|
{
|
|
|
unsigned long bootmap_pages;
|