Messages in this thread | | | Date | Wed, 25 Aug 2010 08:50:52 -0500 (CDT) | From | Christoph Lameter <> | Subject | Re: linux-next: build failure after merge of the final tree (slab tree related) |
| |
On Wed, 25 Aug 2010, Pekka Enberg wrote:
> On 8/25/10 11:18 AM, Tejun Heo wrote: > > Hello, > > > > On 08/24/2010 08:53 PM, Christoph Lameter wrote: > > > > [ 0.000000] Kernel panic - not syncing: Cannot create slab kmem_cache > > > > size=232 realsize=256 order=0 offset=0 flags=42000 > > > > > > alloc per cpu result in kmalloc which fails. > > > > > > Tejon: Is there some way we could get a reserved per cpu area under UP > > > instead of fallback to slab allocations during bootup? > > > > Eh... nasty. Maybe we can create a alloc_percpu_early() function > > which doesn't allow freeing of allocate memory and just redirect to > > bootmem on UP? > > Yeah, I was thinking about that too.
Another solution is to allocate an order 1 (compound) page for each early cache. Then resize the kmalloc array after everything is up. kfree() will then redirect to the page allocator.
But this is a slab allocator specific solution.
We now have the situation that alloc_percpu can only be used on early boot on SMP machines. A general solution would be better I think.
If the early alloc_percpu stuff would work consistently then it could also be used to avoid the boot_pageset in the page allocator f.e.
Can we just get rid of the special UP case and just run the percpu subsystem even for UP?
| |