| Kernel v2.4.17-pre8 /mm/bootmem.c |
|---|
 2.4.17-pre8
 mm
 bootmem.c
diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/mm/bootmem.c linux/mm/bootmem.c
--- linux-2.4.16/mm/bootmem.c Mon Nov 26 10:35:00 2001
+++ linux/mm/bootmem.c Thu Dec 6 15:41:46 2001
@@ -154,6 +154,12 @@
if (align & (align-1))
BUG();
+ offset = 0;
+ if (align &&
+ (bdata->node_boot_start & (align - 1UL)) != 0)
+ offset = (align - (bdata->node_boot_start & (align - 1UL)));
+ offset >>= PAGE_SHIFT;
+
/*
* We try to allocate bootmem pages above 'goal'
* first, then we try to allocate lower pages.
@@ -165,6 +171,7 @@
preferred = 0;
preferred = ((preferred + align - 1) & ~(align - 1)) >> PAGE_SHIFT;
+ preferred += offset;
areasize = (size+PAGE_SIZE-1)/PAGE_SIZE;
incr = align >> PAGE_SHIFT ? : 1;
@@ -184,7 +191,7 @@
fail_block:;
}
if (preferred) {
- preferred = 0;
+ preferred = offset;
goto restart_scan;
}
return NULL;
|