]>
Commit | Line | Data |
---|---|---|
1 | config PAGE_EXTENSION | |
2 | bool "Extend memmap on extra space for more information on page" | |
3 | ---help--- | |
4 | Extend memmap on extra space for more information on page. This | |
5 | could be used for debugging features that need to insert extra | |
6 | field for every page. This extension enables us to save memory | |
7 | by not allocating this extra memory according to boottime | |
8 | configuration. | |
9 | ||
10 | config DEBUG_PAGEALLOC | |
11 | bool "Debug page memory allocations" | |
12 | depends on DEBUG_KERNEL | |
13 | depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC | |
14 | depends on !KMEMCHECK | |
15 | select PAGE_EXTENSION | |
16 | select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC | |
17 | ---help--- | |
18 | Unmap pages from the kernel linear mapping after free_pages(). | |
19 | Depending on runtime enablement, this results in a small or large | |
20 | slowdown, but helps to find certain types of memory corruption. | |
21 | ||
22 | For architectures which don't enable ARCH_SUPPORTS_DEBUG_PAGEALLOC, | |
23 | fill the pages with poison patterns after free_pages() and verify | |
24 | the patterns before alloc_pages(). Additionally, | |
25 | this option cannot be enabled in combination with hibernation as | |
26 | that would result in incorrect warnings of memory corruption after | |
27 | a resume because free pages are not saved to the suspend image. | |
28 | ||
29 | By default this option will have a small overhead, e.g. by not | |
30 | allowing the kernel mapping to be backed by large pages on some | |
31 | architectures. Even bigger overhead comes when the debugging is | |
32 | enabled by DEBUG_PAGEALLOC_ENABLE_DEFAULT or the debug_pagealloc | |
33 | command line parameter. | |
34 | ||
35 | config DEBUG_PAGEALLOC_ENABLE_DEFAULT | |
36 | bool "Enable debug page memory allocations by default?" | |
37 | default n | |
38 | depends on DEBUG_PAGEALLOC | |
39 | ---help--- | |
40 | Enable debug page memory allocations by default? This value | |
41 | can be overridden by debug_pagealloc=off|on. | |
42 | ||
43 | config PAGE_POISONING | |
44 | bool "Poison pages after freeing" | |
45 | select PAGE_POISONING_NO_SANITY if HIBERNATION | |
46 | ---help--- | |
47 | Fill the pages with poison patterns after free_pages() and verify | |
48 | the patterns before alloc_pages. The filling of the memory helps | |
49 | reduce the risk of information leaks from freed data. This does | |
50 | have a potential performance impact. | |
51 | ||
52 | Note that "poison" here is not the same thing as the "HWPoison" | |
53 | for CONFIG_MEMORY_FAILURE. This is software poisoning only. | |
54 | ||
55 | If unsure, say N | |
56 | ||
57 | config PAGE_POISONING_NO_SANITY | |
58 | depends on PAGE_POISONING | |
59 | bool "Only poison, don't sanity check" | |
60 | ---help--- | |
61 | Skip the sanity checking on alloc, only fill the pages with | |
62 | poison on free. This reduces some of the overhead of the | |
63 | poisoning feature. | |
64 | ||
65 | If you are only interested in sanitization, say Y. Otherwise | |
66 | say N. | |
67 | ||
68 | config PAGE_POISONING_ZERO | |
69 | bool "Use zero for poisoning instead of random data" | |
70 | depends on PAGE_POISONING | |
71 | ---help--- | |
72 | Instead of using the existing poison value, fill the pages with | |
73 | zeros. This makes it harder to detect when errors are occurring | |
74 | due to sanitization but the zeroing at free means that it is | |
75 | no longer necessary to write zeros when GFP_ZERO is used on | |
76 | allocation. | |
77 | ||
78 | If unsure, say N | |
79 | bool | |
80 | ||
81 | config DEBUG_PAGE_REF | |
82 | bool "Enable tracepoint to track down page reference manipulation" | |
83 | depends on DEBUG_KERNEL | |
84 | depends on TRACEPOINTS | |
85 | ---help--- | |
86 | This is a feature to add tracepoint for tracking down page reference | |
87 | manipulation. This tracking is useful to diagnose functional failure | |
88 | due to migration failures caused by page reference mismatches. Be | |
89 | careful when enabling this feature because it adds about 30 KB to the | |
90 | kernel code. However the runtime performance overhead is virtually | |
91 | nil until the tracepoints are actually enabled. | |
92 | ||
93 | config DEBUG_RODATA_TEST | |
94 | bool "Testcase for the marking rodata read-only" | |
95 | depends on STRICT_KERNEL_RWX | |
96 | ---help--- | |
97 | This option enables a testcase for the setting rodata read-only. |