Commit 5ee00bd4691e7364bb7b62e2068d473cd5cb9320
1 parent
0bd5c4f7c8
Exists in
master
and in
7 other branches
dma-debug: add Kconfig entry
Impact: add a Kconfig entry for DMA-API debugging Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Showing 2 changed files with 13 additions and 0 deletions Inline Diff
arch/Kconfig
1 | # | 1 | # |
2 | # General architecture dependent options | 2 | # General architecture dependent options |
3 | # | 3 | # |
4 | 4 | ||
5 | config OPROFILE | 5 | config OPROFILE |
6 | tristate "OProfile system profiling (EXPERIMENTAL)" | 6 | tristate "OProfile system profiling (EXPERIMENTAL)" |
7 | depends on PROFILING | 7 | depends on PROFILING |
8 | depends on HAVE_OPROFILE | 8 | depends on HAVE_OPROFILE |
9 | select TRACING | 9 | select TRACING |
10 | select RING_BUFFER | 10 | select RING_BUFFER |
11 | help | 11 | help |
12 | OProfile is a profiling system capable of profiling the | 12 | OProfile is a profiling system capable of profiling the |
13 | whole system, include the kernel, kernel modules, libraries, | 13 | whole system, include the kernel, kernel modules, libraries, |
14 | and applications. | 14 | and applications. |
15 | 15 | ||
16 | If unsure, say N. | 16 | If unsure, say N. |
17 | 17 | ||
18 | config OPROFILE_IBS | 18 | config OPROFILE_IBS |
19 | bool "OProfile AMD IBS support (EXPERIMENTAL)" | 19 | bool "OProfile AMD IBS support (EXPERIMENTAL)" |
20 | default n | 20 | default n |
21 | depends on OPROFILE && SMP && X86 | 21 | depends on OPROFILE && SMP && X86 |
22 | help | 22 | help |
23 | Instruction-Based Sampling (IBS) is a new profiling | 23 | Instruction-Based Sampling (IBS) is a new profiling |
24 | technique that provides rich, precise program performance | 24 | technique that provides rich, precise program performance |
25 | information. IBS is introduced by AMD Family10h processors | 25 | information. IBS is introduced by AMD Family10h processors |
26 | (AMD Opteron Quad-Core processor "Barcelona") to overcome | 26 | (AMD Opteron Quad-Core processor "Barcelona") to overcome |
27 | the limitations of conventional performance counter | 27 | the limitations of conventional performance counter |
28 | sampling. | 28 | sampling. |
29 | 29 | ||
30 | If unsure, say N. | 30 | If unsure, say N. |
31 | 31 | ||
32 | config HAVE_OPROFILE | 32 | config HAVE_OPROFILE |
33 | bool | 33 | bool |
34 | 34 | ||
35 | config KPROBES | 35 | config KPROBES |
36 | bool "Kprobes" | 36 | bool "Kprobes" |
37 | depends on KALLSYMS && MODULES | 37 | depends on KALLSYMS && MODULES |
38 | depends on HAVE_KPROBES | 38 | depends on HAVE_KPROBES |
39 | help | 39 | help |
40 | Kprobes allows you to trap at almost any kernel address and | 40 | Kprobes allows you to trap at almost any kernel address and |
41 | execute a callback function. register_kprobe() establishes | 41 | execute a callback function. register_kprobe() establishes |
42 | a probepoint and specifies the callback. Kprobes is useful | 42 | a probepoint and specifies the callback. Kprobes is useful |
43 | for kernel debugging, non-intrusive instrumentation and testing. | 43 | for kernel debugging, non-intrusive instrumentation and testing. |
44 | If in doubt, say "N". | 44 | If in doubt, say "N". |
45 | 45 | ||
46 | config HAVE_EFFICIENT_UNALIGNED_ACCESS | 46 | config HAVE_EFFICIENT_UNALIGNED_ACCESS |
47 | bool | 47 | bool |
48 | help | 48 | help |
49 | Some architectures are unable to perform unaligned accesses | 49 | Some architectures are unable to perform unaligned accesses |
50 | without the use of get_unaligned/put_unaligned. Others are | 50 | without the use of get_unaligned/put_unaligned. Others are |
51 | unable to perform such accesses efficiently (e.g. trap on | 51 | unable to perform such accesses efficiently (e.g. trap on |
52 | unaligned access and require fixing it up in the exception | 52 | unaligned access and require fixing it up in the exception |
53 | handler.) | 53 | handler.) |
54 | 54 | ||
55 | This symbol should be selected by an architecture if it can | 55 | This symbol should be selected by an architecture if it can |
56 | perform unaligned accesses efficiently to allow different | 56 | perform unaligned accesses efficiently to allow different |
57 | code paths to be selected for these cases. Some network | 57 | code paths to be selected for these cases. Some network |
58 | drivers, for example, could opt to not fix up alignment | 58 | drivers, for example, could opt to not fix up alignment |
59 | problems with received packets if doing so would not help | 59 | problems with received packets if doing so would not help |
60 | much. | 60 | much. |
61 | 61 | ||
62 | See Documentation/unaligned-memory-access.txt for more | 62 | See Documentation/unaligned-memory-access.txt for more |
63 | information on the topic of unaligned memory accesses. | 63 | information on the topic of unaligned memory accesses. |
64 | 64 | ||
65 | config HAVE_SYSCALL_WRAPPERS | 65 | config HAVE_SYSCALL_WRAPPERS |
66 | bool | 66 | bool |
67 | 67 | ||
68 | config KRETPROBES | 68 | config KRETPROBES |
69 | def_bool y | 69 | def_bool y |
70 | depends on KPROBES && HAVE_KRETPROBES | 70 | depends on KPROBES && HAVE_KRETPROBES |
71 | 71 | ||
72 | config HAVE_IOREMAP_PROT | 72 | config HAVE_IOREMAP_PROT |
73 | bool | 73 | bool |
74 | 74 | ||
75 | config HAVE_KPROBES | 75 | config HAVE_KPROBES |
76 | bool | 76 | bool |
77 | 77 | ||
78 | config HAVE_KRETPROBES | 78 | config HAVE_KRETPROBES |
79 | bool | 79 | bool |
80 | 80 | ||
81 | # | 81 | # |
82 | # An arch should select this if it provides all these things: | 82 | # An arch should select this if it provides all these things: |
83 | # | 83 | # |
84 | # task_pt_regs() in asm/processor.h or asm/ptrace.h | 84 | # task_pt_regs() in asm/processor.h or asm/ptrace.h |
85 | # arch_has_single_step() if there is hardware single-step support | 85 | # arch_has_single_step() if there is hardware single-step support |
86 | # arch_has_block_step() if there is hardware block-step support | 86 | # arch_has_block_step() if there is hardware block-step support |
87 | # asm/syscall.h supplying asm-generic/syscall.h interface | 87 | # asm/syscall.h supplying asm-generic/syscall.h interface |
88 | # linux/regset.h user_regset interfaces | 88 | # linux/regset.h user_regset interfaces |
89 | # CORE_DUMP_USE_REGSET #define'd in linux/elf.h | 89 | # CORE_DUMP_USE_REGSET #define'd in linux/elf.h |
90 | # TIF_SYSCALL_TRACE calls tracehook_report_syscall_{entry,exit} | 90 | # TIF_SYSCALL_TRACE calls tracehook_report_syscall_{entry,exit} |
91 | # TIF_NOTIFY_RESUME calls tracehook_notify_resume() | 91 | # TIF_NOTIFY_RESUME calls tracehook_notify_resume() |
92 | # signal delivery calls tracehook_signal_handler() | 92 | # signal delivery calls tracehook_signal_handler() |
93 | # | 93 | # |
94 | config HAVE_ARCH_TRACEHOOK | 94 | config HAVE_ARCH_TRACEHOOK |
95 | bool | 95 | bool |
96 | 96 | ||
97 | config HAVE_DMA_ATTRS | 97 | config HAVE_DMA_ATTRS |
98 | bool | 98 | bool |
99 | 99 | ||
100 | config USE_GENERIC_SMP_HELPERS | 100 | config USE_GENERIC_SMP_HELPERS |
101 | bool | 101 | bool |
102 | 102 | ||
103 | config HAVE_CLK | 103 | config HAVE_CLK |
104 | bool | 104 | bool |
105 | help | 105 | help |
106 | The <linux/clk.h> calls support software clock gating and | 106 | The <linux/clk.h> calls support software clock gating and |
107 | thus are a key power management tool on many systems. | 107 | thus are a key power management tool on many systems. |
108 | |||
109 | config HAVE_DMA_API_DEBUG | ||
110 | bool | ||
108 | 111 |
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 timing information to be | 6 | Selecting this option causes timing information to be |
7 | included in printk output. This allows you to measure | 7 | included in printk output. This allows you to measure |
8 | the interval between kernel operations, including bootup | 8 | the interval between kernel operations, including bootup |
9 | operations. This is useful for identifying long delays | 9 | operations. This is useful for identifying long delays |
10 | in kernel startup. | 10 | in kernel startup. |
11 | 11 | ||
12 | config ENABLE_WARN_DEPRECATED | 12 | config ENABLE_WARN_DEPRECATED |
13 | bool "Enable __deprecated logic" | 13 | bool "Enable __deprecated logic" |
14 | default y | 14 | default y |
15 | help | 15 | help |
16 | Enable the __deprecated logic in the kernel build. | 16 | Enable the __deprecated logic in the kernel build. |
17 | Disable this to suppress the "warning: 'foo' is deprecated | 17 | Disable this to suppress the "warning: 'foo' is deprecated |
18 | (declared at kernel/power/somefile.c:1234)" messages. | 18 | (declared at kernel/power/somefile.c:1234)" messages. |
19 | 19 | ||
20 | config ENABLE_MUST_CHECK | 20 | config ENABLE_MUST_CHECK |
21 | bool "Enable __must_check logic" | 21 | bool "Enable __must_check logic" |
22 | default y | 22 | default y |
23 | help | 23 | help |
24 | Enable the __must_check logic in the kernel build. Disable this to | 24 | Enable the __must_check logic in the kernel build. Disable this to |
25 | suppress the "warning: ignoring return value of 'foo', declared with | 25 | suppress the "warning: ignoring return value of 'foo', declared with |
26 | attribute warn_unused_result" messages. | 26 | attribute warn_unused_result" messages. |
27 | 27 | ||
28 | config FRAME_WARN | 28 | config FRAME_WARN |
29 | int "Warn for stack frames larger than (needs gcc 4.4)" | 29 | int "Warn for stack frames larger than (needs gcc 4.4)" |
30 | range 0 8192 | 30 | range 0 8192 |
31 | default 1024 if !64BIT | 31 | default 1024 if !64BIT |
32 | default 2048 if 64BIT | 32 | default 2048 if 64BIT |
33 | help | 33 | help |
34 | Tell gcc to warn at build time for stack frames larger than this. | 34 | Tell gcc to warn at build time for stack frames larger than this. |
35 | Setting this too low will cause a lot of warnings. | 35 | Setting this too low will cause a lot of warnings. |
36 | Setting it to 0 disables the warning. | 36 | Setting it to 0 disables the warning. |
37 | Requires gcc 4.4 | 37 | Requires gcc 4.4 |
38 | 38 | ||
39 | config MAGIC_SYSRQ | 39 | config MAGIC_SYSRQ |
40 | bool "Magic SysRq key" | 40 | bool "Magic SysRq key" |
41 | depends on !UML | 41 | depends on !UML |
42 | help | 42 | help |
43 | If you say Y here, you will have some control over the system even | 43 | If you say Y here, you will have some control over the system even |
44 | if the system crashes for example during kernel debugging (e.g., you | 44 | if the system crashes for example during kernel debugging (e.g., you |
45 | will be able to flush the buffer cache to disk, reboot the system | 45 | will be able to flush the buffer cache to disk, reboot the system |
46 | immediately or dump some status information). This is accomplished | 46 | immediately or dump some status information). This is accomplished |
47 | by pressing various keys while holding SysRq (Alt+PrintScreen). It | 47 | by pressing various keys while holding SysRq (Alt+PrintScreen). It |
48 | also works on a serial console (on PC hardware at least), if you | 48 | also works on a serial console (on PC hardware at least), if you |
49 | send a BREAK and then within 5 seconds a command keypress. The | 49 | send a BREAK and then within 5 seconds a command keypress. The |
50 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y | 50 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y |
51 | unless you really know what this hack does. | 51 | unless you really know what this hack does. |
52 | 52 | ||
53 | config UNUSED_SYMBOLS | 53 | config UNUSED_SYMBOLS |
54 | bool "Enable unused/obsolete exported symbols" | 54 | bool "Enable unused/obsolete exported symbols" |
55 | default y if X86 | 55 | default y if X86 |
56 | help | 56 | help |
57 | Unused but exported symbols make the kernel needlessly bigger. For | 57 | Unused but exported symbols make the kernel needlessly bigger. For |
58 | that reason most of these unused exports will soon be removed. This | 58 | that reason most of these unused exports will soon be removed. This |
59 | option is provided temporarily to provide a transition period in case | 59 | option is provided temporarily to provide a transition period in case |
60 | some external kernel module needs one of these symbols anyway. If you | 60 | some external kernel module needs one of these symbols anyway. If you |
61 | encounter such a case in your module, consider if you are actually | 61 | encounter such a case in your module, consider if you are actually |
62 | using the right API. (rationale: since nobody in the kernel is using | 62 | using the right API. (rationale: since nobody in the kernel is using |
63 | this in a module, there is a pretty good chance it's actually the | 63 | this in a module, there is a pretty good chance it's actually the |
64 | wrong interface to use). If you really need the symbol, please send a | 64 | wrong interface to use). If you really need the symbol, please send a |
65 | mail to the linux kernel mailing list mentioning the symbol and why | 65 | mail to the linux kernel mailing list mentioning the symbol and why |
66 | you really need it, and what the merge plan to the mainline kernel for | 66 | you really need it, and what the merge plan to the mainline kernel for |
67 | your module is. | 67 | your module is. |
68 | 68 | ||
69 | config DEBUG_FS | 69 | config DEBUG_FS |
70 | bool "Debug Filesystem" | 70 | bool "Debug Filesystem" |
71 | depends on SYSFS | 71 | depends on SYSFS |
72 | help | 72 | help |
73 | debugfs is a virtual file system that kernel developers use to put | 73 | debugfs is a virtual file system that kernel developers use to put |
74 | debugging files into. Enable this option to be able to read and | 74 | debugging files into. Enable this option to be able to read and |
75 | write to these files. | 75 | write to these files. |
76 | 76 | ||
77 | For detailed documentation on the debugfs API, see | 77 | For detailed documentation on the debugfs API, see |
78 | Documentation/DocBook/filesystems. | 78 | Documentation/DocBook/filesystems. |
79 | 79 | ||
80 | If unsure, say N. | 80 | If unsure, say N. |
81 | 81 | ||
82 | config HEADERS_CHECK | 82 | config HEADERS_CHECK |
83 | bool "Run 'make headers_check' when building vmlinux" | 83 | bool "Run 'make headers_check' when building vmlinux" |
84 | depends on !UML | 84 | depends on !UML |
85 | help | 85 | help |
86 | This option will extract the user-visible kernel headers whenever | 86 | This option will extract the user-visible kernel headers whenever |
87 | building the kernel, and will run basic sanity checks on them to | 87 | building the kernel, and will run basic sanity checks on them to |
88 | ensure that exported files do not attempt to include files which | 88 | ensure that exported files do not attempt to include files which |
89 | were not exported, etc. | 89 | were not exported, etc. |
90 | 90 | ||
91 | If you're making modifications to header files which are | 91 | If you're making modifications to header files which are |
92 | relevant for userspace, say 'Y', and check the headers | 92 | relevant for userspace, say 'Y', and check the headers |
93 | exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in | 93 | exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in |
94 | your build tree), to make sure they're suitable. | 94 | your build tree), to make sure they're suitable. |
95 | 95 | ||
96 | config DEBUG_SECTION_MISMATCH | 96 | config DEBUG_SECTION_MISMATCH |
97 | bool "Enable full Section mismatch analysis" | 97 | bool "Enable full Section mismatch analysis" |
98 | depends on UNDEFINED | 98 | depends on UNDEFINED |
99 | # This option is on purpose disabled for now. | 99 | # This option is on purpose disabled for now. |
100 | # It will be enabled when we are down to a resonable number | 100 | # It will be enabled when we are down to a resonable number |
101 | # of section mismatch warnings (< 10 for an allyesconfig build) | 101 | # of section mismatch warnings (< 10 for an allyesconfig build) |
102 | help | 102 | help |
103 | The section mismatch analysis checks if there are illegal | 103 | The section mismatch analysis checks if there are illegal |
104 | references from one section to another section. | 104 | references from one section to another section. |
105 | Linux will during link or during runtime drop some sections | 105 | Linux will during link or during runtime drop some sections |
106 | and any use of code/data previously in these sections will | 106 | and any use of code/data previously in these sections will |
107 | most likely result in an oops. | 107 | most likely result in an oops. |
108 | In the code functions and variables are annotated with | 108 | In the code functions and variables are annotated with |
109 | __init, __devinit etc. (see full list in include/linux/init.h) | 109 | __init, __devinit etc. (see full list in include/linux/init.h) |
110 | which results in the code/data being placed in specific sections. | 110 | which results in the code/data being placed in specific sections. |
111 | The section mismatch analysis is always done after a full | 111 | The section mismatch analysis is always done after a full |
112 | kernel build but enabling this option will in addition | 112 | kernel build but enabling this option will in addition |
113 | do the following: | 113 | do the following: |
114 | - Add the option -fno-inline-functions-called-once to gcc | 114 | - Add the option -fno-inline-functions-called-once to gcc |
115 | When inlining a function annotated __init in a non-init | 115 | When inlining a function annotated __init in a non-init |
116 | function we would lose the section information and thus | 116 | function we would lose the section information and thus |
117 | the analysis would not catch the illegal reference. | 117 | the analysis would not catch the illegal reference. |
118 | This option tells gcc to inline less but will also | 118 | This option tells gcc to inline less but will also |
119 | result in a larger kernel. | 119 | result in a larger kernel. |
120 | - Run the section mismatch analysis for each module/built-in.o | 120 | - Run the section mismatch analysis for each module/built-in.o |
121 | When we run the section mismatch analysis on vmlinux.o we | 121 | When we run the section mismatch analysis on vmlinux.o we |
122 | lose valueble information about where the mismatch was | 122 | lose valueble information about where the mismatch was |
123 | introduced. | 123 | introduced. |
124 | Running the analysis for each module/built-in.o file | 124 | Running the analysis for each module/built-in.o file |
125 | will tell where the mismatch happens much closer to the | 125 | will tell where the mismatch happens much closer to the |
126 | source. The drawback is that we will report the same | 126 | source. The drawback is that we will report the same |
127 | mismatch at least twice. | 127 | mismatch at least twice. |
128 | - Enable verbose reporting from modpost to help solving | 128 | - Enable verbose reporting from modpost to help solving |
129 | the section mismatches reported. | 129 | the section mismatches reported. |
130 | 130 | ||
131 | config DEBUG_KERNEL | 131 | config DEBUG_KERNEL |
132 | bool "Kernel debugging" | 132 | bool "Kernel debugging" |
133 | help | 133 | help |
134 | Say Y here if you are developing drivers or trying to debug and | 134 | Say Y here if you are developing drivers or trying to debug and |
135 | identify kernel problems. | 135 | identify kernel problems. |
136 | 136 | ||
137 | config DEBUG_SHIRQ | 137 | config DEBUG_SHIRQ |
138 | bool "Debug shared IRQ handlers" | 138 | bool "Debug shared IRQ handlers" |
139 | depends on DEBUG_KERNEL && GENERIC_HARDIRQS | 139 | depends on DEBUG_KERNEL && GENERIC_HARDIRQS |
140 | help | 140 | help |
141 | Enable this to generate a spurious interrupt as soon as a shared | 141 | Enable this to generate a spurious interrupt as soon as a shared |
142 | interrupt handler is registered, and just before one is deregistered. | 142 | interrupt handler is registered, and just before one is deregistered. |
143 | Drivers ought to be able to handle interrupts coming in at those | 143 | Drivers ought to be able to handle interrupts coming in at those |
144 | points; some don't and need to be caught. | 144 | points; some don't and need to be caught. |
145 | 145 | ||
146 | config DETECT_SOFTLOCKUP | 146 | config DETECT_SOFTLOCKUP |
147 | bool "Detect Soft Lockups" | 147 | bool "Detect Soft Lockups" |
148 | depends on DEBUG_KERNEL && !S390 | 148 | depends on DEBUG_KERNEL && !S390 |
149 | default y | 149 | default y |
150 | help | 150 | help |
151 | Say Y here to enable the kernel to detect "soft lockups", | 151 | Say Y here to enable the kernel to detect "soft lockups", |
152 | which are bugs that cause the kernel to loop in kernel | 152 | which are bugs that cause the kernel to loop in kernel |
153 | mode for more than 60 seconds, without giving other tasks a | 153 | mode for more than 60 seconds, without giving other tasks a |
154 | chance to run. | 154 | chance to run. |
155 | 155 | ||
156 | When a soft-lockup is detected, the kernel will print the | 156 | When a soft-lockup is detected, the kernel will print the |
157 | current stack trace (which you should report), but the | 157 | current stack trace (which you should report), but the |
158 | system will stay locked up. This feature has negligible | 158 | system will stay locked up. This feature has negligible |
159 | overhead. | 159 | overhead. |
160 | 160 | ||
161 | (Note that "hard lockups" are separate type of bugs that | 161 | (Note that "hard lockups" are separate type of bugs that |
162 | can be detected via the NMI-watchdog, on platforms that | 162 | can be detected via the NMI-watchdog, on platforms that |
163 | support it.) | 163 | support it.) |
164 | 164 | ||
165 | config BOOTPARAM_SOFTLOCKUP_PANIC | 165 | config BOOTPARAM_SOFTLOCKUP_PANIC |
166 | bool "Panic (Reboot) On Soft Lockups" | 166 | bool "Panic (Reboot) On Soft Lockups" |
167 | depends on DETECT_SOFTLOCKUP | 167 | depends on DETECT_SOFTLOCKUP |
168 | help | 168 | help |
169 | Say Y here to enable the kernel to panic on "soft lockups", | 169 | Say Y here to enable the kernel to panic on "soft lockups", |
170 | which are bugs that cause the kernel to loop in kernel | 170 | which are bugs that cause the kernel to loop in kernel |
171 | mode for more than 60 seconds, without giving other tasks a | 171 | mode for more than 60 seconds, without giving other tasks a |
172 | chance to run. | 172 | chance to run. |
173 | 173 | ||
174 | The panic can be used in combination with panic_timeout, | 174 | The panic can be used in combination with panic_timeout, |
175 | to cause the system to reboot automatically after a | 175 | to cause the system to reboot automatically after a |
176 | lockup has been detected. This feature is useful for | 176 | lockup has been detected. This feature is useful for |
177 | high-availability systems that have uptime guarantees and | 177 | high-availability systems that have uptime guarantees and |
178 | where a lockup must be resolved ASAP. | 178 | where a lockup must be resolved ASAP. |
179 | 179 | ||
180 | Say N if unsure. | 180 | Say N if unsure. |
181 | 181 | ||
182 | config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE | 182 | config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE |
183 | int | 183 | int |
184 | depends on DETECT_SOFTLOCKUP | 184 | depends on DETECT_SOFTLOCKUP |
185 | range 0 1 | 185 | range 0 1 |
186 | default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC | 186 | default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC |
187 | default 1 if BOOTPARAM_SOFTLOCKUP_PANIC | 187 | default 1 if BOOTPARAM_SOFTLOCKUP_PANIC |
188 | 188 | ||
189 | config SCHED_DEBUG | 189 | config SCHED_DEBUG |
190 | bool "Collect scheduler debugging info" | 190 | bool "Collect scheduler debugging info" |
191 | depends on DEBUG_KERNEL && PROC_FS | 191 | depends on DEBUG_KERNEL && PROC_FS |
192 | default y | 192 | default y |
193 | help | 193 | help |
194 | If you say Y here, the /proc/sched_debug file will be provided | 194 | If you say Y here, the /proc/sched_debug file will be provided |
195 | that can help debug the scheduler. The runtime overhead of this | 195 | that can help debug the scheduler. The runtime overhead of this |
196 | option is minimal. | 196 | option is minimal. |
197 | 197 | ||
198 | config SCHEDSTATS | 198 | config SCHEDSTATS |
199 | bool "Collect scheduler statistics" | 199 | bool "Collect scheduler statistics" |
200 | depends on DEBUG_KERNEL && PROC_FS | 200 | depends on DEBUG_KERNEL && PROC_FS |
201 | help | 201 | help |
202 | If you say Y here, additional code will be inserted into the | 202 | If you say Y here, additional code will be inserted into the |
203 | scheduler and related routines to collect statistics about | 203 | scheduler and related routines to collect statistics about |
204 | scheduler behavior and provide them in /proc/schedstat. These | 204 | scheduler behavior and provide them in /proc/schedstat. These |
205 | stats may be useful for both tuning and debugging the scheduler | 205 | stats may be useful for both tuning and debugging the scheduler |
206 | If you aren't debugging the scheduler or trying to tune a specific | 206 | If you aren't debugging the scheduler or trying to tune a specific |
207 | application, you can say N to avoid the very slight overhead | 207 | application, you can say N to avoid the very slight overhead |
208 | this adds. | 208 | this adds. |
209 | 209 | ||
210 | config TIMER_STATS | 210 | config TIMER_STATS |
211 | bool "Collect kernel timers statistics" | 211 | bool "Collect kernel timers statistics" |
212 | depends on DEBUG_KERNEL && PROC_FS | 212 | depends on DEBUG_KERNEL && PROC_FS |
213 | help | 213 | help |
214 | If you say Y here, additional code will be inserted into the | 214 | If you say Y here, additional code will be inserted into the |
215 | timer routines to collect statistics about kernel timers being | 215 | timer routines to collect statistics about kernel timers being |
216 | reprogrammed. The statistics can be read from /proc/timer_stats. | 216 | reprogrammed. The statistics can be read from /proc/timer_stats. |
217 | The statistics collection is started by writing 1 to /proc/timer_stats, | 217 | The statistics collection is started by writing 1 to /proc/timer_stats, |
218 | writing 0 stops it. This feature is useful to collect information | 218 | writing 0 stops it. This feature is useful to collect information |
219 | about timer usage patterns in kernel and userspace. This feature | 219 | about timer usage patterns in kernel and userspace. This feature |
220 | is lightweight if enabled in the kernel config but not activated | 220 | is lightweight if enabled in the kernel config but not activated |
221 | (it defaults to deactivated on bootup and will only be activated | 221 | (it defaults to deactivated on bootup and will only be activated |
222 | if some application like powertop activates it explicitly). | 222 | if some application like powertop activates it explicitly). |
223 | 223 | ||
224 | config DEBUG_OBJECTS | 224 | config DEBUG_OBJECTS |
225 | bool "Debug object operations" | 225 | bool "Debug object operations" |
226 | depends on DEBUG_KERNEL | 226 | depends on DEBUG_KERNEL |
227 | help | 227 | help |
228 | If you say Y here, additional code will be inserted into the | 228 | If you say Y here, additional code will be inserted into the |
229 | kernel to track the life time of various objects and validate | 229 | kernel to track the life time of various objects and validate |
230 | the operations on those objects. | 230 | the operations on those objects. |
231 | 231 | ||
232 | config DEBUG_OBJECTS_SELFTEST | 232 | config DEBUG_OBJECTS_SELFTEST |
233 | bool "Debug objects selftest" | 233 | bool "Debug objects selftest" |
234 | depends on DEBUG_OBJECTS | 234 | depends on DEBUG_OBJECTS |
235 | help | 235 | help |
236 | This enables the selftest of the object debug code. | 236 | This enables the selftest of the object debug code. |
237 | 237 | ||
238 | config DEBUG_OBJECTS_FREE | 238 | config DEBUG_OBJECTS_FREE |
239 | bool "Debug objects in freed memory" | 239 | bool "Debug objects in freed memory" |
240 | depends on DEBUG_OBJECTS | 240 | depends on DEBUG_OBJECTS |
241 | help | 241 | help |
242 | This enables checks whether a k/v free operation frees an area | 242 | This enables checks whether a k/v free operation frees an area |
243 | which contains an object which has not been deactivated | 243 | which contains an object which has not been deactivated |
244 | properly. This can make kmalloc/kfree-intensive workloads | 244 | properly. This can make kmalloc/kfree-intensive workloads |
245 | much slower. | 245 | much slower. |
246 | 246 | ||
247 | config DEBUG_OBJECTS_TIMERS | 247 | config DEBUG_OBJECTS_TIMERS |
248 | bool "Debug timer objects" | 248 | bool "Debug timer objects" |
249 | depends on DEBUG_OBJECTS | 249 | depends on DEBUG_OBJECTS |
250 | help | 250 | help |
251 | If you say Y here, additional code will be inserted into the | 251 | If you say Y here, additional code will be inserted into the |
252 | timer routines to track the life time of timer objects and | 252 | timer routines to track the life time of timer objects and |
253 | validate the timer operations. | 253 | validate the timer operations. |
254 | 254 | ||
255 | config DEBUG_OBJECTS_ENABLE_DEFAULT | 255 | config DEBUG_OBJECTS_ENABLE_DEFAULT |
256 | int "debug_objects bootup default value (0-1)" | 256 | int "debug_objects bootup default value (0-1)" |
257 | range 0 1 | 257 | range 0 1 |
258 | default "1" | 258 | default "1" |
259 | depends on DEBUG_OBJECTS | 259 | depends on DEBUG_OBJECTS |
260 | help | 260 | help |
261 | Debug objects boot parameter default value | 261 | Debug objects boot parameter default value |
262 | 262 | ||
263 | config DEBUG_SLAB | 263 | config DEBUG_SLAB |
264 | bool "Debug slab memory allocations" | 264 | bool "Debug slab memory allocations" |
265 | depends on DEBUG_KERNEL && SLAB | 265 | depends on DEBUG_KERNEL && SLAB |
266 | help | 266 | help |
267 | Say Y here to have the kernel do limited verification on memory | 267 | Say Y here to have the kernel do limited verification on memory |
268 | allocation as well as poisoning memory on free to catch use of freed | 268 | allocation as well as poisoning memory on free to catch use of freed |
269 | memory. This can make kmalloc/kfree-intensive workloads much slower. | 269 | memory. This can make kmalloc/kfree-intensive workloads much slower. |
270 | 270 | ||
271 | config DEBUG_SLAB_LEAK | 271 | config DEBUG_SLAB_LEAK |
272 | bool "Memory leak debugging" | 272 | bool "Memory leak debugging" |
273 | depends on DEBUG_SLAB | 273 | depends on DEBUG_SLAB |
274 | 274 | ||
275 | config SLUB_DEBUG_ON | 275 | config SLUB_DEBUG_ON |
276 | bool "SLUB debugging on by default" | 276 | bool "SLUB debugging on by default" |
277 | depends on SLUB && SLUB_DEBUG | 277 | depends on SLUB && SLUB_DEBUG |
278 | default n | 278 | default n |
279 | help | 279 | help |
280 | Boot with debugging on by default. SLUB boots by default with | 280 | Boot with debugging on by default. SLUB boots by default with |
281 | the runtime debug capabilities switched off. Enabling this is | 281 | the runtime debug capabilities switched off. Enabling this is |
282 | equivalent to specifying the "slub_debug" parameter on boot. | 282 | equivalent to specifying the "slub_debug" parameter on boot. |
283 | There is no support for more fine grained debug control like | 283 | There is no support for more fine grained debug control like |
284 | possible with slub_debug=xxx. SLUB debugging may be switched | 284 | possible with slub_debug=xxx. SLUB debugging may be switched |
285 | off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying | 285 | off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying |
286 | "slub_debug=-". | 286 | "slub_debug=-". |
287 | 287 | ||
288 | config SLUB_STATS | 288 | config SLUB_STATS |
289 | default n | 289 | default n |
290 | bool "Enable SLUB performance statistics" | 290 | bool "Enable SLUB performance statistics" |
291 | depends on SLUB && SLUB_DEBUG && SYSFS | 291 | depends on SLUB && SLUB_DEBUG && SYSFS |
292 | help | 292 | help |
293 | SLUB statistics are useful to debug SLUBs allocation behavior in | 293 | SLUB statistics are useful to debug SLUBs allocation behavior in |
294 | order find ways to optimize the allocator. This should never be | 294 | order find ways to optimize the allocator. This should never be |
295 | enabled for production use since keeping statistics slows down | 295 | enabled for production use since keeping statistics slows down |
296 | the allocator by a few percentage points. The slabinfo command | 296 | the allocator by a few percentage points. The slabinfo command |
297 | supports the determination of the most active slabs to figure | 297 | supports the determination of the most active slabs to figure |
298 | out which slabs are relevant to a particular load. | 298 | out which slabs are relevant to a particular load. |
299 | Try running: slabinfo -DA | 299 | Try running: slabinfo -DA |
300 | 300 | ||
301 | config DEBUG_PREEMPT | 301 | config DEBUG_PREEMPT |
302 | bool "Debug preemptible kernel" | 302 | bool "Debug preemptible kernel" |
303 | depends on DEBUG_KERNEL && PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64) | 303 | depends on DEBUG_KERNEL && PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64) |
304 | default y | 304 | default y |
305 | help | 305 | help |
306 | If you say Y here then the kernel will use a debug variant of the | 306 | If you say Y here then the kernel will use a debug variant of the |
307 | commonly used smp_processor_id() function and will print warnings | 307 | commonly used smp_processor_id() function and will print warnings |
308 | if kernel code uses it in a preemption-unsafe way. Also, the kernel | 308 | if kernel code uses it in a preemption-unsafe way. Also, the kernel |
309 | will detect preemption count underflows. | 309 | will detect preemption count underflows. |
310 | 310 | ||
311 | config DEBUG_RT_MUTEXES | 311 | config DEBUG_RT_MUTEXES |
312 | bool "RT Mutex debugging, deadlock detection" | 312 | bool "RT Mutex debugging, deadlock detection" |
313 | depends on DEBUG_KERNEL && RT_MUTEXES | 313 | depends on DEBUG_KERNEL && RT_MUTEXES |
314 | help | 314 | help |
315 | This allows rt mutex semantics violations and rt mutex related | 315 | This allows rt mutex semantics violations and rt mutex related |
316 | deadlocks (lockups) to be detected and reported automatically. | 316 | deadlocks (lockups) to be detected and reported automatically. |
317 | 317 | ||
318 | config DEBUG_PI_LIST | 318 | config DEBUG_PI_LIST |
319 | bool | 319 | bool |
320 | default y | 320 | default y |
321 | depends on DEBUG_RT_MUTEXES | 321 | depends on DEBUG_RT_MUTEXES |
322 | 322 | ||
323 | config RT_MUTEX_TESTER | 323 | config RT_MUTEX_TESTER |
324 | bool "Built-in scriptable tester for rt-mutexes" | 324 | bool "Built-in scriptable tester for rt-mutexes" |
325 | depends on DEBUG_KERNEL && RT_MUTEXES | 325 | depends on DEBUG_KERNEL && RT_MUTEXES |
326 | help | 326 | help |
327 | This option enables a rt-mutex tester. | 327 | This option enables a rt-mutex tester. |
328 | 328 | ||
329 | config DEBUG_SPINLOCK | 329 | config DEBUG_SPINLOCK |
330 | bool "Spinlock and rw-lock debugging: basic checks" | 330 | bool "Spinlock and rw-lock debugging: basic checks" |
331 | depends on DEBUG_KERNEL | 331 | depends on DEBUG_KERNEL |
332 | help | 332 | help |
333 | Say Y here and build SMP to catch missing spinlock initialization | 333 | Say Y here and build SMP to catch missing spinlock initialization |
334 | and certain other kinds of spinlock errors commonly made. This is | 334 | and certain other kinds of spinlock errors commonly made. This is |
335 | best used in conjunction with the NMI watchdog so that spinlock | 335 | best used in conjunction with the NMI watchdog so that spinlock |
336 | deadlocks are also debuggable. | 336 | deadlocks are also debuggable. |
337 | 337 | ||
338 | config DEBUG_MUTEXES | 338 | config DEBUG_MUTEXES |
339 | bool "Mutex debugging: basic checks" | 339 | bool "Mutex debugging: basic checks" |
340 | depends on DEBUG_KERNEL | 340 | depends on DEBUG_KERNEL |
341 | help | 341 | help |
342 | This feature allows mutex semantics violations to be detected and | 342 | This feature allows mutex semantics violations to be detected and |
343 | reported. | 343 | reported. |
344 | 344 | ||
345 | config DEBUG_LOCK_ALLOC | 345 | config DEBUG_LOCK_ALLOC |
346 | bool "Lock debugging: detect incorrect freeing of live locks" | 346 | bool "Lock debugging: detect incorrect freeing of live locks" |
347 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 347 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
348 | select DEBUG_SPINLOCK | 348 | select DEBUG_SPINLOCK |
349 | select DEBUG_MUTEXES | 349 | select DEBUG_MUTEXES |
350 | select LOCKDEP | 350 | select LOCKDEP |
351 | help | 351 | help |
352 | This feature will check whether any held lock (spinlock, rwlock, | 352 | This feature will check whether any held lock (spinlock, rwlock, |
353 | mutex or rwsem) is incorrectly freed by the kernel, via any of the | 353 | mutex or rwsem) is incorrectly freed by the kernel, via any of the |
354 | memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), | 354 | memory-freeing routines (kfree(), kmem_cache_free(), free_pages(), |
355 | vfree(), etc.), whether a live lock is incorrectly reinitialized via | 355 | vfree(), etc.), whether a live lock is incorrectly reinitialized via |
356 | spin_lock_init()/mutex_init()/etc., or whether there is any lock | 356 | spin_lock_init()/mutex_init()/etc., or whether there is any lock |
357 | held during task exit. | 357 | held during task exit. |
358 | 358 | ||
359 | config PROVE_LOCKING | 359 | config PROVE_LOCKING |
360 | bool "Lock debugging: prove locking correctness" | 360 | bool "Lock debugging: prove locking correctness" |
361 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 361 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
362 | select LOCKDEP | 362 | select LOCKDEP |
363 | select DEBUG_SPINLOCK | 363 | select DEBUG_SPINLOCK |
364 | select DEBUG_MUTEXES | 364 | select DEBUG_MUTEXES |
365 | select DEBUG_LOCK_ALLOC | 365 | select DEBUG_LOCK_ALLOC |
366 | default n | 366 | default n |
367 | help | 367 | help |
368 | This feature enables the kernel to prove that all locking | 368 | This feature enables the kernel to prove that all locking |
369 | that occurs in the kernel runtime is mathematically | 369 | that occurs in the kernel runtime is mathematically |
370 | correct: that under no circumstance could an arbitrary (and | 370 | correct: that under no circumstance could an arbitrary (and |
371 | not yet triggered) combination of observed locking | 371 | not yet triggered) combination of observed locking |
372 | sequences (on an arbitrary number of CPUs, running an | 372 | sequences (on an arbitrary number of CPUs, running an |
373 | arbitrary number of tasks and interrupt contexts) cause a | 373 | arbitrary number of tasks and interrupt contexts) cause a |
374 | deadlock. | 374 | deadlock. |
375 | 375 | ||
376 | In short, this feature enables the kernel to report locking | 376 | In short, this feature enables the kernel to report locking |
377 | related deadlocks before they actually occur. | 377 | related deadlocks before they actually occur. |
378 | 378 | ||
379 | The proof does not depend on how hard and complex a | 379 | The proof does not depend on how hard and complex a |
380 | deadlock scenario would be to trigger: how many | 380 | deadlock scenario would be to trigger: how many |
381 | participant CPUs, tasks and irq-contexts would be needed | 381 | participant CPUs, tasks and irq-contexts would be needed |
382 | for it to trigger. The proof also does not depend on | 382 | for it to trigger. The proof also does not depend on |
383 | timing: if a race and a resulting deadlock is possible | 383 | timing: if a race and a resulting deadlock is possible |
384 | theoretically (no matter how unlikely the race scenario | 384 | theoretically (no matter how unlikely the race scenario |
385 | is), it will be proven so and will immediately be | 385 | is), it will be proven so and will immediately be |
386 | reported by the kernel (once the event is observed that | 386 | reported by the kernel (once the event is observed that |
387 | makes the deadlock theoretically possible). | 387 | makes the deadlock theoretically possible). |
388 | 388 | ||
389 | If a deadlock is impossible (i.e. the locking rules, as | 389 | If a deadlock is impossible (i.e. the locking rules, as |
390 | observed by the kernel, are mathematically correct), the | 390 | observed by the kernel, are mathematically correct), the |
391 | kernel reports nothing. | 391 | kernel reports nothing. |
392 | 392 | ||
393 | NOTE: this feature can also be enabled for rwlocks, mutexes | 393 | NOTE: this feature can also be enabled for rwlocks, mutexes |
394 | and rwsems - in which case all dependencies between these | 394 | and rwsems - in which case all dependencies between these |
395 | different locking variants are observed and mapped too, and | 395 | different locking variants are observed and mapped too, and |
396 | the proof of observed correctness is also maintained for an | 396 | the proof of observed correctness is also maintained for an |
397 | arbitrary combination of these separate locking variants. | 397 | arbitrary combination of these separate locking variants. |
398 | 398 | ||
399 | For more details, see Documentation/lockdep-design.txt. | 399 | For more details, see Documentation/lockdep-design.txt. |
400 | 400 | ||
401 | config LOCKDEP | 401 | config LOCKDEP |
402 | bool | 402 | bool |
403 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 403 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
404 | select STACKTRACE | 404 | select STACKTRACE |
405 | select FRAME_POINTER if !X86 && !MIPS && !PPC | 405 | select FRAME_POINTER if !X86 && !MIPS && !PPC |
406 | select KALLSYMS | 406 | select KALLSYMS |
407 | select KALLSYMS_ALL | 407 | select KALLSYMS_ALL |
408 | 408 | ||
409 | config LOCK_STAT | 409 | config LOCK_STAT |
410 | bool "Lock usage statistics" | 410 | bool "Lock usage statistics" |
411 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 411 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
412 | select LOCKDEP | 412 | select LOCKDEP |
413 | select DEBUG_SPINLOCK | 413 | select DEBUG_SPINLOCK |
414 | select DEBUG_MUTEXES | 414 | select DEBUG_MUTEXES |
415 | select DEBUG_LOCK_ALLOC | 415 | select DEBUG_LOCK_ALLOC |
416 | default n | 416 | default n |
417 | help | 417 | help |
418 | This feature enables tracking lock contention points | 418 | This feature enables tracking lock contention points |
419 | 419 | ||
420 | For more details, see Documentation/lockstat.txt | 420 | For more details, see Documentation/lockstat.txt |
421 | 421 | ||
422 | config DEBUG_LOCKDEP | 422 | config DEBUG_LOCKDEP |
423 | bool "Lock dependency engine debugging" | 423 | bool "Lock dependency engine debugging" |
424 | depends on DEBUG_KERNEL && LOCKDEP | 424 | depends on DEBUG_KERNEL && LOCKDEP |
425 | help | 425 | help |
426 | If you say Y here, the lock dependency engine will do | 426 | If you say Y here, the lock dependency engine will do |
427 | additional runtime checks to debug itself, at the price | 427 | additional runtime checks to debug itself, at the price |
428 | of more runtime overhead. | 428 | of more runtime overhead. |
429 | 429 | ||
430 | config TRACE_IRQFLAGS | 430 | config TRACE_IRQFLAGS |
431 | depends on DEBUG_KERNEL | 431 | depends on DEBUG_KERNEL |
432 | bool | 432 | bool |
433 | default y | 433 | default y |
434 | depends on TRACE_IRQFLAGS_SUPPORT | 434 | depends on TRACE_IRQFLAGS_SUPPORT |
435 | depends on PROVE_LOCKING | 435 | depends on PROVE_LOCKING |
436 | 436 | ||
437 | config DEBUG_SPINLOCK_SLEEP | 437 | config DEBUG_SPINLOCK_SLEEP |
438 | bool "Spinlock debugging: sleep-inside-spinlock checking" | 438 | bool "Spinlock debugging: sleep-inside-spinlock checking" |
439 | depends on DEBUG_KERNEL | 439 | depends on DEBUG_KERNEL |
440 | help | 440 | help |
441 | If you say Y here, various routines which may sleep will become very | 441 | If you say Y here, various routines which may sleep will become very |
442 | noisy if they are called with a spinlock held. | 442 | noisy if they are called with a spinlock held. |
443 | 443 | ||
444 | config DEBUG_LOCKING_API_SELFTESTS | 444 | config DEBUG_LOCKING_API_SELFTESTS |
445 | bool "Locking API boot-time self-tests" | 445 | bool "Locking API boot-time self-tests" |
446 | depends on DEBUG_KERNEL | 446 | depends on DEBUG_KERNEL |
447 | help | 447 | help |
448 | Say Y here if you want the kernel to run a short self-test during | 448 | Say Y here if you want the kernel to run a short self-test during |
449 | bootup. The self-test checks whether common types of locking bugs | 449 | bootup. The self-test checks whether common types of locking bugs |
450 | are detected by debugging mechanisms or not. (if you disable | 450 | are detected by debugging mechanisms or not. (if you disable |
451 | lock debugging then those bugs wont be detected of course.) | 451 | lock debugging then those bugs wont be detected of course.) |
452 | The following locking APIs are covered: spinlocks, rwlocks, | 452 | The following locking APIs are covered: spinlocks, rwlocks, |
453 | mutexes and rwsems. | 453 | mutexes and rwsems. |
454 | 454 | ||
455 | config STACKTRACE | 455 | config STACKTRACE |
456 | bool | 456 | bool |
457 | depends on STACKTRACE_SUPPORT | 457 | depends on STACKTRACE_SUPPORT |
458 | 458 | ||
459 | config DEBUG_KOBJECT | 459 | config DEBUG_KOBJECT |
460 | bool "kobject debugging" | 460 | bool "kobject debugging" |
461 | depends on DEBUG_KERNEL | 461 | depends on DEBUG_KERNEL |
462 | help | 462 | help |
463 | If you say Y here, some extra kobject debugging messages will be sent | 463 | If you say Y here, some extra kobject debugging messages will be sent |
464 | to the syslog. | 464 | to the syslog. |
465 | 465 | ||
466 | config DEBUG_HIGHMEM | 466 | config DEBUG_HIGHMEM |
467 | bool "Highmem debugging" | 467 | bool "Highmem debugging" |
468 | depends on DEBUG_KERNEL && HIGHMEM | 468 | depends on DEBUG_KERNEL && HIGHMEM |
469 | help | 469 | help |
470 | This options enables addition error checking for high memory systems. | 470 | This options enables addition error checking for high memory systems. |
471 | Disable for production systems. | 471 | Disable for production systems. |
472 | 472 | ||
473 | config DEBUG_BUGVERBOSE | 473 | config DEBUG_BUGVERBOSE |
474 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED | 474 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED |
475 | depends on BUG | 475 | depends on BUG |
476 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ | 476 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ |
477 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 | 477 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 |
478 | default !EMBEDDED | 478 | default !EMBEDDED |
479 | help | 479 | help |
480 | Say Y here to make BUG() panics output the file name and line number | 480 | Say Y here to make BUG() panics output the file name and line number |
481 | of the BUG call as well as the EIP and oops trace. This aids | 481 | of the BUG call as well as the EIP and oops trace. This aids |
482 | debugging but costs about 70-100K of memory. | 482 | debugging but costs about 70-100K of memory. |
483 | 483 | ||
484 | config DEBUG_INFO | 484 | config DEBUG_INFO |
485 | bool "Compile the kernel with debug info" | 485 | bool "Compile the kernel with debug info" |
486 | depends on DEBUG_KERNEL | 486 | depends on DEBUG_KERNEL |
487 | help | 487 | help |
488 | If you say Y here the resulting kernel image will include | 488 | If you say Y here the resulting kernel image will include |
489 | debugging info resulting in a larger kernel image. | 489 | debugging info resulting in a larger kernel image. |
490 | This adds debug symbols to the kernel and modules (gcc -g), and | 490 | This adds debug symbols to the kernel and modules (gcc -g), and |
491 | is needed if you intend to use kernel crashdump or binary object | 491 | is needed if you intend to use kernel crashdump or binary object |
492 | tools like crash, kgdb, LKCD, gdb, etc on the kernel. | 492 | tools like crash, kgdb, LKCD, gdb, etc on the kernel. |
493 | Say Y here only if you plan to debug the kernel. | 493 | Say Y here only if you plan to debug the kernel. |
494 | 494 | ||
495 | If unsure, say N. | 495 | If unsure, say N. |
496 | 496 | ||
497 | config DEBUG_VM | 497 | config DEBUG_VM |
498 | bool "Debug VM" | 498 | bool "Debug VM" |
499 | depends on DEBUG_KERNEL | 499 | depends on DEBUG_KERNEL |
500 | help | 500 | help |
501 | Enable this to turn on extended checks in the virtual-memory system | 501 | Enable this to turn on extended checks in the virtual-memory system |
502 | that may impact performance. | 502 | that may impact performance. |
503 | 503 | ||
504 | If unsure, say N. | 504 | If unsure, say N. |
505 | 505 | ||
506 | config DEBUG_VIRTUAL | 506 | config DEBUG_VIRTUAL |
507 | bool "Debug VM translations" | 507 | bool "Debug VM translations" |
508 | depends on DEBUG_KERNEL && X86 | 508 | depends on DEBUG_KERNEL && X86 |
509 | help | 509 | help |
510 | Enable some costly sanity checks in virtual to page code. This can | 510 | Enable some costly sanity checks in virtual to page code. This can |
511 | catch mistakes with virt_to_page() and friends. | 511 | catch mistakes with virt_to_page() and friends. |
512 | 512 | ||
513 | If unsure, say N. | 513 | If unsure, say N. |
514 | 514 | ||
515 | config DEBUG_NOMMU_REGIONS | 515 | config DEBUG_NOMMU_REGIONS |
516 | bool "Debug the global anon/private NOMMU mapping region tree" | 516 | bool "Debug the global anon/private NOMMU mapping region tree" |
517 | depends on DEBUG_KERNEL && !MMU | 517 | depends on DEBUG_KERNEL && !MMU |
518 | help | 518 | help |
519 | This option causes the global tree of anonymous and private mapping | 519 | This option causes the global tree of anonymous and private mapping |
520 | regions to be regularly checked for invalid topology. | 520 | regions to be regularly checked for invalid topology. |
521 | 521 | ||
522 | config DEBUG_WRITECOUNT | 522 | config DEBUG_WRITECOUNT |
523 | bool "Debug filesystem writers count" | 523 | bool "Debug filesystem writers count" |
524 | depends on DEBUG_KERNEL | 524 | depends on DEBUG_KERNEL |
525 | help | 525 | help |
526 | Enable this to catch wrong use of the writers count in struct | 526 | Enable this to catch wrong use of the writers count in struct |
527 | vfsmount. This will increase the size of each file struct by | 527 | vfsmount. This will increase the size of each file struct by |
528 | 32 bits. | 528 | 32 bits. |
529 | 529 | ||
530 | If unsure, say N. | 530 | If unsure, say N. |
531 | 531 | ||
532 | config DEBUG_MEMORY_INIT | 532 | config DEBUG_MEMORY_INIT |
533 | bool "Debug memory initialisation" if EMBEDDED | 533 | bool "Debug memory initialisation" if EMBEDDED |
534 | default !EMBEDDED | 534 | default !EMBEDDED |
535 | help | 535 | help |
536 | Enable this for additional checks during memory initialisation. | 536 | Enable this for additional checks during memory initialisation. |
537 | The sanity checks verify aspects of the VM such as the memory model | 537 | The sanity checks verify aspects of the VM such as the memory model |
538 | and other information provided by the architecture. Verbose | 538 | and other information provided by the architecture. Verbose |
539 | information will be printed at KERN_DEBUG loglevel depending | 539 | information will be printed at KERN_DEBUG loglevel depending |
540 | on the mminit_loglevel= command-line option. | 540 | on the mminit_loglevel= command-line option. |
541 | 541 | ||
542 | If unsure, say Y | 542 | If unsure, say Y |
543 | 543 | ||
544 | config DEBUG_LIST | 544 | config DEBUG_LIST |
545 | bool "Debug linked list manipulation" | 545 | bool "Debug linked list manipulation" |
546 | depends on DEBUG_KERNEL | 546 | depends on DEBUG_KERNEL |
547 | help | 547 | help |
548 | Enable this to turn on extended checks in the linked-list | 548 | Enable this to turn on extended checks in the linked-list |
549 | walking routines. | 549 | walking routines. |
550 | 550 | ||
551 | If unsure, say N. | 551 | If unsure, say N. |
552 | 552 | ||
553 | config DEBUG_SG | 553 | config DEBUG_SG |
554 | bool "Debug SG table operations" | 554 | bool "Debug SG table operations" |
555 | depends on DEBUG_KERNEL | 555 | depends on DEBUG_KERNEL |
556 | help | 556 | help |
557 | Enable this to turn on checks on scatter-gather tables. This can | 557 | Enable this to turn on checks on scatter-gather tables. This can |
558 | help find problems with drivers that do not properly initialize | 558 | help find problems with drivers that do not properly initialize |
559 | their sg tables. | 559 | their sg tables. |
560 | 560 | ||
561 | If unsure, say N. | 561 | If unsure, say N. |
562 | 562 | ||
563 | config DEBUG_NOTIFIERS | 563 | config DEBUG_NOTIFIERS |
564 | bool "Debug notifier call chains" | 564 | bool "Debug notifier call chains" |
565 | depends on DEBUG_KERNEL | 565 | depends on DEBUG_KERNEL |
566 | help | 566 | help |
567 | Enable this to turn on sanity checking for notifier call chains. | 567 | Enable this to turn on sanity checking for notifier call chains. |
568 | This is most useful for kernel developers to make sure that | 568 | This is most useful for kernel developers to make sure that |
569 | modules properly unregister themselves from notifier chains. | 569 | modules properly unregister themselves from notifier chains. |
570 | This is a relatively cheap check but if you care about maximum | 570 | This is a relatively cheap check but if you care about maximum |
571 | performance, say N. | 571 | performance, say N. |
572 | 572 | ||
573 | # | 573 | # |
574 | # Select this config option from the architecture Kconfig, if it | 574 | # Select this config option from the architecture Kconfig, if it |
575 | # it is preferred to always offer frame pointers as a config | 575 | # it is preferred to always offer frame pointers as a config |
576 | # option on the architecture (regardless of KERNEL_DEBUG): | 576 | # option on the architecture (regardless of KERNEL_DEBUG): |
577 | # | 577 | # |
578 | config ARCH_WANT_FRAME_POINTERS | 578 | config ARCH_WANT_FRAME_POINTERS |
579 | bool | 579 | bool |
580 | help | 580 | help |
581 | 581 | ||
582 | config FRAME_POINTER | 582 | config FRAME_POINTER |
583 | bool "Compile the kernel with frame pointers" | 583 | bool "Compile the kernel with frame pointers" |
584 | depends on DEBUG_KERNEL && \ | 584 | depends on DEBUG_KERNEL && \ |
585 | (CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ | 585 | (CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ |
586 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ | 586 | AVR32 || SUPERH || BLACKFIN || MN10300) || \ |
587 | ARCH_WANT_FRAME_POINTERS | 587 | ARCH_WANT_FRAME_POINTERS |
588 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS | 588 | default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS |
589 | help | 589 | help |
590 | If you say Y here the resulting kernel image will be slightly | 590 | If you say Y here the resulting kernel image will be slightly |
591 | larger and slower, but it gives very useful debugging information | 591 | larger and slower, but it gives very useful debugging information |
592 | in case of kernel bugs. (precise oopses/stacktraces/warnings) | 592 | in case of kernel bugs. (precise oopses/stacktraces/warnings) |
593 | 593 | ||
594 | config BOOT_PRINTK_DELAY | 594 | config BOOT_PRINTK_DELAY |
595 | bool "Delay each boot printk message by N milliseconds" | 595 | bool "Delay each boot printk message by N milliseconds" |
596 | depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY | 596 | depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY |
597 | help | 597 | help |
598 | This build option allows you to read kernel boot messages | 598 | This build option allows you to read kernel boot messages |
599 | by inserting a short delay after each one. The delay is | 599 | by inserting a short delay after each one. The delay is |
600 | specified in milliseconds on the kernel command line, | 600 | specified in milliseconds on the kernel command line, |
601 | using "boot_delay=N". | 601 | using "boot_delay=N". |
602 | 602 | ||
603 | It is likely that you would also need to use "lpj=M" to preset | 603 | It is likely that you would also need to use "lpj=M" to preset |
604 | the "loops per jiffie" value. | 604 | the "loops per jiffie" value. |
605 | See a previous boot log for the "lpj" value to use for your | 605 | See a previous boot log for the "lpj" value to use for your |
606 | system, and then set "lpj=M" before setting "boot_delay=N". | 606 | system, and then set "lpj=M" before setting "boot_delay=N". |
607 | NOTE: Using this option may adversely affect SMP systems. | 607 | NOTE: Using this option may adversely affect SMP systems. |
608 | I.e., processors other than the first one may not boot up. | 608 | I.e., processors other than the first one may not boot up. |
609 | BOOT_PRINTK_DELAY also may cause DETECT_SOFTLOCKUP to detect | 609 | BOOT_PRINTK_DELAY also may cause DETECT_SOFTLOCKUP to detect |
610 | what it believes to be lockup conditions. | 610 | what it believes to be lockup conditions. |
611 | 611 | ||
612 | config RCU_TORTURE_TEST | 612 | config RCU_TORTURE_TEST |
613 | tristate "torture tests for RCU" | 613 | tristate "torture tests for RCU" |
614 | depends on DEBUG_KERNEL | 614 | depends on DEBUG_KERNEL |
615 | default n | 615 | default n |
616 | help | 616 | help |
617 | This option provides a kernel module that runs torture tests | 617 | This option provides a kernel module that runs torture tests |
618 | on the RCU infrastructure. The kernel module may be built | 618 | on the RCU infrastructure. The kernel module may be built |
619 | after the fact on the running kernel to be tested, if desired. | 619 | after the fact on the running kernel to be tested, if desired. |
620 | 620 | ||
621 | Say Y here if you want RCU torture tests to be built into | 621 | Say Y here if you want RCU torture tests to be built into |
622 | the kernel. | 622 | the kernel. |
623 | Say M if you want the RCU torture tests to build as a module. | 623 | Say M if you want the RCU torture tests to build as a module. |
624 | Say N if you are unsure. | 624 | Say N if you are unsure. |
625 | 625 | ||
626 | config RCU_TORTURE_TEST_RUNNABLE | 626 | config RCU_TORTURE_TEST_RUNNABLE |
627 | bool "torture tests for RCU runnable by default" | 627 | bool "torture tests for RCU runnable by default" |
628 | depends on RCU_TORTURE_TEST = y | 628 | depends on RCU_TORTURE_TEST = y |
629 | default n | 629 | default n |
630 | help | 630 | help |
631 | This option provides a way to build the RCU torture tests | 631 | This option provides a way to build the RCU torture tests |
632 | directly into the kernel without them starting up at boot | 632 | directly into the kernel without them starting up at boot |
633 | time. You can use /proc/sys/kernel/rcutorture_runnable | 633 | time. You can use /proc/sys/kernel/rcutorture_runnable |
634 | to manually override this setting. This /proc file is | 634 | to manually override this setting. This /proc file is |
635 | available only when the RCU torture tests have been built | 635 | available only when the RCU torture tests have been built |
636 | into the kernel. | 636 | into the kernel. |
637 | 637 | ||
638 | Say Y here if you want the RCU torture tests to start during | 638 | Say Y here if you want the RCU torture tests to start during |
639 | boot (you probably don't). | 639 | boot (you probably don't). |
640 | Say N here if you want the RCU torture tests to start only | 640 | Say N here if you want the RCU torture tests to start only |
641 | after being manually enabled via /proc. | 641 | after being manually enabled via /proc. |
642 | 642 | ||
643 | config RCU_CPU_STALL_DETECTOR | 643 | config RCU_CPU_STALL_DETECTOR |
644 | bool "Check for stalled CPUs delaying RCU grace periods" | 644 | bool "Check for stalled CPUs delaying RCU grace periods" |
645 | depends on CLASSIC_RCU || TREE_RCU | 645 | depends on CLASSIC_RCU || TREE_RCU |
646 | default n | 646 | default n |
647 | help | 647 | help |
648 | This option causes RCU to printk information on which | 648 | This option causes RCU to printk information on which |
649 | CPUs are delaying the current grace period, but only when | 649 | CPUs are delaying the current grace period, but only when |
650 | the grace period extends for excessive time periods. | 650 | the grace period extends for excessive time periods. |
651 | 651 | ||
652 | Say Y if you want RCU to perform such checks. | 652 | Say Y if you want RCU to perform such checks. |
653 | 653 | ||
654 | Say N if you are unsure. | 654 | Say N if you are unsure. |
655 | 655 | ||
656 | config KPROBES_SANITY_TEST | 656 | config KPROBES_SANITY_TEST |
657 | bool "Kprobes sanity tests" | 657 | bool "Kprobes sanity tests" |
658 | depends on DEBUG_KERNEL | 658 | depends on DEBUG_KERNEL |
659 | depends on KPROBES | 659 | depends on KPROBES |
660 | default n | 660 | default n |
661 | help | 661 | help |
662 | This option provides for testing basic kprobes functionality on | 662 | This option provides for testing basic kprobes functionality on |
663 | boot. A sample kprobe, jprobe and kretprobe are inserted and | 663 | boot. A sample kprobe, jprobe and kretprobe are inserted and |
664 | verified for functionality. | 664 | verified for functionality. |
665 | 665 | ||
666 | Say N if you are unsure. | 666 | Say N if you are unsure. |
667 | 667 | ||
668 | config BACKTRACE_SELF_TEST | 668 | config BACKTRACE_SELF_TEST |
669 | tristate "Self test for the backtrace code" | 669 | tristate "Self test for the backtrace code" |
670 | depends on DEBUG_KERNEL | 670 | depends on DEBUG_KERNEL |
671 | default n | 671 | default n |
672 | help | 672 | help |
673 | This option provides a kernel module that can be used to test | 673 | This option provides a kernel module that can be used to test |
674 | the kernel stack backtrace code. This option is not useful | 674 | the kernel stack backtrace code. This option is not useful |
675 | for distributions or general kernels, but only for kernel | 675 | for distributions or general kernels, but only for kernel |
676 | developers working on architecture code. | 676 | developers working on architecture code. |
677 | 677 | ||
678 | Note that if you want to also test saved backtraces, you will | 678 | Note that if you want to also test saved backtraces, you will |
679 | have to enable STACKTRACE as well. | 679 | have to enable STACKTRACE as well. |
680 | 680 | ||
681 | Say N if you are unsure. | 681 | Say N if you are unsure. |
682 | 682 | ||
683 | config DEBUG_BLOCK_EXT_DEVT | 683 | config DEBUG_BLOCK_EXT_DEVT |
684 | bool "Force extended block device numbers and spread them" | 684 | bool "Force extended block device numbers and spread them" |
685 | depends on DEBUG_KERNEL | 685 | depends on DEBUG_KERNEL |
686 | depends on BLOCK | 686 | depends on BLOCK |
687 | default n | 687 | default n |
688 | help | 688 | help |
689 | BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON | 689 | BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON |
690 | SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT | 690 | SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT |
691 | YOU ARE DOING. Distros, please enable this and fix whatever | 691 | YOU ARE DOING. Distros, please enable this and fix whatever |
692 | is broken. | 692 | is broken. |
693 | 693 | ||
694 | Conventionally, block device numbers are allocated from | 694 | Conventionally, block device numbers are allocated from |
695 | predetermined contiguous area. However, extended block area | 695 | predetermined contiguous area. However, extended block area |
696 | may introduce non-contiguous block device numbers. This | 696 | may introduce non-contiguous block device numbers. This |
697 | option forces most block device numbers to be allocated from | 697 | option forces most block device numbers to be allocated from |
698 | the extended space and spreads them to discover kernel or | 698 | the extended space and spreads them to discover kernel or |
699 | userland code paths which assume predetermined contiguous | 699 | userland code paths which assume predetermined contiguous |
700 | device number allocation. | 700 | device number allocation. |
701 | 701 | ||
702 | Note that turning on this debug option shuffles all the | 702 | Note that turning on this debug option shuffles all the |
703 | device numbers for all IDE and SCSI devices including libata | 703 | device numbers for all IDE and SCSI devices including libata |
704 | ones, so root partition specified using device number | 704 | ones, so root partition specified using device number |
705 | directly (via rdev or root=MAJ:MIN) won't work anymore. | 705 | directly (via rdev or root=MAJ:MIN) won't work anymore. |
706 | Textual device names (root=/dev/sdXn) will continue to work. | 706 | Textual device names (root=/dev/sdXn) will continue to work. |
707 | 707 | ||
708 | Say N if you are unsure. | 708 | Say N if you are unsure. |
709 | 709 | ||
710 | config LKDTM | 710 | config LKDTM |
711 | tristate "Linux Kernel Dump Test Tool Module" | 711 | tristate "Linux Kernel Dump Test Tool Module" |
712 | depends on DEBUG_KERNEL | 712 | depends on DEBUG_KERNEL |
713 | depends on KPROBES | 713 | depends on KPROBES |
714 | depends on BLOCK | 714 | depends on BLOCK |
715 | default n | 715 | default n |
716 | help | 716 | help |
717 | This module enables testing of the different dumping mechanisms by | 717 | This module enables testing of the different dumping mechanisms by |
718 | inducing system failures at predefined crash points. | 718 | inducing system failures at predefined crash points. |
719 | If you don't need it: say N | 719 | If you don't need it: say N |
720 | Choose M here to compile this code as a module. The module will be | 720 | Choose M here to compile this code as a module. The module will be |
721 | called lkdtm. | 721 | called lkdtm. |
722 | 722 | ||
723 | Documentation on how to use the module can be found in | 723 | Documentation on how to use the module can be found in |
724 | drivers/misc/lkdtm.c | 724 | drivers/misc/lkdtm.c |
725 | 725 | ||
726 | config FAULT_INJECTION | 726 | config FAULT_INJECTION |
727 | bool "Fault-injection framework" | 727 | bool "Fault-injection framework" |
728 | depends on DEBUG_KERNEL | 728 | depends on DEBUG_KERNEL |
729 | help | 729 | help |
730 | Provide fault-injection framework. | 730 | Provide fault-injection framework. |
731 | For more details, see Documentation/fault-injection/. | 731 | For more details, see Documentation/fault-injection/. |
732 | 732 | ||
733 | config FAILSLAB | 733 | config FAILSLAB |
734 | bool "Fault-injection capability for kmalloc" | 734 | bool "Fault-injection capability for kmalloc" |
735 | depends on FAULT_INJECTION | 735 | depends on FAULT_INJECTION |
736 | depends on SLAB || SLUB | 736 | depends on SLAB || SLUB |
737 | help | 737 | help |
738 | Provide fault-injection capability for kmalloc. | 738 | Provide fault-injection capability for kmalloc. |
739 | 739 | ||
740 | config FAIL_PAGE_ALLOC | 740 | config FAIL_PAGE_ALLOC |
741 | bool "Fault-injection capabilitiy for alloc_pages()" | 741 | bool "Fault-injection capabilitiy for alloc_pages()" |
742 | depends on FAULT_INJECTION | 742 | depends on FAULT_INJECTION |
743 | help | 743 | help |
744 | Provide fault-injection capability for alloc_pages(). | 744 | Provide fault-injection capability for alloc_pages(). |
745 | 745 | ||
746 | config FAIL_MAKE_REQUEST | 746 | config FAIL_MAKE_REQUEST |
747 | bool "Fault-injection capability for disk IO" | 747 | bool "Fault-injection capability for disk IO" |
748 | depends on FAULT_INJECTION && BLOCK | 748 | depends on FAULT_INJECTION && BLOCK |
749 | help | 749 | help |
750 | Provide fault-injection capability for disk IO. | 750 | Provide fault-injection capability for disk IO. |
751 | 751 | ||
752 | config FAIL_IO_TIMEOUT | 752 | config FAIL_IO_TIMEOUT |
753 | bool "Faul-injection capability for faking disk interrupts" | 753 | bool "Faul-injection capability for faking disk interrupts" |
754 | depends on FAULT_INJECTION && BLOCK | 754 | depends on FAULT_INJECTION && BLOCK |
755 | help | 755 | help |
756 | Provide fault-injection capability on end IO handling. This | 756 | Provide fault-injection capability on end IO handling. This |
757 | will make the block layer "forget" an interrupt as configured, | 757 | will make the block layer "forget" an interrupt as configured, |
758 | thus exercising the error handling. | 758 | thus exercising the error handling. |
759 | 759 | ||
760 | Only works with drivers that use the generic timeout handling, | 760 | Only works with drivers that use the generic timeout handling, |
761 | for others it wont do anything. | 761 | for others it wont do anything. |
762 | 762 | ||
763 | config FAULT_INJECTION_DEBUG_FS | 763 | config FAULT_INJECTION_DEBUG_FS |
764 | bool "Debugfs entries for fault-injection capabilities" | 764 | bool "Debugfs entries for fault-injection capabilities" |
765 | depends on FAULT_INJECTION && SYSFS && DEBUG_FS | 765 | depends on FAULT_INJECTION && SYSFS && DEBUG_FS |
766 | help | 766 | help |
767 | Enable configuration of fault-injection capabilities via debugfs. | 767 | Enable configuration of fault-injection capabilities via debugfs. |
768 | 768 | ||
769 | config FAULT_INJECTION_STACKTRACE_FILTER | 769 | config FAULT_INJECTION_STACKTRACE_FILTER |
770 | bool "stacktrace filter for fault-injection capabilities" | 770 | bool "stacktrace filter for fault-injection capabilities" |
771 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT | 771 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT |
772 | depends on !X86_64 | 772 | depends on !X86_64 |
773 | select STACKTRACE | 773 | select STACKTRACE |
774 | select FRAME_POINTER if !PPC | 774 | select FRAME_POINTER if !PPC |
775 | help | 775 | help |
776 | Provide stacktrace filter for fault-injection capabilities | 776 | Provide stacktrace filter for fault-injection capabilities |
777 | 777 | ||
778 | config LATENCYTOP | 778 | config LATENCYTOP |
779 | bool "Latency measuring infrastructure" | 779 | bool "Latency measuring infrastructure" |
780 | select FRAME_POINTER if !MIPS && !PPC | 780 | select FRAME_POINTER if !MIPS && !PPC |
781 | select KALLSYMS | 781 | select KALLSYMS |
782 | select KALLSYMS_ALL | 782 | select KALLSYMS_ALL |
783 | select STACKTRACE | 783 | select STACKTRACE |
784 | select SCHEDSTATS | 784 | select SCHEDSTATS |
785 | select SCHED_DEBUG | 785 | select SCHED_DEBUG |
786 | depends on HAVE_LATENCYTOP_SUPPORT | 786 | depends on HAVE_LATENCYTOP_SUPPORT |
787 | help | 787 | help |
788 | Enable this option if you want to use the LatencyTOP tool | 788 | Enable this option if you want to use the LatencyTOP tool |
789 | to find out which userspace is blocking on what kernel operations. | 789 | to find out which userspace is blocking on what kernel operations. |
790 | 790 | ||
791 | config SYSCTL_SYSCALL_CHECK | 791 | config SYSCTL_SYSCALL_CHECK |
792 | bool "Sysctl checks" | 792 | bool "Sysctl checks" |
793 | depends on SYSCTL_SYSCALL | 793 | depends on SYSCTL_SYSCALL |
794 | ---help--- | 794 | ---help--- |
795 | sys_sysctl uses binary paths that have been found challenging | 795 | sys_sysctl uses binary paths that have been found challenging |
796 | to properly maintain and use. This enables checks that help | 796 | to properly maintain and use. This enables checks that help |
797 | you to keep things correct. | 797 | you to keep things correct. |
798 | 798 | ||
799 | source kernel/trace/Kconfig | 799 | source kernel/trace/Kconfig |
800 | 800 | ||
801 | config PROVIDE_OHCI1394_DMA_INIT | 801 | config PROVIDE_OHCI1394_DMA_INIT |
802 | bool "Remote debugging over FireWire early on boot" | 802 | bool "Remote debugging over FireWire early on boot" |
803 | depends on PCI && X86 | 803 | depends on PCI && X86 |
804 | help | 804 | help |
805 | If you want to debug problems which hang or crash the kernel early | 805 | If you want to debug problems which hang or crash the kernel early |
806 | on boot and the crashing machine has a FireWire port, you can use | 806 | on boot and the crashing machine has a FireWire port, you can use |
807 | this feature to remotely access the memory of the crashed machine | 807 | this feature to remotely access the memory of the crashed machine |
808 | over FireWire. This employs remote DMA as part of the OHCI1394 | 808 | over FireWire. This employs remote DMA as part of the OHCI1394 |
809 | specification which is now the standard for FireWire controllers. | 809 | specification which is now the standard for FireWire controllers. |
810 | 810 | ||
811 | With remote DMA, you can monitor the printk buffer remotely using | 811 | With remote DMA, you can monitor the printk buffer remotely using |
812 | firescope and access all memory below 4GB using fireproxy from gdb. | 812 | firescope and access all memory below 4GB using fireproxy from gdb. |
813 | Even controlling a kernel debugger is possible using remote DMA. | 813 | Even controlling a kernel debugger is possible using remote DMA. |
814 | 814 | ||
815 | Usage: | 815 | Usage: |
816 | 816 | ||
817 | If ohci1394_dma=early is used as boot parameter, it will initialize | 817 | If ohci1394_dma=early is used as boot parameter, it will initialize |
818 | all OHCI1394 controllers which are found in the PCI config space. | 818 | all OHCI1394 controllers which are found in the PCI config space. |
819 | 819 | ||
820 | As all changes to the FireWire bus such as enabling and disabling | 820 | As all changes to the FireWire bus such as enabling and disabling |
821 | devices cause a bus reset and thereby disable remote DMA for all | 821 | devices cause a bus reset and thereby disable remote DMA for all |
822 | devices, be sure to have the cable plugged and FireWire enabled on | 822 | devices, be sure to have the cable plugged and FireWire enabled on |
823 | the debugging host before booting the debug target for debugging. | 823 | the debugging host before booting the debug target for debugging. |
824 | 824 | ||
825 | This code (~1k) is freed after boot. By then, the firewire stack | 825 | This code (~1k) is freed after boot. By then, the firewire stack |
826 | in charge of the OHCI-1394 controllers should be used instead. | 826 | in charge of the OHCI-1394 controllers should be used instead. |
827 | 827 | ||
828 | See Documentation/debugging-via-ohci1394.txt for more information. | 828 | See Documentation/debugging-via-ohci1394.txt for more information. |
829 | 829 | ||
830 | config FIREWIRE_OHCI_REMOTE_DMA | 830 | config FIREWIRE_OHCI_REMOTE_DMA |
831 | bool "Remote debugging over FireWire with firewire-ohci" | 831 | bool "Remote debugging over FireWire with firewire-ohci" |
832 | depends on FIREWIRE_OHCI | 832 | depends on FIREWIRE_OHCI |
833 | help | 833 | help |
834 | This option lets you use the FireWire bus for remote debugging | 834 | This option lets you use the FireWire bus for remote debugging |
835 | with help of the firewire-ohci driver. It enables unfiltered | 835 | with help of the firewire-ohci driver. It enables unfiltered |
836 | remote DMA in firewire-ohci. | 836 | remote DMA in firewire-ohci. |
837 | See Documentation/debugging-via-ohci1394.txt for more information. | 837 | See Documentation/debugging-via-ohci1394.txt for more information. |
838 | 838 | ||
839 | If unsure, say N. | 839 | If unsure, say N. |
840 | 840 | ||
841 | config BUILD_DOCSRC | 841 | config BUILD_DOCSRC |
842 | bool "Build targets in Documentation/ tree" | 842 | bool "Build targets in Documentation/ tree" |
843 | depends on HEADERS_CHECK | 843 | depends on HEADERS_CHECK |
844 | help | 844 | help |
845 | This option attempts to build objects from the source files in the | 845 | This option attempts to build objects from the source files in the |
846 | kernel Documentation/ tree. | 846 | kernel Documentation/ tree. |
847 | 847 | ||
848 | Say N if you are unsure. | 848 | Say N if you are unsure. |
849 | 849 | ||
850 | config DYNAMIC_PRINTK_DEBUG | 850 | config DYNAMIC_PRINTK_DEBUG |
851 | bool "Enable dynamic printk() call support" | 851 | bool "Enable dynamic printk() call support" |
852 | default n | 852 | default n |
853 | depends on PRINTK | 853 | depends on PRINTK |
854 | select PRINTK_DEBUG | 854 | select PRINTK_DEBUG |
855 | help | 855 | help |
856 | 856 | ||
857 | Compiles debug level messages into the kernel, which would not | 857 | Compiles debug level messages into the kernel, which would not |
858 | otherwise be available at runtime. These messages can then be | 858 | otherwise be available at runtime. These messages can then be |
859 | enabled/disabled on a per module basis. This mechanism implicitly | 859 | enabled/disabled on a per module basis. This mechanism implicitly |
860 | enables all pr_debug() and dev_dbg() calls. The impact of this | 860 | enables all pr_debug() and dev_dbg() calls. The impact of this |
861 | compile option is a larger kernel text size of about 2%. | 861 | compile option is a larger kernel text size of about 2%. |
862 | 862 | ||
863 | Usage: | 863 | Usage: |
864 | 864 | ||
865 | Dynamic debugging is controlled by the debugfs file, | 865 | Dynamic debugging is controlled by the debugfs file, |
866 | dynamic_printk/modules. This file contains a list of the modules that | 866 | dynamic_printk/modules. This file contains a list of the modules that |
867 | can be enabled. The format of the file is the module name, followed | 867 | can be enabled. The format of the file is the module name, followed |
868 | by a set of flags that can be enabled. The first flag is always the | 868 | by a set of flags that can be enabled. The first flag is always the |
869 | 'enabled' flag. For example: | 869 | 'enabled' flag. For example: |
870 | 870 | ||
871 | <module_name> <enabled=0/1> | 871 | <module_name> <enabled=0/1> |
872 | . | 872 | . |
873 | . | 873 | . |
874 | . | 874 | . |
875 | 875 | ||
876 | <module_name> : Name of the module in which the debug call resides | 876 | <module_name> : Name of the module in which the debug call resides |
877 | <enabled=0/1> : whether the messages are enabled or not | 877 | <enabled=0/1> : whether the messages are enabled or not |
878 | 878 | ||
879 | From a live system: | 879 | From a live system: |
880 | 880 | ||
881 | snd_hda_intel enabled=0 | 881 | snd_hda_intel enabled=0 |
882 | fixup enabled=0 | 882 | fixup enabled=0 |
883 | driver enabled=0 | 883 | driver enabled=0 |
884 | 884 | ||
885 | Enable a module: | 885 | Enable a module: |
886 | 886 | ||
887 | $echo "set enabled=1 <module_name>" > dynamic_printk/modules | 887 | $echo "set enabled=1 <module_name>" > dynamic_printk/modules |
888 | 888 | ||
889 | Disable a module: | 889 | Disable a module: |
890 | 890 | ||
891 | $echo "set enabled=0 <module_name>" > dynamic_printk/modules | 891 | $echo "set enabled=0 <module_name>" > dynamic_printk/modules |
892 | 892 | ||
893 | Enable all modules: | 893 | Enable all modules: |
894 | 894 | ||
895 | $echo "set enabled=1 all" > dynamic_printk/modules | 895 | $echo "set enabled=1 all" > dynamic_printk/modules |
896 | 896 | ||
897 | Disable all modules: | 897 | Disable all modules: |
898 | 898 | ||
899 | $echo "set enabled=0 all" > dynamic_printk/modules | 899 | $echo "set enabled=0 all" > dynamic_printk/modules |
900 | 900 | ||
901 | Finally, passing "dynamic_printk" at the command line enables | 901 | Finally, passing "dynamic_printk" at the command line enables |
902 | debugging for all modules. This mode can be turned off via the above | 902 | debugging for all modules. This mode can be turned off via the above |
903 | disable command. | 903 | disable command. |
904 | 904 | ||
905 | config DMA_API_DEBUG | ||
906 | bool "Enable debugging of DMA-API usage" | ||
907 | depends on HAVE_DMA_API_DEBUG | ||
908 | help | ||
909 | Enable this option to debug the use of the DMA API by device drivers. | ||
910 | With this option you will be able to detect common bugs in device | ||
911 | drivers like double-freeing of DMA mappings or freeing mappings that | ||
912 | were never allocated. | ||
913 | This option causes a performance degredation. Use only if you want | ||
914 | to debug device drivers. If unsure, say N. | ||
915 | |||
905 | source "samples/Kconfig" | 916 | source "samples/Kconfig" |
906 | 917 | ||
907 | source "lib/Kconfig.kgdb" | 918 | source "lib/Kconfig.kgdb" |
908 | 919 |