[lkml]   [2007]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: 2.6.21-rc5-mm4
    On Tue, 3 Apr 2007, Badari Pulavarty wrote:

    > Seems to be an issue with calibrate_delay() spinning in a tight
    > loop :(
    > BTW, machine boots fine with SLAB code - not sure why ?

    Interrupt disabled sigh.

    Here is the fix:

    SLUB: Fix numa bootstrap

    NUMA bootstrap calls new_slab() if more than one node is found on bootup.
    new_slab() assumes a standard slab context where interrupts must be
    disabled. It enables interrupts for the call into the page allocator
    and then disables them again. Interrupts do not have to be disabled
    during on bootstrap because we still run single threaded there.

    I dropped the interrupt preservation code just before SLUB v6 because
    it looked useless there. SLUB worked on the following NUMA tests
    that just had a single node. Sigh.

    Enable interrupts after calling new_slab.

    Signed-off-by: Christoph Lameter <>

    Index: linux-2.6.21-rc5-mm4/mm/slub.c
    --- linux-2.6.21-rc5-mm4.orig/mm/slub.c 2007-04-03 18:07:41.000000000 -0700
    +++ linux-2.6.21-rc5-mm4/mm/slub.c 2007-04-03 18:08:17.000000000 -0700
    @@ -1436,6 +1436,8 @@ static int init_kmem_cache_nodes(struct

    BUG_ON(s->size < sizeof(struct kmem_cache_node));
    page = new_slab(kmalloc_caches, gfpflags, node);
    + /* new_slab() disables interupts */
    + local_irq_enable();

    n = page->freelist;
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at
     \ /
      Last update: 2007-04-04 03:19    [W:0.030 / U:6.636 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site