[IA64] Fix NUMA configuration issue
commit98075d245a5bc4aeebc2e9f16fa8b089a5c200ac
authorZoltan Menyhart <Zoltan.Menyhart@bull.net>
Fri, 11 Apr 2008 22:21:35 +0000 (11 15:21 -0700)
committerTony Luck <tony.luck@intel.com>
Fri, 11 Apr 2008 22:21:35 +0000 (11 15:21 -0700)
tree5d248fa7ec872548e43ed2acb864d701adc65f42
parentc19b2930df0621500913c005c06978bd8933110b
[IA64] Fix NUMA configuration issue

There is a NUMA memory configuration issue in 2.6.24:

A 2-node machine of ours has got the following memory layout:

Node 0: 0 - 2 Gbytes
Node 0: 4 - 8 Gbytes
Node 1: 8 - 16 Gbytes
Node 0: 16 - 18 Gbytes

"efi_memmap_init()" merges the three last ranges into one.

"register_active_ranges()" is called as follows:

efi_memmap_walk(register_active_ranges, NULL);

i.e. once for the 4 - 18 Gbytes range. It picks up the node
number from the start address, and registers all the memory for
the node #0.

"register_active_ranges()" should be called as follows to
make sure there is no merged address range at its entry:

efi_memmap_walk(filter_memory, register_active_ranges);

"filter_memory()" is similar to "filter_rsvd_memory()",
but the reserved memory ranges are not filtered out.

Signed-off-by: Zoltan Menyhart <Zoltan.Menyhart@bull.net>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/setup.c
arch/ia64/mm/contig.c
arch/ia64/mm/discontig.c
arch/ia64/mm/init.c
include/asm-ia64/meminit.h