From: Vivek Goyal <vgoyal@in.ibm.com>
To: linux kernel mailing list <linux-kernel@vger.kernel.org>,
Morton Andrew Morton <akpm@osdl.org>,
Fastboot mailing list <fastboot@lists.osdl.org>
Cc: ak@suse.de, "Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH 3/10] kdump: export per cpu crash notes pointer through sysfs
Date: Thu, 17 Nov 2005 18:51:38 +0530 [thread overview]
Message-ID: <20051117132138.GG3981@in.ibm.com> (raw)
In-Reply-To: <20051117132004.GF3981@in.ibm.com>
o Kexec on panic functionality allocates memory for saving cpu registers
in case of system crash event. Address of this allocated memory needs to
be exported to user space, which is used by kexec-tools.
o Previously, a single /sys/kernel/crash_notes entry was being exported as
memory allocated was a single continuous array. Now memory allocation being
dyanmic and per cpu based, address of per cpu buffer is exported through
"/sys/devices/system/cpu/cpuX/crash_notes"
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
---
diff -puN drivers/base/cpu.c~kdump-export-crash-notes-through-sysfs drivers/base/cpu.c
--- linux-2.6.15-rc1-16M-dynamic/drivers/base/cpu.c~kdump-export-crash-notes-through-sysfs 2005-11-17 08:47:10.000000000 -0800
+++ linux-2.6.15-rc1-16M-dynamic-root/drivers/base/cpu.c 2005-11-17 08:49:33.000000000 -0800
@@ -83,6 +83,33 @@ static inline void register_cpu_control(
}
#endif /* CONFIG_HOTPLUG_CPU */
+#ifdef CONFIG_KEXEC
+#include <linux/kexec.h>
+
+static ssize_t show_crash_notes(struct sys_device *dev, char *buf)
+{
+ struct cpu *cpu = container_of(dev, struct cpu, sysdev);
+ ssize_t rc;
+ unsigned long long addr;
+ int cpunum;
+
+ cpunum = cpu->sysdev.id;
+
+ /*
+ * Might be reading other cpu's data based on which cpu read thread
+ * has been scheduled. But cpu data (memory) is allocated once during
+ * boot up and this data does not change there after. Hence this
+ * operation should be safe. No locking required.
+ */
+ get_cpu();
+ addr = __pa(per_cpu_ptr(crash_notes, cpunum));
+ rc = sprintf(buf, "%Lx\n", addr);
+ put_cpu();
+ return rc;
+}
+static SYSDEV_ATTR(crash_notes, 0400, show_crash_notes, NULL);
+#endif
+
/*
* register_cpu - Setup a driverfs device for a CPU.
* @cpu - Callers can set the cpu->no_control field to 1, to indicate not to
@@ -108,6 +135,11 @@ int __devinit register_cpu(struct cpu *c
register_cpu_control(cpu);
if (!error)
cpu_sys_devices[num] = &cpu->sysdev;
+
+#ifdef CONFIG_KEXEC
+ if (!error)
+ error = sysdev_create_file(&cpu->sysdev, &attr_crash_notes);
+#endif
return error;
}
diff -puN kernel/ksysfs.c~kdump-export-crash-notes-through-sysfs kernel/ksysfs.c
--- linux-2.6.15-rc1-16M-dynamic/kernel/ksysfs.c~kdump-export-crash-notes-through-sysfs 2005-11-17 08:47:10.000000000 -0800
+++ linux-2.6.15-rc1-16M-dynamic-root/kernel/ksysfs.c 2005-11-17 08:47:10.000000000 -0800
@@ -30,16 +30,6 @@ static ssize_t hotplug_seqnum_show(struc
KERNEL_ATTR_RO(hotplug_seqnum);
#endif
-#ifdef CONFIG_KEXEC
-#include <asm/kexec.h>
-
-static ssize_t crash_notes_show(struct subsystem *subsys, char *page)
-{
- return sprintf(page, "%p\n", (void *)crash_notes);
-}
-KERNEL_ATTR_RO(crash_notes);
-#endif
-
decl_subsys(kernel, NULL, NULL);
EXPORT_SYMBOL_GPL(kernel_subsys);
@@ -47,9 +37,6 @@ static struct attribute * kernel_attrs[]
#ifdef CONFIG_HOTPLUG
&hotplug_seqnum_attr.attr,
#endif
-#ifdef CONFIG_KEXEC
- &crash_notes_attr.attr,
-#endif
NULL
};
_
next prev parent reply other threads:[~2005-11-17 13:21 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-17 13:13 [PATCH 0/10] Kdump Update i386/x86_64 Vivek Goyal
2005-11-17 13:18 ` [PATCH 1/10] kdump: i386 save ss esp bug fix Vivek Goyal
2005-11-17 13:20 ` [PATCH 2/10] kdump: dynamic per cpu allocation of memory for saving cpu registers Vivek Goyal
2005-11-17 13:21 ` Vivek Goyal [this message]
2005-11-17 13:23 ` [PATCH 4/10] kdump: save registers early (inline functions) Vivek Goyal
2005-11-17 13:24 ` [PATCH 5/10] kdump: x86_64 add memmmap command line option Vivek Goyal
2005-11-17 13:25 ` [PATCH 6/10] kdump: x86_64 add elfcorehdr " Vivek Goyal
2005-11-17 13:26 ` [PATCH 7/10] kdump: x86_64 kexec on panic Vivek Goyal
2005-11-17 13:28 ` [PATCH 8/10] kdump: x86_64 save cpu registers upon crash Vivek Goyal
2005-11-17 13:29 ` [PATCH 9/10] kdump: read previous kernel's memory Vivek Goyal
2005-11-17 13:30 ` [PATCH 10/10] kexec: increase max segment limit Vivek Goyal
2005-11-17 22:20 ` [PATCH 9/10] kdump: read previous kernel's memory Andrew Morton
2005-11-17 23:14 ` Eric W. Biederman
2005-11-23 14:04 ` [Fastboot] " Rachita Kothiyal
2005-11-18 0:47 ` [PATCH 8/10] kdump: x86_64 save cpu registers upon crash Haren Myneni
2005-11-18 21:52 ` Eric W. Biederman
2005-11-19 4:35 ` Vivek Goyal
2005-11-17 22:07 ` [PATCH 3/10] kdump: export per cpu crash notes pointer through sysfs Andrew Morton
2005-11-18 12:33 ` Vivek Goyal
2005-11-17 22:01 ` [PATCH 2/10] kdump: dynamic per cpu allocation of memory for saving cpu registers Andrew Morton
2005-11-18 3:37 ` Vivek Goyal
2005-11-18 12:32 ` Vivek Goyal
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=20051117132138.GG3981@in.ibm.com \
--to=vgoyal@in.ibm.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=ebiederm@xmission.com \
--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