On Wed, 25 Aug 2010, David Rientjes wrote: > > + * Special hack for UP mode. allocpercpu() falls back to kmalloc > > + * operations. So we cannot use that before the slab allocator is up > > + * Simply get the smallest possible compound page. The page will be > > + * released via kfree() when the cpu caches are resized later. > > + */ > > + if (slab_state < UP) > > + s->cpu_slab = (__percpu void *)__get_free_page(GFP_NOWAIT, 1); > > __get_free_pages() takes an order argument. Right. Patch not refreshed after the last tinzy winzy change. Seems that I got a bit rusty. Subject: Slub: UP bandaid Since the percpu allocator does not provide early allocation in UP mode (only in SMP configurations) use __get_free_page() to improvise a compound page allocation that can be later freed via kfree(). Compound pages will be released when the cpu caches are resized. Signed-off-by: Christoph Lameter <cl@xxxxxxxxx> --- mm/slub.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) Index: linux-2.6/mm/slub.c =================================================================== --- linux-2.6.orig/mm/slub.c 2010-08-25 09:00:59.000000000 -0500 +++ linux-2.6/mm/slub.c 2010-08-25 10:59:30.000000000 -0500 @@ -2091,8 +2091,24 @@ init_kmem_cache_node(struct kmem_cache_n static inline int alloc_kmem_cache_cpus(struct kmem_cache *s) { +#ifdef CONFIG_SMP + /* + * Will use reserve that does not require slab operation during + * early boot. + */ BUILD_BUG_ON(PERCPU_DYNAMIC_EARLY_SIZE < SLUB_PAGE_SHIFT * sizeof(struct kmem_cache_cpu)); +#else + /* + * Special hack for UP mode. allocpercpu() falls back to kmalloc + * operations. So we cannot use that before the slab allocator is up + * Simply get the smallest possible compound page. The page will be + * released via kfree() when the cpu caches are resized later. + */ + if (slab_state < UP) + s->cpu_slab = (__percpu void *)__get_free_pages(GFP_NOWAIT, 1); + else +#endif s->cpu_slab = alloc_percpu(struct kmem_cache_cpu); -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html