On Thu, 2004-12-16 at 19:21, Hiroyuki KAMEZAWA wrote: > test-kernel-kamezawa/arch/ia64/mm/contig.c | 1 + > 1 files changed, 1 insertion(+) > > diff -puN arch/ia64/mm/contig.c~confit_fix arch/ia64/mm/contig.c > --- test-kernel/arch/ia64/mm/contig.c~confit_fix 2004-12-17 11:52:40.000000000 +0900 > +++ test-kernel-kamezawa/arch/ia64/mm/contig.c 2004-12-17 11:52:40.000000000 +0900 > @@ -279,6 +279,7 @@ paging_init (void) > vmem_map = (struct page *) vmalloc_end; > efi_memmap_walk(create_mem_map_page_table, NULL); > > + mem_map = vmem_map; > NODE_DATA(0)->node_mem_map = vmem_map; > free_area_init_node(0, &contig_page_data, zones_size, > 0, zholes_size); That may work around the problem, but it's not the correct solution. free_area_init_node() calls alloc_node_mem_map() which should set up mem_map. Could you put some printks in there and see why this isn't happening? You need to check these two conditions: /* * Make sure that the architecture hasn't already allocated * a node_mem_map, and that the node contains memory. */ if (pgdat->node_mem_map || !pgdat->node_spanned_pages) return; ... if (pgdat == NODE_DATA(0)) mem_map = NODE_DATA(0)->node_mem_map; -- Dave