Messages in this thread | | | From | Arnd Bergmann <> | Subject | Re: [patch 1/2] fix call to alloc_bootmem after bootmem has been freed | Date | Wed, 22 Nov 2006 10:23:40 +0100 |
| |
On Tuesday 21 November 2006 19:26, Andrew Morton wrote: > slab is a very different thing from vmalloc. One could easily envisage > situations (now or in the future) in which slab is ready, but vmalloc is > not (more likely vice versa). > > It'd be better to add a new vmalloc_is_available. (Just an int - no need > for a helper function).
In the time line, we currently have
start_kernel() ... setup_arch() init_bootmem() # alloc_bootmem starts working ... paging_init() # needed for vmalloc ... # mem_init() free_all_bootmem() # alloc_bootmem stops working, alloc_pages # starts working kmem_cache_init() # kmalloc and vmalloc start working ... system_state = SYSTEM_RUNNING
The one interesting point here is where you have to transition between calling alloc_bootmem and calling the regular allocator functions. Maybe calling it slab_is_available() was not the best choice for a name, but I don't see a point in having different names for essentially the same question, "bootmem or not bootmem". The powerpc platform has an integer variable called 'mem_init_done', which expresses this well IMHO, but it's currently not portable.
Checking for SYSTEM_RUNNING is obviously the wrong choice, since it is set at a very late point in bootup, long after bootmem is gone.
Arnd <>< - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |