Re: [GIT PULL v2] Early boot SLAB for 2.6.31

From: Pekka Enberg
Date: Thu Jun 11 2009 - 10:06:45 EST


Hi Christoph,

On Thu, Jun 11, 2009 at 4:58 PM, Christoph
Lameter<cl@xxxxxxxxxxxxxxxxxxxx> wrote:
>> @@ -645,14 +657,10 @@ asmlinkage void __init start_kernel(void)
>>               initrd_start = 0;
>>       }
>>  #endif
>> -     vmalloc_init();
>> -     vfs_caches_init_early();
>>       cpuset_init_early();
>>       page_cgroup_init();
>> -     mem_init();
>>       enable_debug_pagealloc();
>>       cpu_hotplug_init();
>> -     kmem_cache_init();
>>       kmemtrace_init();
>>       debug_objects_mem_init();
>>       idr_init_cache();
>
> Therefore potential breakage is in cpusets, hotplug and control groups.
> Have any of these been tested with these patches? NUMA?

Yinghai has done some testing. Control groups should to be fine:

http://git.kernel.org/?p=linux/kernel/git/penberg/slab-2.6.git;a=commitdiff;h=7d63de6b4c7798a6a1c6504a65c327aaf76ef2d5

I have not tested hotplug and cpuset_init_early() does indeed needs to
be switched over to slab (it does that via fallback now).

>> diff --git a/mm/slub.c b/mm/slub.c
>> index 5e805a6..c1815a6 100644
>> --- a/mm/slub.c
>> +++ b/mm/slub.c
>> @@ -2557,13 +2557,16 @@ static struct kmem_cache *create_kmalloc_cache(struct kmem_cache *s,
>>       if (gfp_flags & SLUB_DMA)
>>               flags = SLAB_CACHE_DMA;
>>
>> -     down_write(&slub_lock);
>> +     /*
>> +      * This function is called with IRQs disabled during early-boot on
>> +      * single CPU so there's no need to take slub_lock here.
>> +      */
>>       if (!kmem_cache_open(s, gfp_flags, name, size, ARCH_KMALLOC_MINALIGN,
>
> This function is also called later when kmalloc caches are
> created on demand.

Where? AFAICT, only kmem_cache_init() calls the function.

Pekka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/