Root/
1 | #ifndef LINUX_CRASH_DUMP_H |
2 | #define LINUX_CRASH_DUMP_H |
3 | |
4 | #ifdef CONFIG_CRASH_DUMP |
5 | #include <linux/kexec.h> |
6 | #include <linux/proc_fs.h> |
7 | #include <linux/elf.h> |
8 | |
9 | #define ELFCORE_ADDR_MAX (-1ULL) |
10 | #define ELFCORE_ADDR_ERR (-2ULL) |
11 | |
12 | extern unsigned long long elfcorehdr_addr; |
13 | extern unsigned long long elfcorehdr_size; |
14 | |
15 | extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, |
16 | unsigned long, int); |
17 | |
18 | /* Architecture code defines this if there are other possible ELF |
19 | * machine types, e.g. on bi-arch capable hardware. */ |
20 | #ifndef vmcore_elf_check_arch_cross |
21 | #define vmcore_elf_check_arch_cross(x) 0 |
22 | #endif |
23 | |
24 | /* |
25 | * Architecture code can redefine this if there are any special checks |
26 | * needed for 64-bit ELF vmcores. In case of 32-bit only architecture, |
27 | * this can be set to zero. |
28 | */ |
29 | #ifndef vmcore_elf64_check_arch |
30 | #define vmcore_elf64_check_arch(x) (elf_check_arch(x) || vmcore_elf_check_arch_cross(x)) |
31 | #endif |
32 | |
33 | /* |
34 | * is_kdump_kernel() checks whether this kernel is booting after a panic of |
35 | * previous kernel or not. This is determined by checking if previous kernel |
36 | * has passed the elf core header address on command line. |
37 | * |
38 | * This is not just a test if CONFIG_CRASH_DUMP is enabled or not. It will |
39 | * return 1 if CONFIG_CRASH_DUMP=y and if kernel is booting after a panic of |
40 | * previous kernel. |
41 | */ |
42 | |
43 | static inline int is_kdump_kernel(void) |
44 | { |
45 | return (elfcorehdr_addr != ELFCORE_ADDR_MAX) ? 1 : 0; |
46 | } |
47 | |
48 | /* is_vmcore_usable() checks if the kernel is booting after a panic and |
49 | * the vmcore region is usable. |
50 | * |
51 | * This makes use of the fact that due to alignment -2ULL is not |
52 | * a valid pointer, much in the vain of IS_ERR(), except |
53 | * dealing directly with an unsigned long long rather than a pointer. |
54 | */ |
55 | |
56 | static inline int is_vmcore_usable(void) |
57 | { |
58 | return is_kdump_kernel() && elfcorehdr_addr != ELFCORE_ADDR_ERR ? 1 : 0; |
59 | } |
60 | |
61 | /* vmcore_unusable() marks the vmcore as unusable, |
62 | * without disturbing the logic of is_kdump_kernel() |
63 | */ |
64 | |
65 | static inline void vmcore_unusable(void) |
66 | { |
67 | if (is_kdump_kernel()) |
68 | elfcorehdr_addr = ELFCORE_ADDR_ERR; |
69 | } |
70 | |
71 | #define HAVE_OLDMEM_PFN_IS_RAM 1 |
72 | extern int register_oldmem_pfn_is_ram(int (*fn)(unsigned long pfn)); |
73 | extern void unregister_oldmem_pfn_is_ram(void); |
74 | |
75 | #else /* !CONFIG_CRASH_DUMP */ |
76 | static inline int is_kdump_kernel(void) { return 0; } |
77 | #endif /* CONFIG_CRASH_DUMP */ |
78 | |
79 | extern unsigned long saved_max_pfn; |
80 | #endif /* LINUX_CRASHDUMP_H */ |
81 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9