[RFC/PATCH 13/17][Kdump] Retrieve elfcorehdr address from commandline

From: Vivek Goyal
Date: Mon Mar 28 2005 - 09:09:01 EST



--- Begin Message --- From: "Vivek Goyal" <vgoyal@xxxxxxxxxx>

o This patch adds support for retrieving the address of elf core header if one
is passed in command line.

Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx>
---

linux-2.6.12-rc1-mm1-1M-root/Documentation/kernel-parameters.txt | 4 ++++
linux-2.6.12-rc1-mm1-1M-root/arch/i386/kernel/setup.c | 8 ++++++++
linux-2.6.12-rc1-mm1-1M-root/include/linux/crash_dump.h | 1 +
linux-2.6.12-rc1-mm1-1M-root/kernel/crash_dump.c | 3 +++
4 files changed, 16 insertions(+)

diff -puN arch/i386/kernel/setup.c~crashdump-x86-retrieve-elfcorehdr-addr arch/i386/kernel/setup.c
--- linux-2.6.12-rc1-mm1-1M/arch/i386/kernel/setup.c~crashdump-x86-retrieve-elfcorehdr-addr 2005-03-22 16:17:00.000000000 +0530
+++ linux-2.6.12-rc1-mm1-1M-root/arch/i386/kernel/setup.c 2005-03-22 16:17:00.000000000 +0530
@@ -42,6 +42,7 @@
#include <linux/edd.h>
#include <linux/nodemask.h>
#include <linux/kexec.h>
+#include <linux/crash_dump.h>

#include <video/edid.h>

@@ -860,6 +861,13 @@ static void __init parse_cmdline_early (
}
}
#endif
+#ifdef CONFIG_CRASH_DUMP
+ /* elfcorehdr= specifies the location of elf core header
+ * stored by the crashed kernel.
+ */
+ else if (!memcmp(from, "elfcorehdr=", 11))
+ elfcorehdr_addr = memparse(from+11, &from);
+#endif

/*
* highmem=size forces highmem to be exactly 'size' bytes.
diff -puN Documentation/kernel-parameters.txt~crashdump-x86-retrieve-elfcorehdr-addr Documentation/kernel-parameters.txt
--- linux-2.6.12-rc1-mm1-1M/Documentation/kernel-parameters.txt~crashdump-x86-retrieve-elfcorehdr-addr 2005-03-22 16:17:00.000000000 +0530
+++ linux-2.6.12-rc1-mm1-1M-root/Documentation/kernel-parameters.txt 2005-03-22 16:17:00.000000000 +0530
@@ -455,6 +455,10 @@ running once the system is up.
Format: {"as"|"cfq"|"deadline"|"noop"}
See Documentation/block/as-iosched.txt
and Documentation/block/deadline-iosched.txt for details.
+ elfcorehdr= [IA-32]
+ Specifies physical address of start of kernel core image
+ elf header.
+ See Documentation/kdump.txt for details.

enforcing [SELINUX] Set initial enforcing status.
Format: {"0" | "1"}
diff -puN include/linux/crash_dump.h~crashdump-x86-retrieve-elfcorehdr-addr include/linux/crash_dump.h
--- linux-2.6.12-rc1-mm1-1M/include/linux/crash_dump.h~crashdump-x86-retrieve-elfcorehdr-addr 2005-03-22 16:17:00.000000000 +0530
+++ linux-2.6.12-rc1-mm1-1M-root/include/linux/crash_dump.h 2005-03-22 16:17:00.000000000 +0530
@@ -7,6 +7,7 @@
#include <linux/device.h>
#include <linux/proc_fs.h>

+extern unsigned long long elfcorehdr_addr;
extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
unsigned long, int);
#endif /* CONFIG_CRASH_DUMP */
diff -puN kernel/crash_dump.c~crashdump-x86-retrieve-elfcorehdr-addr kernel/crash_dump.c
--- linux-2.6.12-rc1-mm1-1M/kernel/crash_dump.c~crashdump-x86-retrieve-elfcorehdr-addr 2005-03-22 16:17:00.000000000 +0530
+++ linux-2.6.12-rc1-mm1-1M-root/kernel/crash_dump.c 2005-03-22 16:17:00.000000000 +0530
@@ -15,6 +15,9 @@
#include <asm/io.h>
#include <asm/uaccess.h>

+/* Stores the physical address of elf header of crash image. */
+unsigned long long elfcorehdr_addr;
+
/*
* 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.
_

--- End Message ---