From: Christoph Lameter The uncached allocator manages per node pools. Specify __GFP_THISNODE in order to force allocation on the indicated node or fail. The uncached allocator has already logic to deal with failing allocations. Signed-off-by: Christoph Lameter Cc: Andy Whitcroft Cc: Mel Gorman Signed-off-by: Andrew Morton --- arch/ia64/kernel/uncached.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -puN arch/ia64/kernel/uncached.c~guarantee-that-the-uncached-allocator-gets-pages-on-the-correct arch/ia64/kernel/uncached.c --- a/arch/ia64/kernel/uncached.c~guarantee-that-the-uncached-allocator-gets-pages-on-the-correct +++ a/arch/ia64/kernel/uncached.c @@ -98,7 +98,8 @@ static int uncached_add_chunk(struct unc /* attempt to allocate a granule's worth of cached memory pages */ - page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO, + page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO | + __GFP_THISNODE | __GFP_NORETRY | __GFP_NOWARN, IA64_GRANULE_SHIFT-PAGE_SHIFT); if (!page) { mutex_unlock(&uc_pool->add_chunk_mutex); _