diff options
author | KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | 2009-09-22 19:45:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 10:39:41 -0400 |
commit | 908eedc6168bd92e89f90d89fa389065a36358fa (patch) | |
tree | 612881abb2aae920ab1e62e88990ee7b6a988f51 /mm/memory_hotplug.c | |
parent | 9492587cf35d370db33ef4b38375dfb35a105b61 (diff) |
walk system ram range
Originally, walk_memory_resource() was introduced to traverse all memory
of "System RAM" for detecting memory hotplug/unplug range. For doing so,
flags of IORESOUCE_MEM|IORESOURCE_BUSY was used and this was enough for
memory hotplug.
But for using other purpose, /proc/kcore, this may includes some firmware
area marked as IORESOURCE_BUSY | IORESOUCE_MEM. This patch makes the
check strict to find out busy "System RAM".
Note: PPC64 keeps their own walk_memory_resouce(), which walk through
ppc64's lmb informaton. Because old kclist_add() is called per lmb, this
patch makes no difference in behavior, finally.
And this patch removes CONFIG_MEMORY_HOTPLUG check from this function.
Because pfn_valid() just show "there is memmap or not* and cannot be used
for "there is physical memory or not", this function is useful in generic
to scan physical memory range.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: WANG Cong <xiyou.wangcong@gmail.com>
Cc: Américo Wang <xiyou.wangcong@gmail.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memory_hotplug.c')
-rw-r--r-- | mm/memory_hotplug.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index efe3e0ec2e61..821dee596377 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c | |||
@@ -413,7 +413,7 @@ int online_pages(unsigned long pfn, unsigned long nr_pages) | |||
413 | if (!populated_zone(zone)) | 413 | if (!populated_zone(zone)) |
414 | need_zonelists_rebuild = 1; | 414 | need_zonelists_rebuild = 1; |
415 | 415 | ||
416 | ret = walk_memory_resource(pfn, nr_pages, &onlined_pages, | 416 | ret = walk_system_ram_range(pfn, nr_pages, &onlined_pages, |
417 | online_pages_range); | 417 | online_pages_range); |
418 | if (ret) { | 418 | if (ret) { |
419 | printk(KERN_DEBUG "online_pages %lx at %lx failed\n", | 419 | printk(KERN_DEBUG "online_pages %lx at %lx failed\n", |
@@ -705,7 +705,7 @@ offline_isolated_pages_cb(unsigned long start, unsigned long nr_pages, | |||
705 | static void | 705 | static void |
706 | offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn) | 706 | offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn) |
707 | { | 707 | { |
708 | walk_memory_resource(start_pfn, end_pfn - start_pfn, NULL, | 708 | walk_system_ram_range(start_pfn, end_pfn - start_pfn, NULL, |
709 | offline_isolated_pages_cb); | 709 | offline_isolated_pages_cb); |
710 | } | 710 | } |
711 | 711 | ||
@@ -731,7 +731,7 @@ check_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) | |||
731 | long offlined = 0; | 731 | long offlined = 0; |
732 | int ret; | 732 | int ret; |
733 | 733 | ||
734 | ret = walk_memory_resource(start_pfn, end_pfn - start_pfn, &offlined, | 734 | ret = walk_system_ram_range(start_pfn, end_pfn - start_pfn, &offlined, |
735 | check_pages_isolated_cb); | 735 | check_pages_isolated_cb); |
736 | if (ret < 0) | 736 | if (ret < 0) |
737 | offlined = (long)ret; | 737 | offlined = (long)ret; |