mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@in.ibm.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Andrew Morton <akpm@osdl.org>, fastboot <fastboot@lists.osdl.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Maneesh Soni <maneesh@in.ibm.com>,
	Hariprasad Nellitheertha <hari@in.ibm.com>
Subject: Re: [Fastboot] [PATCH] Reserving backup region for kexec based crashdumps.
Date: 23 Jan 2005 15:44:40 +0530	[thread overview]
Message-ID: <1106475280.26219.125.camel@2fwv946.in.ibm.com> (raw)
In-Reply-To: <m17jm72fy1.fsf@ebiederm.dsl.xmission.com>

[-- Attachment #1: Type: text/plain, Size: 565 bytes --]

On Fri, 2005-01-21 at 16:43, Eric W. Biederman wrote:
> On deeper review your patch as it stands is incomplete.  In particular
> you don't provide a way to either hardcode or dynamically set
> the area you are attempt to reserve to hold the backup region.

Well. Here is the new patch. This one steals the 640k from top of memory
region reserved for crash kernel. 

A new command line parameter (crashbackup=) has been introduced for
crash dump kernels. This parameter specifies the location of backup
region from where to retrieve the backup data.

Thanks
Vivek



[-- Attachment #2: crashdump-x86-reserve-640k-memory.patch --]
[-- Type: text/plain, Size: 7722 bytes --]


This patch adds support for reserving 640k memory as backup region as required
by crashdump kernel for x86. 
---

Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
---

 linux-2.6.11-rc1-root/Documentation/kernel-parameters.txt |    5 ++
 linux-2.6.11-rc1-root/arch/i386/kernel/setup.c            |   26 ++++++++++++--
 linux-2.6.11-rc1-root/arch/i386/mm/discontig.c            |    8 ++++
 linux-2.6.11-rc1-root/include/linux/crash_dump.h          |    1 
 linux-2.6.11-rc1-root/include/linux/kexec.h               |    6 ++-
 linux-2.6.11-rc1-root/kernel/crash_dump.c                 |    3 +
 linux-2.6.11-rc1-root/kernel/kexec.c                      |    8 ++++
 7 files changed, 54 insertions(+), 3 deletions(-)

diff -puN arch/i386/kernel/setup.c~crashdump-x86-reserve-640k-memory arch/i386/kernel/setup.c
--- linux-2.6.11-rc1/arch/i386/kernel/setup.c~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/arch/i386/kernel/setup.c	2005-01-22 14:22:41.000000000 +0530
@@ -41,6 +41,7 @@
 #include <linux/init.h>
 #include <linux/edd.h>
 #include <linux/kexec.h>
+#include <linux/crash_dump.h>
 #include <video/edid.h>
 #include <asm/apic.h>
 #include <asm/e820.h>
@@ -51,7 +52,6 @@
 #include <asm/io_apic.h>
 #include <asm/ist.h>
 #include <asm/io.h>
-#include <asm/crash_dump.h>
 #include "setup_arch_pre.h"
 #include <bios_ebda.h>
 
@@ -852,7 +852,20 @@ static void __init parse_cmdline_early (
 			}
 		}
 #endif
-
+#ifdef CONFIG_CRASH_DUMP
+		/* crashbackup=size@addr specifies the location of backup
+		 * region where, crashed kernel has stored some backup data.
+		 */
+		else if (!memcmp(from, "crashbackup=", 12)) {
+			unsigned long size, base;
+			size = memparse(from+12, &from);
+			if (*from == '@') {
+				base = memparse(from+1, &from);
+				crashbackup_start = base;
+				crashbackup_end  = base + size - 1;
+			}
+		}
+#endif
 		/*
 		 * highmem=size forces highmem to be exactly 'size' bytes.
 		 * This works even on boxes that have no highmem otherwise.
@@ -1159,6 +1172,14 @@ static unsigned long __init setup_memory
 #ifdef CONFIG_KEXEC
 	if (crashk_res.start != crashk_res.end) {
 		reserve_bootmem(crashk_res.start, crashk_res.end - crashk_res.start + 1);
+
+#define CRASHDUMP_BACKUP_SZ 0xa0000
+		/* Steal 640K from top of reserved region for crash kernel */
+		if ((crashk_res.end - crashk_res.start) > CRASHDUMP_BACKUP_SZ) {
+			crashdumpk_res.end = crashk_res.end;
+			crashk_res.end = crashk_res.end - CRASHDUMP_BACKUP_SZ;
+			crashdumpk_res.start = crashk_res.end + 1;
+		}
 	}
 #endif
 	return max_low_pfn;
