提交 996cf443 编写于 作者: Y Yinghai Lu 提交者: Ingo Molnar

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: NYinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 28bb2237
...@@ -156,17 +156,20 @@ static void __init propagate_e820_map_node(int nid) ...@@ -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));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册