On Fri, 11 Mar 2016 14:43:45 +0300 Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx> wrote: > >> This is not about size, this about fragmentation. vmalloc allows to > >> utilize available low-order pages, > >> hence reduce the fragmentation. > > I've attempted to add __vmalloc(STACK_ALLOC_SIZE, alloc_flags, > > PAGE_KERNEL) (also tried vmalloc(STACK_ALLOC_SIZE)) instead of > > page_alloc() and am now getting a crash in > > kmem_cache_alloc_node_trace() in mm/slab.c, because it doesn't allow > > the kmem_cache pointer to be NULL (it's dereferenced when calling > > trace_kmalloc_node()). > > > > Steven, do you know if this because of my code violating some contract > > (e.g. I'm calling vmalloc() too early, when kmalloc_caches[] haven't > > been initialized), > > Probably. kmem_cache_init() goes before vmalloc_init(). Agreed, that function can not be called with cachep NULL, nor can it be called before kmem_cache is set up to point to kmem_cache_boot. -- Steve -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>