diff options
| -rw-r--r-- | arch/x86/kernel/setup.c | 15 | ||||
| -rw-r--r-- | arch/x86/kernel/vmlinux.lds.S | 2 | 
2 files changed, 5 insertions, 12 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d1c636bf31a..be5ae80f897 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -301,15 +301,13 @@ static void __init reserve_brk(void)  #ifdef CONFIG_BLK_DEV_INITRD -#ifdef CONFIG_X86_32 -  #define MAX_MAP_CHUNK	(NR_FIX_BTMAPS << PAGE_SHIFT)  static void __init relocate_initrd(void)  {  	u64 ramdisk_image = boot_params.hdr.ramdisk_image;  	u64 ramdisk_size  = boot_params.hdr.ramdisk_size; -	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT; +	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;  	u64 ramdisk_here;  	unsigned long slop, clen, mapaddr;  	char *p, *q; @@ -365,14 +363,13 @@ static void __init relocate_initrd(void)  		ramdisk_image, ramdisk_image + ramdisk_size - 1,  		ramdisk_here, ramdisk_here + ramdisk_size - 1);  } -#endif  static void __init reserve_initrd(void)  {  	u64 ramdisk_image = boot_params.hdr.ramdisk_image;  	u64 ramdisk_size  = boot_params.hdr.ramdisk_size;  	u64 ramdisk_end   = ramdisk_image + ramdisk_size; -	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT; +	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;  	if (!boot_params.hdr.type_of_loader ||  	    !ramdisk_image || !ramdisk_size) @@ -402,14 +399,8 @@ static void __init reserve_initrd(void)  		return;  	} -#ifdef CONFIG_X86_32  	relocate_initrd(); -#else -	printk(KERN_ERR "initrd extends beyond end of memory " -	       "(0x%08llx > 0x%08llx)\ndisabling initrd\n", -	       ramdisk_end, end_of_lowmem); -	initrd_start = 0; -#endif +  	free_early(ramdisk_image, ramdisk_end);  }  #else diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 4c85b2e2bb6..367e8788204 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -108,6 +108,8 @@ SECTIONS  	/* Data */  	. = ALIGN(PAGE_SIZE);  	.data : AT(ADDR(.data) - LOAD_OFFSET) { +		/* Start of data section */ +		_sdata = .;  		DATA_DATA  		CONSTRUCTORS  |