Re: [PATCH 4/4] kcore: remove noise from walk_memory_resource

Amerigo Wang
2009-07-22T06:27:32Z

On Wed, Jul 22, 2009 at 03:22:38PM +0900, KAMEZAWA Hiroyuki wrote:
>On Wed, 22 Jul 2009 14:21:03 +0800
>Amerigo Wang <xiyou.wangcong@gmail.com> wrote:
>
>> On Wed, Jul 22, 2009 at 02:12:27PM +0900, KAMEZAWA Hiroyuki wrote:
>> >From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>> >
>> >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 because scanning range was controlled properly.
>> >
>> >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.
>> >
>> >Changelog v2:
>> > - new patch from v2.
>> >
>> >Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>> >---
>> > kernel/resource.c | 18 ++++++++++++++----
>> > 1 file changed, 14 insertions(+), 4 deletions(-)
>> >
>> >Index: mmotm-2.6.31-Jul16/kernel/resource.c
>> >===================================================================
>> >--- mmotm-2.6.31-Jul16.orig/kernel/resource.c
>> >+++ mmotm-2.6.31-Jul16/kernel/resource.c
>> >@@ -237,10 +237,10 @@ EXPORT_SYMBOL(release_resource);
>> > #if !defined(CONFIG_ARCH_HAS_WALK_MEMORY)
>> > /*
>> > * Finds the lowest memory reosurce exists within [res->start.res->end)
>> >- * the caller must specify res->start, res->end, res->flags.
>> >+ * the caller must specify res->start, res->end, res->flags and "name".
>> > * If found, returns 0, res is overwritten, if not found, returns -1.
>> > */
>> >-static int find_next_system_ram(struct resource *res)
>> >+static int find_next_system_ram(struct resource *res, char *name)
>> > {
>> > resource_size_t start, end;
>> > struct resource *p;
>> >@@ -256,6 +256,8 @@ static int find_next_system_ram(struct r
>> > /* system ram is just marked as IORESOURCE_MEM */
>> > if (p->flags != res->flags)
>> > continue;
>> >+ if (name && strcmp(p->name, name))
>> >+ continue;
>> > if (p->start > end) {
>> > p = NULL;
>> > break;
>> >@@ -273,19 +275,27 @@ static int find_next_system_ram(struct r
>> > res->end = p->end;
>> > return 0;
>> > }
>> >+
>> >+/*
>> >+ * This function calls callback against all memory range of "System RAM"
>> >+ * which are marked as IORESOURCE_MEM and IORESOUCE_BUSY.
>> >+ * Now, this function is only for "System RAM".
>>
>>
>> Then we should change its name, shouldn't we? :)
>>
>I tried, but not changed in this version bacause the usage/purpose is not changed.
>
>Hmm, How about walk_system_ram_range() ?

Fine for me.

Thank you.