Access dump file in elf format (/proc/vmcore)
Subsystems (3)
PATCH 14/17 Access dump file in elf format (/proc/vmcore)
From: "Vivek Goyal" <[email protected]>
o Support for /proc/vmcore interface. This interface exports elf core image either in ELF32 or ELF64 format, depending on the format in which elf headers have been stored by crashed kernel.
o Added support for CONFIG_VMCORE config option.
o Removed the dependency on /proc/kcore.
From: "Eric W. Biederman" <[email protected]>
This patch has been refactored to more closely match the prevailing style in the affected files. And to clearly indicate the dependency between /proc/kcore and proc/vmcore.c
From: Hariprasad Nellitheertha <[email protected]>
This patch contains the code that provides an ELF format interface to the previous kernel's memory post kexec reboot.
Signed off by Hariprasad Nellitheertha <[email protected]>
---
linux-2.6.12-rc1-mm1-16M-root/fs/Kconfig | 6 linux-2.6.12-rc1-mm1-16M-root/fs/proc/Makefile | 1 linux-2.6.12-rc1-mm1-16M-root/fs/proc/proc_misc.c | 6 linux-2.6.12-rc1-mm1-16M-root/fs/proc/vmcore.c | 451 +++++++++++++++ linux-2.6.12-rc1-mm1-16M-root/include/linux/crash_dump.h | 4 linux-2.6.12-rc1-mm1-16M-root/include/linux/proc_fs.h | 7 linux-2.6.12-rc1-mm1-16M-root/kernel/crash_dump.c | 2 7 files changed, 476 insertions(+), 1 deletion(-)
fs/Kconfig renamed from fs/Kconfig~crashdump-elf-format-dump-file-access +6 -0
@@ -779,6 +779,12 @@ config PROC_KCORE bool "/proc/kcore support" if !ARM depends on PROC_FS && MMU +config PROC_VMCORE + bool "/proc/vmcore support (EXPERIMENTAL)" + depends on PROC_FS && EMBEDDED && EXPERIMENTAL && CRASH_DUMP + help + Exports the dump image of crashed kernel in ELF format. + config SYSFS bool "sysfs file system support" if EMBEDDED default y
fs/proc/Makefile renamed from fs/proc/Makefile~crashdump-elf-format-dump-file-access +1 -0
@@ -11,4 +11,5 @@ proc-y += inode.o root.o base.o ge kmsg.o proc_tty.o proc_misc.o proc-$(CONFIG_PROC_KCORE) += kcore.o +proc-$(CONFIG_PROC_VMCORE) += vmcore.o proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o
fs/proc/proc_misc.c renamed from fs/proc/proc_misc.c~crashdump-elf-format-dump-file-access +6 -0
@@ -44,6 +44,7 @@#include <linux/jiffies.h> #include <linux/sysrq.h> #include <linux/vmalloc.h> +#include <linux/crash_dump.h> #include <asm/uaccess.h> #include <asm/pgtable.h> #include <asm/io.h>
@@ -660,6 +661,11 @@ void __init proc_misc_init(void) (size_t)high_memory - PAGE_OFFSET + PAGE_SIZE; }#endif +#ifdef CONFIG_PROC_VMCORE + proc_vmcore =create_proc_entry ("vmcore" ,S_IRUSR ,NULL ); +if (proc_vmcore) + proc_vmcore->proc_fops = &proc_vmcore_operations; +#endif #ifdef CONFIG_MAGIC_SYSRQ entry =create_proc_entry ("sysrq-trigger" ,S_IWUSR ,NULL );if (entry)
fs/proc/vmcore.c new file +451 -0
451 lines not on this page · raw message
include/linux/crash_dump.h renamed from include/linux/crash_dump.h~crashdump-elf-format-dump-file-access +4 -0
@@ -7,8 +7,12 @@#include <linux/device.h> #include <linux/proc_fs.h> +#define ELFCORE_ADDR_MAX (-1ULL)extern unsigned long long elfcorehdr_addr;extern ssize_t copy_oldmem_page (unsigned long ,char *,size_t ,unsigned long ,int ); +extern struct file_operations proc_vmcore_operations; +extern struct proc_dir_entry *proc_vmcore; +#endif /* CONFIG_CRASH_DUMP */ #endif /* LINUX_CRASHDUMP_H */
include/linux/proc_fs.h renamed from include/linux/proc_fs.h~crashdump-elf-format-dump-file-access +7 -0
@@ -74,6 +74,13 @@ struct kcore_list {size_t size; }; +struct vmcore { +struct list_head list; +unsigned long long paddr; +unsigned long size; +loff_t offset; +}; +#ifdef CONFIG_PROC_FS extern struct proc_dir_entry proc_root;
kernel/crash_dump.c renamed from kernel/crash_dump.c~crashdump-elf-format-dump-file-access +1 -1
@@ -16,7 +16,7 @@#include <asm/uaccess.h> /* Stores the physical address of elf header of crash image. */ -unsigned long long elfcorehdr_addr; +unsigned long long elfcorehdr_addr =ELFCORE_ADDR_MAX ;/* * Copy a page from "oldmem". For this page, there is no pte mapped
_