Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 996cf443 authored by Yinghai Lu's avatar Yinghai Lu Committed by Ingo Molnar
Browse files

x86: don't reallocate pgt for node0



kva ram already mapped right after away, so don't need to get that for low ram.
avoid wasting one copy of pgdat.

also add node id in early_res name in case we get it from find_e820_area.

Signed-off-by: default avatarYinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 28bb2237
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -156,17 +156,20 @@ static void __init propagate_e820_map_node(int nid)
 */
 */
static void __init allocate_pgdat(int nid)
static void __init allocate_pgdat(int nid)
{
{
	if (nid && node_has_online_mem(nid) && node_remap_start_vaddr[nid])
	char buf[16];

	if (node_has_online_mem(nid) && node_remap_start_vaddr[nid])
		NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid];
		NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid];
	else {
	else {
		unsigned long pgdat_phys;
		unsigned long pgdat_phys;
		pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT,
		pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT,
				 (nid ? max_low_pfn:max_pfn_mapped)<<PAGE_SHIFT,
				 max_pfn_mapped<<PAGE_SHIFT,
				 sizeof(pg_data_t),
				 sizeof(pg_data_t),
				 PAGE_SIZE);
				 PAGE_SIZE);
		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT));
		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT));
		reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t),
		memset(buf, 0, sizeof(buf));
			      "NODE_DATA");
		sprintf(buf, "NODE_DATA %d",  nid);
		reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t), buf);
	}
	}
	printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n",
	printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n",
		nid, (unsigned long)NODE_DATA(nid));
		nid, (unsigned long)NODE_DATA(nid));