Messages in this thread | | | Date | Fri, 18 Jan 2008 13:43:45 -0800 (PST) | From | Christoph Lameter <> | Subject | Re: crash in kmem_cache_init |
| |
On Fri, 18 Jan 2008, Mel Gorman wrote:
> static void check_for_regular_memory(pg_data_t *pgdat) > { > #ifdef CONFIG_HIGHMEM > enum zone_type zone_type; > > for (zone_type = 0; zone_type <= ZONE_NORMAL; zone_type++) { > struct zone *zone = &pgdat->node_zones[zone_type]; > if (zone->present_pages) > node_set_state(zone_to_nid(zone), N_NORMAL_MEMORY); > } > #endif > } > > i.e. go through the other zones and if any of them have memory, set > N_NORMAL_MEMORY. But... it only does this on CONFIG_HIGHMEM which on > PPC64 is not going to be set so N_NORMAL_MEMORY never gets set on > POWER.... That sounds bad.
Argh. We may need to do a
node_set_state(zone_to_nid(zone), N_NORMAL_MEMORY) in the !HIGHMEM case.
> and one of them is in kmem_cache_init(). That seems very significant. > Christoph, can you think of possibilities of where N_NORMAL_MEMORY not > being set would cause trouble for slab?
Yes. That results in the per node structures not being created and thus l3 == NULL. Explains our failures.
| |