@@ -1202,6 +1223,7 @@ legacy_init_iomem_resources(struct resou
 			request_resource(res, data_resource);
 #ifdef CONFIG_KEXEC
 			request_resource(res, &crashk_res);
+			request_resource(res, &crashdumpk_res);
 #endif
 		}
 	}
diff -puN arch/i386/mm/discontig.c~crashdump-x86-reserve-640k-memory arch/i386/mm/discontig.c
--- linux-2.6.11-rc1/arch/i386/mm/discontig.c~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/arch/i386/mm/discontig.c	2005-01-22 14:40:30.000000000 +0530
@@ -29,6 +29,7 @@
 #include <linux/highmem.h>
 #include <linux/initrd.h>
 #include <linux/nodemask.h>
+#include <linux/ioport.h>
 #include <linux/kexec.h>
 #include <asm/e820.h>
 #include <asm/setup.h>
@@ -371,6 +372,13 @@ unsigned long __init setup_memory(void)
 #ifdef CONFIG_KEXEC
 	if (crashk_res.start != crashk_res.end) {
 		reserve_bootmem(crashk_res.start, crashk_res.end - crashk_res.start + 1);
+#define CRASHDUMP_BACKUP_SZ 0xa0000
+		/* Steal 640K from top of reserved region for crash kernel */
+		if ((crashk_res.end - crashk_res.start) > CRASHDUMP_BACKUP_SZ) {
+			crashdumpk_res.end = crashk_res.end;
+			crashk_res.end = crashk_res.end - CRASHDUMP_BACKUP_SZ;
+			crashdumpk_res.start = crashk_res.end + 1;
+		}
 	}
 #endif
 	return system_max_low_pfn;
diff -puN Documentation/kernel-parameters.txt~crashdump-x86-reserve-640k-memory Documentation/kernel-parameters.txt
--- linux-2.6.11-rc1/Documentation/kernel-parameters.txt~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/Documentation/kernel-parameters.txt	2005-01-22 14:16:27.000000000 +0530
@@ -27,6 +27,7 @@ restrictions referred to are that the re
 	APM	Advanced Power Management support is enabled.
 	AX25	Appropriate AX.25 support is enabled.
 	CD	Appropriate CD support is enabled.
+	CRASHDUMP Crash Dump support is enabled.
 	DEVFS	devfs support is enabled. 
 	DRM	Direct Rendering Management support is enabled. 
 	EDD	BIOS Enhanced Disk Drive Services (EDD) is enabled
@@ -345,6 +346,10 @@ running once the system is up.
 			[KNL] Reserve a chunk of physical memory to
 			hold a kernel to switch to with kexec on panic.
 
+	crashbackup=nn[KMG]@ss[KMG]
+			[KNL, CRASHDUMP] Specifies the location of crash data
+			backup region.
+
 	cs4232=		[HW,OSS]
 			Format: <io>,<irq>,<dma>,<dma2>,<mpuio>,<mpuirq>
 
diff -puN include/linux/crash_dump.h~crashdump-x86-reserve-640k-memory include/linux/crash_dump.h
--- linux-2.6.11-rc1/include/linux/crash_dump.h~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/include/linux/crash_dump.h	2005-01-22 14:16:27.000000000 +0530
@@ -15,6 +15,7 @@ extern void elf_kcore_store_hdr(char *, 
 #ifdef CONFIG_CRASH_DUMP
 extern struct file_operations proc_vmcore_operations;
 extern struct proc_dir_entry *proc_vmcore;
+extern unsigned long crashbackup_start, crashbackup_end;
 
 extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, int);
 extern void crash_create_proc_entry(void);
