Messages in this thread | | | Date | Sat, 14 Jun 2008 12:39:39 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH] x86: cleanup reloated_initrd |
| |
Yinghai Lu wrote: Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> >>> >>> 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); >>> } >>> >> I'm somewhat confused by this... you realize that the old location and the >> new location of the initrd will overlap, right? > > Ying Huang add page_is_reserved_early check in > add_one_highpage_init(), so reserve_early high address will be > reserved when in init high. that is not wanted old initrd in high > region we will lose some ram >
Yes, but I think the above will free part of the active area if the areas overlap.
-hpa
| |