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/device.h> |
7 | #include <linux/proc_fs.h> |
8 | |
9 | #define ELFCORE_ADDR_MAX (-1ULL) |
10 | #define ELFCORE_ADDR_ERR (-2ULL) |
11 | |
12 | extern unsigned long long elfcorehdr_addr; |
13 | |
14 | extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, |
15 | unsigned long, int); |
16 | |
17 | /* Architecture code defines this if there are other possible ELF |
18 | * machine types, e.g. on bi-arch capable hardware. */ |
19 | #ifndef vmcore_elf_check_arch_cross |
20 | #define vmcore_elf_check_arch_cross(x) 0 |
21 | #endif |
22 | |
23 | #define vmcore_elf_check_arch(x) (elf_check_arch(x) || vmcore_elf_check_arch_cross(x)) |
24 | |
25 | /* |
26 | * is_kdump_kernel() checks whether this kernel is booting after a panic of |
27 | * previous kernel or not. This is determined by checking if previous kernel |
28 | * has passed the elf core header address on command line. |
29 | * |
30 | * This is not just a test if CONFIG_CRASH_DUMP is enabled or not. It will |
31 | * return 1 if CONFIG_CRASH_DUMP=y and if kernel is booting after a panic of |
32 | * previous kernel. |
33 | */ |
34 | |
35 | static inline int is_kdump_kernel(void) |
36 | { |
37 | return (elfcorehdr_addr != ELFCORE_ADDR_MAX) ? 1 : 0; |
38 | } |
39 | |
40 | /* is_vmcore_usable() checks if the kernel is booting after a panic and |
41 | * the vmcore region is usable. |
42 | * |
43 | * This makes use of the fact that due to alignment -2ULL is not |
44 | * a valid pointer, much in the vain of IS_ERR(), except |
45 | * dealing directly with an unsigned long long rather than a pointer. |
46 | */ |
47 | |
48 | static inline int is_vmcore_usable(void) |
49 | { |
50 | return is_kdump_kernel() && elfcorehdr_addr != ELFCORE_ADDR_ERR ? 1 : 0; |
51 | } |
52 | |
53 | /* vmcore_unusable() marks the vmcore as unusable, |
54 | * without disturbing the logic of is_kdump_kernel() |
55 | */ |
56 | |
57 | static inline void vmcore_unusable(void) |
58 | { |
59 | if (is_kdump_kernel()) |
60 | elfcorehdr_addr = ELFCORE_ADDR_ERR; |
61 | } |
62 | #else /* !CONFIG_CRASH_DUMP */ |
63 | static inline int is_kdump_kernel(void) { return 0; } |
64 | #endif /* CONFIG_CRASH_DUMP */ |
65 | |
66 | extern unsigned long saved_max_pfn; |
67 | #endif /* LINUX_CRASHDUMP_H */ |
68 |
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