Re: [patch 01/28] cpu alloc: The allocator

David Miller
2007-11-13T11:15:24Z

From: Christoph Lameter <clameter@sgi.com>
Date: Tue, 06 Nov 2007 11:51:45 -0800

> The core portion of the cpu allocator.
>
> The per cpu allocator allows dynamic allocation of memory on all
> processor simultaneously. A bitmap is used to track used areas.
> The allocator implements tight packing to reduce the cache footprint
> and increase speed since cacheline contention is typically not a concern
> for memory mainly used by a single cpu. Small objects will fill up gaps
> left by larger allocations that required alignments.
>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>

Unfortunately, sparc64 fails to boot even with just this patch
applied.

The problem is that for the non-virtualized case this patch bloats up
the BSS section to be more than 8MB in size. Sparc64 kernel images
cannot be more than 8MB in size total due to various boot loader and
firmware limitations.

I have NR_CPUS set to 64, but it can be up to 4096 on sparc64.

Yes, I could add virtualized area support to sparc64, but we cannot
impose this on every platform.

One thing you could do is simply use a vmalloc allocation in the
non-virtualized case.