diff -puN include/linux/kexec.h~crashdump-x86-reserve-640k-memory include/linux/kexec.h
--- linux-2.6.11-rc1/include/linux/kexec.h~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/include/linux/kexec.h	2005-01-22 14:16:27.000000000 +0530
@@ -79,7 +79,7 @@ struct kimage {
 	unsigned long control_page;
 
 	/* Flags to indicate special processing */
-	int type : 1;
+	unsigned int type : 1;
 #define KEXEC_TYPE_DEFAULT 0
 #define KEXEC_TYPE_CRASH   1
 };
@@ -122,6 +122,10 @@ extern struct kimage *kexec_crash_image;
  */
 extern struct resource crashk_res;
 
+/* Location of backup region to hold the crashdump kernel data.
+ */
+extern struct resource crashdumpk_res;
+
 #else /* !CONFIG_KEXEC */
 static inline void crash_kexec(void) { }
 #endif /* CONFIG_KEXEC */
diff -puN kernel/crash_dump.c~crashdump-x86-reserve-640k-memory kernel/crash_dump.c
--- linux-2.6.11-rc1/kernel/crash_dump.c~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/kernel/crash_dump.c	2005-01-22 14:16:27.000000000 +0530
@@ -15,6 +15,9 @@
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
+/* Location of crashdump backup region if there is one. */
+unsigned long crashbackup_start, crashbackup_end;
+
 /*
  * Copy a page from "oldmem". For this page, there is no pte mapped
  * in the current kernel. We stitch up a pte, similar to kmap_atomic.
diff -puN kernel/kexec.c~crashdump-x86-reserve-640k-memory kernel/kexec.c
--- linux-2.6.11-rc1/kernel/kexec.c~crashdump-x86-reserve-640k-memory	2005-01-22 14:16:27.000000000 +0530
+++ linux-2.6.11-rc1-root/kernel/kexec.c	2005-01-22 14:16:27.000000000 +0530
@@ -32,6 +32,14 @@ struct resource crashk_res = {
 	.flags = IORESOURCE_BUSY | IORESOURCE_MEM
 };
 
+/* Location of the backup area for the crash dump kernel */
+struct resource crashdumpk_res = {
+	.name  = "Crash Dump Backup",
+	.start = 0,
+	.end   = 0,
+	.flags = IORESOURCE_BUSY | IORESOURCE_MEM
+};
+
 /*
  * When kexec transitions to the new kernel there is a one-to-one
  * mapping between physical and virtual addresses.  On processors
_

  reply	other threads:[~2005-01-23  9:24 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-19  7:31 [PATCH 0/29] overview Eric W. Biederman
2005-01-19  7:31 ` [PATCH 1/29] x86-rename-apic_mode_exint Eric W. Biederman
2005-01-19  7:31   ` [PATCH 2/29] x86-local-apic-fix Eric W. Biederman
2005-01-19  7:31     ` [PATCH 3/29] x86_64-e820-64bit Eric W. Biederman
2005-01-19  7:31       ` [PATCH 4/29] x86-i8259-shutdown Eric W. Biederman
2005-01-19  7:31         ` [PATCH 5/29] x86_64-i8259-shutdown Eric W. Biederman
2005-01-19  7:31           ` [PATCH 6/29] x86-apic-virtwire-on-shutdown Eric W. Biederman
2005-01-19  7:31             ` [PATCH 7/29] x86_64-apic-virtwire-on-shutdown Eric W. Biederman
2005-01-19  7:31               ` [PATCH 8/29] vmlinux-fix-physical-addrs Eric W. Biederman
2005-01-19  7:31                 ` [PATCH 9/29] x86-vmlinux-fix-physical-addrs Eric W. Biederman
2005-01-19  7:31                   ` [PATCH 10/29] x86_64-vmlinux-fix-physical-addrs Eric W. Biederman
2005-01-19  7:31                     ` [PATCH 11/29] x86_64-entry64 Eric W. Biederman
2005-01-19  7:31                       ` [PATCH 12/29] x86-config-kernel-start Eric W. Biederman
2005-01-19  7:31                         ` [PATCH 13/29] x86_64-config-kernel-start Eric W. Biederman
2005-01-19  7:31                           ` [PATCH 14/29] kexec-kexec-generic Eric W. Biederman
2005-01-19  7:31                             ` [PATCH 15/29] x86-machine_shutdown Eric W. Biederman
2005-01-19  7:31                               ` [PATCH 16/29] x86-kexec Eric W. Biederman
2005-01-19  7:31                                 ` [PATCH 17/29] x86-crashkernel Eric W. Biederman
2005-01-19  7:31                                   ` [PATCH 18/29] x86_64-machine_shutdown Eric W. Biederman
2005-01-19  7:31                                     ` [PATCH 19/29] x86_64-kexec Eric W. Biederman
2005-01-19  7:31                                       ` [PATCH 20/29] x86_64-crashkernel Eric W. Biederman
2005-01-19  7:31                                         ` [PATCH 21/29] kexec-ppc-support Eric W. Biederman
2005-01-19  7:31                                           ` [PATCH 22/29] x86-crash_shutdown-nmi-shootdown Eric W. Biederman
2005-01-19  7:31                                             ` [PATCH 23/29] x86-crash_shutdown-snapshot-registers Eric W. Biederman
2005-01-19  7:31                                               ` [PATCH 24/29] x86-crash_shutdown-apic-shutdown Eric W. Biederman
2005-01-19  7:31                                                 ` [PATCH 25/29] crashdump-documentation Eric W. Biederman
2005-01-19  7:31                                                   ` [PATCH 26/29] crashdump-memory-preserving-reboot-using-kexec Eric W. Biederman
2005-01-19  7:31                                                     ` [PATCH 27/29] crashdump-routines-for-copying-dump-pages Eric W. Biederman
2005-01-19  7:31                                                       ` [PATCH 28/29] crashdump-elf-format-dump-file-access Eric W. Biederman
2005-01-19  7:31                                                         ` [PATCH 29/29] crashdump-linear-raw-format-dump-file-access Eric W. Biederman
2005-01-19 12:25                                       ` [PATCH 19/29] x86_64-kexec Andi Kleen
2005-01-20 15:50                                       ` Adrian Bunk
2005-01-20 18:06                                         ` [Fastboot] " Eric W. Biederman
2005-01-19 12:10                                 ` [PATCH 16/29] x86-kexec Hariprasad Nellitheertha
2005-01-19 18:17                                   ` [Fastboot] " Eric W. Biederman
2005-01-25  3:54             ` [PATCH 6/29] x86-apic-virtwire-on-shutdown Len Brown
2005-01-25  6:39               ` Eric W. Biederman
2005-01-25  7:36                 ` Len Brown
2005-01-25  9:11                   ` Eric W. Biederman
2005-01-25  3:32         ` [PATCH 4/29] x86-i8259-shutdown Len Brown
2005-01-25  3:59           ` Dave Jones
2005-01-25  6:30             ` Eric W. Biederman
2005-01-25  8:35             ` Eric W. Biederman
2005-01-25  9:43               ` Barry K. Nathan
2005-01-25 10:14                 ` Eric W. Biederman
2005-01-25 10:49                   ` Barry K. Nathan
2005-01-25 11:40                     ` Eric W. Biederman
2005-01-25 20:57                       ` Barry K. Nathan
2005-01-25 12:12                     ` Eric W. Biederman
2005-01-25 22:02                       ` Barry K. Nathan
2005-01-25 22:12                         ` Eric W. Biederman
2005-01-26 13:27                           ` Sytse Wielinga
2005-01-26 14:06                             ` Eric W. Biederman
2005-01-26 14:43                               ` Sytse Wielinga
2005-01-26 15:12                                 ` Eric W. Biederman
2005-01-26 22:58                                   ` Barry K. Nathan
2005-01-21  7:55 ` [PATCH] Reserving backup region for kexec based crashdumps Vivek Goyal
2005-01-21  7:54   ` [Fastboot] " Eric W. Biederman
2005-01-21 10:57     ` Vivek Goyal
2005-01-21 11:13       ` Eric W. Biederman
2005-01-23 10:14         ` Vivek Goyal [this message]
2005-01-26 17:21           ` Eric W. Biederman
2005-01-26 19:15             ` Andrew Morton
2005-01-27 13:45             ` Vivek Goyal
2005-01-27 20:45               ` Eric W. Biederman
2005-01-28 13:06                 ` Vivek Goyal
2005-01-28 20:29                   ` Eric W. Biederman
2005-02-01 15:17                     ` Vivek Goyal
2005-02-01 15:26                       ` Eric W. Biederman
2005-02-02  7:10                         ` Itsuro Oda
2005-02-02  7:49                           ` Koichi Suzuki
2005-02-02 15:24                             ` Eric W. Biederman
2005-02-03  7:28                               ` Itsuro Oda
2005-02-03  9:00                                 ` Eric W. Biederman
2005-02-03 23:18                                   ` Itsuro Oda
2005-02-04  0:41                                     ` Eric W. Biederman
2005-02-04  1:07                                     ` Itsuro Oda
2005-02-16  8:49                                   ` [PATCH] /proc/cpumem Itsuro Oda
2005-02-16 13:58                                     ` Eric W. Biederman
2005-02-17  0:43                                       ` Itsuro Oda
2005-02-17  9:55                                         ` [Fastboot] " Eric W. Biederman
2005-02-18  6:17                                           ` Itsuro Oda
2005-02-18  7:22                                             ` Eric W. Biederman
2005-02-17  0:17                                     ` YAMAMOTO Takashi
2005-02-17  5:58                                     ` [Fastboot] " Vivek Goyal
2005-02-17  6:18                                       ` Itsuro Oda
2005-02-17 18:18                                     ` Dave Jones
2005-02-17 19:46                                       ` [Fastboot] " Eric W. Biederman
2005-02-02 14:26                           ` [Fastboot] [PATCH] Reserving backup region for kexec based crashdumps Eric W. Biederman
2005-02-02 10:07                         ` Vivek Goyal
2005-02-02 15:42                           ` Eric W. Biederman
2005-02-03 14:47                             ` Vivek Goyal
2005-02-01  8:04                 ` Koichi Suzuki
2005-02-01  9:06                   ` Eric W. Biederman
2005-02-02  7:42                     ` Itsuro Oda
2005-02-02 14:45                       ` Eric W. Biederman
2005-02-04  0:23                         ` Itsuro Oda
2005-02-04  1:55                           ` Eric W. Biederman
2005-02-02  9:08                     ` Koichi Suzuki
2005-02-02 14:31                       ` Eric W. Biederman
2005-02-03  7:02               ` Hirokazu Takahashi
2005-02-03  9:01                 ` Vivek Goyal
2005-02-03  9:37                   ` Hirokazu Takahashi
2005-02-03 10:07                     ` Eric W. Biederman
2005-02-03  9:13                 ` Eric W. Biederman
2005-02-03 10:10                   ` Hirokazu Takahashi
2005-02-03 10:39                     ` Eric W. Biederman
2005-02-04 10:05                       ` Hirokazu Takahashi
2005-02-04 11:17                         ` Eric W. Biederman
2005-02-04 12:02                           ` Eric W. Biederman

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=1106475280.26219.125.camel@2fwv946.in.ibm.com \
    --to=vgoyal@in.ibm.com \
    --cc=akpm@osdl.org \
    --cc=ebiederm@xmission.com \
    --cc=fastboot@lists.osdl.org \
    --cc=hari@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maneesh@in.ibm.com \
    /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

all inboxes | Powered by JetHome®