From: "Eric W. Biederman" <ebiederm@xmission.com>
To: Andrew Morton <akpm@osdl.org>
Cc: <fastboot@lists.osdl.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH 29/29] crashdump-linear-raw-format-dump-file-access
Date: Wed, 19 Jan 2005 0:31:37 -0700 [thread overview]
Message-ID: <crashdump-linear-raw-format-dump-file-access-1106119897387@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <crashdump-elf-format-dump-file-access-11061198971254@ebiederm.dsl.xmission.com>
From: Hariprasad Nellitheertha <hari@in.ibm.com>
This patch contains the code that enables us to access the previous kernel's
memory as /dev/oldmem.
Signed-off-by: Eric Biederman <ebiederm@xmission.com>
---
Documentation/devices.txt | 1
drivers/char/mem.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
diff -uNr linux-2.6.11-rc1-mm1-nokexec-crashdump-elf-format-dump-file-access/Documentation/devices.txt linux-2.6.11-rc1-mm1-nokexec-crashdump-linear-raw-format-dump-file-access/Documentation/devices.txt
--- linux-2.6.11-rc1-mm1-nokexec-crashdump-elf-format-dump-file-access/Documentation/devices.txt Fri Jan 14 04:32:22 2005
+++ linux-2.6.11-rc1-mm1-nokexec-crashdump-linear-raw-format-dump-file-access/Documentation/devices.txt Tue Jan 18 23:17:15 2005
@@ -100,6 +100,7 @@
9 = /dev/urandom Faster, less secure random number gen.
10 = /dev/aio Asyncronous I/O notification interface
11 = /dev/kmsg Writes to this come out as printk's
+ 12 = /dev/oldmem Access to crash dump from kexec kernel
1 block RAM disk
0 = /dev/ram0 First RAM disk
1 = /dev/ram1 Second RAM disk
diff -uNr linux-2.6.11-rc1-mm1-nokexec-crashdump-elf-format-dump-file-access/drivers/char/mem.c linux-2.6.11-rc1-mm1-nokexec-crashdump-linear-raw-format-dump-file-access/drivers/char/mem.c
--- linux-2.6.11-rc1-mm1-nokexec-crashdump-elf-format-dump-file-access/drivers/char/mem.c Fri Jan 14 04:32:23 2005
+++ linux-2.6.11-rc1-mm1-nokexec-crashdump-linear-raw-format-dump-file-access/drivers/char/mem.c Tue Jan 18 23:17:15 2005
@@ -23,6 +23,8 @@
#include <linux/devfs_fs_kernel.h>
#include <linux/ptrace.h>
#include <linux/device.h>
+#include <linux/highmem.h>
+#include <linux/crash_dump.h>
#include <asm/uaccess.h>
#include <asm/io.h>
@@ -226,6 +228,62 @@
return 0;
}
+#ifdef CONFIG_CRASH_DUMP
+/*
+ * Read memory corresponding to the old kernel.
+ * If we are reading from the reserved section, which is
+ * actually used by the current kernel, we just return zeroes.
+ * Or if we are reading from the first 640k, we return from the
+ * backed up area.
+ */
+static ssize_t read_oldmem(struct file * file, char * buf,
+ size_t count, loff_t *ppos)
+{
+ unsigned long pfn;
+ unsigned backup_start, backup_end, relocate_start;
+ size_t read=0, csize;
+
+ backup_start = CRASH_BACKUP_BASE / PAGE_SIZE;
+ backup_end = backup_start + (CRASH_BACKUP_SIZE / PAGE_SIZE);
+ relocate_start = (CRASH_BACKUP_BASE + CRASH_BACKUP_SIZE) / PAGE_SIZE;
+
+ while(count) {
+ pfn = *ppos / PAGE_SIZE;
+
+ csize = (count > PAGE_SIZE) ? PAGE_SIZE : count;
+
+ /* Perform translation (see comment above) */
+ if ((pfn >= backup_start) && (pfn < backup_end)) {
+ if (clear_user(buf, csize)) {
+ read = -EFAULT;
+ goto done;
+ }
+
+ goto copy_done;
+ } else if (pfn < (CRASH_RELOCATE_SIZE / PAGE_SIZE))
+ pfn += relocate_start;
+
+ if (pfn > saved_max_pfn) {
+ read = 0;
+ goto done;
+ }
+
+ if (copy_oldmem_page(pfn, buf, csize, 1)) {
+ read = -EFAULT;
+ goto done;
+ }
+
+copy_done:
+ buf += csize;
+ *ppos += csize;
+ read += csize;
+ count -= csize;
+ }
+done:
+ return read;
+}
+#endif
+
extern long vread(char *buf, char *addr, unsigned long count);
extern long vwrite(char *buf, char *addr, unsigned long count);
@@ -530,6 +588,7 @@
#define read_full read_zero
#define open_mem open_port
#define open_kmem open_mem
+#define open_oldmem open_mem
#ifndef ARCH_HAS_DEV_MEM
static struct file_operations mem_fops = {
@@ -578,6 +637,13 @@
.write = write_full,
};
+#ifdef CONFIG_CRASH_DUMP
+static struct file_operations oldmem_fops = {
+ .read = read_oldmem,
+ .open = open_oldmem,
+};
+#endif
+
static ssize_t kmsg_write(struct file * file, const char __user * buf,
size_t count, loff_t *ppos)
{
@@ -632,6 +698,11 @@
case 11:
filp->f_op = &kmsg_fops;
break;
+#ifdef CONFIG_CRASH_DUMP
+ case 12:
+ filp->f_op = &oldmem_fops;
+ break;
+#endif
default:
return -ENXIO;
}
@@ -661,6 +732,9 @@
{8, "random", S_IRUGO | S_IWUSR, &random_fops},
{9, "urandom", S_IRUGO | S_IWUSR, &urandom_fops},
{11,"kmsg", S_IRUGO | S_IWUSR, &kmsg_fops},
+#ifdef CONFIG_CRASH_DUMP
+ {12,"oldmem", S_IRUSR | S_IWUSR | S_IRGRP, &oldmem_fops},
+#endif
};
static struct class_simple *mem_class;
next prev parent reply other threads:[~2005-01-19 7:53 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 ` Eric W. Biederman [this message]
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
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=crashdump-linear-raw-format-dump-file-access-1106119897387@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=akpm@osdl.org \
--cc=fastboot@lists.osdl.org \
--cc=linux-kernel@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).