/* Reserve the space used by the bootmem maps & per-node space in the boot allocator so that when we actually create the real mem maps we don't use their memory.  */
static void __init reserve_pernode_space(void)
/* Reserve the space used by the bootmem maps & per-node space in the boot allocator so that when we actually create the real mem maps we don't use their memory.  */
static void __init reserve_pernode_space(void)
{
	unsigned long base, size, pages;
	struct bootmem_data *bdp;
	int node;
	for_each_online_node(node) {
		pg_data_t *pdp = pgdat_list[node];
		if (node_isset(node, memory_less_mask))
			continue;
		bdp = pdp->bdata;
		pages = bdp->node_low_pfn - bdp->node_min_pfn;
		size = bootmem_bootmap_pages(pages) << PAGE_SHIFT;
		base = __pa(bdp->node_bootmem_map);
		reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT);
		size = mem_data[node].pernode_size;
		base = __pa(mem_data[node].pernode_addr);
		reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT);
	}
}