diff options
author | Tony Luck <tony.luck@intel.com> | 2005-11-10 19:38:41 +0100 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-11-10 19:38:41 +0100 |
commit | 4ddccb8eb9d1c57c7dd3838d8328690bf1869145 (patch) | |
tree | 67843de19158f639bf9cf42268acbf03b03519f7 /arch | |
parent | Pull mca-check-psp into release branch (diff) | |
parent | [IA64] fix memory less node allocation (diff) | |
download | linux-4ddccb8eb9d1c57c7dd3838d8328690bf1869145.tar.xz linux-4ddccb8eb9d1c57c7dd3838d8328690bf1869145.zip |
Pull memoryless-node-allocation into release branch
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/mm/discontig.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index a88cdb7232f8..0f776b032d31 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c @@ -350,14 +350,12 @@ static void __init initialize_pernode_data(void) * for best. * @nid: node id * @pernodesize: size of this node's pernode data - * @align: alignment to use for this node's pernode data */ -static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize, - unsigned long align) +static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize) { void *ptr = NULL; u8 best = 0xff; - int bestnode = -1, node; + int bestnode = -1, node, anynode = 0; for_each_online_node(node) { if (node_isset(node, memory_less_mask)) @@ -366,13 +364,15 @@ static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize, best = node_distance(nid, node); bestnode = node; } + anynode = node; } - ptr = __alloc_bootmem_node(mem_data[bestnode].pgdat, - pernodesize, align, __pa(MAX_DMA_ADDRESS)); + if (bestnode == -1) + bestnode = anynode; + + ptr = __alloc_bootmem_node(mem_data[bestnode].pgdat, pernodesize, + PERCPU_PAGE_SIZE, __pa(MAX_DMA_ADDRESS)); - if (!ptr) - panic("NO memory for memory less node\n"); return ptr; } @@ -413,8 +413,7 @@ static void __init memory_less_nodes(void) for_each_node_mask(node, memory_less_mask) { pernodesize = compute_pernodesize(node); - pernode = memory_less_node_alloc(node, pernodesize, - (node) ? (node * PERCPU_PAGE_SIZE) : (1024*1024)); + pernode = memory_less_node_alloc(node, pernodesize); fill_pernode(node, __pa(pernode), pernodesize); } |