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
next prev parent reply other threads:[~2008-01-07 13:51 UTC|newest]
Thread overview: 135+ 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-27 3:05 ` David Miller
2007-12-28 23:22 ` Adrian Bunk
2007-12-29 8:14 ` David Miller
2007-12-29 8:27 ` David Miller
2007-12-29 8:48 ` Adrian Bunk
2007-12-29 8:54 ` David Miller
2007-12-29 9:06 ` Adrian Bunk
2007-12-29 9:18 ` David Miller
2007-12-29 9:53 ` Adrian Bunk
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:15 ` Andrew Morton
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome