1. move that before zone_sizes_init ...
2. add free_early for one old one, otherwise it will be be reserved again when
init highmem.
Signed-off-by: Yinghai Lu <yhlu.kernel@xxxxxxxxx>
Index: linux-2.6/arch/x86/kernel/setup_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup_32.c
+++ linux-2.6/arch/x86/kernel/setup_32.c
@@ -585,6 +585,9 @@ static void __init relocate_initrd(void)
printk(KERN_INFO "Copied RAMDISK from %016llx - %016llx to %08llx - %08llx\n",
ramdisk_image, ramdisk_image + ramdisk_size - 1,
ramdisk_here, ramdisk_here + ramdisk_size - 1);
+
+ /* need to free that, otherwise init highmem will reserve it again */
+ free_early(ramdisk_image, ramdisk_image+ramdisk_size);
}