Messages in this thread | | | Date | Tue, 05 Apr 2011 12:14:24 -0700 | From | Yinghai Lu <> | Subject | Re: [PATCH 11/14] x86-32, NUMA: Make pgdat allocation use alloc_remap() |
| |
On 04/04/2011 03:23 PM, Tejun Heo wrote: > pgdat allocation is handled differnetly from other remap allocations - > it's reserved during initialization. There's no reason to handle this > any differnetly. Remap allocator is initialized for every node and if > init failed the allocation will fail and pgdat allocation can fall > back to generic code like anyone else. > > Remove special init-time pgdat reservation and make allocate_pgdat() > use alloc_remap() like everyone else. > > Signed-off-by: Tejun Heo<tj@kernel.org> > Cc: Yinghai Lu<yinghai@kernel.org> > Cc: David Rientjes<rientjes@google.com> > Cc: Thomas Gleixner<tglx@linutronix.de > Cc: Ingo Molnar<mingo@redhat.com> > Cc: "H. Peter Anvin"<hpa@zytor.com> > --- > arch/x86/mm/numa_32.c | 7 +++---- > 1 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/mm/numa_32.c b/arch/x86/mm/numa_32.c > index 53ec13a..0184a9f 100644 > --- a/arch/x86/mm/numa_32.c > +++ b/arch/x86/mm/numa_32.c > @@ -160,9 +160,8 @@ static void __init allocate_pgdat(int 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]; > - else { > + NODE_DATA(nid) = alloc_remap(nid, ALIGN(sizeof(pg_data_t), PAGE_SIZE)); > + if (!NODE_DATA(nid)) { > unsigned long pgdat_phys; > pgdat_phys = memblock_find_in_range(min_low_pfn<<PAGE_SHIFT, > max_pfn_mapped<<PAGE_SHIFT, > @@ -301,7 +300,7 @@ static __init unsigned long init_alloc_remap(int nid, unsigned long offset) > > node_remap_start_vaddr[nid] = remap_va; > node_remap_end_vaddr[nid] = remap_va + size; > - node_remap_alloc_vaddr[nid] = remap_va + ALIGN(sizeof(pg_data_t), PAGE_SIZE); > + node_remap_alloc_vaddr[nid] = remap_va; > > printk(KERN_DEBUG "remap_alloc: node %d [%08llx-%08llx) -> [%p-%p)\n", > nid, node_pa, node_pa + size, remap_va, remap_va + size);
Acked-by: Yinghai Lu <yinghai@kernel.org>
| |