Re: [Lhms-devel] Re: 2.6.14-mm2

From: Dave Hansen
Date: Wed Nov 16 2005 - 08:16:59 EST

On Wed, 2005-11-16 at 21:56 +0900, KAMEZAWA Hiroyuki wrote:
> Index: linux-2.6.14-mm2/mm/page_alloc.c
> ===================================================================
> --- linux-2.6.14-mm2.orig/mm/page_alloc.c
> +++ linux-2.6.14-mm2/mm/page_alloc.c
> @@ -2054,11 +2054,11 @@ static void __init free_area_init_core(s
> zone->nr_active = 0;
> zone->nr_inactive = 0;
> atomic_set(&zone->reclaim_in_progress, 0);
> + init_currently_empty_zone(zone, zone_start_pfn, size);
> if (!size)
> continue;
> zonetable_add(zone, nid, j, zone_start_pfn, size);
> - init_currently_empty_zone(zone, zone_start_pfn, size);
> zone_start_pfn += size;
> }
> }

Can you explain in a little bit more detail why this matters, and
exactly how it fixes your problem. I'm not sure it's correct.

"init_currently_empty_zone" could more properly be called something like
"init currently empty zone to now have memory". There's no reason to
call it, unless you have an empty zone *AND* you some memory to put in
it now. If you call it with a size of 0, the things like memmap_init
inside of it don't make any sense.

Also, if you're doing hot-adds of _new_ zones at runtime, you need to do
something fancy with the zonelist locking that I never got around to
because nobody needs it yet. See something along these lines:

-- Dave

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at