diff options
author | Dave Hansen <haveblue@us.ibm.com> | 2005-06-23 03:07:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-23 12:45:00 -0400 |
commit | 408fde81c1bff15c875a3618481e93a01dcc79ea (patch) | |
tree | 89b173c5cccd69a17aa64bff8916c54bdcb2d6fe /arch/alpha/mm/numa.c | |
parent | 29c31a3bf257e0723423f1f0f9afd1b840434c75 (diff) |
[PATCH] remove non-DISCONTIG use of pgdat->node_mem_map
This patch effectively eliminates direct use of pgdat->node_mem_map outside
of the DISCONTIG code. On a flat memory system, these fields aren't
currently used, neither are they on a sparsemem system.
There was also a node_mem_map(nid) macro on many architectures. Its use
along with the use of ->node_mem_map itself was not consistent. It has
been removed in favor of two new, more explicit, arch-independent macros:
pgdat_page_nr(pgdat, pagenr)
nid_page_nr(nid, pagenr)
I called them "pgdat" and "nid" because we overload the term "node" to mean
"NUMA node", "DISCONTIG node" or "pg_data_t" in very confusing ways. I
believe the newer names are much clearer.
These macros can be overridden in the sparsemem case with a theoretically
slower operation using node_start_pfn and pfn_to_page(), instead. We could
make this the only behavior if people want, but I don't want to change too
much at once. One thing at a time.
This patch removes more code than it adds.
Compile tested on alpha, alpha discontig, arm, arm-discontig, i386, i386
generic, NUMAQ, Summit, ppc64, ppc64 discontig, and x86_64. Full list
here: http://sr71.net/patches/2.6.12/2.6.12-rc1-mhp2/configs/
Boot tested on NUMAQ, x86 SMP and ppc64 power4/5 LPARs.
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Martin J. Bligh <mbligh@aracnet.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/alpha/mm/numa.c')
-rw-r--r-- | arch/alpha/mm/numa.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c index ba81c4422aaf..c7481d59b6df 100644 --- a/arch/alpha/mm/numa.c +++ b/arch/alpha/mm/numa.c | |||
@@ -327,8 +327,6 @@ void __init mem_init(void) | |||
327 | extern char _text, _etext, _data, _edata; | 327 | extern char _text, _etext, _data, _edata; |
328 | extern char __init_begin, __init_end; | 328 | extern char __init_begin, __init_end; |
329 | unsigned long nid, i; | 329 | unsigned long nid, i; |
330 | struct page * lmem_map; | ||
331 | |||
332 | high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); | 330 | high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); |
333 | 331 | ||
334 | reservedpages = 0; | 332 | reservedpages = 0; |
@@ -338,10 +336,10 @@ void __init mem_init(void) | |||
338 | */ | 336 | */ |
339 | totalram_pages += free_all_bootmem_node(NODE_DATA(nid)); | 337 | totalram_pages += free_all_bootmem_node(NODE_DATA(nid)); |
340 | 338 | ||
341 | lmem_map = node_mem_map(nid); | ||
342 | pfn = NODE_DATA(nid)->node_start_pfn; | 339 | pfn = NODE_DATA(nid)->node_start_pfn; |
343 | for (i = 0; i < node_spanned_pages(nid); i++, pfn++) | 340 | for (i = 0; i < node_spanned_pages(nid); i++, pfn++) |
344 | if (page_is_ram(pfn) && PageReserved(lmem_map+i)) | 341 | if (page_is_ram(pfn) && |
342 | PageReserved(nid_page_nr(nid, i))) | ||
345 | reservedpages++; | 343 | reservedpages++; |
346 | } | 344 | } |
347 | 345 | ||
@@ -373,18 +371,18 @@ show_mem(void) | |||
373 | show_free_areas(); | 371 | show_free_areas(); |
374 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); | 372 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); |
375 | for_each_online_node(nid) { | 373 | for_each_online_node(nid) { |
376 | struct page * lmem_map = node_mem_map(nid); | ||
377 | i = node_spanned_pages(nid); | 374 | i = node_spanned_pages(nid); |
378 | while (i-- > 0) { | 375 | while (i-- > 0) { |
376 | struct page *page = nid_page_nr(nid, i); | ||
379 | total++; | 377 | total++; |
380 | if (PageReserved(lmem_map+i)) | 378 | if (PageReserved(page)) |
381 | reserved++; | 379 | reserved++; |
382 | else if (PageSwapCache(lmem_map+i)) | 380 | else if (PageSwapCache(page)) |
383 | cached++; | 381 | cached++; |
384 | else if (!page_count(lmem_map+i)) | 382 | else if (!page_count(page)) |
385 | free++; | 383 | free++; |
386 | else | 384 | else |
387 | shared += page_count(lmem_map + i) - 1; | 385 | shared += page_count(page) - 1; |
388 | } | 386 | } |
389 | } | 387 | } |
390 | printk("%ld pages of RAM\n",total); | 388 | printk("%ld pages of RAM\n",total); |