From: Andi Kleen [PATCH] mm: offset align in alloc_bootmem need offset alignment when node_boot_start's alignment is less than align required Index: linux-2.6/mm/bootmem.c =================================================================== --- linux-2.6.orig/mm/bootmem.c +++ linux-2.6/mm/bootmem.c @@ -257,7 +257,7 @@ restart_scan: unsigned long j; i = find_next_zero_bit(bdata->node_bootmem_map, eidx, i); - i = ALIGN(i, incr); + i = ALIGN(i + offset, incr) - offset; if (i >= eidx) break; if (test_bit(i, bdata->node_bootmem_map)) { @@ -273,7 +273,7 @@ restart_scan: start = i; goto found; fail_block: - i = ALIGN(j, incr); + i = ALIGN(j + offset, incr) - offset; if (i == j) i += incr; }