mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Add vmcoreinfo
This patch set frees the restriction that makedumpfile users should install a vmlinux file (including the debugging information) into each system. makedumpfile command is the dump filtering feature for kdump. It creates a small dumpfile by filtering unnecessary pages for the analysis. To distinguish unnecessary pages, it needs a vmlinux file including the debugging information. These days, the debugging package becomes a huge file, and it is hard to install it into each system. To solve the problem, kdump developers discussed it at lkml and kexec-ml. As the result, we reached the conclusion that necessary information for dump filtering (called "vmcoreinfo") should be embedded into the first kernel file and it should be accessed through /proc/vmcore during the second kernel. (http://www.uwsg.iu.edu/hypermail/linux/kernel/0707.0/1806.html) Dan Aloni created the patch set for the above implementation. (http://www.uwsg.iu.edu/hypermail/linux/kernel/0707.1/1053.html) And I updated it for multi architectures and memory models. (http://lists.infradead.org/pipermail/kexec/2007-August/000479.html) Signed-off-by: Dan Aloni <da-x@monatomic.org> Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> Signed-off-by: Bernhard Walle <bwalle@suse.de> Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0e647c04f6
commit
fd59d231f8
8 changed files with 200 additions and 1 deletions
|
@ -121,6 +121,23 @@ extern struct page *kimage_alloc_control_pages(struct kimage *image,
|
|||
extern void crash_kexec(struct pt_regs *);
|
||||
int kexec_should_crash(struct task_struct *);
|
||||
void crash_save_cpu(struct pt_regs *regs, int cpu);
|
||||
void crash_save_vmcoreinfo(void);
|
||||
void arch_crash_save_vmcoreinfo(void);
|
||||
void vmcoreinfo_append_str(const char *fmt, ...);
|
||||
unsigned long paddr_vmcoreinfo_note(void);
|
||||
|
||||
#define SYMBOL(name) \
|
||||
vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name)
|
||||
#define SIZE(name) \
|
||||
vmcoreinfo_append_str("SIZE(%s)=%d\n", #name, sizeof(struct name))
|
||||
#define OFFSET(name, field) \
|
||||
vmcoreinfo_append_str("OFFSET(%s.%s)=%d\n", #name, #field, \
|
||||
&(((struct name *)0)->field))
|
||||
#define LENGTH(name, value) \
|
||||
vmcoreinfo_append_str("LENGTH(%s)=%d\n", #name, value)
|
||||
#define CONFIG(name) \
|
||||
vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
|
||||
|
||||
extern struct kimage *kexec_image;
|
||||
extern struct kimage *kexec_crash_image;
|
||||
|
||||
|
@ -148,11 +165,20 @@ extern struct kimage *kexec_crash_image;
|
|||
|
||||
#define KEXEC_FLAGS (KEXEC_ON_CRASH) /* List of defined/legal kexec flags */
|
||||
|
||||
#define VMCOREINFO_BYTES (4096)
|
||||
#define VMCOREINFO_NOTE_NAME "VMCOREINFO"
|
||||
#define VMCOREINFO_NOTE_NAME_BYTES ALIGN(sizeof(VMCOREINFO_NOTE_NAME), 4)
|
||||
#define VMCOREINFO_NOTE_SIZE (KEXEC_NOTE_HEAD_BYTES*2 + VMCOREINFO_BYTES \
|
||||
+ VMCOREINFO_NOTE_NAME_BYTES)
|
||||
|
||||
/* Location of a reserved region to hold the crash kernel.
|
||||
*/
|
||||
extern struct resource crashk_res;
|
||||
typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4];
|
||||
extern note_buf_t *crash_notes;
|
||||
extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
|
||||
extern unsigned int vmcoreinfo_size;
|
||||
extern unsigned int vmcoreinfo_max_size;
|
||||
|
||||
|
||||
#else /* !CONFIG_KEXEC */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue