Hi, here is version 2. I only did small test and it seems to work (but I think there will be bug...) I post this now just because I'll be out of office 10/31-11/15 with ksummit and a private trip. Any comments are welcome but please see the interface is enough for use cases or not. For example) If MAX_ORDER alignment is too bad, I need to rewrite almost all code. Now interface is: struct page *__alloc_contig_pages(unsigned long base, unsigned long end, unsigned long nr_pages, int align_order, int node, gfp_t gfpflag, nodemask_t *mask) * @base: the lowest pfn which caller wants. * @end: the highest pfn which caller wants. * @nr_pages: the length of a chunk of pages to be allocated. * @align_order: alignment of start address of returned chunk in order. * Returned' page's order will be aligned to (1 << align_order).If smaller * than MAX_ORDER, it's raised to MAX_ORDER. * @node: allocate near memory to the node, If -1, current node is used. * @gfpflag: see include/linux/gfp.h * @nodemask: allocate memory within the nodemask. If the caller wants a FIXED address, set end - base == nr_pages. The patch is based onto the latest mmotm + Bob's 3 patches for fixing memory_hotplug.c (they are queued.) Thanks, -Kame -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>