Commit | Line | Data |
---|---|---|
eefa864b JK |
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 | ||
ee3b4290 AM |
10 | config DEBUG_PAGEALLOC |
11 | bool "Debug page memory allocations" | |
7bc32f6f AM |
12 | depends on DEBUG_KERNEL |
13 | depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC | |
7d46d9e6 | 14 | depends on !KMEMCHECK |
e30825f1 | 15 | select PAGE_EXTENSION |
7bc32f6f | 16 | select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC |
ee3b4290 AM |
17 | ---help--- |
18 | Unmap pages from the kernel linear mapping after free_pages(). | |
ea6eabb0 CB |
19 | Depending on runtime enablement, this results in a small or large |
20 | slowdown, but helps to find certain types of memory corruption. | |
ee3b4290 | 21 | |
7bc32f6f AM |
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 | ||
ea6eabb0 CB |
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 | ||
6a11f75b | 43 | config PAGE_POISONING |
8823b1db LA |
44 | bool "Poison pages after freeing" |
45 | select PAGE_EXTENSION | |
46 | select PAGE_POISONING_NO_SANITY if HIBERNATION | |
47 | ---help--- | |
48 | Fill the pages with poison patterns after free_pages() and verify | |
49 | the patterns before alloc_pages. The filling of the memory helps | |
50 | reduce the risk of information leaks from freed data. This does | |
51 | have a potential performance impact. | |
52 | ||
53 | Note that "poison" here is not the same thing as the "HWPoison" | |
54 | for CONFIG_MEMORY_FAILURE. This is software poisoning only. | |
55 | ||
56 | If unsure, say N | |
57 | ||
58 | config PAGE_POISONING_NO_SANITY | |
59 | depends on PAGE_POISONING | |
60 | bool "Only poison, don't sanity check" | |
61 | ---help--- | |
62 | Skip the sanity checking on alloc, only fill the pages with | |
63 | poison on free. This reduces some of the overhead of the | |
64 | poisoning feature. | |
65 | ||
66 | If you are only interested in sanitization, say Y. Otherwise | |
67 | say N. | |
1414c7f4 LA |
68 | |
69 | config PAGE_POISONING_ZERO | |
70 | bool "Use zero for poisoning instead of random data" | |
71 | depends on PAGE_POISONING | |
72 | ---help--- | |
73 | Instead of using the existing poison value, fill the pages with | |
74 | zeros. This makes it harder to detect when errors are occurring | |
75 | due to sanitization but the zeroing at free means that it is | |
76 | no longer necessary to write zeros when GFP_ZERO is used on | |
77 | allocation. | |
78 | ||
79 | Enabling page poisoning with this option will disable hibernation | |
80 | ||
81 | If unsure, say N | |
95813b8f JK |
82 | bool |
83 | ||
84 | config DEBUG_PAGE_REF | |
85 | bool "Enable tracepoint to track down page reference manipulation" | |
86 | depends on DEBUG_KERNEL | |
87 | depends on TRACEPOINTS | |
88 | ---help--- | |
89 | This is a feature to add tracepoint for tracking down page reference | |
90 | manipulation. This tracking is useful to diagnose functional failure | |
91 | due to migration failures caused by page reference mismatches. Be | |
92 | careful when enabling this feature because it adds about 30 KB to the | |
93 | kernel code. However the runtime performance overhead is virtually | |
94 | nil until the tracepoints are actually enabled. |