All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dhaval Giani <dhaval@linux.vnet.ibm.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	hpa@zytor.com, tglx@linutronix.de
Subject: [PATCH -mm/x86] revert i386: handle an initrd in highmem (Was Re: 2.6.24-rc6-mm1)
Date: Mon, 7 Jan 2008 19:20:38 +0530	[thread overview]
Message-ID: <20080107135038.GA19568@linux.vnet.ibm.com> (raw)
In-Reply-To: <20071222233056.d652743e.akpm@linux-foundation.org>

Hi Andrew, Ingo, Thomas, Peter,

x86: revert i386: handle an initrd in highmem

The patch caused a failure while booting a kexec kernel.
(http://lkml.org/lkml/2008/1/7/42 has the bisect details.)

The following patch reverts it.

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/boot/header.S     |    5 -
 arch/x86/kernel/setup_32.c |  113 +++++++--------------------------------------
 2 files changed, 19 insertions(+), 99 deletions(-)

Index: linux-2.6.24-rc6/arch/x86/boot/header.S
===================================================================
--- linux-2.6.24-rc6.orig/arch/x86/boot/header.S
+++ linux-2.6.24-rc6/arch/x86/boot/header.S
@@ -195,13 +195,10 @@ cmd_line_ptr:	.long	0		# (Header version
 					# can be located anywhere in
 					# low memory 0x10000 or higher.
 
-ramdisk_max:	.long 0x7fffffff
+ramdisk_max:	.long (-__PAGE_OFFSET-(512 << 20)-1) & 0x7fffffff
 					# (Header version 0x0203 or later)
 					# The highest safe address for
 					# the contents of an initrd
-					# The current kernel allows up to 4 GB,
-					# but leave it at 2 GB to avoid
-					# possible bootloader bugs.
 
 kernel_alignment:  .long CONFIG_PHYSICAL_ALIGN	#physical addr alignment
 						#required for protected mode
Index: linux-2.6.24-rc6/arch/x86/kernel/setup_32.c
===================================================================
--- linux-2.6.24-rc6.orig/arch/x86/kernel/setup_32.c
+++ linux-2.6.24-rc6/arch/x86/kernel/setup_32.c
@@ -583,95 +583,6 @@ static void __init relocate_initrd(void)
 
 #endif /* CONFIG_BLK_DEV_INITRD */
 
-#ifdef CONFIG_BLK_DEV_INITRD
-
-static bool do_relocate_initrd = false;
-
-static void __init reserve_initrd(void)
-{
-	unsigned long ramdisk_image = boot_params.hdr.ramdisk_image;
-	unsigned long ramdisk_size  = boot_params.hdr.ramdisk_size;
-	unsigned long ramdisk_end   = ramdisk_image + ramdisk_size;
-	unsigned long end_of_lowmem = max_low_pfn << PAGE_SHIFT;
-	unsigned long ramdisk_here;
-
-	if (ramdisk_end < ramdisk_image) {
-		printk(KERN_ERR "initrd wraps around end of memory\n"
-		       KERN_ERR "disabling initrd\n");
-		initrd_start = 0;
-		return;
-	}
-	if (ramdisk_size >= end_of_lowmem/2) {
-		printk(KERN_ERR "initrd too large to handle\n"
-		       KERN_ERR "disabling initrd\n");
-		initrd_start = 0;
-		return;
-	}
-	if (ramdisk_end <= end_of_lowmem) {
-		/* All in lowmem, easy case */
-		reserve_bootmem(ramdisk_image, ramdisk_size);
-		initrd_start = ramdisk_image + PAGE_OFFSET;
-		initrd_end = initrd_start+ramdisk_size;
-		return;
-	}
-
-	/* We need to move the initrd down into lowmem */
-	ramdisk_here = (end_of_lowmem - ramdisk_size) & PAGE_MASK;
-
-	/* Note: this includes all the lowmem currently occupied by
-	   the initrd, we rely on that fact to keep the data intact. */
-	reserve_bootmem(ramdisk_here, ramdisk_size);
-	initrd_start = ramdisk_here + PAGE_OFFSET;
-	initrd_end   = initrd_start + ramdisk_size;
-
-	do_relocate_initrd = true;
-}
-
-#define MAX_MAP_CHUNK	(NR_FIX_BTMAPS << PAGE_SHIFT)
-
-static void __init relocate_initrd(void)
-{
-	unsigned long ramdisk_image = boot_params.hdr.ramdisk_image;
-	unsigned long ramdisk_size  = boot_params.hdr.ramdisk_size;
-	unsigned long end_of_lowmem = max_low_pfn << PAGE_SHIFT;
-	unsigned long ramdisk_here;
-	unsigned long slop, clen, mapaddr;
-	char *p, *q;
-
-	if (!do_relocate_initrd)
-		return;		/* Nothing to do here... */
-
-	ramdisk_here = initrd_start - PAGE_OFFSET;
-	q = (char *)initrd_start;
-
-	/* Copy any lowmem portion of the initrd */
-	if (ramdisk_image < end_of_lowmem) {
-		clen = end_of_lowmem - ramdisk_image;
-		p = (char *)__va(ramdisk_image);
-		memcpy(q, p, clen);
-		q += clen;
-		ramdisk_image += clen;
-		ramdisk_size  -= clen;
-	}
-
-	/* Copy the highmem portion of the initrd */
-	while (ramdisk_size) {
-		slop = ramdisk_image & ~PAGE_MASK;
-		clen = ramdisk_size;
-		if (clen > MAX_MAP_CHUNK-slop)
-			clen = MAX_MAP_CHUNK-slop;
-		mapaddr = ramdisk_image & PAGE_MASK;
-		p = bt_ioremap(mapaddr, clen+slop);
-		memcpy(q, p+slop, clen);
-		bt_iounmap(p, clen+slop);
-		q += clen;
-		ramdisk_image += clen;
-		ramdisk_size  -= clen;
-	}
-}
-
-#endif /* CONFIG_BLK_DEV_INITRD */
-
 void __init setup_bootmem_allocator(void)
 {
 	unsigned long bootmap_size;
@@ -730,8 +641,24 @@ void __init setup_bootmem_allocator(void
 #endif
 	numa_kva_reserve();
 #ifdef CONFIG_BLK_DEV_INITRD
-	if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image)
-		reserve_initrd();
+	if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) {
+		unsigned long ramdisk_image = boot_params.hdr.ramdisk_image;
+		unsigned long ramdisk_size  = boot_params.hdr.ramdisk_size;
+		unsigned long ramdisk_end   = ramdisk_image + ramdisk_size;
+		unsigned long end_of_lowmem = max_low_pfn << PAGE_SHIFT;
+
+		if (ramdisk_end <= end_of_lowmem) {
+			reserve_bootmem(ramdisk_image, ramdisk_size,
+							BOOTMEM_DEFAULT);
+			initrd_start = ramdisk_image + PAGE_OFFSET;
+			initrd_end = initrd_start+ramdisk_size;
+		} else {
+			printk(KERN_ERR "initrd extends beyond end of memory "
+			       "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
+			       ramdisk_end, end_of_lowmem);
+			initrd_start = 0;
+		}
+	}
 #endif
 	reserve_crashkernel();
 }
