Commit 9579f5bd31a04e80a87a7b58bd52dff6dc68bc99
Committed by
Linus Torvalds
1 parent
048b9c3549
Exists in
master
and in
20 other branches
memory: memory notifier error injection module
This provides the ability to inject artifical errors to memory hotplug notifier chain callbacks. It is controlled through debugfs interface under /sys/kernel/debug/notifier-error-inject/memory If the notifier call chain should be failed with some events notified, write the error code to "actions/<notifier event>/error". Example: Inject memory hotplug offline error (-12 == -ENOMEM) # cd /sys/kernel/debug/notifier-error-inject/memory # echo -12 > actions/MEM_GOING_OFFLINE/error # echo offline > /sys/devices/system/memory/memoryXXX/state bash: echo: write error: Cannot allocate memory Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Pavel Machek <pavel@ucw.cz> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Cc: Greg KH <greg@kroah.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <michael@ellerman.id.au> Cc: Dave Jones <davej@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 3 changed files with 72 additions and 0 deletions Inline Diff
lib/Kconfig.debug
1 | 1 | ||
2 | config PRINTK_TIME | 2 | config PRINTK_TIME |
3 | bool "Show timing information on printks" | 3 | bool "Show timing information on printks" |
4 | depends on PRINTK | 4 | depends on PRINTK |
5 | help | 5 | help |
6 | Selecting this option causes time stamps of the printk() | 6 | Selecting this option causes time stamps of the printk() |
7 | messages to be added to the output of the syslog() system | 7 | messages to be added to the output of the syslog() system |
8 | call and at the console. | 8 | call and at the console. |
9 | 9 | ||
10 | The timestamp is always recorded internally, and exported | 10 | The timestamp is always recorded internally, and exported |
11 | to /dev/kmsg. This flag just specifies if the timestamp should | 11 | to /dev/kmsg. This flag just specifies if the timestamp should |
12 | be included, not that the timestamp is recorded. | 12 | be included, not that the timestamp is recorded. |
13 | 13 | ||
14 | The behavior is also controlled by the kernel command line | 14 | The behavior is also controlled by the kernel command line |
15 | parameter printk.time=1. See Documentation/kernel-parameters.txt | 15 | parameter printk.time=1. See Documentation/kernel-parameters.txt |
16 | 16 | ||
17 | config DEFAULT_MESSAGE_LOGLEVEL | 17 | config DEFAULT_MESSAGE_LOGLEVEL |
18 | int "Default message log level (1-7)" | 18 | int "Default message log level (1-7)" |
19 | range 1 7 | 19 | range 1 7 |
20 | default "4" | 20 | default "4" |
21 | help | 21 | help |
22 | Default log level for printk statements with no specified priority. | 22 | Default log level for printk statements with no specified priority. |
23 | 23 | ||
24 | This was hard-coded to KERN_WARNING since at least 2.6.10 but folks | 24 | This was hard-coded to KERN_WARNING since at least 2.6.10 but folks |
25 | that are auditing their logs closely may want to set it to a lower | 25 | that are auditing their logs closely may want to set it to a lower |
26 | priority. | 26 | priority. |
27 | 27 | ||
28 | config ENABLE_WARN_DEPRECATED | 28 | config ENABLE_WARN_DEPRECATED |
29 | bool "Enable __deprecated logic" | 29 | bool "Enable __deprecated logic" |
30 | default y | 30 | default y |
31 | help | 31 | help |
32 | Enable the __deprecated logic in the kernel build. | 32 | Enable the __deprecated logic in the kernel build. |
33 | Disable this to suppress the "warning: 'foo' is deprecated | 33 | Disable this to suppress the "warning: 'foo' is deprecated |
34 | (declared at kernel/power/somefile.c:1234)" messages. | 34 | (declared at kernel/power/somefile.c:1234)" messages. |
35 | 35 | ||
36 | config ENABLE_MUST_CHECK | 36 | config ENABLE_MUST_CHECK |
37 | bool "Enable __must_check logic" | 37 | bool "Enable __must_check logic" |
38 | default y | 38 | default y |
39 | help | 39 | help |
40 | Enable the __must_check logic in the kernel build. Disable this to | 40 | Enable the __must_check logic in the kernel build. Disable this to |
41 | suppress the "warning: ignoring return value of 'foo', declared with | 41 | suppress the "warning: ignoring return value of 'foo', declared with |
42 | attribute warn_unused_result" messages. | 42 | attribute warn_unused_result" messages. |
43 | 43 | ||
44 | config FRAME_WARN | 44 | config FRAME_WARN |
45 | int "Warn for stack frames larger than (needs gcc 4.4)" | 45 | int "Warn for stack frames larger than (needs gcc 4.4)" |
46 | range 0 8192 | 46 | range 0 8192 |
47 | default 1024 if !64BIT | 47 | default 1024 if !64BIT |
48 | default 2048 if 64BIT | 48 | default 2048 if 64BIT |
49 | help | 49 | help |
50 | Tell gcc to warn at build time for stack frames larger than this. | 50 | Tell gcc to warn at build time for stack frames larger than this. |
51 | Setting this too low will cause a lot of warnings. | 51 | Setting this too low will cause a lot of warnings. |
52 | Setting it to 0 disables the warning. | 52 | Setting it to 0 disables the warning. |
53 | Requires gcc 4.4 | 53 | Requires gcc 4.4 |
54 | 54 | ||
55 | config MAGIC_SYSRQ | 55 | config MAGIC_SYSRQ |
56 | bool "Magic SysRq key" | 56 | bool "Magic SysRq key" |
57 | depends on !UML | 57 | depends on !UML |
58 | help | 58 | help |
59 | If you say Y here, you will have some control over the system even | 59 | If you say Y here, you will have some control over the system even |
60 | if the system crashes for example during kernel debugging (e.g., you | 60 | if the system crashes for example during kernel debugging (e.g., you |
61 | will be able to flush the buffer cache to disk, reboot the system | 61 | will be able to flush the buffer cache to disk, reboot the system |
62 | immediately or dump some status information). This is accomplished | 62 | immediately or dump some status information). This is accomplished |
63 | by pressing various keys while holding SysRq (Alt+PrintScreen). It | 63 | by pressing various keys while holding SysRq (Alt+PrintScreen). It |
64 | also works on a serial console (on PC hardware at least), if you | 64 | also works on a serial console (on PC hardware at least), if you |
65 | send a BREAK and then within 5 seconds a command keypress. The | 65 | send a BREAK and then within 5 seconds a command keypress. The |
66 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y | 66 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y |
67 | unless you really know what this hack does. | 67 | unless you really know what this hack does. |
68 | 68 | ||
69 | config STRIP_ASM_SYMS | 69 | config STRIP_ASM_SYMS |
70 | bool "Strip assembler-generated symbols during link" | 70 | bool "Strip assembler-generated symbols during link" |
71 | default n | 71 | default n |
72 | help | 72 | help |
73 | Strip internal assembler-generated symbols during a link (symbols | 73 | Strip internal assembler-generated symbols during a link (symbols |
74 | that look like '.Lxxx') so they don't pollute the output of | 74 | that look like '.Lxxx') so they don't pollute the output of |
75 | get_wchan() and suchlike. | 75 | get_wchan() and suchlike. |
76 | 76 | ||
77 | config READABLE_ASM | 77 | config READABLE_ASM |
78 | bool "Generate readable assembler code" | 78 | bool "Generate readable assembler code" |
79 | depends on DEBUG_KERNEL | 79 | depends on DEBUG_KERNEL |
80 | help | 80 | help |
81 | Disable some compiler optimizations that tend to generate human unreadable | 81 | Disable some compiler optimizations that tend to generate human unreadable |
82 | assembler output. This may make the kernel slightly slower, but it helps | 82 | assembler output. This may make the kernel slightly slower, but it helps |
83 | to keep kernel developers who have to stare a lot at assembler listings | 83 | to keep kernel developers who have to stare a lot at assembler listings |
84 | sane. | 84 | sane. |
85 | 85 | ||
86 | config UNUSED_SYMBOLS | 86 | config UNUSED_SYMBOLS |
87 | bool "Enable unused/obsolete exported symbols" | 87 | bool "Enable unused/obsolete exported symbols" |
88 | default y if X86 | 88 | default y if X86 |
89 | help | 89 | help |
90 | Unused but exported symbols make the kernel needlessly bigger. For | 90 | Unused but exported symbols make the kernel needlessly bigger. For |
91 | that reason most of these unused exports will soon be removed. This | 91 | that reason most of these unused exports will soon be removed. This |
92 | option is provided temporarily to provide a transition period in case | 92 | option is provided temporarily to provide a transition period in case |
93 | some external kernel module needs one of these symbols anyway. If you | 93 | some external kernel module needs one of these symbols anyway. If you |
94 | encounter such a case in your module, consider if you are actually | 94 | encounter such a case in your module, consider if you are actually |
95 | using the right API. (rationale: since nobody in the kernel is using | 95 | using the right API. (rationale: since nobody in the kernel is using |
96 | this in a module, there is a pretty good chance it's actually the | 96 | this in a module, there is a pretty good chance it's actually the |
97 | wrong interface to use). If you really need the symbol, please send a | 97 | wrong interface to use). If you really need the symbol, please send a |
98 | mail to the linux kernel mailing list mentioning the symbol and why | 98 | mail to the linux kernel mailing list mentioning the symbol and why |
99 | you really need it, and what the merge plan to the mainline kernel for | 99 | you really need it, and what the merge plan to the mainline kernel for |
100 | your module is. | 100 | your module is. |
101 | 101 | ||
102 | config DEBUG_FS | 102 | config DEBUG_FS |
103 | bool "Debug Filesystem" | 103 | bool "Debug Filesystem" |
104 | help | 104 | help |
105 | debugfs is a virtual file system that kernel developers use to put | 105 | debugfs is a virtual file system that kernel developers use to put |
106 | debugging files into. Enable this option to be able to read and | 106 | debugging files into. Enable this option to be able to read and |
107 | write to these files. | 107 | write to these files. |
108 | 108 | ||
109 | For detailed documentation on the debugfs API, see | 109 | For detailed documentation on the debugfs API, see |
110 | Documentation/DocBook/filesystems. | 110 | Documentation/DocBook/filesystems. |
111 | 111 | ||
112 | If unsure, say N. | 112 | If unsure, say N. |
113 | 113 | ||
114 | config HEADERS_CHECK | 114 | config HEADERS_CHECK |
115 | bool "Run 'make headers_check' when building vmlinux" | 115 | bool "Run 'make headers_check' when building vmlinux" |
116 | depends on !UML | 116 | depends on !UML |
117 | help | 117 | help |
118 | This option will extract the user-visible kernel headers whenever | 118 | This option will extract the user-visible kernel headers whenever |
119 | building the kernel, and will run basic sanity checks on them to | 119 | building the kernel, and will run basic sanity checks on them to |
120 | ensure that exported files do not attempt to include files which | 120 | ensure that exported files do not attempt to include files which |
121 | were not exported, etc. | 121 | were not exported, etc. |
122 | 122 | ||
123 | If you're making modifications to header files which are | 123 | If you're making modifications to header files which are |
124 | relevant for userspace, say 'Y', and check the headers | 124 | relevant for userspace, say 'Y', and check the headers |
125 | exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in | 125 | exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in |
126 | your build tree), to make sure they're suitable. | 126 | your build tree), to make sure they're suitable. |
127 | 127 | ||
128 | config DEBUG_SECTION_MISMATCH | 128 | config DEBUG_SECTION_MISMATCH |
129 | bool "Enable full Section mismatch analysis" | 129 | bool "Enable full Section mismatch analysis" |
130 | help | 130 | help |
131 | The section mismatch analysis checks if there are illegal | 131 | The section mismatch analysis checks if there are illegal |
132 | references from one section to another section. | 132 | references from one section to another section. |
133 | During linktime or runtime, some sections are dropped; | 133 | During linktime or runtime, some sections are dropped; |
134 | any use of code/data previously in these sections would | 134 | any use of code/data previously in these sections would |
135 | most likely result in an oops. | 135 | most likely result in an oops. |
136 | In the code, functions and variables are annotated with | 136 | In the code, functions and variables are annotated with |
137 | __init, __devinit, etc. (see the full list in include/linux/init.h), | 137 | __init, __devinit, etc. (see the full list in include/linux/init.h), |
138 | which results in the code/data being placed in specific sections. | 138 | which results in the code/data being placed in specific sections. |
139 | The section mismatch analysis is always performed after a full | 139 | The section mismatch analysis is always performed after a full |
140 | kernel build, and enabling this option causes the following | 140 | kernel build, and enabling this option causes the following |
141 | additional steps to occur: | 141 | additional steps to occur: |
142 | - Add the option -fno-inline-functions-called-once to gcc commands. | 142 | - Add the option -fno-inline-functions-called-once to gcc commands. |
143 | When inlining a function annotated with __init in a non-init | 143 | When inlining a function annotated with __init in a non-init |
144 | function, we would lose the section information and thus | 144 | function, we would lose the section information and thus |
145 | the analysis would not catch the illegal reference. | 145 | the analysis would not catch the illegal reference. |
146 | This option tells gcc to inline less (but it does result in | 146 | This option tells gcc to inline less (but it does result in |
147 | a larger kernel). | 147 | a larger kernel). |
148 | - Run the section mismatch analysis for each module/built-in.o file. | 148 | - Run the section mismatch analysis for each module/built-in.o file. |
149 | When we run the section mismatch analysis on vmlinux.o, we | 149 | When we run the section mismatch analysis on vmlinux.o, we |
150 | lose valueble information about where the mismatch was | 150 | lose valueble information about where the mismatch was |
151 | introduced. | 151 | introduced. |
152 | Running the analysis for each module/built-in.o file | 152 | Running the analysis for each module/built-in.o file |
153 | tells where the mismatch happens much closer to the | 153 | tells where the mismatch happens much closer to the |
154 | source. The drawback is that the same mismatch is | 154 | source. The drawback is that the same mismatch is |
155 | reported at least twice. | 155 | reported at least twice. |
156 | - Enable verbose reporting from modpost in order to help resolve | 156 | - Enable verbose reporting from modpost in order to help resolve |
157 | the section mismatches that are reported. | 157 | the section mismatches that are reported. |
158 | 158 | ||
159 | config DEBUG_KERNEL | 159 | config DEBUG_KERNEL |
160 | bool "Kernel debugging" | 160 | bool "Kernel debugging" |
161 | help | 161 | help |
162 | Say Y here if you are developing drivers or trying to debug and | 162 | Say Y here if you are developing drivers or trying to debug and |
163 | identify kernel problems. | 163 | identify kernel problems. |
164 | 164 | ||
165 | config DEBUG_SHIRQ | 165 | config DEBUG_SHIRQ |
166 | bool "Debug shared IRQ handlers" | 166 | bool "Debug shared IRQ handlers" |
167 | depends on DEBUG_KERNEL && GENERIC_HARDIRQS | 167 | depends on DEBUG_KERNEL && GENERIC_HARDIRQS |
168 | help | 168 | help |
169 | Enable this to generate a spurious interrupt as soon as a shared | 169 | Enable this to generate a spurious interrupt as soon as a shared |
170 | interrupt handler is registered, and just before one is deregistered. | 170 | interrupt handler is registered, and just before one is deregistered. |
171 | Drivers ought to be able to handle interrupts coming in at those | 171 | Drivers ought to be able to handle interrupts coming in at those |
172 | points; some don't and need to be caught. | 172 | points; some don't and need to be caught. |
173 | 173 | ||
174 | config LOCKUP_DETECTOR | 174 | config LOCKUP_DETECTOR |
175 | bool "Detect Hard and Soft Lockups" | 175 | bool "Detect Hard and Soft Lockups" |
176 | depends on DEBUG_KERNEL && !S390 | 176 | depends on DEBUG_KERNEL && !S390 |
177 | help | 177 | help |
178 | Say Y here to enable the kernel to act as a watchdog to detect | 178 | Say Y here to enable the kernel to act as a watchdog to detect |
179 | hard and soft lockups. | 179 | hard and soft lockups. |
180 | 180 | ||
181 | Softlockups are bugs that cause the kernel to loop in kernel | 181 | Softlockups are bugs that cause the kernel to loop in kernel |
182 | mode for more than 20 seconds, without giving other tasks a | 182 | mode for more than 20 seconds, without giving other tasks a |
183 | chance to run. The current stack trace is displayed upon | 183 | chance to run. The current stack trace is displayed upon |
184 | detection and the system will stay locked up. | 184 | detection and the system will stay locked up. |
185 | 185 | ||
186 | Hardlockups are bugs that cause the CPU to loop in kernel mode | 186 | Hardlockups are bugs that cause the CPU to loop in kernel mode |
187 | for more than 10 seconds, without letting other interrupts have a | 187 | for more than 10 seconds, without letting other interrupts have a |
188 | chance to run. The current stack trace is displayed upon detection | 188 | chance to run. The current stack trace is displayed upon detection |
189 | and the system will stay locked up. | 189 | and the system will stay locked up. |
190 | 190 | ||
191 | The overhead should be minimal. A periodic hrtimer runs to | 191 | The overhead should be minimal. A periodic hrtimer runs to |
192 | generate interrupts and kick the watchdog task every 4 seconds. | 192 | generate interrupts and kick the watchdog task every 4 seconds. |
193 | An NMI is generated every 10 seconds or so to check for hardlockups. | 193 | An NMI is generated every 10 seconds or so to check for hardlockups. |
194 | 194 | ||
195 | The frequency of hrtimer and NMI events and the soft and hard lockup | 195 | The frequency of hrtimer and NMI events and the soft and hard lockup |
196 | thresholds can be controlled through the sysctl watchdog_thresh. | 196 | thresholds can be controlled through the sysctl watchdog_thresh. |
197 | 197 | ||
198 | config HARDLOCKUP_DETECTOR | 198 | config HARDLOCKUP_DETECTOR |
199 | def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \ | 199 | def_bool LOCKUP_DETECTOR && PERF_EVENTS && HAVE_PERF_EVENTS_NMI && \ |
200 | !HAVE_NMI_WATCHDOG | 200 | !HAVE_NMI_WATCHDOG |
201 | 201 | ||
202 | config BOOTPARAM_HARDLOCKUP_PANIC | 202 | config BOOTPARAM_HARDLOCKUP_PANIC |
203 | bool "Panic (Reboot) On Hard Lockups" | 203 | bool "Panic (Reboot) On Hard Lockups" |
204 | depends on LOCKUP_DETECTOR | 204 | depends on LOCKUP_DETECTOR |
205 | help | 205 | help |
206 | Say Y here to enable the kernel to panic on "hard lockups", | 206 | Say Y here to enable the kernel to panic on "hard lockups", |
207 | which are bugs that cause the kernel to loop in kernel | 207 | which are bugs that cause the kernel to loop in kernel |
208 | mode with interrupts disabled for more than 10 seconds (configurable | 208 | mode with interrupts disabled for more than 10 seconds (configurable |
209 | using the watchdog_thresh sysctl). | 209 | using the watchdog_thresh sysctl). |
210 | 210 | ||
211 | Say N if unsure. | 211 | Say N if unsure. |
212 | 212 | ||
213 | config BOOTPARAM_HARDLOCKUP_PANIC_VALUE | 213 | config BOOTPARAM_HARDLOCKUP_PANIC_VALUE |
214 | int | 214 | int |
215 | depends on LOCKUP_DETECTOR | 215 | depends on LOCKUP_DETECTOR |
216 | range 0 1 | 216 | range 0 1 |
217 | default 0 if !BOOTPARAM_HARDLOCKUP_PANIC | 217 | default 0 if !BOOTPARAM_HARDLOCKUP_PANIC |
218 | default 1 if BOOTPARAM_HARDLOCKUP_PANIC | 218 | default 1 if BOOTPARAM_HARDLOCKUP_PANIC |
219 | 219 | ||
220 | config BOOTPARAM_SOFTLOCKUP_PANIC | 220 | config BOOTPARAM_SOFTLOCKUP_PANIC |
221 | bool "Panic (Reboot) On Soft Lockups" | 221 | bool "Panic (Reboot) On Soft Lockups" |
222 | depends on LOCKUP_DETECTOR | 222 | depends on LOCKUP_DETECTOR |
223 | help | 223 | help |
224 | Say Y here to enable the kernel to panic on "soft lockups", | 224 | Say Y here to enable the kernel to panic on "soft lockups", |
225 | which are bugs that cause the kernel to loop in kernel | 225 | which are bugs that cause the kernel to loop in kernel |
226 | mode for more than 20 seconds (configurable using the watchdog_thresh | 226 | mode for more than 20 seconds (configurable using the watchdog_thresh |
227 | sysctl), without giving other tasks a chance to run. | 227 | sysctl), without giving other tasks a chance to run. |
228 | 228 | ||
229 | The panic can be used in combination with panic_timeout, | 229 | The panic can be used in combination with panic_timeout, |
230 | to cause the system to reboot automatically after a | 230 | to cause the system to reboot automatically after a |
231 | lockup has been detected. This feature is useful for | 231 | lockup has been detected. This feature is useful for |
232 | high-availability systems that have uptime guarantees and | 232 | high-availability systems that have uptime guarantees and |
233 | where a lockup must be resolved ASAP. | 233 | where a lockup must be resolved ASAP. |
234 | 234 | ||
235 | Say N if unsure. | 235 | Say N if unsure. |
236 | 236 | ||
237 | config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE | 237 | config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE |
238 | int | 238 | int |
239 | depends on LOCKUP_DETECTOR | 239 | depends on LOCKUP_DETECTOR |
240 | range 0 1 | 240 | range 0 1 |
241 | default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC | 241 | default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC |
242 | default 1 if BOOTPARAM_SOFTLOCKUP_PANIC | 242 | default 1 if BOOTPARAM_SOFTLOCKUP_PANIC |
243 | 243 | ||
244 | config PANIC_ON_OOPS | 244 | config PANIC_ON_OOPS |
245 | bool "Panic on Oops" if EXPERT | 245 | bool "Panic on Oops" if EXPERT |
246 | default n | 246 | default n |
247 | help | 247 | help |
248 | Say Y here to enable the kernel to panic when it oopses. This | 248 | Say Y here to enable the kernel to panic when it oopses. This |
249 | has the same effect as setting oops=panic on the kernel command | 249 | has the same effect as setting oops=panic on the kernel command |
250 | line. | 250 | line. |
251 | 251 | ||
252 | This feature is useful to ensure that the kernel does not do | 252 | This feature is useful to ensure that the kernel does not do |
253 | anything erroneous after an oops which could result in data | 253 | anything erroneous after an oops which could result in data |
254 | corruption or other issues. | 254 | corruption or other issues. |
255 | 255 | ||
256 | Say N if unsure. | 256 | Say N if unsure. |
257 | 257 | ||
258 | config PANIC_ON_OOPS_VALUE | 258 | config PANIC_ON_OOPS_VALUE |
259 | int | 259 | int |
260 | range 0 1 | 260 | range 0 1 |
261 | default 0 if !PANIC_ON_OOPS | 261 | default 0 if !PANIC_ON_OOPS |
262 | default 1 if PANIC_ON_OOPS | 262 | default 1 if PANIC_ON_OOPS |
263 | 263 | ||
264 | config DETECT_HUNG_TASK | 264 | config DETECT_HUNG_TASK |
265 | bool "Detect Hung Tasks" | 265 | bool "Detect Hung Tasks" |
266 | depends on DEBUG_KERNEL | 266 | depends on DEBUG_KERNEL |
267 | default LOCKUP_DETECTOR | 267 | default LOCKUP_DETECTOR |
268 | help | 268 | help |
269 | Say Y here to enable the kernel to detect "hung tasks", | 269 | Say Y here to enable the kernel to detect "hung tasks", |
270 | which are bugs that cause the task to be stuck in | 270 | which are bugs that cause the task to be stuck in |
271 | uninterruptible "D" state indefinitiley. | 271 | uninterruptible "D" state indefinitiley. |
272 | 272 | ||
273 | When a hung task is detected, the kernel will print the | 273 | When a hung task is detected, the kernel will print the |
274 | current stack trace (which you should report), but the | 274 | current stack trace (which you should report), but the |
275 | task will stay in uninterruptible state. If lockdep is | 275 | task will stay in uninterruptible state. If lockdep is |
276 | enabled then all held locks will also be reported. This | 276 | enabled then all held locks will also be reported. This |
277 | feature has negligible overhead. | 277 | feature has negligible overhead. |
278 | 278 | ||
279 | config DEFAULT_HUNG_TASK_TIMEOUT | 279 | config DEFAULT_HUNG_TASK_TIMEOUT |
280 | int "Default timeout for hung task detection (in seconds)" | 280 | int "Default timeout for hung task detection (in seconds)" |
281 | depends on DETECT_HUNG_TASK | 281 | depends on DETECT_HUNG_TASK |
282 | default 120 | 282 | default 120 |
283 | help | 283 | help |
284 | This option controls the default timeout (in seconds) used | 284 | This option controls the default timeout (in seconds) used |
285 | to determine when a task has become non-responsive and should | 285 | to determine when a task has become non-responsive and should |
286 | be considered hung. | 286 | be considered hung. |
287 | 287 | ||
288 | It can be adjusted at runtime via the kernel.hung_task_timeout_secs | 288 | It can be adjusted at runtime via the kernel.hung_task_timeout_secs |
289 | sysctl or by writing a value to | 289 | sysctl or by writing a value to |
290 | /proc/sys/kernel/hung_task_timeout_secs. | 290 | /proc/sys/kernel/hung_task_timeout_secs. |
291 | 291 | ||
292 | A timeout of 0 disables the check. The default is two minutes. | 292 | A timeout of 0 disables the check. The default is two minutes. |
293 | Keeping the default should be fine in most cases. | 293 | Keeping the default should be fine in most cases. |
294 | 294 | ||
295 | config BOOTPARAM_HUNG_TASK_PANIC | 295 | config BOOTPARAM_HUNG_TASK_PANIC |
296 | bool "Panic (Reboot) On Hung Tasks" | 296 | bool "Panic (Reboot) On Hung Tasks" |
297 | depends on DETECT_HUNG_TASK | 297 | depends on DETECT_HUNG_TASK |
298 | help | 298 | help |
299 | Say Y here to enable the kernel to panic on "hung tasks", | 299 | Say Y here to enable the kernel to panic on "hung tasks", |
300 | which are bugs that cause the kernel to leave a task stuck | 300 | which are bugs that cause the kernel to leave a task stuck |
301 | in uninterruptible "D" state. | 301 | in uninterruptible "D" state. |
302 | 302 | ||
303 | The panic can be used in combination with panic_timeout, | 303 | The panic can be used in combination with panic_timeout, |
304 | to cause the system to reboot automatically after a | 304 | to cause the system to reboot automatically after a |
305 | hung task has been detected. This feature is useful for | 305 | hung task has been detected. This feature is useful for |
306 | high-availability systems that have uptime guarantees and | 306 | high-availability systems that have uptime guarantees and |
307 | where a hung tasks must be resolved ASAP. | 307 | where a hung tasks must be resolved ASAP. |
308 | 308 | ||
309 | Say N if unsure. | 309 | Say N if unsure. |
310 | 310 | ||
311 | config BOOTPARAM_HUNG_TASK_PANIC_VALUE | 311 | config BOOTPARAM_HUNG_TASK_PANIC_VALUE |
312 | int | 312 | int |
313 | depends on DETECT_HUNG_TASK | 313 | depends on DETECT_HUNG_TASK |
314 | range 0 1 | 314 | range 0 1 |
315 | default 0 if !BOOTPARAM_HUNG_TASK_PANIC | 315 | default 0 if !BOOTPARAM_HUNG_TASK_PANIC |
316 | default 1 if BOOTPARAM_HUNG_TASK_PANIC | 316 | default 1 if BOOTPARAM_HUNG_TASK_PANIC |
317 | 317 | ||
318 | config SCHED_DEBUG | 318 | config SCHED_DEBUG |
319 | bool "Collect scheduler debugging info" | 319 | bool "Collect scheduler debugging info" |
320 | depends on DEBUG_KERNEL && PROC_FS | 320 | depends on DEBUG_KERNEL && PROC_FS |
321 | default y | 321 | default y |
322 | help | 322 | help |
323 | If you say Y here, the /proc/sched_debug file will be provided | 323 | If you say Y here, the /proc/sched_debug file will be provided |
324 | that can help debug the scheduler. The runtime overhead of this | 324 | that can help debug the scheduler. The runtime overhead of this |
325 | option is minimal. | 325 | option is minimal. |
326 | 326 | ||
327 | config SCHEDSTATS | 327 | config SCHEDSTATS |
328 | bool "Collect scheduler statistics" | 328 | bool "Collect scheduler statistics" |
329 | depends on DEBUG_KERNEL && PROC_FS | 329 | depends on DEBUG_KERNEL && PROC_FS |
330 | help | 330 | help |
331 | If you say Y here, additional code will be inserted into the | 331 | If you say Y here, additional code will be inserted into the |
332 | scheduler and related routines to collect statistics about | 332 | scheduler and related routines to collect statistics about |
333 | scheduler behavior and provide them in /proc/schedstat. These | 333 | scheduler behavior and provide them in /proc/schedstat. These |
334 | stats may be useful for both tuning and debugging the scheduler | 334 | stats may be useful for both tuning and debugging the scheduler |
335 | If you aren't debugging the scheduler or trying to tune a specific | 335 | If you aren't debugging the scheduler or trying to tune a specific |
336 | application, you can say N to avoid the very slight overhead | 336 | application, you can say N to avoid the very slight overhead |
337 | this adds. | 337 | this adds. |
338 | 338 | ||
339 | config TIMER_STATS | 339 | config TIMER_STATS |
340 | bool "Collect kernel timers statistics" | 340 | bool "Collect kernel timers statistics" |
341 | depends on DEBUG_KERNEL && PROC_FS | 341 | depends on DEBUG_KERNEL && PROC_FS |
342 | help | 342 | help |
343 | If you say Y here, additional code will be inserted into the | 343 | If you say Y here, additional code will be inserted into the |
344 | timer routines to collect statistics about kernel timers being | 344 | timer routines to collect statistics about kernel timers being |
345 | reprogrammed. The statistics can be read from /proc/timer_stats. | 345 | reprogrammed. The statistics can be read from /proc/timer_stats. |
346 | The statistics collection is started by writing 1 to /proc/timer_stats, | 346 | The statistics collection is started by writing 1 to /proc/timer_stats, |
347 | writing 0 stops it. This feature is useful to collect information | 347 | writing 0 stops it. This feature is useful to collect information |
348 | about timer usage patterns in kernel and userspace. This feature | 348 | about timer usage patterns in kernel and userspace. This feature |
349 | is lightweight if enabled in the kernel config but not activated | 349 | is lightweight if enabled in the kernel config but not activated |
350 | (it defaults to deactivated on bootup and will only be activated | 350 | (it defaults to deactivated on bootup and will only be activated |
351 | if some application like powertop activates it explicitly). | 351 | if some application like powertop activates it explicitly). |
352 | 352 | ||
353 | config DEBUG_OBJECTS | 353 | config DEBUG_OBJECTS |
354 | bool "Debug object operations" | 354 | bool "Debug object operations" |
355 | depends on DEBUG_KERNEL | 355 | depends on DEBUG_KERNEL |
356 | help | 356 | help |
357 | If you say Y here, additional code will be inserted into the | 357 | If you say Y here, additional code will be inserted into the |
358 | kernel to track the life time of various objects and validate | 358 | kernel to track the life time of various objects and validate |
359 | the operations on those objects. | 359 | the operations on those objects. |
360 | 360 | ||
361 | config DEBUG_OBJECTS_SELFTEST | 361 | config DEBUG_OBJECTS_SELFTEST |
362 | bool "Debug objects selftest" | 362 | bool "Debug objects selftest" |
363 | depends on DEBUG_OBJECTS | 363 | depends on DEBUG_OBJECTS |
364 | help | 364 | help |
365 | This enables the selftest of the object debug code. | 365 | This enables the selftest of the object debug code. |
366 | 366 | ||
367 | config DEBUG_OBJECTS_FREE | 367 | config DEBUG_OBJECTS_FREE |
368 | bool "Debug objects in freed memory" | 368 | bool "Debug objects in freed memory" |
369 | depends on DEBUG_OBJECTS | 369 | depends on DEBUG_OBJECTS |
370 | help | 370 | help |
371 | This enables checks whether a k/v free operation frees an area | 371 | This enables checks whether a k/v free operation frees an area |
372 | which contains an object which has not been deactivated | 372 | which contains an object which has not been deactivated |
373 | properly. This can make kmalloc/kfree-intensive workloads | 373 | properly. This can make kmalloc/kfree-intensive workloads |
374 | much slower. | 374 | much slower. |
375 | 375 | ||
376 | config DEBUG_OBJECTS_TIMERS | 376 | config DEBUG_OBJECTS_TIMERS |
377 | bool "Debug timer objects" | 377 | bool "Debug timer objects" |
378 | depends on DEBUG_OBJECTS | 378 | depends on DEBUG_OBJECTS |
379 | help | 379 | help |
380 | If you say Y here, additional code will be inserted into the | 380 | If you say Y here, additional code will be inserted into the |
381 | timer routines to track the life time of timer objects and | 381 | timer routines to track the life time of timer objects and |
382 | validate the timer operations. | 382 | validate the timer operations. |
383 | 383 | ||
384 | config DEBUG_OBJECTS_WORK | 384 | config DEBUG_OBJECTS_WORK |
385 | bool "Debug work objects" | 385 | bool "Debug work objects" |
386 | depends on DEBUG_OBJECTS | 386 | depends on DEBUG_OBJECTS |
387 | help | 387 | help |
388 | If you say Y here, additional code will be inserted into the | 388 | If you say Y here, additional code will be inserted into the |
389 | work queue routines to track the life time of work objects and | 389 | work queue routines to track the life time of work objects and |
390 | validate the work operations. | 390 | validate the work operations. |
391 | 391 | ||
392 | config DEBUG_OBJECTS_RCU_HEAD | 392 | config DEBUG_OBJECTS_RCU_HEAD |
393 | bool "Debug RCU callbacks objects" | 393 | bool "Debug RCU callbacks objects" |
394 | depends on DEBUG_OBJECTS | 394 | depends on DEBUG_OBJECTS |
395 | help | 395 | help |
396 | Enable this to turn on debugging of RCU list heads (call_rcu() usage). | 396 | Enable this to turn on debugging of RCU list heads (call_rcu() usage). |
397 | 397 | ||
398 | config DEBUG_OBJECTS_PERCPU_COUNTER | 398 | config DEBUG_OBJECTS_PERCPU_COUNTER |
399 | bool "Debug percpu counter objects" | 399 | bool "Debug percpu counter objects" |
400 | depends on DEBUG_OBJECTS | 400 | depends on DEBUG_OBJECTS |
401 | help | 401 | help |
402 | If you say Y here, additional code will be inserted into the | 402 | If you say Y here, additional code will be inserted into the |
403 | percpu counter routines to track the life time of percpu counter | 403 | percpu counter routines to track the life time of percpu counter |
404 | objects and validate the percpu counter operations. | 404 | objects and validate the percpu counter operations. |
405 | 405 | ||
406 | config DEBUG_OBJECTS_ENABLE_DEFAULT | 406 | config DEBUG_OBJECTS_ENABLE_DEFAULT |
407 | int "debug_objects bootup default value (0-1)" | 407 | int "debug_objects bootup default value (0-1)" |
408 | range 0 1 | 408 | range 0 1 |
409 | default "1" | 409 | default "1" |
410 | depends on DEBUG_OBJECTS | 410 | depends on DEBUG_OBJECTS |
411 | help | 411 | help |
412 | Debug objects boot parameter default value | 412 | Debug objects boot parameter default value |
413 | 413 | ||
414 | config DEBUG_SLAB | 414 | config DEBUG_SLAB |
415 | bool "Debug slab memory allocations" | 415 | bool "Debug slab memory allocations" |
416 | depends on DEBUG_KERNEL && SLAB && !KMEMCHECK | 416 | depends on DEBUG_KERNEL && SLAB && !KMEMCHECK |
417 | help | 417 | help |
418 | Say Y here to have the kernel do limited verification on memory | 418 | Say Y here to have the kernel do limited verification on memory |
419 | allocation as well as poisoning memory on free to catch use of freed | 419 | allocation as well as poisoning memory on free to catch use of freed |
420 | memory. This can make kmalloc/kfree-intensive workloads much slower. | 420 | memory. This can make kmalloc/kfree-intensive workloads much slower. |
421 | 421 | ||
422 | config DEBUG_SLAB_LEAK | 422 | config DEBUG_SLAB_LEAK |
423 | bool "Memory leak debugging" | 423 | bool "Memory leak debugging" |
424 | depends on DEBUG_SLAB | 424 | depends on DEBUG_SLAB |
425 | 425 | ||
426 | config SLUB_DEBUG_ON | 426 | config SLUB_DEBUG_ON |
427 | bool "SLUB debugging on by default" | 427 | bool "SLUB debugging on by default" |
428 | depends on SLUB && SLUB_DEBUG && !KMEMCHECK | 428 | depends on SLUB && SLUB_DEBUG && !KMEMCHECK |
429 | default n | 429 | default n |
430 | help | 430 | help |
431 | Boot with debugging on by default. SLUB boots by default with | 431 | Boot with debugging on by default. SLUB boots by default with |
432 | the runtime debug capabilities switched off. Enabling this is | 432 | the runtime debug capabilities switched off. Enabling this is |
433 | equivalent to specifying the "slub_debug" parameter on boot. | 433 | equivalent to specifying the "slub_debug" parameter on boot. |
434 | There is no support for more fine grained debug control like | 434 | There is no support for more fine grained debug control like |
435 | possible with slub_debug=xxx. SLUB debugging may be switched | 435 | possible with slub_debug=xxx. SLUB debugging may be switched |
436 | off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying | 436 | off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying |
437 | "slub_debug=-". | 437 | "slub_debug=-". |
438 | 438 | ||
439 | config SLUB_STATS | 439 | config SLUB_STATS |
440 | default n | 440 | default n |
441 | bool "Enable SLUB performance statistics" | 441 | bool "Enable SLUB performance statistics" |
442 | depends on SLUB && SYSFS | 442 | depends on SLUB && SYSFS |
443 | help | 443 | help |
444 | SLUB statistics are useful to debug SLUBs allocation behavior in | 444 | SLUB statistics are useful to debug SLUBs allocation behavior in |
445 | order find ways to optimize the allocator. This should never be | 445 | order find ways to optimize the allocator. This should never be |
446 | enabled for production use since keeping statistics slows down | 446 | enabled for production use since keeping statistics slows down |
447 | the allocator by a few percentage points. The slabinfo command | 447 | the allocator by a few percentage points. The slabinfo command |
448 | supports the determination of the most active slabs to figure | 448 | supports the determination of the most active slabs to figure |
449 | out which slabs are relevant to a particular load. | 449 | out which slabs are relevant to a particular load. |
450 | Try running: slabinfo -DA | 450 | Try running: slabinfo -DA |
451 | 451 | ||
452 | config DEBUG_KMEMLEAK | 452 | config DEBUG_KMEMLEAK |
453 | bool "Kernel memory leak detector" | 453 | bool "Kernel memory leak detector" |
454 | depends on DEBUG_KERNEL && EXPERIMENTAL && \ | 454 | depends on DEBUG_KERNEL && EXPERIMENTAL && \ |
455 | (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE) | 455 | (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE) |
456 | 456 | ||
457 | select DEBUG_FS | 457 | select DEBUG_FS |
458 | select STACKTRACE if STACKTRACE_SUPPORT | 458 | select STACKTRACE if STACKTRACE_SUPPORT |
459 | select KALLSYMS | 459 | select KALLSYMS |
460 | select CRC32 | 460 | select CRC32 |
461 | help | 461 | help |
462 | Say Y here if you want to enable the memory leak | 462 | Say Y here if you want to enable the memory leak |
463 | detector. The memory allocation/freeing is traced in a way | 463 | detector. The memory allocation/freeing is traced in a way |
464 | similar to the Boehm's conservative garbage collector, the | 464 | similar to the Boehm's conservative garbage collector, the |
465 | difference being that the orphan objects are not freed but | 465 | difference being that the orphan objects are not freed but |
466 | only shown in /sys/kernel/debug/kmemleak. Enabling this | 466 | only shown in /sys/kernel/debug/kmemleak. Enabling this |
467 | feature will introduce an overhead to memory | 467 | feature will introduce an overhead to memory |
468 | allocations. See Documentation/kmemleak.txt for more | 468 | allocations. See Documentation/kmemleak.txt for more |
469 | details. | 469 | details. |
470 | 470 | ||
471 | Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances | 471 | Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances |
472 | of finding leaks due to the slab objects poisoning. | 472 | of finding leaks due to the slab objects poisoning. |
473 | 473 | ||
474 | In order to access the kmemleak file, debugfs needs to be | 474 | In order to access the kmemleak file, debugfs needs to be |
475 | mounted (usually at /sys/kernel/debug). | 475 | mounted (usually at /sys/kernel/debug). |
476 | 476 | ||
477 | config DEBUG_KMEMLEAK_EARLY_LOG_SIZE | 477 | config DEBUG_KMEMLEAK_EARLY_LOG_SIZE |
478 | int "Maximum kmemleak early log entries" | 478 | int "Maximum kmemleak early log entries" |
479 | depends on DEBUG_KMEMLEAK | 479 | depends on DEBUG_KMEMLEAK |
480 | range 200 40000 | 480 | range 200 40000 |
481 | default 400 | 481 | default 400 |
482 | help | 482 | help |
483 | Kmemleak must track all the memory allocations to avoid | 483 | Kmemleak must track all the memory allocations to avoid |
484 | reporting false positives. Since memory may be allocated or | 484 | reporting false positives. Since memory may be allocated or |
485 | freed before kmemleak is initialised, an early log buffer is | 485 | freed before kmemleak is initialised, an early log buffer is |
486 | used to store these actions. If kmemleak reports "early log | 486 | used to store these actions. If kmemleak reports "early log |
487 | buffer exceeded", please increase this value. | 487 | buffer exceeded", please increase this value. |
488 | 488 | ||
489 | config DEBUG_KMEMLEAK_TEST | 489 | config DEBUG_KMEMLEAK_TEST |
490 | tristate "Simple test for the kernel memory leak detector" | 490 | tristate "Simple test for the kernel memory leak detector" |
491 | depends on DEBUG_KMEMLEAK && m | 491 | depends on DEBUG_KMEMLEAK && m |
492 | help | 492 | help |
493 | This option enables a module that explicitly leaks memory. | 493 | This option enables a module that explicitly leaks memory. |
494 | 494 | ||
495 | If unsure, say N. | 495 | If unsure, say N. |
496 | 496 | ||
497 | config DEBUG_KMEMLEAK_DEFAULT_OFF | 497 | config DEBUG_KMEMLEAK_DEFAULT_OFF |
498 | bool "Default kmemleak to off" | 498 | bool "Default kmemleak to off" |
499 | depends on DEBUG_KMEMLEAK | 499 | depends on DEBUG_KMEMLEAK |
500 | help | 500 | help |
501 | Say Y here to disable kmemleak by default. It can then be enabled | 501 | Say Y here to disable kmemleak by default. It can then be enabled |
502 | on the command line via kmemleak=on. | 502 | on the command line via kmemleak=on. |
503 | 503 | ||
504 | config DEBUG_PREEMPT | 504 | config DEBUG_PREEMPT |
505 | bool "Debug preemptible kernel" | 505 | bool "Debug preemptible kernel" |
506 | depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT | 506 | depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT |
507 | default y | 507 | default y |
508 | help | 508 | help |
509 | If you say Y here then the kernel will use a debug variant of the | 509 | If you say Y here then the kernel will use a debug variant of the |
510 | commonly used smp_processor_id() function and will print warnings | 510 | commonly used smp_processor_id() function and will print warnings |
511 | if kernel code uses it in a preemption-unsafe way. Also, the kernel | 511 | if kernel code uses it in a preemption-unsafe way. Also, the kernel |
512 | will detect preemption count underflows. | 512 | will detect preemption count underflows. |
513 | 513 | ||
514 | config DEBUG_RT_MUTEXES | 514 | config DEBUG_RT_MUTEXES |
515 | bool "RT Mutex debugging, deadlock detection" | 515 | bool "RT Mutex debugging, deadlock detection" |
516 | depends on DEBUG_KERNEL && RT_MUTEXES | 516 | depends on DEBUG_KERNEL && RT_MUTEXES |
517 | help | 517 | help |
518 | This allows rt mutex semantics violations and rt mutex related | 518 | This allows rt mutex semantics violations and rt mutex related |
519 | deadlocks (lockups) to be detected and reported automatically. | 519 | deadlocks (lockups) to be detected and reported automatically. |
520 | 520 | ||
521 | config DEBUG_PI_LIST | 521 | config DEBUG_PI_LIST |
522 | bool | 522 | bool |
523 | default y | 523 | default y |
524 | depends on DEBUG_RT_MUTEXES | 524 | depends on DEBUG_RT_MUTEXES |
525 | 525 | ||
526 | config RT_MUTEX_TESTER | 526 | config RT_MUTEX_TESTER |
527 | bool "Built-in scriptable tester for rt-mutexes" | 527 | bool "Built-in scriptable tester for rt-mutexes" |
528 | depends on DEBUG_KERNEL && RT_MUTEXES | 528 | depends on DEBUG_KERNEL && RT_MUTEXES |
529 | help | 529 | help |
530 | This option enables a rt-mutex tester. | 530 | This option enables a rt-mutex tester. |
531 | 531 | ||
532 | config DEBUG_SPINLOCK | 532 | config DEBUG_SPINLOCK |
533 | bool "Spinlock and rw-lock debugging: basic checks" | 533 | bool "Spinlock and rw-lock debugging: basic checks" |
534 | depends on DEBUG_KERNEL | 534 | depends on DEBUG_KERNEL |
535 | select UNINLINE_SPIN_UNLOCK | 535 | select UNINLINE_SPIN_UNLOCK |
536 | help | 536 | help |
537 | Say Y here and build SMP to catch missing spinlock initialization | 537 | Say Y here and build SMP to catch missing spinlock initialization |
538 | and certain other kinds of spinlock errors commonly made. This is | 538 | and certain other kinds of spinlock errors commonly made. This is |
539 | best used in conjunction with the NMI watchdog so that spinlock | 539 | best used in conjunction with the NMI watchdog so that spinlock |
540 | deadlocks are also debuggable. | 540 | deadlocks are also debuggable. |
541 | 541 | ||
542 | config DEBUG_MUTEXES | 542 | config DEBUG_MUTEXES |
543 | bool "Mutex debugging: basic checks" | 543 | bool "Mutex debugging: basic checks" |
544 | depends on DEBUG_KERNEL | 544 | depends on DEBUG_KERNEL |
545 | help | 545 | help |
546 | This feature allows mutex semantics violations to be detected and | 546 | This feature allows mutex semantics violations to be detected and |
547 | reported. | 547 | reported. |
548 | 548 | ||
549 | config DEBUG_LOCK_ALLOC | 549 | config DEBUG_LOCK_ALLOC |
550 | bool "Lock debugging: detect incorrect freeing of live locks" | 550 | bool "Lock debugging: detect incorrect freeing of live locks" |
551 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 551 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
552 | select DEBUG_SPINLOCK | 552 | select DEBUG_SPINLOCK |
553 | select DEBUG_MUTEXES | 553 | select DEBUG_MUTEXES |
554 | select LOCKDEP | 554 | select LOCKDEP |
555 | help | 555 | help |
556 | This feature will check whether any held lock (spinlock, rwlock, | 556 | This feature will check whether any held lock (spinlock, rwlock, |
557 | mutex or rwsem) is incorrectly freed by the kernel, via any of the | 557 | mutex or rwsem) is incorrectly freed by the kernel, via any of the |
558 | memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), | 558 | memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), |
559 | vfree(), etc.), whether a live lock is incorrectly reinitialized via | 559 | vfree(), etc.), whether a live lock is incorrectly reinitialized via |
560 | spin_lock_init()/mutex_init()/etc., or whether there is any lock | 560 | spin_lock_init()/mutex_init()/etc., or whether there is any lock |
561 | held during task exit. | 561 | held during task exit. |
562 | 562 | ||
563 | config PROVE_LOCKING | 563 | config PROVE_LOCKING |
564 | bool "Lock debugging: prove locking correctness" | 564 | bool "Lock debugging: prove locking correctness" |
565 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 565 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
566 | select LOCKDEP | 566 | select LOCKDEP |
567 | select DEBUG_SPINLOCK | 567 | select DEBUG_SPINLOCK |
568 | select DEBUG_MUTEXES | 568 | select DEBUG_MUTEXES |
569 | select DEBUG_LOCK_ALLOC | 569 | select DEBUG_LOCK_ALLOC |
570 | select TRACE_IRQFLAGS | 570 | select TRACE_IRQFLAGS |
571 | default n | 571 | default n |
572 | help | 572 | help |
573 | This feature enables the kernel to prove that all locking | 573 | This feature enables the kernel to prove that all locking |
574 | that occurs in the kernel runtime is mathematically | 574 | that occurs in the kernel runtime is mathematically |
575 | correct: that under no circumstance could an arbitrary (and | 575 | correct: that under no circumstance could an arbitrary (and |
576 | not yet triggered) combination of observed locking | 576 | not yet triggered) combination of observed locking |
577 | sequences (on an arbitrary number of CPUs, running an | 577 | sequences (on an arbitrary number of CPUs, running an |
578 | arbitrary number of tasks and interrupt contexts) cause a | 578 | arbitrary number of tasks and interrupt contexts) cause a |
579 | deadlock. | 579 | deadlock. |
580 | 580 | ||
581 | In short, this feature enables the kernel to report locking | 581 | In short, this feature enables the kernel to report locking |
582 | related deadlocks before they actually occur. | 582 | related deadlocks before they actually occur. |
583 | 583 | ||
584 | The proof does not depend on how hard and complex a | 584 | The proof does not depend on how hard and complex a |
585 | deadlock scenario would be to trigger: how many | 585 | deadlock scenario would be to trigger: how many |
586 | participant CPUs, tasks and irq-contexts would be needed | 586 | participant CPUs, tasks and irq-contexts would be needed |
587 | for it to trigger. The proof also does not depend on | 587 | for it to trigger. The proof also does not depend on |
588 | timing: if a race and a resulting deadlock is possible | 588 | timing: if a race and a resulting deadlock is possible |
589 | theoretically (no matter how unlikely the race scenario | 589 | theoretically (no matter how unlikely the race scenario |
590 | is), it will be proven so and will immediately be | 590 | is), it will be proven so and will immediately be |
591 | reported by the kernel (once the event is observed that | 591 | reported by the kernel (once the event is observed that |
592 | makes the deadlock theoretically possible). | 592 | makes the deadlock theoretically possible). |
593 | 593 | ||
594 | If a deadlock is impossible (i.e. the locking rules, as | 594 | If a deadlock is impossible (i.e. the locking rules, as |
595 | observed by the kernel, are mathematically correct), the | 595 | observed by the kernel, are mathematically correct), the |
596 | kernel reports nothing. | 596 | kernel reports nothing. |
597 | 597 | ||
598 | NOTE: this feature can also be enabled for rwlocks, mutexes | 598 | NOTE: this feature can also be enabled for rwlocks, mutexes |
599 | and rwsems - in which case all dependencies between these | 599 | and rwsems - in which case all dependencies between these |
600 | different locking variants are observed and mapped too, and | 600 | different locking variants are observed and mapped too, and |
601 | the proof of observed correctness is also maintained for an | 601 | the proof of observed correctness is also maintained for an |
602 | arbitrary combination of these separate locking variants. | 602 | arbitrary combination of these separate locking variants. |
603 | 603 | ||
604 | For more details, see Documentation/lockdep-design.txt. | 604 | For more details, see Documentation/lockdep-design.txt. |
605 | 605 | ||
606 | config PROVE_RCU | 606 | config PROVE_RCU |
607 | bool "RCU debugging: prove RCU correctness" | 607 | bool "RCU debugging: prove RCU correctness" |
608 | depends on PROVE_LOCKING | 608 | depends on PROVE_LOCKING |
609 | default n | 609 | default n |
610 | help | 610 | help |
611 | This feature enables lockdep extensions that check for correct | 611 | This feature enables lockdep extensions that check for correct |
612 | use of RCU APIs. This is currently under development. Say Y | 612 | use of RCU APIs. This is currently under development. Say Y |
613 | if you want to debug RCU usage or help work on the PROVE_RCU | 613 | if you want to debug RCU usage or help work on the PROVE_RCU |
614 | feature. | 614 | feature. |
615 | 615 | ||
616 | Say N if you are unsure. | 616 | Say N if you are unsure. |
617 | 617 | ||
618 | config PROVE_RCU_REPEATEDLY | 618 | config PROVE_RCU_REPEATEDLY |
619 | bool "RCU debugging: don't disable PROVE_RCU on first splat" | 619 | bool "RCU debugging: don't disable PROVE_RCU on first splat" |
620 | depends on PROVE_RCU | 620 | depends on PROVE_RCU |
621 | default n | 621 | default n |
622 | help | 622 | help |
623 | By itself, PROVE_RCU will disable checking upon issuing the | 623 | By itself, PROVE_RCU will disable checking upon issuing the |
624 | first warning (or "splat"). This feature prevents such | 624 | first warning (or "splat"). This feature prevents such |
625 | disabling, allowing multiple RCU-lockdep warnings to be printed | 625 | disabling, allowing multiple RCU-lockdep warnings to be printed |
626 | on a single reboot. | 626 | on a single reboot. |
627 | 627 | ||
628 | Say Y to allow multiple RCU-lockdep warnings per boot. | 628 | Say Y to allow multiple RCU-lockdep warnings per boot. |
629 | 629 | ||
630 | Say N if you are unsure. | 630 | Say N if you are unsure. |
631 | 631 | ||
632 | config SPARSE_RCU_POINTER | 632 | config SPARSE_RCU_POINTER |
633 | bool "RCU debugging: sparse-based checks for pointer usage" | 633 | bool "RCU debugging: sparse-based checks for pointer usage" |
634 | default n | 634 | default n |
635 | help | 635 | help |
636 | This feature enables the __rcu sparse annotation for | 636 | This feature enables the __rcu sparse annotation for |
637 | RCU-protected pointers. This annotation will cause sparse | 637 | RCU-protected pointers. This annotation will cause sparse |
638 | to flag any non-RCU used of annotated pointers. This can be | 638 | to flag any non-RCU used of annotated pointers. This can be |
639 | helpful when debugging RCU usage. Please note that this feature | 639 | helpful when debugging RCU usage. Please note that this feature |
640 | is not intended to enforce code cleanliness; it is instead merely | 640 | is not intended to enforce code cleanliness; it is instead merely |
641 | a debugging aid. | 641 | a debugging aid. |
642 | 642 | ||
643 | Say Y to make sparse flag questionable use of RCU-protected pointers | 643 | Say Y to make sparse flag questionable use of RCU-protected pointers |
644 | 644 | ||
645 | Say N if you are unsure. | 645 | Say N if you are unsure. |
646 | 646 | ||
647 | config LOCKDEP | 647 | config LOCKDEP |
648 | bool | 648 | bool |
649 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 649 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
650 | select STACKTRACE | 650 | select STACKTRACE |
651 | select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE | 651 | select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE |
652 | select KALLSYMS | 652 | select KALLSYMS |
653 | select KALLSYMS_ALL | 653 | select KALLSYMS_ALL |
654 | 654 | ||
655 | config LOCK_STAT | 655 | config LOCK_STAT |
656 | bool "Lock usage statistics" | 656 | bool "Lock usage statistics" |
657 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 657 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
658 | select LOCKDEP | 658 | select LOCKDEP |
659 | select DEBUG_SPINLOCK | 659 | select DEBUG_SPINLOCK |
660 | select DEBUG_MUTEXES | 660 | select DEBUG_MUTEXES |
661 | select DEBUG_LOCK_ALLOC | 661 | select DEBUG_LOCK_ALLOC |
662 | default n | 662 | default n |
663 | help | 663 | help |
664 | This feature enables tracking lock contention points | 664 | This feature enables tracking lock contention points |
665 | 665 | ||
666 | For more details, see Documentation/lockstat.txt | 666 | For more details, see Documentation/lockstat.txt |
667 | 667 | ||
668 | This also enables lock events required by "perf lock", | 668 | This also enables lock events required by "perf lock", |
669 | subcommand of perf. | 669 | subcommand of perf. |
670 | If you want to use "perf lock", you also need to turn on | 670 | If you want to use "perf lock", you also need to turn on |
671 | CONFIG_EVENT_TRACING. | 671 | CONFIG_EVENT_TRACING. |
672 | 672 | ||
673 | CONFIG_LOCK_STAT defines "contended" and "acquired" lock events. | 673 | CONFIG_LOCK_STAT defines "contended" and "acquired" lock events. |
674 | (CONFIG_LOCKDEP defines "acquire" and "release" events.) | 674 | (CONFIG_LOCKDEP defines "acquire" and "release" events.) |
675 | 675 | ||
676 | config DEBUG_LOCKDEP | 676 | config DEBUG_LOCKDEP |
677 | bool "Lock dependency engine debugging" | 677 | bool "Lock dependency engine debugging" |
678 | depends on DEBUG_KERNEL && LOCKDEP | 678 | depends on DEBUG_KERNEL && LOCKDEP |
679 | help | 679 | help |
680 | If you say Y here, the lock dependency engine will do | 680 | If you say Y here, the lock dependency engine will do |
681 | additional runtime checks to debug itself, at the price | 681 | additional runtime checks to debug itself, at the price |
682 | of more runtime overhead. | 682 | of more runtime overhead. |
683 | 683 | ||
684 | config TRACE_IRQFLAGS | 684 | config TRACE_IRQFLAGS |
685 | bool | 685 | bool |
686 | help | 686 | help |
687 | Enables hooks to interrupt enabling and disabling for | 687 | Enables hooks to interrupt enabling and disabling for |
688 | either tracing or lock debugging. | 688 | either tracing or lock debugging. |
689 | 689 | ||
690 | config DEBUG_ATOMIC_SLEEP | 690 | config DEBUG_ATOMIC_SLEEP |
691 | bool "Sleep inside atomic section checking" | 691 | bool "Sleep inside atomic section checking" |
692 | select PREEMPT_COUNT | 692 | select PREEMPT_COUNT |
693 | depends on DEBUG_KERNEL | 693 | depends on DEBUG_KERNEL |
694 | help | 694 | help |
695 | If you say Y here, various routines which may sleep will become very | 695 | If you say Y here, various routines which may sleep will become very |
696 | noisy if they are called inside atomic sections: when a spinlock is | 696 | noisy if they are called inside atomic sections: when a spinlock is |
697 | held, inside an rcu read side critical section, inside preempt disabled | 697 | held, inside an rcu read side critical section, inside preempt disabled |
698 | sections, inside an interrupt, etc... | 698 | sections, inside an interrupt, etc... |
699 | 699 | ||
700 | config DEBUG_LOCKING_API_SELFTESTS | 700 | config DEBUG_LOCKING_API_SELFTESTS |
701 | bool "Locking API boot-time self-tests" | 701 | bool "Locking API boot-time self-tests" |
702 | depends on DEBUG_KERNEL | 702 | depends on DEBUG_KERNEL |
703 | help | 703 | help |
704 | Say Y here if you want the kernel to run a short self-test during | 704 | Say Y here if you want the kernel to run a short self-test during |
705 | bootup. The self-test checks whether common types of locking bugs | 705 | bootup. The self-test checks whether common types of locking bugs |
706 | are detected by debugging mechanisms or not. (if you disable | 706 | are detected by debugging mechanisms or not. (if you disable |
707 | lock debugging then those bugs wont be detected of course.) | 707 | lock debugging then those bugs wont be detected of course.) |
708 | The following locking APIs are covered: spinlocks, rwlocks, | 708 | The following locking APIs are covered: spinlocks, rwlocks, |
709 | mutexes and rwsems. | 709 | mutexes and rwsems. |
710 | 710 | ||
711 | config STACKTRACE | 711 | config STACKTRACE |
712 | bool | 712 | bool |
713 | depends on STACKTRACE_SUPPORT | 713 | depends on STACKTRACE_SUPPORT |
714 | 714 | ||
715 | config DEBUG_STACK_USAGE | 715 | config DEBUG_STACK_USAGE |
716 | bool "Stack utilization instrumentation" | 716 | bool "Stack utilization instrumentation" |
717 | depends on DEBUG_KERNEL && !IA64 && !PARISC | 717 | depends on DEBUG_KERNEL && !IA64 && !PARISC |
718 | help | 718 | help |
719 | Enables the display of the minimum amount of free stack which each | 719 | Enables the display of the minimum amount of free stack which each |
720 | task has ever had available in the sysrq-T and sysrq-P debug output. | 720 | task has ever had available in the sysrq-T and sysrq-P debug output. |
721 | 721 | ||
722 | This option will slow down process creation somewhat. | 722 | This option will slow down process creation somewhat. |
723 | 723 | ||
724 | config DEBUG_KOBJECT | 724 | config DEBUG_KOBJECT |
725 | bool "kobject debugging" | 725 | bool "kobject debugging" |
726 | depends on DEBUG_KERNEL | 726 | depends on DEBUG_KERNEL |
727 | help | 727 | help |
728 | If you say Y here, some extra kobject debugging messages will be sent | 728 | If you say Y here, some extra kobject debugging messages will be sent |
729 | to the syslog. | 729 | to the syslog. |
730 | 730 | ||
731 | config DEBUG_HIGHMEM | 731 | config DEBUG_HIGHMEM |
732 | bool "Highmem debugging" | 732 | bool "Highmem debugging" |
733 | depends on DEBUG_KERNEL && HIGHMEM | 733 | depends on DEBUG_KERNEL && HIGHMEM |
734 | help | 734 | help |
735 | This options enables addition error checking for high memory systems. | 735 | This options enables addition error checking for high memory systems. |
736 | Disable for production systems. | 736 | Disable for production systems. |
737 | 737 | ||
738 | config DEBUG_BUGVERBOSE | 738 | config DEBUG_BUGVERBOSE |
739 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT | 739 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT |
740 | depends on BUG | 740 | depends on BUG |
741 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ | 741 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ |
742 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || TILE | 742 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || TILE |
743 | default y | 743 | default y |
744 | help | 744 | help |
745 | Say Y here to make BUG() panics output the file name and line number | 745 | Say Y here to make BUG() panics output the file name and line number |
746 | of the BUG call as well as the EIP and oops trace. This aids | 746 | of the BUG call as well as the EIP and oops trace. This aids |
747 | debugging but costs about 70-100K of memory. | 747 | debugging but costs about 70-100K of memory. |
748 | 748 | ||
749 | config DEBUG_INFO | 749 | config DEBUG_INFO |
750 | bool "Compile the kernel with debug info" | 750 | bool "Compile the kernel with debug info" |
751 | depends on DEBUG_KERNEL | 751 | depends on DEBUG_KERNEL |
752 | help | 752 | help |
753 | If you say Y here the resulting kernel image will include | 753 | If you say Y here the resulting kernel image will include |
754 | debugging info resulting in a larger kernel image. | 754 | debugging info resulting in a larger kernel image. |
755 | This adds debug symbols to the kernel and modules (gcc -g), and | 755 | This adds debug symbols to the kernel and modules (gcc -g), and |
756 | is needed if you intend to use kernel crashdump or binary object | 756 | is needed if you intend to use kernel crashdump or binary object |
757 | tools like crash, kgdb, LKCD, gdb, etc on the kernel. | 757 | tools like crash, kgdb, LKCD, gdb, etc on the kernel. |
758 | Say Y here only if you plan to debug the kernel. | 758 | Say Y here only if you plan to debug the kernel. |
759 | 759 | ||
760 | If unsure, say N. | 760 | If unsure, say N. |
761 | 761 | ||
762 | config DEBUG_INFO_REDUCED | 762 | config DEBUG_INFO_REDUCED |
763 | bool "Reduce debugging information" | 763 | bool "Reduce debugging information" |
764 | depends on DEBUG_INFO | 764 | depends on DEBUG_INFO |
765 | help | 765 | help |
766 | If you say Y here gcc is instructed to generate less debugging | 766 | If you say Y here gcc is instructed to generate less debugging |
767 | information for structure types. This means that tools that | 767 | information for structure types. This means that tools that |
768 | need full debugging information (like kgdb or systemtap) won't | 768 | need full debugging information (like kgdb or systemtap) won't |
769 | be happy. But if you merely need debugging information to | 769 | be happy. But if you merely need debugging information to |
770 | resolve line numbers there is no loss. Advantage is that | 770 | resolve line numbers there is no loss. Advantage is that |
771 | build directory object sizes shrink dramatically over a full | 771 | build directory object sizes shrink dramatically over a full |
772 | DEBUG_INFO build and compile times are reduced too. | 772 | DEBUG_INFO build and compile times are reduced too. |
773 | Only works with newer gcc versions. | 773 | Only works with newer gcc versions. |
774 | 774 | ||
775 | config DEBUG_VM | 775 | config DEBUG_VM |
776 | bool "Debug VM" | 776 | bool "Debug VM" |
777 | depends on DEBUG_KERNEL | 777 | depends on DEBUG_KERNEL |
778 | help | 778 | help |
779 | Enable this to turn on extended checks in the virtual-memory system | 779 | Enable this to turn on extended checks in the virtual-memory system |
780 | that may impact performance. | 780 | that may impact performance. |
781 | 781 | ||
782 | If unsure, say N. | 782 | If unsure, say N. |
783 | 783 | ||
784 | config DEBUG_VIRTUAL | 784 | config DEBUG_VIRTUAL |
785 | bool "Debug VM translations" | 785 | bool "Debug VM translations" |
786 | depends on DEBUG_KERNEL && X86 | 786 | depends on DEBUG_KERNEL && X86 |
787 | help | 787 | help |
788 | Enable some costly sanity checks in virtual to page code. This can | 788 | Enable some costly sanity checks in virtual to page code. This can |
789 | catch mistakes with virt_to_page() and friends. | 789 | catch mistakes with virt_to_page() and friends. |
790 | 790 | ||
791 | If unsure, say N. | 791 | If unsure, say N. |
792 | 792 | ||
793 | config DEBUG_NOMMU_REGIONS | 793 | config DEBUG_NOMMU_REGIONS |
794 | bool "Debug the global anon/private NOMMU mapping region tree" | 794 | bool "Debug the global anon/private NOMMU mapping region tree" |
795 | depends on DEBUG_KERNEL && !MMU | 795 | depends on DEBUG_KERNEL && !MMU |
796 | help | 796 | help |
797 | This option causes the global tree of anonymous and private mapping | 797 | This option causes the global tree of anonymous and private mapping |
798 | regions to be regularly checked for invalid topology. | 798 | regions to be regularly checked for invalid topology. |
799 | 799 | ||
800 | config DEBUG_WRITECOUNT | 800 | config DEBUG_WRITECOUNT |
801 | bool "Debug filesystem writers count" | 801 | bool "Debug filesystem writers count" |
802 | depends on DEBUG_KERNEL | 802 | depends on DEBUG_KERNEL |
803 | help | 803 | help |
804 | Enable this to catch wrong use of the writers count in struct | 804 | Enable this to catch wrong use of the writers count in struct |
805 | vfsmount. This will increase the size of each file struct by | 805 | vfsmount. This will increase the size of each file struct by |
806 | 32 bits. | 806 | 32 bits. |
807 | 807 | ||
808 | If unsure, say N. | 808 | If unsure, say N. |
809 | 809 | ||
810 | config DEBUG_MEMORY_INIT | 810 | config DEBUG_MEMORY_INIT |
811 | bool "Debug memory initialisation" if EXPERT | 811 | bool "Debug memory initialisation" if EXPERT |
812 | default !EXPERT | 812 | default !EXPERT |
813 | help | 813 | help |
814 | Enable this for additional checks during memory initialisation. | 814 | Enable this for additional checks during memory initialisation. |
815 | The sanity checks verify aspects of the VM such as the memory model | 815 | The sanity checks verify aspects of the VM such as the memory model |
816 | and other information provided by the architecture. Verbose | 816 | and other information provided by the architecture. Verbose |
817 | information will be printed at KERN_DEBUG loglevel depending | 817 | information will be printed at KERN_DEBUG loglevel depending |
818 | on the mminit_loglevel= command-line option. | 818 | on the mminit_loglevel= command-line option. |
819 | 819 | ||
820 | If unsure, say Y | 820 | If unsure, say Y |
821 | 821 | ||
822 | config DEBUG_LIST | 822 | config DEBUG_LIST |
823 | bool "Debug linked list manipulation" | 823 | bool "Debug linked list manipulation" |
824 | depends on DEBUG_KERNEL | 824 | depends on DEBUG_KERNEL |
825 | help | 825 | help |
826 | Enable this to turn on extended checks in the linked-list | 826 | Enable this to turn on extended checks in the linked-list |
827 | walking routines. | 827 | walking routines. |
828 | 828 | ||
829 | If unsure, say N. | 829 | If unsure, say N. |
830 | 830 | ||
831 | config TEST_LIST_SORT | 831 | config TEST_LIST_SORT |
832 | bool "Linked list sorting test" | 832 | bool "Linked list sorting test" |
833 | depends on DEBUG_KERNEL | 833 | depends on DEBUG_KERNEL |
834 | help | 834 | help |
835 | Enable this to turn on 'list_sort()' function test. This test is | 835 | Enable this to turn on 'list_sort()' function test. This test is |
836 | executed only once during system boot, so affects only boot time. | 836 | executed only once during system boot, so affects only boot time. |
837 | 837 | ||
838 | If unsure, say N. | 838 | If unsure, say N. |
839 | 839 | ||
840 | config DEBUG_SG | 840 | config DEBUG_SG |
841 | bool "Debug SG table operations" | 841 | bool "Debug SG table operations" |
842 | depends on DEBUG_KERNEL | 842 | depends on DEBUG_KERNEL |
843 | help | 843 | help |
844 | Enable this to turn on checks on scatter-gather tables. This can | 844 | Enable this to turn on checks on scatter-gather tables. This can |
845 | help find problems with drivers that do not properly initialize | 845 | help find problems with drivers that do not properly initialize |
846 | their sg tables. | 846 | their sg tables. |
847 | 847 | ||
848 | If unsure, say N. | 848 | If unsure, say N. |
849 | 849 | ||
850 | config DEBUG_NOTIFIERS | 850 | config DEBUG_NOTIFIERS |
851 | bool "Debug notifier call chains" | 851 | bool "Debug notifier call chains" |
852 | depends on DEBUG_KERNEL | 852 | depends on DEBUG_KERNEL |
853 | help | 853 | help |
854 | Enable this to turn on sanity checking for notifier call chains. | 854 | Enable this to turn on sanity checking for notifier call chains. |
855 | This is most useful for kernel developers to make sure that | 855 | This is most useful for kernel developers to make sure that |
856 | modules properly unregister themselves from notifier chains. | 856 | modules properly unregister themselves from notifier chains. |
857 | This is a relatively cheap check but if you care about maximum | 857 | This is a relatively cheap check but if you care about maximum |
858 | performance, say N. | 858 | performance, say N. |
859 | 859 | ||
860 | config DEBUG_CREDENTIALS | 860 | config DEBUG_CREDENTIALS |
861 | bool "Debug credential management" | 861 | bool "Debug credential management" |
862 | depends on DEBUG_KERNEL | 862 | depends on DEBUG_KERNEL |
863 | help | 863 | help |
864 | Enable this to turn on some debug checking for credential | 864 | Enable this to turn on some debug checking for credential |
865 | management. The additional code keeps track of the number of | 865 | management. The additional code keeps track of the number of |
866 | pointers from task_structs to any given cred struct, and checks to | 866 | pointers from task_structs to any given cred struct, and checks to |
867 | see that this number never exceeds the usage count of the cred | 867 | see that this number never exceeds the usage count of the cred |
868 | struct. | 868 | struct. |
869 | 869 | ||
870 | Furthermore, if SELinux is enabled, this also checks that the | 870 | Furthermore, if SELinux is enabled, this also checks that the |
871 | security pointer in the cred struct is never seen to be invalid. | 871 | security pointer in the cred struct is never seen to be invalid. |
872 | 872 | ||
873 | If unsure, say N. | 873 | If unsure, say N. |
874 | 874 | ||
875 | # | 875 | # |
876 | # Select this config option from the architecture Kconfig, if it | 876 | # Select this config option from the architecture Kconfig, if it |
877 | # is preferred to always offer frame pointers as a config | 877 | # is preferred to always offer frame pointers as a config |
878 | # option on the architecture (regardless of KERNEL_DEBUG): | 878 | # option on the architecture (regardless of KERNEL_DEBUG): |
879 | # | 879 | # |
880 | config ARCH_WANT_FRAME_POINTERS | 880 | config ARCH_WANT_FRAME_POINTERS |
881 | bool | 881 | bool |
882 | help | 882 | help |
883 | 883 | ||
884 | config FRAME_POINTER | 884 | config FRAME_POINTER |
885 | bool "Compile the kernel with frame pointers" | 885 | bool "Compile the kernel with frame pointers" |
886 | depends on DEBUG_KERNEL && \ | 886 | depends on DEBUG_KERNEL && \ |
887 | (CRIS || M68K || FRV || UML || \ | 887 | (CRIS || M68K || FRV || UML || \ |
888 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ | 888 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ |
889 | ARCH_WANT_FRAME_POINTERS | 889 | ARCH_WANT_FRAME_POINTERS |
890 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS | 890 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS |
891 | help | 891 | help |
892 | If you say Y here the resulting kernel image will be slightly | 892 | If you say Y here the resulting kernel image will be slightly |
893 | larger and slower, but it gives very useful debugging information | 893 | larger and slower, but it gives very useful debugging information |
894 | in case of kernel bugs. (precise oopses/stacktraces/warnings) | 894 | in case of kernel bugs. (precise oopses/stacktraces/warnings) |
895 | 895 | ||
896 | config BOOT_PRINTK_DELAY | 896 | config BOOT_PRINTK_DELAY |
897 | bool "Delay each boot printk message by N milliseconds" | 897 | bool "Delay each boot printk message by N milliseconds" |
898 | depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY | 898 | depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY |
899 | help | 899 | help |
900 | This build option allows you to read kernel boot messages | 900 | This build option allows you to read kernel boot messages |
901 | by inserting a short delay after each one. The delay is | 901 | by inserting a short delay after each one. The delay is |
902 | specified in milliseconds on the kernel command line, | 902 | specified in milliseconds on the kernel command line, |
903 | using "boot_delay=N". | 903 | using "boot_delay=N". |
904 | 904 | ||
905 | It is likely that you would also need to use "lpj=M" to preset | 905 | It is likely that you would also need to use "lpj=M" to preset |
906 | the "loops per jiffie" value. | 906 | the "loops per jiffie" value. |
907 | See a previous boot log for the "lpj" value to use for your | 907 | See a previous boot log for the "lpj" value to use for your |
908 | system, and then set "lpj=M" before setting "boot_delay=N". | 908 | system, and then set "lpj=M" before setting "boot_delay=N". |
909 | NOTE: Using this option may adversely affect SMP systems. | 909 | NOTE: Using this option may adversely affect SMP systems. |
910 | I.e., processors other than the first one may not boot up. | 910 | I.e., processors other than the first one may not boot up. |
911 | BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect | 911 | BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect |
912 | what it believes to be lockup conditions. | 912 | what it believes to be lockup conditions. |
913 | 913 | ||
914 | config RCU_TORTURE_TEST | 914 | config RCU_TORTURE_TEST |
915 | tristate "torture tests for RCU" | 915 | tristate "torture tests for RCU" |
916 | depends on DEBUG_KERNEL | 916 | depends on DEBUG_KERNEL |
917 | default n | 917 | default n |
918 | help | 918 | help |
919 | This option provides a kernel module that runs torture tests | 919 | This option provides a kernel module that runs torture tests |
920 | on the RCU infrastructure. The kernel module may be built | 920 | on the RCU infrastructure. The kernel module may be built |
921 | after the fact on the running kernel to be tested, if desired. | 921 | after the fact on the running kernel to be tested, if desired. |
922 | 922 | ||
923 | Say Y here if you want RCU torture tests to be built into | 923 | Say Y here if you want RCU torture tests to be built into |
924 | the kernel. | 924 | the kernel. |
925 | Say M if you want the RCU torture tests to build as a module. | 925 | Say M if you want the RCU torture tests to build as a module. |
926 | Say N if you are unsure. | 926 | Say N if you are unsure. |
927 | 927 | ||
928 | config RCU_TORTURE_TEST_RUNNABLE | 928 | config RCU_TORTURE_TEST_RUNNABLE |
929 | bool "torture tests for RCU runnable by default" | 929 | bool "torture tests for RCU runnable by default" |
930 | depends on RCU_TORTURE_TEST = y | 930 | depends on RCU_TORTURE_TEST = y |
931 | default n | 931 | default n |
932 | help | 932 | help |
933 | This option provides a way to build the RCU torture tests | 933 | This option provides a way to build the RCU torture tests |
934 | directly into the kernel without them starting up at boot | 934 | directly into the kernel without them starting up at boot |
935 | time. You can use /proc/sys/kernel/rcutorture_runnable | 935 | time. You can use /proc/sys/kernel/rcutorture_runnable |
936 | to manually override this setting. This /proc file is | 936 | to manually override this setting. This /proc file is |
937 | available only when the RCU torture tests have been built | 937 | available only when the RCU torture tests have been built |
938 | into the kernel. | 938 | into the kernel. |
939 | 939 | ||
940 | Say Y here if you want the RCU torture tests to start during | 940 | Say Y here if you want the RCU torture tests to start during |
941 | boot (you probably don't). | 941 | boot (you probably don't). |
942 | Say N here if you want the RCU torture tests to start only | 942 | Say N here if you want the RCU torture tests to start only |
943 | after being manually enabled via /proc. | 943 | after being manually enabled via /proc. |
944 | 944 | ||
945 | config RCU_CPU_STALL_TIMEOUT | 945 | config RCU_CPU_STALL_TIMEOUT |
946 | int "RCU CPU stall timeout in seconds" | 946 | int "RCU CPU stall timeout in seconds" |
947 | depends on TREE_RCU || TREE_PREEMPT_RCU | 947 | depends on TREE_RCU || TREE_PREEMPT_RCU |
948 | range 3 300 | 948 | range 3 300 |
949 | default 60 | 949 | default 60 |
950 | help | 950 | help |
951 | If a given RCU grace period extends more than the specified | 951 | If a given RCU grace period extends more than the specified |
952 | number of seconds, a CPU stall warning is printed. If the | 952 | number of seconds, a CPU stall warning is printed. If the |
953 | RCU grace period persists, additional CPU stall warnings are | 953 | RCU grace period persists, additional CPU stall warnings are |
954 | printed at more widely spaced intervals. | 954 | printed at more widely spaced intervals. |
955 | 955 | ||
956 | config RCU_CPU_STALL_VERBOSE | 956 | config RCU_CPU_STALL_VERBOSE |
957 | bool "Print additional per-task information for RCU_CPU_STALL_DETECTOR" | 957 | bool "Print additional per-task information for RCU_CPU_STALL_DETECTOR" |
958 | depends on TREE_PREEMPT_RCU | 958 | depends on TREE_PREEMPT_RCU |
959 | default y | 959 | default y |
960 | help | 960 | help |
961 | This option causes RCU to printk detailed per-task information | 961 | This option causes RCU to printk detailed per-task information |
962 | for any tasks that are stalling the current RCU grace period. | 962 | for any tasks that are stalling the current RCU grace period. |
963 | 963 | ||
964 | Say N if you are unsure. | 964 | Say N if you are unsure. |
965 | 965 | ||
966 | Say Y if you want to enable such checks. | 966 | Say Y if you want to enable such checks. |
967 | 967 | ||
968 | config RCU_CPU_STALL_INFO | 968 | config RCU_CPU_STALL_INFO |
969 | bool "Print additional diagnostics on RCU CPU stall" | 969 | bool "Print additional diagnostics on RCU CPU stall" |
970 | depends on (TREE_RCU || TREE_PREEMPT_RCU) && DEBUG_KERNEL | 970 | depends on (TREE_RCU || TREE_PREEMPT_RCU) && DEBUG_KERNEL |
971 | default n | 971 | default n |
972 | help | 972 | help |
973 | For each stalled CPU that is aware of the current RCU grace | 973 | For each stalled CPU that is aware of the current RCU grace |
974 | period, print out additional per-CPU diagnostic information | 974 | period, print out additional per-CPU diagnostic information |
975 | regarding scheduling-clock ticks, idle state, and, | 975 | regarding scheduling-clock ticks, idle state, and, |
976 | for RCU_FAST_NO_HZ kernels, idle-entry state. | 976 | for RCU_FAST_NO_HZ kernels, idle-entry state. |
977 | 977 | ||
978 | Say N if you are unsure. | 978 | Say N if you are unsure. |
979 | 979 | ||
980 | Say Y if you want to enable such diagnostics. | 980 | Say Y if you want to enable such diagnostics. |
981 | 981 | ||
982 | config RCU_TRACE | 982 | config RCU_TRACE |
983 | bool "Enable tracing for RCU" | 983 | bool "Enable tracing for RCU" |
984 | depends on DEBUG_KERNEL | 984 | depends on DEBUG_KERNEL |
985 | help | 985 | help |
986 | This option provides tracing in RCU which presents stats | 986 | This option provides tracing in RCU which presents stats |
987 | in debugfs for debugging RCU implementation. | 987 | in debugfs for debugging RCU implementation. |
988 | 988 | ||
989 | Say Y here if you want to enable RCU tracing | 989 | Say Y here if you want to enable RCU tracing |
990 | Say N if you are unsure. | 990 | Say N if you are unsure. |
991 | 991 | ||
992 | config KPROBES_SANITY_TEST | 992 | config KPROBES_SANITY_TEST |
993 | bool "Kprobes sanity tests" | 993 | bool "Kprobes sanity tests" |
994 | depends on DEBUG_KERNEL | 994 | depends on DEBUG_KERNEL |
995 | depends on KPROBES | 995 | depends on KPROBES |
996 | default n | 996 | default n |
997 | help | 997 | help |
998 | This option provides for testing basic kprobes functionality on | 998 | This option provides for testing basic kprobes functionality on |
999 | boot. A sample kprobe, jprobe and kretprobe are inserted and | 999 | boot. A sample kprobe, jprobe and kretprobe are inserted and |
1000 | verified for functionality. | 1000 | verified for functionality. |
1001 | 1001 | ||
1002 | Say N if you are unsure. | 1002 | Say N if you are unsure. |
1003 | 1003 | ||
1004 | config BACKTRACE_SELF_TEST | 1004 | config BACKTRACE_SELF_TEST |
1005 | tristate "Self test for the backtrace code" | 1005 | tristate "Self test for the backtrace code" |
1006 | depends on DEBUG_KERNEL | 1006 | depends on DEBUG_KERNEL |
1007 | default n | 1007 | default n |
1008 | help | 1008 | help |
1009 | This option provides a kernel module that can be used to test | 1009 | This option provides a kernel module that can be used to test |
1010 | the kernel stack backtrace code. This option is not useful | 1010 | the kernel stack backtrace code. This option is not useful |
1011 | for distributions or general kernels, but only for kernel | 1011 | for distributions or general kernels, but only for kernel |
1012 | developers working on architecture code. | 1012 | developers working on architecture code. |
1013 | 1013 | ||
1014 | Note that if you want to also test saved backtraces, you will | 1014 | Note that if you want to also test saved backtraces, you will |
1015 | have to enable STACKTRACE as well. | 1015 | have to enable STACKTRACE as well. |
1016 | 1016 | ||
1017 | Say N if you are unsure. | 1017 | Say N if you are unsure. |
1018 | 1018 | ||
1019 | config DEBUG_BLOCK_EXT_DEVT | 1019 | config DEBUG_BLOCK_EXT_DEVT |
1020 | bool "Force extended block device numbers and spread them" | 1020 | bool "Force extended block device numbers and spread them" |
1021 | depends on DEBUG_KERNEL | 1021 | depends on DEBUG_KERNEL |
1022 | depends on BLOCK | 1022 | depends on BLOCK |
1023 | default n | 1023 | default n |
1024 | help | 1024 | help |
1025 | BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON | 1025 | BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON |
1026 | SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT | 1026 | SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT |
1027 | YOU ARE DOING. Distros, please enable this and fix whatever | 1027 | YOU ARE DOING. Distros, please enable this and fix whatever |
1028 | is broken. | 1028 | is broken. |
1029 | 1029 | ||
1030 | Conventionally, block device numbers are allocated from | 1030 | Conventionally, block device numbers are allocated from |
1031 | predetermined contiguous area. However, extended block area | 1031 | predetermined contiguous area. However, extended block area |
1032 | may introduce non-contiguous block device numbers. This | 1032 | may introduce non-contiguous block device numbers. This |
1033 | option forces most block device numbers to be allocated from | 1033 | option forces most block device numbers to be allocated from |
1034 | the extended space and spreads them to discover kernel or | 1034 | the extended space and spreads them to discover kernel or |
1035 | userland code paths which assume predetermined contiguous | 1035 | userland code paths which assume predetermined contiguous |
1036 | device number allocation. | 1036 | device number allocation. |
1037 | 1037 | ||
1038 | Note that turning on this debug option shuffles all the | 1038 | Note that turning on this debug option shuffles all the |
1039 | device numbers for all IDE and SCSI devices including libata | 1039 | device numbers for all IDE and SCSI devices including libata |
1040 | ones, so root partition specified using device number | 1040 | ones, so root partition specified using device number |
1041 | directly (via rdev or root=MAJ:MIN) won't work anymore. | 1041 | directly (via rdev or root=MAJ:MIN) won't work anymore. |
1042 | Textual device names (root=/dev/sdXn) will continue to work. | 1042 | Textual device names (root=/dev/sdXn) will continue to work. |
1043 | 1043 | ||
1044 | Say N if you are unsure. | 1044 | Say N if you are unsure. |
1045 | 1045 | ||
1046 | config DEBUG_FORCE_WEAK_PER_CPU | 1046 | config DEBUG_FORCE_WEAK_PER_CPU |
1047 | bool "Force weak per-cpu definitions" | 1047 | bool "Force weak per-cpu definitions" |
1048 | depends on DEBUG_KERNEL | 1048 | depends on DEBUG_KERNEL |
1049 | help | 1049 | help |
1050 | s390 and alpha require percpu variables in modules to be | 1050 | s390 and alpha require percpu variables in modules to be |
1051 | defined weak to work around addressing range issue which | 1051 | defined weak to work around addressing range issue which |
1052 | puts the following two restrictions on percpu variable | 1052 | puts the following two restrictions on percpu variable |
1053 | definitions. | 1053 | definitions. |
1054 | 1054 | ||
1055 | 1. percpu symbols must be unique whether static or not | 1055 | 1. percpu symbols must be unique whether static or not |
1056 | 2. percpu variables can't be defined inside a function | 1056 | 2. percpu variables can't be defined inside a function |
1057 | 1057 | ||
1058 | To ensure that generic code follows the above rules, this | 1058 | To ensure that generic code follows the above rules, this |
1059 | option forces all percpu variables to be defined as weak. | 1059 | option forces all percpu variables to be defined as weak. |
1060 | 1060 | ||
1061 | config DEBUG_PER_CPU_MAPS | 1061 | config DEBUG_PER_CPU_MAPS |
1062 | bool "Debug access to per_cpu maps" | 1062 | bool "Debug access to per_cpu maps" |
1063 | depends on DEBUG_KERNEL | 1063 | depends on DEBUG_KERNEL |
1064 | depends on SMP | 1064 | depends on SMP |
1065 | help | 1065 | help |
1066 | Say Y to verify that the per_cpu map being accessed has | 1066 | Say Y to verify that the per_cpu map being accessed has |
1067 | been set up. This adds a fair amount of code to kernel memory | 1067 | been set up. This adds a fair amount of code to kernel memory |
1068 | and decreases performance. | 1068 | and decreases performance. |
1069 | 1069 | ||
1070 | Say N if unsure. | 1070 | Say N if unsure. |
1071 | 1071 | ||
1072 | config LKDTM | 1072 | config LKDTM |
1073 | tristate "Linux Kernel Dump Test Tool Module" | 1073 | tristate "Linux Kernel Dump Test Tool Module" |
1074 | depends on DEBUG_FS | 1074 | depends on DEBUG_FS |
1075 | depends on BLOCK | 1075 | depends on BLOCK |
1076 | default n | 1076 | default n |
1077 | help | 1077 | help |
1078 | This module enables testing of the different dumping mechanisms by | 1078 | This module enables testing of the different dumping mechanisms by |
1079 | inducing system failures at predefined crash points. | 1079 | inducing system failures at predefined crash points. |
1080 | If you don't need it: say N | 1080 | If you don't need it: say N |
1081 | Choose M here to compile this code as a module. The module will be | 1081 | Choose M here to compile this code as a module. The module will be |
1082 | called lkdtm. | 1082 | called lkdtm. |
1083 | 1083 | ||
1084 | Documentation on how to use the module can be found in | 1084 | Documentation on how to use the module can be found in |
1085 | Documentation/fault-injection/provoke-crashes.txt | 1085 | Documentation/fault-injection/provoke-crashes.txt |
1086 | 1086 | ||
1087 | config NOTIFIER_ERROR_INJECTION | 1087 | config NOTIFIER_ERROR_INJECTION |
1088 | tristate "Notifier error injection" | 1088 | tristate "Notifier error injection" |
1089 | depends on DEBUG_KERNEL | 1089 | depends on DEBUG_KERNEL |
1090 | select DEBUG_FS | 1090 | select DEBUG_FS |
1091 | help | 1091 | help |
1092 | This option provides the ability to inject artifical errors to | 1092 | This option provides the ability to inject artifical errors to |
1093 | specified notifier chain callbacks. It is useful to test the error | 1093 | specified notifier chain callbacks. It is useful to test the error |
1094 | handling of notifier call chain failures. | 1094 | handling of notifier call chain failures. |
1095 | 1095 | ||
1096 | Say N if unsure. | 1096 | Say N if unsure. |
1097 | 1097 | ||
1098 | config CPU_NOTIFIER_ERROR_INJECT | 1098 | config CPU_NOTIFIER_ERROR_INJECT |
1099 | tristate "CPU notifier error injection module" | 1099 | tristate "CPU notifier error injection module" |
1100 | depends on HOTPLUG_CPU && NOTIFIER_ERROR_INJECTION | 1100 | depends on HOTPLUG_CPU && NOTIFIER_ERROR_INJECTION |
1101 | help | 1101 | help |
1102 | This option provides a kernel module that can be used to test | 1102 | This option provides a kernel module that can be used to test |
1103 | the error handling of the cpu notifiers by injecting artifical | 1103 | the error handling of the cpu notifiers by injecting artifical |
1104 | errors to CPU notifier chain callbacks. It is controlled through | 1104 | errors to CPU notifier chain callbacks. It is controlled through |
1105 | debugfs interface under /sys/kernel/debug/notifier-error-inject/cpu | 1105 | debugfs interface under /sys/kernel/debug/notifier-error-inject/cpu |
1106 | 1106 | ||
1107 | If the notifier call chain should be failed with some events | 1107 | If the notifier call chain should be failed with some events |
1108 | notified, write the error code to "actions/<notifier event>/error". | 1108 | notified, write the error code to "actions/<notifier event>/error". |
1109 | 1109 | ||
1110 | Example: Inject CPU offline error (-1 == -EPERM) | 1110 | Example: Inject CPU offline error (-1 == -EPERM) |
1111 | 1111 | ||
1112 | # cd /sys/kernel/debug/notifier-error-inject/cpu | 1112 | # cd /sys/kernel/debug/notifier-error-inject/cpu |
1113 | # echo -1 > actions/CPU_DOWN_PREPARE/error | 1113 | # echo -1 > actions/CPU_DOWN_PREPARE/error |
1114 | # echo 0 > /sys/devices/system/cpu/cpu1/online | 1114 | # echo 0 > /sys/devices/system/cpu/cpu1/online |
1115 | bash: echo: write error: Operation not permitted | 1115 | bash: echo: write error: Operation not permitted |
1116 | 1116 | ||
1117 | To compile this code as a module, choose M here: the module will | 1117 | To compile this code as a module, choose M here: the module will |
1118 | be called cpu-notifier-error-inject. | 1118 | be called cpu-notifier-error-inject. |
1119 | 1119 | ||
1120 | If unsure, say N. | 1120 | If unsure, say N. |
1121 | 1121 | ||
1122 | config PM_NOTIFIER_ERROR_INJECT | 1122 | config PM_NOTIFIER_ERROR_INJECT |
1123 | tristate "PM notifier error injection module" | 1123 | tristate "PM notifier error injection module" |
1124 | depends on PM && NOTIFIER_ERROR_INJECTION | 1124 | depends on PM && NOTIFIER_ERROR_INJECTION |
1125 | default m if PM_DEBUG | 1125 | default m if PM_DEBUG |
1126 | help | 1126 | help |
1127 | This option provides the ability to inject artifical errors to | 1127 | This option provides the ability to inject artifical errors to |
1128 | PM notifier chain callbacks. It is controlled through debugfs | 1128 | PM notifier chain callbacks. It is controlled through debugfs |
1129 | interface /sys/kernel/debug/notifier-error-inject/pm | 1129 | interface /sys/kernel/debug/notifier-error-inject/pm |
1130 | 1130 | ||
1131 | If the notifier call chain should be failed with some events | 1131 | If the notifier call chain should be failed with some events |
1132 | notified, write the error code to "actions/<notifier event>/error". | 1132 | notified, write the error code to "actions/<notifier event>/error". |
1133 | 1133 | ||
1134 | Example: Inject PM suspend error (-12 = -ENOMEM) | 1134 | Example: Inject PM suspend error (-12 = -ENOMEM) |
1135 | 1135 | ||
1136 | # cd /sys/kernel/debug/notifier-error-inject/pm/ | 1136 | # cd /sys/kernel/debug/notifier-error-inject/pm/ |
1137 | # echo -12 > actions/PM_SUSPEND_PREPARE/error | 1137 | # echo -12 > actions/PM_SUSPEND_PREPARE/error |
1138 | # echo mem > /sys/power/state | 1138 | # echo mem > /sys/power/state |
1139 | bash: echo: write error: Cannot allocate memory | 1139 | bash: echo: write error: Cannot allocate memory |
1140 | 1140 | ||
1141 | To compile this code as a module, choose M here: the module will | 1141 | To compile this code as a module, choose M here: the module will |
1142 | be called pm-notifier-error-inject. | 1142 | be called pm-notifier-error-inject. |
1143 | 1143 | ||
1144 | If unsure, say N. | 1144 | If unsure, say N. |
1145 | 1145 | ||
1146 | config MEMORY_NOTIFIER_ERROR_INJECT | ||
1147 | tristate "Memory hotplug notifier error injection module" | ||
1148 | depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION | ||
1149 | help | ||
1150 | This option provides the ability to inject artifical errors to | ||
1151 | memory hotplug notifier chain callbacks. It is controlled through | ||
1152 | debugfs interface under /sys/kernel/debug/notifier-error-inject/memory | ||
1153 | |||
1154 | If the notifier call chain should be failed with some events | ||
1155 | notified, write the error code to "actions/<notifier event>/error". | ||
1156 | |||
1157 | Example: Inject memory hotplug offline error (-12 == -ENOMEM) | ||
1158 | |||
1159 | # cd /sys/kernel/debug/notifier-error-inject/memory | ||
1160 | # echo -12 > actions/MEM_GOING_OFFLINE/error | ||
1161 | # echo offline > /sys/devices/system/memory/memoryXXX/state | ||
1162 | bash: echo: write error: Cannot allocate memory | ||
1163 | |||
1164 | To compile this code as a module, choose M here: the module will | ||
1165 | be called pSeries-reconfig-notifier-error-inject. | ||
1166 | |||
1167 | If unsure, say N. | ||
1168 | |||
1146 | config FAULT_INJECTION | 1169 | config FAULT_INJECTION |
1147 | bool "Fault-injection framework" | 1170 | bool "Fault-injection framework" |
1148 | depends on DEBUG_KERNEL | 1171 | depends on DEBUG_KERNEL |
1149 | help | 1172 | help |
1150 | Provide fault-injection framework. | 1173 | Provide fault-injection framework. |
1151 | For more details, see Documentation/fault-injection/. | 1174 | For more details, see Documentation/fault-injection/. |
1152 | 1175 | ||
1153 | config FAILSLAB | 1176 | config FAILSLAB |
1154 | bool "Fault-injection capability for kmalloc" | 1177 | bool "Fault-injection capability for kmalloc" |
1155 | depends on FAULT_INJECTION | 1178 | depends on FAULT_INJECTION |
1156 | depends on SLAB || SLUB | 1179 | depends on SLAB || SLUB |
1157 | help | 1180 | help |
1158 | Provide fault-injection capability for kmalloc. | 1181 | Provide fault-injection capability for kmalloc. |
1159 | 1182 | ||
1160 | config FAIL_PAGE_ALLOC | 1183 | config FAIL_PAGE_ALLOC |
1161 | bool "Fault-injection capabilitiy for alloc_pages()" | 1184 | bool "Fault-injection capabilitiy for alloc_pages()" |
1162 | depends on FAULT_INJECTION | 1185 | depends on FAULT_INJECTION |
1163 | help | 1186 | help |
1164 | Provide fault-injection capability for alloc_pages(). | 1187 | Provide fault-injection capability for alloc_pages(). |
1165 | 1188 | ||
1166 | config FAIL_MAKE_REQUEST | 1189 | config FAIL_MAKE_REQUEST |
1167 | bool "Fault-injection capability for disk IO" | 1190 | bool "Fault-injection capability for disk IO" |
1168 | depends on FAULT_INJECTION && BLOCK | 1191 | depends on FAULT_INJECTION && BLOCK |
1169 | help | 1192 | help |
1170 | Provide fault-injection capability for disk IO. | 1193 | Provide fault-injection capability for disk IO. |
1171 | 1194 | ||
1172 | config FAIL_IO_TIMEOUT | 1195 | config FAIL_IO_TIMEOUT |
1173 | bool "Fault-injection capability for faking disk interrupts" | 1196 | bool "Fault-injection capability for faking disk interrupts" |
1174 | depends on FAULT_INJECTION && BLOCK | 1197 | depends on FAULT_INJECTION && BLOCK |
1175 | help | 1198 | help |
1176 | Provide fault-injection capability on end IO handling. This | 1199 | Provide fault-injection capability on end IO handling. This |
1177 | will make the block layer "forget" an interrupt as configured, | 1200 | will make the block layer "forget" an interrupt as configured, |
1178 | thus exercising the error handling. | 1201 | thus exercising the error handling. |
1179 | 1202 | ||
1180 | Only works with drivers that use the generic timeout handling, | 1203 | Only works with drivers that use the generic timeout handling, |
1181 | for others it wont do anything. | 1204 | for others it wont do anything. |
1182 | 1205 | ||
1183 | config FAIL_MMC_REQUEST | 1206 | config FAIL_MMC_REQUEST |
1184 | bool "Fault-injection capability for MMC IO" | 1207 | bool "Fault-injection capability for MMC IO" |
1185 | select DEBUG_FS | 1208 | select DEBUG_FS |
1186 | depends on FAULT_INJECTION && MMC | 1209 | depends on FAULT_INJECTION && MMC |
1187 | help | 1210 | help |
1188 | Provide fault-injection capability for MMC IO. | 1211 | Provide fault-injection capability for MMC IO. |
1189 | This will make the mmc core return data errors. This is | 1212 | This will make the mmc core return data errors. This is |
1190 | useful to test the error handling in the mmc block device | 1213 | useful to test the error handling in the mmc block device |
1191 | and to test how the mmc host driver handles retries from | 1214 | and to test how the mmc host driver handles retries from |
1192 | the block device. | 1215 | the block device. |
1193 | 1216 | ||
1194 | config FAULT_INJECTION_DEBUG_FS | 1217 | config FAULT_INJECTION_DEBUG_FS |
1195 | bool "Debugfs entries for fault-injection capabilities" | 1218 | bool "Debugfs entries for fault-injection capabilities" |
1196 | depends on FAULT_INJECTION && SYSFS && DEBUG_FS | 1219 | depends on FAULT_INJECTION && SYSFS && DEBUG_FS |
1197 | help | 1220 | help |
1198 | Enable configuration of fault-injection capabilities via debugfs. | 1221 | Enable configuration of fault-injection capabilities via debugfs. |
1199 | 1222 | ||
1200 | config FAULT_INJECTION_STACKTRACE_FILTER | 1223 | config FAULT_INJECTION_STACKTRACE_FILTER |
1201 | bool "stacktrace filter for fault-injection capabilities" | 1224 | bool "stacktrace filter for fault-injection capabilities" |
1202 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT | 1225 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT |
1203 | depends on !X86_64 | 1226 | depends on !X86_64 |
1204 | select STACKTRACE | 1227 | select STACKTRACE |
1205 | select FRAME_POINTER if !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND | 1228 | select FRAME_POINTER if !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND |
1206 | help | 1229 | help |
1207 | Provide stacktrace filter for fault-injection capabilities | 1230 | Provide stacktrace filter for fault-injection capabilities |
1208 | 1231 | ||
1209 | config LATENCYTOP | 1232 | config LATENCYTOP |
1210 | bool "Latency measuring infrastructure" | 1233 | bool "Latency measuring infrastructure" |
1211 | depends on HAVE_LATENCYTOP_SUPPORT | 1234 | depends on HAVE_LATENCYTOP_SUPPORT |
1212 | depends on DEBUG_KERNEL | 1235 | depends on DEBUG_KERNEL |
1213 | depends on STACKTRACE_SUPPORT | 1236 | depends on STACKTRACE_SUPPORT |
1214 | depends on PROC_FS | 1237 | depends on PROC_FS |
1215 | select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND | 1238 | select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND |
1216 | select KALLSYMS | 1239 | select KALLSYMS |
1217 | select KALLSYMS_ALL | 1240 | select KALLSYMS_ALL |
1218 | select STACKTRACE | 1241 | select STACKTRACE |
1219 | select SCHEDSTATS | 1242 | select SCHEDSTATS |
1220 | select SCHED_DEBUG | 1243 | select SCHED_DEBUG |
1221 | help | 1244 | help |
1222 | Enable this option if you want to use the LatencyTOP tool | 1245 | Enable this option if you want to use the LatencyTOP tool |
1223 | to find out which userspace is blocking on what kernel operations. | 1246 | to find out which userspace is blocking on what kernel operations. |
1224 | 1247 | ||
1225 | source mm/Kconfig.debug | 1248 | source mm/Kconfig.debug |
1226 | source kernel/trace/Kconfig | 1249 | source kernel/trace/Kconfig |
1227 | 1250 | ||
1228 | config PROVIDE_OHCI1394_DMA_INIT | 1251 | config PROVIDE_OHCI1394_DMA_INIT |
1229 | bool "Remote debugging over FireWire early on boot" | 1252 | bool "Remote debugging over FireWire early on boot" |
1230 | depends on PCI && X86 | 1253 | depends on PCI && X86 |
1231 | help | 1254 | help |
1232 | If you want to debug problems which hang or crash the kernel early | 1255 | If you want to debug problems which hang or crash the kernel early |
1233 | on boot and the crashing machine has a FireWire port, you can use | 1256 | on boot and the crashing machine has a FireWire port, you can use |
1234 | this feature to remotely access the memory of the crashed machine | 1257 | this feature to remotely access the memory of the crashed machine |
1235 | over FireWire. This employs remote DMA as part of the OHCI1394 | 1258 | over FireWire. This employs remote DMA as part of the OHCI1394 |
1236 | specification which is now the standard for FireWire controllers. | 1259 | specification which is now the standard for FireWire controllers. |
1237 | 1260 | ||
1238 | With remote DMA, you can monitor the printk buffer remotely using | 1261 | With remote DMA, you can monitor the printk buffer remotely using |
1239 | firescope and access all memory below 4GB using fireproxy from gdb. | 1262 | firescope and access all memory below 4GB using fireproxy from gdb. |
1240 | Even controlling a kernel debugger is possible using remote DMA. | 1263 | Even controlling a kernel debugger is possible using remote DMA. |
1241 | 1264 | ||
1242 | Usage: | 1265 | Usage: |
1243 | 1266 | ||
1244 | If ohci1394_dma=early is used as boot parameter, it will initialize | 1267 | If ohci1394_dma=early is used as boot parameter, it will initialize |
1245 | all OHCI1394 controllers which are found in the PCI config space. | 1268 | all OHCI1394 controllers which are found in the PCI config space. |
1246 | 1269 | ||
1247 | As all changes to the FireWire bus such as enabling and disabling | 1270 | As all changes to the FireWire bus such as enabling and disabling |
1248 | devices cause a bus reset and thereby disable remote DMA for all | 1271 | devices cause a bus reset and thereby disable remote DMA for all |
1249 | devices, be sure to have the cable plugged and FireWire enabled on | 1272 | devices, be sure to have the cable plugged and FireWire enabled on |
1250 | the debugging host before booting the debug target for debugging. | 1273 | the debugging host before booting the debug target for debugging. |
1251 | 1274 | ||
1252 | This code (~1k) is freed after boot. By then, the firewire stack | 1275 | This code (~1k) is freed after boot. By then, the firewire stack |
1253 | in charge of the OHCI-1394 controllers should be used instead. | 1276 | in charge of the OHCI-1394 controllers should be used instead. |
1254 | 1277 | ||
1255 | See Documentation/debugging-via-ohci1394.txt for more information. | 1278 | See Documentation/debugging-via-ohci1394.txt for more information. |
1256 | 1279 | ||
1257 | config FIREWIRE_OHCI_REMOTE_DMA | 1280 | config FIREWIRE_OHCI_REMOTE_DMA |
1258 | bool "Remote debugging over FireWire with firewire-ohci" | 1281 | bool "Remote debugging over FireWire with firewire-ohci" |
1259 | depends on FIREWIRE_OHCI | 1282 | depends on FIREWIRE_OHCI |
1260 | help | 1283 | help |
1261 | This option lets you use the FireWire bus for remote debugging | 1284 | This option lets you use the FireWire bus for remote debugging |
1262 | with help of the firewire-ohci driver. It enables unfiltered | 1285 | with help of the firewire-ohci driver. It enables unfiltered |
1263 | remote DMA in firewire-ohci. | 1286 | remote DMA in firewire-ohci. |
1264 | See Documentation/debugging-via-ohci1394.txt for more information. | 1287 | See Documentation/debugging-via-ohci1394.txt for more information. |
1265 | 1288 | ||
1266 | If unsure, say N. | 1289 | If unsure, say N. |
1267 | 1290 | ||
1268 | config BUILD_DOCSRC | 1291 | config BUILD_DOCSRC |
1269 | bool "Build targets in Documentation/ tree" | 1292 | bool "Build targets in Documentation/ tree" |
1270 | depends on HEADERS_CHECK | 1293 | depends on HEADERS_CHECK |
1271 | help | 1294 | help |
1272 | This option attempts to build objects from the source files in the | 1295 | This option attempts to build objects from the source files in the |
1273 | kernel Documentation/ tree. | 1296 | kernel Documentation/ tree. |
1274 | 1297 | ||
1275 | Say N if you are unsure. | 1298 | Say N if you are unsure. |
1276 | 1299 | ||
1277 | config DYNAMIC_DEBUG | 1300 | config DYNAMIC_DEBUG |
1278 | bool "Enable dynamic printk() support" | 1301 | bool "Enable dynamic printk() support" |
1279 | default n | 1302 | default n |
1280 | depends on PRINTK | 1303 | depends on PRINTK |
1281 | depends on DEBUG_FS | 1304 | depends on DEBUG_FS |
1282 | help | 1305 | help |
1283 | 1306 | ||
1284 | Compiles debug level messages into the kernel, which would not | 1307 | Compiles debug level messages into the kernel, which would not |
1285 | otherwise be available at runtime. These messages can then be | 1308 | otherwise be available at runtime. These messages can then be |
1286 | enabled/disabled based on various levels of scope - per source file, | 1309 | enabled/disabled based on various levels of scope - per source file, |
1287 | function, module, format string, and line number. This mechanism | 1310 | function, module, format string, and line number. This mechanism |
1288 | implicitly compiles in all pr_debug() and dev_dbg() calls, which | 1311 | implicitly compiles in all pr_debug() and dev_dbg() calls, which |
1289 | enlarges the kernel text size by about 2%. | 1312 | enlarges the kernel text size by about 2%. |
1290 | 1313 | ||
1291 | If a source file is compiled with DEBUG flag set, any | 1314 | If a source file is compiled with DEBUG flag set, any |
1292 | pr_debug() calls in it are enabled by default, but can be | 1315 | pr_debug() calls in it are enabled by default, but can be |
1293 | disabled at runtime as below. Note that DEBUG flag is | 1316 | disabled at runtime as below. Note that DEBUG flag is |
1294 | turned on by many CONFIG_*DEBUG* options. | 1317 | turned on by many CONFIG_*DEBUG* options. |
1295 | 1318 | ||
1296 | Usage: | 1319 | Usage: |
1297 | 1320 | ||
1298 | Dynamic debugging is controlled via the 'dynamic_debug/control' file, | 1321 | Dynamic debugging is controlled via the 'dynamic_debug/control' file, |
1299 | which is contained in the 'debugfs' filesystem. Thus, the debugfs | 1322 | which is contained in the 'debugfs' filesystem. Thus, the debugfs |
1300 | filesystem must first be mounted before making use of this feature. | 1323 | filesystem must first be mounted before making use of this feature. |
1301 | We refer the control file as: <debugfs>/dynamic_debug/control. This | 1324 | We refer the control file as: <debugfs>/dynamic_debug/control. This |
1302 | file contains a list of the debug statements that can be enabled. The | 1325 | file contains a list of the debug statements that can be enabled. The |
1303 | format for each line of the file is: | 1326 | format for each line of the file is: |
1304 | 1327 | ||
1305 | filename:lineno [module]function flags format | 1328 | filename:lineno [module]function flags format |
1306 | 1329 | ||
1307 | filename : source file of the debug statement | 1330 | filename : source file of the debug statement |
1308 | lineno : line number of the debug statement | 1331 | lineno : line number of the debug statement |
1309 | module : module that contains the debug statement | 1332 | module : module that contains the debug statement |
1310 | function : function that contains the debug statement | 1333 | function : function that contains the debug statement |
1311 | flags : '=p' means the line is turned 'on' for printing | 1334 | flags : '=p' means the line is turned 'on' for printing |
1312 | format : the format used for the debug statement | 1335 | format : the format used for the debug statement |
1313 | 1336 | ||
1314 | From a live system: | 1337 | From a live system: |
1315 | 1338 | ||
1316 | nullarbor:~ # cat <debugfs>/dynamic_debug/control | 1339 | nullarbor:~ # cat <debugfs>/dynamic_debug/control |
1317 | # filename:lineno [module]function flags format | 1340 | # filename:lineno [module]function flags format |
1318 | fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012" | 1341 | fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012" |
1319 | fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012" | 1342 | fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012" |
1320 | fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012" | 1343 | fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012" |
1321 | 1344 | ||
1322 | Example usage: | 1345 | Example usage: |
1323 | 1346 | ||
1324 | // enable the message at line 1603 of file svcsock.c | 1347 | // enable the message at line 1603 of file svcsock.c |
1325 | nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > | 1348 | nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > |
1326 | <debugfs>/dynamic_debug/control | 1349 | <debugfs>/dynamic_debug/control |
1327 | 1350 | ||
1328 | // enable all the messages in file svcsock.c | 1351 | // enable all the messages in file svcsock.c |
1329 | nullarbor:~ # echo -n 'file svcsock.c +p' > | 1352 | nullarbor:~ # echo -n 'file svcsock.c +p' > |
1330 | <debugfs>/dynamic_debug/control | 1353 | <debugfs>/dynamic_debug/control |
1331 | 1354 | ||
1332 | // enable all the messages in the NFS server module | 1355 | // enable all the messages in the NFS server module |
1333 | nullarbor:~ # echo -n 'module nfsd +p' > | 1356 | nullarbor:~ # echo -n 'module nfsd +p' > |
1334 | <debugfs>/dynamic_debug/control | 1357 | <debugfs>/dynamic_debug/control |
1335 | 1358 | ||
1336 | // enable all 12 messages in the function svc_process() | 1359 | // enable all 12 messages in the function svc_process() |
1337 | nullarbor:~ # echo -n 'func svc_process +p' > | 1360 | nullarbor:~ # echo -n 'func svc_process +p' > |
1338 | <debugfs>/dynamic_debug/control | 1361 | <debugfs>/dynamic_debug/control |
1339 | 1362 | ||
1340 | // disable all 12 messages in the function svc_process() | 1363 | // disable all 12 messages in the function svc_process() |
1341 | nullarbor:~ # echo -n 'func svc_process -p' > | 1364 | nullarbor:~ # echo -n 'func svc_process -p' > |
1342 | <debugfs>/dynamic_debug/control | 1365 | <debugfs>/dynamic_debug/control |
1343 | 1366 | ||
1344 | See Documentation/dynamic-debug-howto.txt for additional information. | 1367 | See Documentation/dynamic-debug-howto.txt for additional information. |
1345 | 1368 | ||
1346 | config DMA_API_DEBUG | 1369 | config DMA_API_DEBUG |
1347 | bool "Enable debugging of DMA-API usage" | 1370 | bool "Enable debugging of DMA-API usage" |
1348 | depends on HAVE_DMA_API_DEBUG | 1371 | depends on HAVE_DMA_API_DEBUG |
1349 | help | 1372 | help |
1350 | Enable this option to debug the use of the DMA API by device drivers. | 1373 | Enable this option to debug the use of the DMA API by device drivers. |
1351 | With this option you will be able to detect common bugs in device | 1374 | With this option you will be able to detect common bugs in device |
1352 | drivers like double-freeing of DMA mappings or freeing mappings that | 1375 | drivers like double-freeing of DMA mappings or freeing mappings that |
1353 | were never allocated. | 1376 | were never allocated. |
1354 | This option causes a performance degredation. Use only if you want | 1377 | This option causes a performance degredation. Use only if you want |
1355 | to debug device drivers. If unsure, say N. | 1378 | to debug device drivers. If unsure, say N. |
1356 | 1379 | ||
1357 | config ATOMIC64_SELFTEST | 1380 | config ATOMIC64_SELFTEST |
1358 | bool "Perform an atomic64_t self-test at boot" | 1381 | bool "Perform an atomic64_t self-test at boot" |
1359 | help | 1382 | help |
1360 | Enable this option to test the atomic64_t functions at boot. | 1383 | Enable this option to test the atomic64_t functions at boot. |
1361 | 1384 | ||
1362 | If unsure, say N. | 1385 | If unsure, say N. |
1363 | 1386 | ||
1364 | config ASYNC_RAID6_TEST | 1387 | config ASYNC_RAID6_TEST |
1365 | tristate "Self test for hardware accelerated raid6 recovery" | 1388 | tristate "Self test for hardware accelerated raid6 recovery" |
1366 | depends on ASYNC_RAID6_RECOV | 1389 | depends on ASYNC_RAID6_RECOV |
1367 | select ASYNC_MEMCPY | 1390 | select ASYNC_MEMCPY |
1368 | ---help--- | 1391 | ---help--- |
1369 | This is a one-shot self test that permutes through the | 1392 | This is a one-shot self test that permutes through the |
1370 | recovery of all the possible two disk failure scenarios for a | 1393 | recovery of all the possible two disk failure scenarios for a |
1371 | N-disk array. Recovery is performed with the asynchronous | 1394 | N-disk array. Recovery is performed with the asynchronous |
1372 | raid6 recovery routines, and will optionally use an offload | 1395 | raid6 recovery routines, and will optionally use an offload |
1373 | engine if one is available. | 1396 | engine if one is available. |
1374 | 1397 | ||
1375 | If unsure, say N. | 1398 | If unsure, say N. |
1376 | 1399 | ||
1377 | source "samples/Kconfig" | 1400 | source "samples/Kconfig" |
1378 | 1401 | ||
1379 | source "lib/Kconfig.kgdb" | 1402 | source "lib/Kconfig.kgdb" |
1380 | 1403 | ||
1381 | source "lib/Kconfig.kmemcheck" | 1404 | source "lib/Kconfig.kmemcheck" |
1382 | 1405 | ||
1383 | config TEST_KSTRTOX | 1406 | config TEST_KSTRTOX |
1384 | tristate "Test kstrto*() family of functions at runtime" | 1407 | tristate "Test kstrto*() family of functions at runtime" |
1385 | 1408 |
lib/Makefile
1 | # | 1 | # |
2 | # Makefile for some libs needed in the kernel. | 2 | # Makefile for some libs needed in the kernel. |
3 | # | 3 | # |
4 | 4 | ||
5 | ifdef CONFIG_FUNCTION_TRACER | 5 | ifdef CONFIG_FUNCTION_TRACER |
6 | ORIG_CFLAGS := $(KBUILD_CFLAGS) | 6 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
7 | KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS)) | 7 | KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS)) |
8 | endif | 8 | endif |
9 | 9 | ||
10 | lib-y := ctype.o string.o vsprintf.o cmdline.o \ | 10 | lib-y := ctype.o string.o vsprintf.o cmdline.o \ |
11 | rbtree.o radix-tree.o dump_stack.o timerqueue.o\ | 11 | rbtree.o radix-tree.o dump_stack.o timerqueue.o\ |
12 | idr.o int_sqrt.o extable.o prio_tree.o \ | 12 | idr.o int_sqrt.o extable.o prio_tree.o \ |
13 | sha1.o md5.o irq_regs.o reciprocal_div.o argv_split.o \ | 13 | sha1.o md5.o irq_regs.o reciprocal_div.o argv_split.o \ |
14 | proportions.o prio_heap.o ratelimit.o show_mem.o \ | 14 | proportions.o prio_heap.o ratelimit.o show_mem.o \ |
15 | is_single_threaded.o plist.o decompress.o | 15 | is_single_threaded.o plist.o decompress.o |
16 | 16 | ||
17 | lib-$(CONFIG_MMU) += ioremap.o | 17 | lib-$(CONFIG_MMU) += ioremap.o |
18 | lib-$(CONFIG_SMP) += cpumask.o | 18 | lib-$(CONFIG_SMP) += cpumask.o |
19 | 19 | ||
20 | lib-y += kobject.o klist.o | 20 | lib-y += kobject.o klist.o |
21 | 21 | ||
22 | obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \ | 22 | obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \ |
23 | bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \ | 23 | bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \ |
24 | string_helpers.o gcd.o lcm.o list_sort.o uuid.o flex_array.o \ | 24 | string_helpers.o gcd.o lcm.o list_sort.o uuid.o flex_array.o \ |
25 | bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o | 25 | bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o |
26 | obj-y += kstrtox.o | 26 | obj-y += kstrtox.o |
27 | obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o | 27 | obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o |
28 | 28 | ||
29 | ifeq ($(CONFIG_DEBUG_KOBJECT),y) | 29 | ifeq ($(CONFIG_DEBUG_KOBJECT),y) |
30 | CFLAGS_kobject.o += -DDEBUG | 30 | CFLAGS_kobject.o += -DDEBUG |
31 | CFLAGS_kobject_uevent.o += -DDEBUG | 31 | CFLAGS_kobject_uevent.o += -DDEBUG |
32 | endif | 32 | endif |
33 | 33 | ||
34 | lib-$(CONFIG_HOTPLUG) += kobject_uevent.o | 34 | lib-$(CONFIG_HOTPLUG) += kobject_uevent.o |
35 | obj-$(CONFIG_GENERIC_IOMAP) += iomap.o | 35 | obj-$(CONFIG_GENERIC_IOMAP) += iomap.o |
36 | obj-$(CONFIG_GENERIC_PCI_IOMAP) += pci_iomap.o | 36 | obj-$(CONFIG_GENERIC_PCI_IOMAP) += pci_iomap.o |
37 | obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o | 37 | obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o |
38 | obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o | 38 | obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o |
39 | obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o | 39 | obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o |
40 | obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o | 40 | obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o |
41 | lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o | 41 | lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o |
42 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o | 42 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o |
43 | 43 | ||
44 | CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) | 44 | CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) |
45 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o | 45 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o |
46 | 46 | ||
47 | obj-$(CONFIG_BTREE) += btree.o | 47 | obj-$(CONFIG_BTREE) += btree.o |
48 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o | 48 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o |
49 | obj-$(CONFIG_DEBUG_LIST) += list_debug.o | 49 | obj-$(CONFIG_DEBUG_LIST) += list_debug.o |
50 | obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o | 50 | obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o |
51 | 51 | ||
52 | ifneq ($(CONFIG_HAVE_DEC_LOCK),y) | 52 | ifneq ($(CONFIG_HAVE_DEC_LOCK),y) |
53 | lib-y += dec_and_lock.o | 53 | lib-y += dec_and_lock.o |
54 | endif | 54 | endif |
55 | 55 | ||
56 | obj-$(CONFIG_BITREVERSE) += bitrev.o | 56 | obj-$(CONFIG_BITREVERSE) += bitrev.o |
57 | obj-$(CONFIG_RATIONAL) += rational.o | 57 | obj-$(CONFIG_RATIONAL) += rational.o |
58 | obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o | 58 | obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o |
59 | obj-$(CONFIG_CRC16) += crc16.o | 59 | obj-$(CONFIG_CRC16) += crc16.o |
60 | obj-$(CONFIG_CRC_T10DIF)+= crc-t10dif.o | 60 | obj-$(CONFIG_CRC_T10DIF)+= crc-t10dif.o |
61 | obj-$(CONFIG_CRC_ITU_T) += crc-itu-t.o | 61 | obj-$(CONFIG_CRC_ITU_T) += crc-itu-t.o |
62 | obj-$(CONFIG_CRC32) += crc32.o | 62 | obj-$(CONFIG_CRC32) += crc32.o |
63 | obj-$(CONFIG_CRC7) += crc7.o | 63 | obj-$(CONFIG_CRC7) += crc7.o |
64 | obj-$(CONFIG_LIBCRC32C) += libcrc32c.o | 64 | obj-$(CONFIG_LIBCRC32C) += libcrc32c.o |
65 | obj-$(CONFIG_CRC8) += crc8.o | 65 | obj-$(CONFIG_CRC8) += crc8.o |
66 | obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o | 66 | obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o |
67 | 67 | ||
68 | obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/ | 68 | obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/ |
69 | obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ | 69 | obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ |
70 | obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ | 70 | obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ |
71 | obj-$(CONFIG_BCH) += bch.o | 71 | obj-$(CONFIG_BCH) += bch.o |
72 | obj-$(CONFIG_LZO_COMPRESS) += lzo/ | 72 | obj-$(CONFIG_LZO_COMPRESS) += lzo/ |
73 | obj-$(CONFIG_LZO_DECOMPRESS) += lzo/ | 73 | obj-$(CONFIG_LZO_DECOMPRESS) += lzo/ |
74 | obj-$(CONFIG_XZ_DEC) += xz/ | 74 | obj-$(CONFIG_XZ_DEC) += xz/ |
75 | obj-$(CONFIG_RAID6_PQ) += raid6/ | 75 | obj-$(CONFIG_RAID6_PQ) += raid6/ |
76 | 76 | ||
77 | lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o | 77 | lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o |
78 | lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o | 78 | lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o |
79 | lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o | 79 | lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o |
80 | lib-$(CONFIG_DECOMPRESS_XZ) += decompress_unxz.o | 80 | lib-$(CONFIG_DECOMPRESS_XZ) += decompress_unxz.o |
81 | lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o | 81 | lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o |
82 | 82 | ||
83 | obj-$(CONFIG_TEXTSEARCH) += textsearch.o | 83 | obj-$(CONFIG_TEXTSEARCH) += textsearch.o |
84 | obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o | 84 | obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o |
85 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o | 85 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o |
86 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o | 86 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o |
87 | obj-$(CONFIG_SMP) += percpu_counter.o | 87 | obj-$(CONFIG_SMP) += percpu_counter.o |
88 | obj-$(CONFIG_AUDIT_GENERIC) += audit.o | 88 | obj-$(CONFIG_AUDIT_GENERIC) += audit.o |
89 | 89 | ||
90 | obj-$(CONFIG_SWIOTLB) += swiotlb.o | 90 | obj-$(CONFIG_SWIOTLB) += swiotlb.o |
91 | obj-$(CONFIG_IOMMU_HELPER) += iommu-helper.o | 91 | obj-$(CONFIG_IOMMU_HELPER) += iommu-helper.o |
92 | obj-$(CONFIG_FAULT_INJECTION) += fault-inject.o | 92 | obj-$(CONFIG_FAULT_INJECTION) += fault-inject.o |
93 | obj-$(CONFIG_NOTIFIER_ERROR_INJECTION) += notifier-error-inject.o | 93 | obj-$(CONFIG_NOTIFIER_ERROR_INJECTION) += notifier-error-inject.o |
94 | obj-$(CONFIG_CPU_NOTIFIER_ERROR_INJECT) += cpu-notifier-error-inject.o | 94 | obj-$(CONFIG_CPU_NOTIFIER_ERROR_INJECT) += cpu-notifier-error-inject.o |
95 | obj-$(CONFIG_PM_NOTIFIER_ERROR_INJECT) += pm-notifier-error-inject.o | 95 | obj-$(CONFIG_PM_NOTIFIER_ERROR_INJECT) += pm-notifier-error-inject.o |
96 | obj-$(CONFIG_MEMORY_NOTIFIER_ERROR_INJECT) += memory-notifier-error-inject.o | ||
96 | 97 | ||
97 | lib-$(CONFIG_GENERIC_BUG) += bug.o | 98 | lib-$(CONFIG_GENERIC_BUG) += bug.o |
98 | 99 | ||
99 | obj-$(CONFIG_HAVE_ARCH_TRACEHOOK) += syscall.o | 100 | obj-$(CONFIG_HAVE_ARCH_TRACEHOOK) += syscall.o |
100 | 101 | ||
101 | obj-$(CONFIG_DYNAMIC_DEBUG) += dynamic_debug.o | 102 | obj-$(CONFIG_DYNAMIC_DEBUG) += dynamic_debug.o |
102 | 103 | ||
103 | obj-$(CONFIG_NLATTR) += nlattr.o | 104 | obj-$(CONFIG_NLATTR) += nlattr.o |
104 | 105 | ||
105 | obj-$(CONFIG_LRU_CACHE) += lru_cache.o | 106 | obj-$(CONFIG_LRU_CACHE) += lru_cache.o |
106 | 107 | ||
107 | obj-$(CONFIG_DMA_API_DEBUG) += dma-debug.o | 108 | obj-$(CONFIG_DMA_API_DEBUG) += dma-debug.o |
108 | 109 | ||
109 | obj-$(CONFIG_GENERIC_CSUM) += checksum.o | 110 | obj-$(CONFIG_GENERIC_CSUM) += checksum.o |
110 | 111 | ||
111 | obj-$(CONFIG_GENERIC_ATOMIC64) += atomic64.o | 112 | obj-$(CONFIG_GENERIC_ATOMIC64) += atomic64.o |
112 | 113 | ||
113 | obj-$(CONFIG_ATOMIC64_SELFTEST) += atomic64_test.o | 114 | obj-$(CONFIG_ATOMIC64_SELFTEST) += atomic64_test.o |
114 | 115 | ||
115 | obj-$(CONFIG_AVERAGE) += average.o | 116 | obj-$(CONFIG_AVERAGE) += average.o |
116 | 117 | ||
117 | obj-$(CONFIG_CPU_RMAP) += cpu_rmap.o | 118 | obj-$(CONFIG_CPU_RMAP) += cpu_rmap.o |
118 | 119 | ||
119 | obj-$(CONFIG_CORDIC) += cordic.o | 120 | obj-$(CONFIG_CORDIC) += cordic.o |
120 | 121 | ||
121 | obj-$(CONFIG_DQL) += dynamic_queue_limits.o | 122 | obj-$(CONFIG_DQL) += dynamic_queue_limits.o |
122 | 123 | ||
123 | obj-$(CONFIG_MPILIB) += mpi/ | 124 | obj-$(CONFIG_MPILIB) += mpi/ |
124 | obj-$(CONFIG_SIGNATURE) += digsig.o | 125 | obj-$(CONFIG_SIGNATURE) += digsig.o |
125 | 126 | ||
126 | obj-$(CONFIG_CLZ_TAB) += clz_tab.o | 127 | obj-$(CONFIG_CLZ_TAB) += clz_tab.o |
127 | 128 | ||
128 | obj-$(CONFIG_DDR) += jedec_ddr_data.o | 129 | obj-$(CONFIG_DDR) += jedec_ddr_data.o |
129 | 130 | ||
130 | obj-$(CONFIG_GENERIC_STRNCPY_FROM_USER) += strncpy_from_user.o | 131 | obj-$(CONFIG_GENERIC_STRNCPY_FROM_USER) += strncpy_from_user.o |
131 | obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o | 132 | obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o |
132 | 133 | ||
133 | obj-$(CONFIG_STMP_DEVICE) += stmp_device.o | 134 | obj-$(CONFIG_STMP_DEVICE) += stmp_device.o |
134 | 135 | ||
135 | hostprogs-y := gen_crc32table | 136 | hostprogs-y := gen_crc32table |
136 | clean-files := crc32table.h | 137 | clean-files := crc32table.h |
137 | 138 | ||
138 | $(obj)/crc32.o: $(obj)/crc32table.h | 139 | $(obj)/crc32.o: $(obj)/crc32table.h |
139 | 140 | ||
140 | quiet_cmd_crc32 = GEN $@ | 141 | quiet_cmd_crc32 = GEN $@ |
141 | cmd_crc32 = $< > $@ | 142 | cmd_crc32 = $< > $@ |
142 | 143 | ||
143 | $(obj)/crc32table.h: $(obj)/gen_crc32table | 144 | $(obj)/crc32table.h: $(obj)/gen_crc32table |
144 | $(call cmd,crc32) | 145 | $(call cmd,crc32) |
145 | 146 |
lib/memory-notifier-error-inject.c
File was created | 1 | #include <linux/kernel.h> | |
2 | #include <linux/module.h> | ||
3 | #include <linux/memory.h> | ||
4 | |||
5 | #include "notifier-error-inject.h" | ||
6 | |||
7 | static int priority; | ||
8 | module_param(priority, int, 0); | ||
9 | MODULE_PARM_DESC(priority, "specify memory notifier priority"); | ||
10 | |||
11 | static struct notifier_err_inject memory_notifier_err_inject = { | ||
12 | .actions = { | ||
13 | { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_ONLINE) }, | ||
14 | { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_OFFLINE) }, | ||
15 | {} | ||
16 | } | ||
17 | }; | ||
18 | |||
19 | static struct dentry *dir; | ||
20 | |||
21 | static int err_inject_init(void) | ||
22 | { | ||
23 | int err; | ||
24 | |||
25 | dir = notifier_err_inject_init("memory", notifier_err_inject_dir, | ||
26 | &memory_notifier_err_inject, priority); | ||
27 | if (IS_ERR(dir)) | ||
28 | return PTR_ERR(dir); | ||
29 | |||
30 | err = register_memory_notifier(&memory_notifier_err_inject.nb); | ||
31 | if (err) | ||
32 | debugfs_remove_recursive(dir); | ||
33 | |||
34 | return err; | ||
35 | } | ||
36 | |||
37 | static void err_inject_exit(void) | ||
38 | { | ||
39 | unregister_memory_notifier(&memory_notifier_err_inject.nb); | ||
40 | debugfs_remove_recursive(dir); | ||
41 | } | ||
42 | |||
43 | module_init(err_inject_init); | ||
44 | module_exit(err_inject_exit); | ||
45 | |||
46 | MODULE_DESCRIPTION("memory notifier error injection module"); | ||
47 | MODULE_LICENSE("GPL"); | ||
48 | MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>"); | ||
49 |