diff options
author | Mike Kravetz <kravetz@us.ibm.com> | 2005-12-05 12:06:42 -0800 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-09 14:51:57 +1100 |
commit | 237a0989e2902b7d43c4228a36d82f8691fb2118 (patch) | |
tree | 411b5e4978ac15ab283378610fef3941c880711a /arch/powerpc/mm/mem.c | |
parent | b5666f70395016a55cc9d57826508b8a346398d0 (diff) |
[PATCH] powerpc: numa placement for dynamically added memory
This places dynamically added memory within the appropriate
numa node. A new routine hot_add_scn_to_nid() replicates most of
the memory scanning code in parse_numa_properties().
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r-- | arch/powerpc/mm/mem.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index ed6ed2e30da..5e5bff5616a 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -114,18 +114,17 @@ void online_page(struct page *page) num_physpages++; } -/* - * This works only for the non-NUMA case. Later, we'll need a lookup - * to convert from real physical addresses to nid, that doesn't use - * pfn_to_nid(). - */ int __devinit add_memory(u64 start, u64 size) { - struct pglist_data *pgdata = NODE_DATA(0); + struct pglist_data *pgdata; struct zone *zone; + int nid; unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; + nid = hot_add_scn_to_nid(start); + pgdata = NODE_DATA(nid); + start += KERNELBASE; create_section_mapping(start, start + size); |