aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@in.ibm.com>2006-01-09 23:51:41 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-10 11:01:26 -0500
commitcc57165874e938ef684d71ba7d36e7088b551489 (patch)
treee1847f5547a7a426214e9ef0719eab908ee305d7 /include
parent82409411571ad89d271dc46f7fa26149fad9efdf (diff)
[PATCH] kdump: dynamic per cpu allocation of memory for saving cpu registers
- In case of system crash, current state of cpu registers is saved in memory in elf note format. So far memory for storing elf notes was being allocated statically for NR_CPUS. - This patch introduces dynamic allocation of memory for storing elf notes. It uses alloc_percpu() interface. This should lead to better memory usage. - Introduced based on Andi Kleen's and Eric W. Biederman's suggestions. - This patch also moves memory allocation for elf notes from architecture dependent portion to architecture independent portion. Now crash_notes is architecture independent. The whole idea is that size of memory to be allocated per cpu (MAX_NOTE_BYTES) can be architecture dependent and allocation of this memory can be architecture independent. Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-i386/kexec.h3
-rw-r--r--include/asm-powerpc/kexec.h3
-rw-r--r--include/asm-s390/kexec.h3
-rw-r--r--include/asm-x86_64/kexec.h3
-rw-r--r--include/linux/kexec.h2
5 files changed, 2 insertions, 12 deletions
diff --git a/include/asm-i386/kexec.h b/include/asm-i386/kexec.h
index 6ed2a03e37b3..d80d446498fb 100644
--- a/include/asm-i386/kexec.h
+++ b/include/asm-i386/kexec.h
@@ -26,8 +26,5 @@
26#define KEXEC_ARCH KEXEC_ARCH_386 26#define KEXEC_ARCH KEXEC_ARCH_386
27 27
28#define MAX_NOTE_BYTES 1024 28#define MAX_NOTE_BYTES 1024
29typedef u32 note_buf_t[MAX_NOTE_BYTES/4];
30
31extern note_buf_t crash_notes[];
32 29
33#endif /* _I386_KEXEC_H */ 30#endif /* _I386_KEXEC_H */
diff --git a/include/asm-powerpc/kexec.h b/include/asm-powerpc/kexec.h
index 4263af3cadfd..e363752276ef 100644
--- a/include/asm-powerpc/kexec.h
+++ b/include/asm-powerpc/kexec.h
@@ -38,9 +38,6 @@
38#ifdef CONFIG_KEXEC 38#ifdef CONFIG_KEXEC
39 39
40#define MAX_NOTE_BYTES 1024 40#define MAX_NOTE_BYTES 1024
41typedef u32 note_buf_t[MAX_NOTE_BYTES / sizeof(u32)];
42
43extern note_buf_t crash_notes[];
44 41
45#ifdef __powerpc64__ 42#ifdef __powerpc64__
46extern void kexec_smp_wait(void); /* get and clear naca physid, wait for 43extern void kexec_smp_wait(void); /* get and clear naca physid, wait for
diff --git a/include/asm-s390/kexec.h b/include/asm-s390/kexec.h
index 54cf7d9f251c..b4809d98fe69 100644
--- a/include/asm-s390/kexec.h
+++ b/include/asm-s390/kexec.h
@@ -35,8 +35,5 @@
35#define KEXEC_ARCH KEXEC_ARCH_S390 35#define KEXEC_ARCH KEXEC_ARCH_S390
36 36
37#define MAX_NOTE_BYTES 1024 37#define MAX_NOTE_BYTES 1024
38typedef u32 note_buf_t[MAX_NOTE_BYTES/4];
39
40extern note_buf_t crash_notes[];
41 38
42#endif /*_S390_KEXEC_H */ 39#endif /*_S390_KEXEC_H */
diff --git a/include/asm-x86_64/kexec.h b/include/asm-x86_64/kexec.h
index 42d2ff15c592..cea78543a574 100644
--- a/include/asm-x86_64/kexec.h
+++ b/include/asm-x86_64/kexec.h
@@ -26,8 +26,5 @@
26#define KEXEC_ARCH KEXEC_ARCH_X86_64 26#define KEXEC_ARCH KEXEC_ARCH_X86_64
27 27
28#define MAX_NOTE_BYTES 1024 28#define MAX_NOTE_BYTES 1024
29typedef u32 note_buf_t[MAX_NOTE_BYTES/4];
30
31extern note_buf_t crash_notes[];
32 29
33#endif /* _X86_64_KEXEC_H */ 30#endif /* _X86_64_KEXEC_H */
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index c8468472aec0..c1cd9b31159e 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -125,6 +125,8 @@ extern struct kimage *kexec_image;
125/* Location of a reserved region to hold the crash kernel. 125/* Location of a reserved region to hold the crash kernel.
126 */ 126 */
127extern struct resource crashk_res; 127extern struct resource crashk_res;
128typedef u32 note_buf_t[MAX_NOTE_BYTES/4];
129extern note_buf_t *crash_notes;
128 130
129#else /* !CONFIG_KEXEC */ 131#else /* !CONFIG_KEXEC */
130struct pt_regs; 132struct pt_regs;