On Fri, 2005-03-04 at 08:24 -0500, Bob Picco wrote: > There are two issues here. First, I was remiss by not replying > to you about an old IA64 SPARSEMEM patch. Both issues are are within > alloc_node_mem_map. > > For SPARSEMEM why would any arch use node_mem_map? They shouldn't. We might want to ifdef it out. > Should what I propose be > unacceptable, then I'd be left with loading node_mem_map with a non-zero > value (like any) for each node to avoid the alloc_bootmem_node. Well I might > be missing the bigger picture. The big picture is that you don't want this: > size = (pgdat->node_spanned_pages + 1) * sizeof(struct page); > map = alloc_remap(pgdat->node_id, size); > if (!map) > map = alloc_bootmem_node(pgdat, size); > pgdat->node_mem_map = map; for your architecture. I think it's reasonable to have a per-architecture alloc routine there. The i386 NUMA architectures can hook in the alloc_remap(), ia64 can hook in setting up their node_mem_map init, and everybody else can just call alloc_bootmem_node. map = arch_alloc_node_mem_map(pgdat, size); ... #ifndef CONFIG_ARCH_HAS_ALLOC_NODE_MEM_MAP #define arch_alloc_node_mem_map(pgdat,size)\ alloc_bootmem_node(pgdat, size); #endif -- Dave