@@ -890,10 +817,6 @@ void __init setup_arch(char **cmdline_p)
 	relocate_initrd();
 #endif
 
-#ifdef CONFIG_BLK_DEV_INITRD
-	relocate_initrd();
-#endif
-
 	dmi_scan_machine();
 
 	io_delay_init();

--
regards
Dhaval

  parent reply	other threads:[~2008-01-07 13:51 UTC|newest]

Thread overview: 149+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-23  7:30 2.6.24-rc6-mm1 Andrew Morton
2007-12-23 11:04 ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 11:10   ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 11:34     ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-23 11:57       ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 12:12         ` 2.6.24-rc6-mm1 Christoph Hellwig
2007-12-23 12:35 ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 13:00   ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 13:48     ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 13:53       ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 20:09         ` 2.6.24-rc6-mm1 Sam Ravnborg
2007-12-23 22:44           ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2008-01-02 20:05             ` [patch] x86 compat_binfmt_elf, Makefile fixes (was: Re: 2.6.24-rc6-mm1) Ingo Molnar
2008-01-02 20:32               ` Rafael J. Wysocki
2008-01-02 20:43                 ` Ingo Molnar
2007-12-23 23:09   ` 2.6.24-rc6-mm1 H. Peter Anvin
2007-12-23 16:27 ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-23 20:39   ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-27 11:42     ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-27 14:30       ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-28 22:53   ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-28 23:07     ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-29 16:51       ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-30  1:30         ` 2.6.24-rc6-mm1 Herbert Xu
2007-12-30  3:34           ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-30  5:41             ` 2.6.24-rc6-mm1 Randy Dunlap
2007-12-31 20:15             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-01 12:04               ` 2.6.24-rc6-mm1 Herbert Xu
2008-01-01 12:59                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-01 18:29                   ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-02 18:29                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-02 21:51                   ` 2.6.24-rc6-mm1 Herbert Xu
2008-01-02 21:57                     ` 2.6.24-rc6-mm1 J. Bruce Fields
2008-01-03  5:02                       ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-03 15:37                       ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-03 18:52                         ` 2.6.24-rc6-mm1 J. Bruce Fields
2008-01-04 10:23                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-04 13:30                       ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-04 15:21                         ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-04 21:24                           ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05  0:07                           ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-05  8:01                             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05 10:13                               ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-05 14:52                                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05 22:10                                   ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  1:25                                     ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-06  3:28                                       ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 10:41                                         ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 11:23                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 11:35                                             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 13:33                                               ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 20:03                                                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-07  6:16                                                   ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-08 15:59                                                     ` 2.6.24-rc6-mm1 Ingo Molnar
2008-01-08 23:57                                                       ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-09  0:27                                                         ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-09  0:54                                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-09  1:07                                                             ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-09  9:04                                                         ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-10  0:54                                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-25 21:06                                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  3:16                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  8:27                                   ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-06 10:30                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 14:52                                       ` 2.6.24-rc6-mm1 Jarek Poplawski
2007-12-30 21:24       ` 2.6.24-rc6-mm1 J. Bruce Fields
2007-12-30 21:35         ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-31 13:17           ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-23 22:54 ` 2.6.24-rc6-mm1: suspend broken on HP nx6325 due to cpufreq changes Rafael J. Wysocki
2007-12-23 22:50   ` Andrew Morton
2007-12-23 22:56     ` Dave Jones
2007-12-24 11:21     ` Takashi Iwai
2007-12-24 14:13       ` Rafael J. Wysocki
2007-12-25 21:51 ` 2.6.24-rc6-mm1 Andreas Mohr
2007-12-26  5:43 ` 2.6.24-rc6-mm1 - git-lblnet.patch and networking horkage Valdis.Kletnieks
2007-12-26  7:34   ` James Morris
2007-12-26  8:25     ` Valdis.Kletnieks
2007-12-26  8:52       ` James Morris
2007-12-26 14:16         ` James Morris
2007-12-26 22:46           ` Andrew Morton
2007-12-26 23:39             ` 2.6.24-rc6-mm1 - e1000 breakage James Morris
2007-12-26 16:44         ` 2.6.24-rc6-mm1 - git-lblnet.patch and networking horkage Valdis.Kletnieks
2007-12-26  8:37 ` 2.6.24-rc6-mm1 Dave Young
2007-12-26 12:29 ` 2.6.24-rc6-mm1: some section mismatches on sparc64 Mariusz Kozlowski
2007-12-26 12:29   ` Mariusz Kozlowski
2007-12-27  3:05   ` David Miller
2007-12-27  3:05     ` David Miller
2007-12-28 23:22     ` Adrian Bunk
2007-12-28 23:22       ` Adrian Bunk
2007-12-29  8:14       ` David Miller
2007-12-29  8:14         ` David Miller
2007-12-29  8:27         ` David Miller
2007-12-29  8:27           ` David Miller
2007-12-29  8:48         ` Adrian Bunk
2007-12-29  8:48           ` Adrian Bunk
2007-12-29  8:54           ` David Miller
2007-12-29  8:54             ` David Miller
2007-12-29  9:06             ` Adrian Bunk
2007-12-29  9:06               ` Adrian Bunk
2007-12-29  9:18               ` David Miller
2007-12-29  9:18                 ` David Miller
2007-12-29  9:53                 ` Adrian Bunk
2007-12-29  9:53                   ` Adrian Bunk
2007-12-29  9:15             ` David Miller
2007-12-29  9:15               ` David Miller
2007-12-27  2:21 ` 2.6.24-rc6-mm1: __raw_spin_is_contended undefined Joseph Fannin
2007-12-27  5:21   ` Nick Piggin
2007-12-27  6:04 ` 2.6.24-rc6-mm1 - drivers/char/tpm/tpm_bios.c oddness? Valdis.Kletnieks
2007-12-27  8:49 ` 2.6.24-rc6-mm1 Kernel panics at different functions () Kamalesh Babulal
2007-12-27  9:54   ` Andrew Morton
2007-12-27 10:25     ` Kamalesh Babulal
2007-12-28  9:11     ` Kamalesh Babulal
2007-12-28 13:03       ` Dhaval Giani
2007-12-27  9:16 ` 2.6.24-rc6-mm1 - power_supply driver dmesg weirdness? Valdis.Kletnieks
2007-12-27 17:54 ` 2.6.24-rc6-mm1 - crash in tick_sched_timer/update_process_times Valdis.Kletnieks
2007-12-28  7:34   ` Andrew Morton
2007-12-29 16:02   ` Valdis.Kletnieks
2007-12-31 18:05 ` [PATCH -mm] crypto: scatterwalk.h needs sched.h Randy Dunlap
2007-12-31 22:31   ` Herbert Xu
2007-12-31 18:05 ` [PATCH -mm] driver core: build with SYSFS=n Randy Dunlap
2007-12-31 18:18 ` 2.6.24-rc6-mm1 (build problem: v4l / i2c) Randy Dunlap
2007-12-31 19:01   ` [v4l-dvb-maintainer] " Michael Krufky
2007-12-31 19:08     ` Michael Krufky
2007-12-31 18:18 ` 2.6.24-rc6-mm1 (build problem: gpio_keys) Randy Dunlap
2007-12-31 18:40   ` David Brownell
2007-12-31 19:10     ` [PATCH -mm] gpio: fix x86 build problem: gpio_keys Randy Dunlap
2008-01-01 15:32       ` Ingo Molnar
2007-12-31 18:19 ` 2.6.24-rc6-mm1 (build problem: gpio/W1) Randy Dunlap
2008-01-05 15:29   ` Evgeniy Polyakov
2008-01-05 16:16     ` Ville Syrjälä
2008-01-05 17:18       ` Randy Dunlap
2007-12-31 20:11 ` 2.6.24-rc6-mm1 (driver core/sysfs) Randy Dunlap
2008-01-12  1:05   ` Greg KH
2008-01-14 16:11     ` [patch] auto-qa Kconfig Ingo Molnar
2008-01-15 22:13       ` Pavel Machek
2008-01-06 10:03 ` 2.6.24-rc6-mm1: sparc64: undefined reference to `vmemmap_table' Mariusz Kozlowski
2008-01-06 10:03   ` Mariusz Kozlowski
2008-01-06 10:15   ` Andrew Morton
2008-01-06 10:15     ` Andrew Morton
2008-01-07  1:18     ` David Miller
2008-01-07  1:18       ` David Miller
2008-01-07 13:50 ` Dhaval Giani [this message]
2008-01-07 13:53   ` [PATCH -mm/x86] revert i386: handle an initrd in highmem (Was Re: 2.6.24-rc6-mm1) Thomas Gleixner
2008-01-07 14:56     ` Ingo Molnar
2008-01-07 15:19       ` Dhaval Giani
2008-01-07 16:22       ` Randy Dunlap
2008-01-07 16:32         ` Dhaval Giani
2008-01-07 16:50         ` Thomas Gleixner
2008-01-07 22:15           ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080107135038.GA19568@linux.vnet.ibm.com \
    --to=dhaval@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.