lkml.org 
[lkml]   [2008]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 02/10] x86: Change size of node ids from u8 to u16 V3
    Mike Travis a écrit :
    >> Another point: you want this change, sorry if my previous mail was not detailed enough :
    >>
    >> --- a/arch/x86/mm/numa_64.c
    >> +++ b/arch/x86/mm/numa_64.c
    >> @@ -78,7 +78,7 @@ static int __init allocate_cachealigned_memnodemap(void)
    >> unsigned long pad, pad_addr;
    >>
    >> memnodemap = memnode.embedded_map;
    >> - if (memnodemapsize <= 48)
    >> + if (memnodemapsize <= ARRAY_SIZE(memnode.embedded_map))
    >> return 0;
    >>
    >> pad = L1_CACHE_BYTES - 1;
    >>
    >
    > Hi Eric,
    >
    > I'm still getting this message with the numa=fake=4 start option:
    >
    > Faking node 0 at 0000000000000000-0000000028000000 (640MB)
    > Faking node 1 at 0000000028000000-0000000050000000 (640MB)
    > Faking node 2 at 0000000050000000-0000000078000000 (640MB)
    > Faking node 3 at 0000000078000000-000000009ff00000 (639MB)
    >
    > NUMA: Using 27 for the hash shift.
    > Your memory is not aligned you need to rebuild your kernel
    > with a bigger NODEMAPSIZE shift=27 No NUMA hash function found.
    > NUMA emulation disabled.
    >
    > Is there something else I need to change? (This is on an AMD box.)
    >

    Sure, check populate_memnodemap() in arch/x86/mm/numa_64.c


    --- a/arch/x86/mm/numa_64.c
    +++ b/arch/x86/mm/numa_64.c
    @@ -54,7 +54,7 @@ populate_memnodemap(const struct bootnode *nodes, int
    numnodes, int shift)
    int res = -1;
    unsigned long addr, end;

    - memset(memnodemap, 0xff, memnodemapsize);
    + memset(memnodemap, 0xff, sizeof(u16)*memnodemapsize);
    for (i = 0; i < numnodes; i++) {
    addr = nodes[i].start;
    end = nodes[i].end;
    @@ -63,7 +63,7 @@ populate_memnodemap(const struct bootnode *nodes, int
    numnodes, int shift)
    if ((end >> shift) >= memnodemapsize)
    return 0;
    do {
    - if (memnodemap[addr >> shift] != 0xff)
    + if (memnodemap[addr >> shift] != NUMA_NO_NODE)
    return -1;
    memnodemap[addr >> shift] = i;
    addr += (1UL << shift);
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2008-01-16 21:41    [W:0.025 / U:0.952 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site