On Thu, 2004-08-05 at 14:13, Andrew Morton wrote: > Dave Hansen wrote: > > > > When using CONFIG_NONLINEAR, a zone's mem_map isn't contiguous, and > > isn't allocated in the same place. This means that nonlinear doesn't > > really have a mem_map[] to pass into free_area_init_node() or > > memmap_init_zone() which makes any sense. > > argh, sorry. It's this patch which I dropped due to psychedelic screen > syndrome. The "break out zone free list initialization" patch is innocent, and > was included in rc3-mm1. OK, here's a replacement for the bad one. I could provide an incremental instead if you prefer. Turns out I was initializing the mem_map too late. Not only did pfn_to_page() use the pgdats, but it also used mem_map. Not surprisingly, mem_map == NULL did not make things happy. My earlier testing didn't catch it because I was always using either DISCONTIGMEM or NONLINEAR (even on plain SMP because I'm weird), both of which skip the code that I screwed up. -- Dave