kmemcheck: make kconfig accessible for other architectures
[linux-2.6.git] / lib / Kconfig.kmemcheck
1 config HAVE_ARCH_KMEMCHECK
2         bool
3
4 menuconfig KMEMCHECK
5         bool "kmemcheck: trap use of uninitialized memory"
6         depends on DEBUG_KERNEL
7         depends on !X86_USE_3DNOW
8         depends on SLUB || SLAB
9         depends on !CC_OPTIMIZE_FOR_SIZE
10         depends on !FUNCTION_TRACER
11         select FRAME_POINTER
12         select STACKTRACE
13         default n
14         help
15           This option enables tracing of dynamically allocated kernel memory
16           to see if memory is used before it has been given an initial value.
17           Be aware that this requires half of your memory for bookkeeping and
18           will insert extra code at *every* read and write to tracked memory
19           thus slow down the kernel code (but user code is unaffected).
20
21           The kernel may be started with kmemcheck=0 or kmemcheck=1 to disable
22           or enable kmemcheck at boot-time. If the kernel is started with
23           kmemcheck=0, the large memory and CPU overhead is not incurred.
24
25 choice
26         prompt "kmemcheck: default mode at boot"
27         depends on KMEMCHECK
28         default KMEMCHECK_ONESHOT_BY_DEFAULT
29         help
30           This option controls the default behaviour of kmemcheck when the
31           kernel boots and no kmemcheck= parameter is given.
32
33 config KMEMCHECK_DISABLED_BY_DEFAULT
34         bool "disabled"
35         depends on KMEMCHECK
36
37 config KMEMCHECK_ENABLED_BY_DEFAULT
38         bool "enabled"
39         depends on KMEMCHECK
40
41 config KMEMCHECK_ONESHOT_BY_DEFAULT
42         bool "one-shot"
43         depends on KMEMCHECK
44         help
45           In one-shot mode, only the first error detected is reported before
46           kmemcheck is disabled.
47
48 endchoice
49
50 config KMEMCHECK_QUEUE_SIZE
51         int "kmemcheck: error queue size"
52         depends on KMEMCHECK
53         default 64
54         help
55           Select the maximum number of errors to store in the queue. Since
56           errors can occur virtually anywhere and in any context, we need a
57           temporary storage area which is guarantueed not to generate any
58           other faults. The queue will be emptied as soon as a tasklet may
59           be scheduled. If the queue is full, new error reports will be
60           lost.
61
62 config KMEMCHECK_SHADOW_COPY_SHIFT
63         int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)"
64         depends on KMEMCHECK
65         range 2 8
66         default 5
67         help
68           Select the number of shadow bytes to save along with each entry of
69           the queue. These bytes indicate what parts of an allocation are
70           initialized, uninitialized, etc. and will be displayed when an
71           error is detected to help the debugging of a particular problem.
72
73 config KMEMCHECK_PARTIAL_OK
74         bool "kmemcheck: allow partially uninitialized memory"
75         depends on KMEMCHECK
76         default y
77         help
78           This option works around certain GCC optimizations that produce
79           32-bit reads from 16-bit variables where the upper 16 bits are
80           thrown away afterwards. This may of course also hide some real
81           bugs.
82
83 config KMEMCHECK_BITOPS_OK
84         bool "kmemcheck: allow bit-field manipulation"
85         depends on KMEMCHECK
86         default n
87         help
88           This option silences warnings that would be generated for bit-field
89           accesses where not all the bits are initialized at the same time.
90           This may also hide some real bugs.
91