| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 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 | select PAGE_EXTENSION | 
|  | 15 | select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC | 
|  | 16 | ---help--- | 
|  | 17 | Unmap pages from the kernel linear mapping after free_pages(). | 
|  | 18 | Depending on runtime enablement, this results in a small or large | 
|  | 19 | slowdown, but helps to find certain types of memory corruption. | 
|  | 20 |  | 
|  | 21 | For architectures which don't enable ARCH_SUPPORTS_DEBUG_PAGEALLOC, | 
|  | 22 | fill the pages with poison patterns after free_pages() and verify | 
|  | 23 | the patterns before alloc_pages().  Additionally, | 
|  | 24 | this option cannot be enabled in combination with hibernation as | 
|  | 25 | that would result in incorrect warnings of memory corruption after | 
|  | 26 | a resume because free pages are not saved to the suspend image. | 
|  | 27 |  | 
|  | 28 | By default this option will have a small overhead, e.g. by not | 
|  | 29 | allowing the kernel mapping to be backed by large pages on some | 
|  | 30 | architectures. Even bigger overhead comes when the debugging is | 
|  | 31 | enabled by DEBUG_PAGEALLOC_ENABLE_DEFAULT or the debug_pagealloc | 
|  | 32 | command line parameter. | 
|  | 33 |  | 
|  | 34 | config DEBUG_PAGEALLOC_ENABLE_DEFAULT | 
|  | 35 | bool "Enable debug page memory allocations by default?" | 
|  | 36 | default n | 
|  | 37 | depends on DEBUG_PAGEALLOC | 
|  | 38 | ---help--- | 
|  | 39 | Enable debug page memory allocations by default? This value | 
|  | 40 | can be overridden by debug_pagealloc=off|on. | 
|  | 41 |  | 
|  | 42 | config PAGE_POISONING | 
|  | 43 | bool "Poison pages after freeing" | 
|  | 44 | select PAGE_POISONING_NO_SANITY if HIBERNATION | 
|  | 45 | ---help--- | 
|  | 46 | Fill the pages with poison patterns after free_pages() and verify | 
|  | 47 | the patterns before alloc_pages. The filling of the memory helps | 
|  | 48 | reduce the risk of information leaks from freed data. This does | 
|  | 49 | have a potential performance impact if enabled with the | 
|  | 50 | "page_poison=1" kernel boot option. | 
|  | 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 debugging value" | 
|  | 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 |  | 
|  | 80 | config DEBUG_PAGE_REF | 
|  | 81 | bool "Enable tracepoint to track down page reference manipulation" | 
|  | 82 | depends on DEBUG_KERNEL | 
|  | 83 | depends on TRACEPOINTS | 
|  | 84 | ---help--- | 
|  | 85 | This is a feature to add tracepoint for tracking down page reference | 
|  | 86 | manipulation. This tracking is useful to diagnose functional failure | 
|  | 87 | due to migration failures caused by page reference mismatches.  Be | 
|  | 88 | careful when enabling this feature because it adds about 30 KB to the | 
|  | 89 | kernel code.  However the runtime performance overhead is virtually | 
|  | 90 | nil until the tracepoints are actually enabled. | 
|  | 91 |  | 
|  | 92 | config DEBUG_RODATA_TEST | 
|  | 93 | bool "Testcase for the marking rodata read-only" | 
|  | 94 | depends on STRICT_KERNEL_RWX | 
|  | 95 | ---help--- | 
|  | 96 | This option enables a testcase for the setting rodata read-only. |