blob: 97458119cce8fa9c3c5a82178d69af9013a5bdf2 [file] [log] [blame]
Thomas Gleixnerec8f24b2019-05-19 13:07:45 +01001# SPDX-License-Identifier: GPL-2.0-only
Christoph Hellwig59e0b522018-07-31 13:39:35 +02002
3menu "Memory Management options"
4
Dave Hansene1785e82005-06-23 00:07:49 -07005config SELECT_MEMORY_MODEL
6 def_bool y
Kees Cooka8826ee2013-01-16 18:54:17 -08007 depends on ARCH_SELECT_MEMORY_MODEL
Dave Hansene1785e82005-06-23 00:07:49 -07008
Dave Hansen3a9da762005-06-23 00:07:42 -07009choice
10 prompt "Memory model"
Dave Hansene1785e82005-06-23 00:07:49 -070011 depends on SELECT_MEMORY_MODEL
12 default DISCONTIGMEM_MANUAL if ARCH_DISCONTIGMEM_DEFAULT
Andy Whitcroftd41dee32005-06-23 00:07:54 -070013 default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
Dave Hansene1785e82005-06-23 00:07:49 -070014 default FLATMEM_MANUAL
Mike Rapoportd66d1092019-05-13 17:23:05 -070015 help
16 This option allows you to change some of the ways that
17 Linux manages its memory internally. Most users will
18 only have one option here selected by the architecture
19 configuration. This is normal.
Dave Hansen3a9da762005-06-23 00:07:42 -070020
Dave Hansene1785e82005-06-23 00:07:49 -070021config FLATMEM_MANUAL
Dave Hansen3a9da762005-06-23 00:07:42 -070022 bool "Flat Memory"
Anton Blanchardc898ec12006-01-06 00:12:07 -080023 depends on !(ARCH_DISCONTIGMEM_ENABLE || ARCH_SPARSEMEM_ENABLE) || ARCH_FLATMEM_ENABLE
Dave Hansen3a9da762005-06-23 00:07:42 -070024 help
Mike Rapoportd66d1092019-05-13 17:23:05 -070025 This option is best suited for non-NUMA systems with
26 flat address space. The FLATMEM is the most efficient
27 system in terms of performance and resource consumption
28 and it is the best option for smaller systems.
Dave Hansen3a9da762005-06-23 00:07:42 -070029
Mike Rapoportd66d1092019-05-13 17:23:05 -070030 For systems that have holes in their physical address
31 spaces and for features like NUMA and memory hotplug,
Randy Dunlapdd33d292019-11-30 17:58:26 -080032 choose "Sparse Memory".
Andy Whitcroftd41dee32005-06-23 00:07:54 -070033
34 If unsure, choose this option (Flat Memory) over any other.
Dave Hansen3a9da762005-06-23 00:07:42 -070035
Dave Hansene1785e82005-06-23 00:07:49 -070036config DISCONTIGMEM_MANUAL
Dave Hansenf3519f92005-09-16 19:27:54 -070037 bool "Discontiguous Memory"
Dave Hansen3a9da762005-06-23 00:07:42 -070038 depends on ARCH_DISCONTIGMEM_ENABLE
39 help
Dave Hansen785dcd42005-06-23 00:07:50 -070040 This option provides enhanced support for discontiguous
41 memory systems, over FLATMEM. These systems have holes
42 in their physical address spaces, and this option provides
Mike Rapoportd66d1092019-05-13 17:23:05 -070043 more efficient handling of these holes.
Dave Hansen785dcd42005-06-23 00:07:50 -070044
Mike Rapoportd66d1092019-05-13 17:23:05 -070045 Although "Discontiguous Memory" is still used by several
46 architectures, it is considered deprecated in favor of
47 "Sparse Memory".
Dave Hansen785dcd42005-06-23 00:07:50 -070048
Mike Rapoportd66d1092019-05-13 17:23:05 -070049 If unsure, choose "Sparse Memory" over this option.
Dave Hansen3a9da762005-06-23 00:07:42 -070050
Andy Whitcroftd41dee32005-06-23 00:07:54 -070051config SPARSEMEM_MANUAL
52 bool "Sparse Memory"
53 depends on ARCH_SPARSEMEM_ENABLE
54 help
55 This will be the only option for some systems, including
Mike Rapoportd66d1092019-05-13 17:23:05 -070056 memory hot-plug systems. This is normal.
Andy Whitcroftd41dee32005-06-23 00:07:54 -070057
Mike Rapoportd66d1092019-05-13 17:23:05 -070058 This option provides efficient support for systems with
59 holes is their physical address space and allows memory
60 hot-plug and hot-remove.
Andy Whitcroftd41dee32005-06-23 00:07:54 -070061
Mike Rapoportd66d1092019-05-13 17:23:05 -070062 If unsure, choose "Flat Memory" over this option.
Andy Whitcroftd41dee32005-06-23 00:07:54 -070063
Dave Hansen3a9da762005-06-23 00:07:42 -070064endchoice
65
Dave Hansene1785e82005-06-23 00:07:49 -070066config DISCONTIGMEM
67 def_bool y
68 depends on (!SELECT_MEMORY_MODEL && ARCH_DISCONTIGMEM_ENABLE) || DISCONTIGMEM_MANUAL
69
Andy Whitcroftd41dee32005-06-23 00:07:54 -070070config SPARSEMEM
71 def_bool y
Russell King1a83e172009-10-26 16:50:12 -070072 depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
Andy Whitcroftd41dee32005-06-23 00:07:54 -070073
Dave Hansene1785e82005-06-23 00:07:49 -070074config FLATMEM
75 def_bool y
Andy Whitcroftd41dee32005-06-23 00:07:54 -070076 depends on (!DISCONTIGMEM && !SPARSEMEM) || FLATMEM_MANUAL
77
78config FLAT_NODE_MEM_MAP
79 def_bool y
80 depends on !SPARSEMEM
Dave Hansene1785e82005-06-23 00:07:49 -070081
Dave Hansen93b75042005-06-23 00:07:47 -070082#
83# Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
84# to represent different areas of memory. This variable allows
85# those dependencies to exist individually.
86#
87config NEED_MULTIPLE_NODES
88 def_bool y
89 depends on DISCONTIGMEM || NUMA
Andy Whitcroftaf705362005-06-23 00:07:53 -070090
91config HAVE_MEMORY_PRESENT
92 def_bool y
Andy Whitcroftd41dee32005-06-23 00:07:54 -070093 depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
Bob Picco802f1922005-09-03 15:54:26 -070094
95#
Bob Picco3e347262005-09-03 15:54:28 -070096# SPARSEMEM_EXTREME (which is the default) does some bootmem
Matt LaPlante84eb8d02006-10-03 22:53:09 +020097# allocations when memory_present() is called. If this cannot
Bob Picco3e347262005-09-03 15:54:28 -070098# be done on your architecture, select this option. However,
99# statically allocating the mem_section[] array can potentially
100# consume vast quantities of .bss, so be careful.
101#
102# This option will also potentially produce smaller runtime code
103# with gcc 3.4 and later.
104#
105config SPARSEMEM_STATIC
Jan Beulich9ba16082008-10-15 22:01:38 -0700106 bool
Bob Picco3e347262005-09-03 15:54:28 -0700107
108#
Matt LaPlante44c09202006-10-03 22:34:14 +0200109# Architecture platforms which require a two level mem_section in SPARSEMEM
Bob Picco802f1922005-09-03 15:54:26 -0700110# must select this option. This is usually for architecture platforms with
111# an extremely sparse physical address space.
112#
Bob Picco3e347262005-09-03 15:54:28 -0700113config SPARSEMEM_EXTREME
114 def_bool y
115 depends on SPARSEMEM && !SPARSEMEM_STATIC
Hugh Dickins4c21e2f2005-10-29 18:16:40 -0700116
Andy Whitcroft29c71112007-10-16 01:24:14 -0700117config SPARSEMEM_VMEMMAP_ENABLE
Jan Beulich9ba16082008-10-15 22:01:38 -0700118 bool
Andy Whitcroft29c71112007-10-16 01:24:14 -0700119
120config SPARSEMEM_VMEMMAP
Geoff Levanda5ee6da2007-12-17 16:19:53 -0800121 bool "Sparse Memory virtual memmap"
122 depends on SPARSEMEM && SPARSEMEM_VMEMMAP_ENABLE
123 default y
124 help
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800125 SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
126 pfn_to_page and page_to_pfn operations. This is the most
127 efficient option when sufficient kernel resources are available.
Andy Whitcroft29c71112007-10-16 01:24:14 -0700128
Tejun Heo7c0caeb2011-07-14 11:43:42 +0200129config HAVE_MEMBLOCK_NODE_MAP
Christoph Jaeger6341e622014-12-20 15:41:11 -0500130 bool
Tejun Heo7c0caeb2011-07-14 11:43:42 +0200131
Philipp Hachtmann70210ed2014-01-29 18:16:01 +0100132config HAVE_MEMBLOCK_PHYS_MAP
Christoph Jaeger6341e622014-12-20 15:41:11 -0500133 bool
Philipp Hachtmann70210ed2014-01-29 18:16:01 +0100134
Christoph Hellwig67a929e2019-07-11 20:57:14 -0700135config HAVE_FAST_GUP
Christoph Hellwig050a9ad2019-07-11 20:57:21 -0700136 depends on MMU
Christoph Jaeger6341e622014-12-20 15:41:11 -0500137 bool
Steve Capper2667f502014-10-09 15:29:14 -0700138
Mike Rapoport350e88b2019-05-13 17:22:59 -0700139config ARCH_KEEP_MEMBLOCK
Christoph Jaeger6341e622014-12-20 15:41:11 -0500140 bool
Tejun Heoc378ddd2011-07-14 11:46:03 +0200141
Dan Williams1e5d8e12020-02-16 12:01:04 -0800142# Keep arch NUMA mapping infrastructure post-init.
143config NUMA_KEEP_MEMINFO
144 bool
145
Minchan Kimee6f5092012-07-31 16:43:50 -0700146config MEMORY_ISOLATION
Christoph Jaeger6341e622014-12-20 15:41:11 -0500147 bool
Minchan Kimee6f5092012-07-31 16:43:50 -0700148
Yasuaki Ishimatsu46723bf2013-02-22 16:33:00 -0800149#
150# Only be set on architectures that have completely implemented memory hotplug
151# feature. If you are not sure, don't touch it.
152#
153config HAVE_BOOTMEM_INFO_NODE
154 def_bool n
155
Dave Hansen3947be12005-10-29 18:16:54 -0700156# eventually, we can have this option just 'select SPARSEMEM'
157config MEMORY_HOTPLUG
158 bool "Allow for memory hot-add"
Keith Manntheyec69acb2006-09-30 23:27:05 -0700159 depends on SPARSEMEM || X86_64_ACPI_NUMA
Stephen Rothwell40b31362013-05-21 13:49:35 +1000160 depends on ARCH_ENABLE_MEMORY_HOTPLUG
Dan Williams1e5d8e12020-02-16 12:01:04 -0800161 select NUMA_KEEP_MEMINFO if NUMA
Dave Hansen3947be12005-10-29 18:16:54 -0700162
Keith Manntheyec69acb2006-09-30 23:27:05 -0700163config MEMORY_HOTPLUG_SPARSE
164 def_bool y
165 depends on SPARSEMEM && MEMORY_HOTPLUG
166
Vitaly Kuznetsov8604d9e2016-05-19 17:13:03 -0700167config MEMORY_HOTPLUG_DEFAULT_ONLINE
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800168 bool "Online the newly added memory blocks by default"
169 depends on MEMORY_HOTPLUG
170 help
Vitaly Kuznetsov8604d9e2016-05-19 17:13:03 -0700171 This option sets the default policy setting for memory hotplug
172 onlining policy (/sys/devices/system/memory/auto_online_blocks) which
173 determines what happens to newly added memory regions. Policy setting
174 can always be changed at runtime.
Mauro Carvalho Chehabcb1aaeb2019-06-07 15:54:32 -0300175 See Documentation/admin-guide/mm/memory-hotplug.rst for more information.
Vitaly Kuznetsov8604d9e2016-05-19 17:13:03 -0700176
177 Say Y here if you want all hot-plugged memory blocks to appear in
178 'online' state by default.
179 Say N here if you want the default policy to keep all hot-plugged
180 memory blocks in 'offline' state.
181
KAMEZAWA Hiroyuki0c0e6192007-10-16 01:26:12 -0700182config MEMORY_HOTREMOVE
183 bool "Allow for memory hot remove"
Yasuaki Ishimatsu46723bf2013-02-22 16:33:00 -0800184 select MEMORY_ISOLATION
Nathan Fontenotf7e33342013-09-27 10:18:09 -0500185 select HAVE_BOOTMEM_INFO_NODE if (X86_64 || PPC64)
KAMEZAWA Hiroyuki0c0e6192007-10-16 01:26:12 -0700186 depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
187 depends on MIGRATION
188
Hugh Dickins4c21e2f2005-10-29 18:16:40 -0700189# Heavily threaded applications may benefit from splitting the mm-wide
190# page_table_lock, so that faults on different parts of the user address
191# space can be handled with less contention: split it at this NR_CPUS.
192# Default to 4 for wider testing, though 8 might be more appropriate.
193# ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
Hugh Dickins7b6ac9d2005-11-23 13:37:37 -0800194# PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.
Will Deacon60bccaa2020-05-26 18:33:01 +0100195# SPARC32 allocates multiple pte tables within a single page, and therefore
196# a per-page lock leads to problems when multiple tables need to be locked
197# at the same time (e.g. copy_page_range()).
Hugh Dickinsa70caa82009-12-14 17:59:02 -0800198# DEBUG_SPINLOCK and DEBUG_LOCK_ALLOC spinlock_t also enlarge struct page.
Hugh Dickins4c21e2f2005-10-29 18:16:40 -0700199#
200config SPLIT_PTLOCK_CPUS
201 int
Kirill A. Shutemov91645502014-04-07 15:37:14 -0700202 default "999999" if !MMU
Hugh Dickinsa70caa82009-12-14 17:59:02 -0800203 default "999999" if ARM && !CPU_CACHE_VIPT
204 default "999999" if PARISC && !PA20
Will Deacon60bccaa2020-05-26 18:33:01 +0100205 default "999999" if SPARC32
Hugh Dickins4c21e2f2005-10-29 18:16:40 -0700206 default "4"
Christoph Lameter7cbe34c2006-01-08 01:00:49 -0800207
Kirill A. Shutemove009bb32013-11-14 14:31:07 -0800208config ARCH_ENABLE_SPLIT_PMD_PTLOCK
Christoph Jaeger6341e622014-12-20 15:41:11 -0500209 bool
Kirill A. Shutemove009bb32013-11-14 14:31:07 -0800210
Christoph Lameter7cbe34c2006-01-08 01:00:49 -0800211#
Konstantin Khlebnikov09316c02014-10-09 15:29:32 -0700212# support for memory balloon
213config MEMORY_BALLOON
Christoph Jaeger6341e622014-12-20 15:41:11 -0500214 bool
Konstantin Khlebnikov09316c02014-10-09 15:29:32 -0700215
216#
Rafael Aquini18468d92012-12-11 16:02:38 -0800217# support for memory balloon compaction
218config BALLOON_COMPACTION
219 bool "Allow for balloon memory compaction/migration"
220 def_bool y
Konstantin Khlebnikov09316c02014-10-09 15:29:32 -0700221 depends on COMPACTION && MEMORY_BALLOON
Rafael Aquini18468d92012-12-11 16:02:38 -0800222 help
223 Memory fragmentation introduced by ballooning might reduce
224 significantly the number of 2MB contiguous memory blocks that can be
225 used within a guest, thus imposing performance penalties associated
226 with the reduced number of transparent huge pages that could be used
227 by the guest workload. Allowing the compaction & migration for memory
228 pages enlisted as being part of memory balloon devices avoids the
229 scenario aforementioned and helps improving memory defragmentation.
230
231#
Mel Gormane9e96b32010-05-24 14:32:21 -0700232# support for memory compaction
233config COMPACTION
234 bool "Allow for memory compaction"
Rik van Riel05106e62012-10-08 16:33:03 -0700235 def_bool y
Mel Gormane9e96b32010-05-24 14:32:21 -0700236 select MIGRATION
Andrea Arcangeli33a93872011-01-25 15:07:25 -0800237 depends on MMU
Mel Gormane9e96b32010-05-24 14:32:21 -0700238 help
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800239 Compaction is the only memory management component to form
240 high order (larger physically contiguous) memory blocks
241 reliably. The page allocator relies on compaction heavily and
242 the lack of the feature can lead to unexpected OOM killer
243 invocations for high order memory requests. You shouldn't
244 disable this option unless there really is a strong reason for
245 it and then we would be really interested to hear about that at
246 linux-mm@kvack.org.
Mel Gormane9e96b32010-05-24 14:32:21 -0700247
248#
Alexander Duyck36e66c52020-04-06 20:04:56 -0700249# support for free page reporting
250config PAGE_REPORTING
251 bool "Free page reporting"
252 def_bool n
253 help
254 Free page reporting allows for the incremental acquisition of
255 free pages from the buddy allocator for the purpose of reporting
256 those pages to another entity, such as a hypervisor, so that the
257 memory can be freed within the host for other uses.
258
259#
Christoph Lameter7cbe34c2006-01-08 01:00:49 -0800260# support for page migration
261#
262config MIGRATION
Christoph Lameterb20a3502006-03-22 00:09:12 -0800263 bool "Page migration"
Christoph Lameter6c5240a2006-06-23 02:03:37 -0700264 def_bool y
Chen Gangde32a812013-09-12 15:14:08 -0700265 depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
Christoph Lameterb20a3502006-03-22 00:09:12 -0800266 help
267 Allows the migration of the physical location of pages of processes
Mel Gormane9e96b32010-05-24 14:32:21 -0700268 while the virtual addresses are not changed. This is useful in
269 two situations. The first is on NUMA systems to put pages nearer
270 to the processors accessing. The second is when allocating huge
271 pages as migration can relocate pages to satisfy a huge page
272 allocation instead of reclaiming.
Greg Kroah-Hartman6550e072006-06-12 17:11:31 -0700273
Naoya Horiguchic177c812014-06-04 16:05:35 -0700274config ARCH_ENABLE_HUGEPAGE_MIGRATION
Christoph Jaeger6341e622014-12-20 15:41:11 -0500275 bool
Naoya Horiguchic177c812014-06-04 16:05:35 -0700276
Naoya Horiguchi9c670ea2017-09-08 16:10:53 -0700277config ARCH_ENABLE_THP_MIGRATION
278 bool
279
Alexandre Ghiti8df995f2019-05-13 17:19:00 -0700280config CONTIG_ALLOC
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800281 def_bool (MEMORY_ISOLATION && COMPACTION) || CMA
Alexandre Ghiti8df995f2019-05-13 17:19:00 -0700282
Jeremy Fitzhardinge600715d2008-09-11 01:31:45 -0700283config PHYS_ADDR_T_64BIT
Christoph Hellwigd4a451d2018-04-03 16:24:20 +0200284 def_bool 64BIT
Jeremy Fitzhardinge600715d2008-09-11 01:31:45 -0700285
Christoph Lameter2a7326b2007-07-17 04:03:37 -0700286config BOUNCE
Vinayak Menon9ca24e22013-04-29 15:08:55 -0700287 bool "Enable bounce buffers"
288 default y
Christoph Lameter2a7326b2007-07-17 04:03:37 -0700289 depends on BLOCK && MMU && (ZONE_DMA || HIGHMEM)
Vinayak Menon9ca24e22013-04-29 15:08:55 -0700290 help
291 Enable bounce buffers for devices that cannot access
292 the full range of memory available to the CPU. Enabled
293 by default when ZONE_DMA or HIGHMEM is selected, but you
294 may say n to override this.
Christoph Lameter2a7326b2007-07-17 04:03:37 -0700295
Stephen Rothwellf057eac2007-07-15 23:40:05 -0700296config VIRT_TO_BUS
Stephen Rothwell4febd952013-03-07 15:48:16 +1100297 bool
298 help
299 An architecture should select this if it implements the
300 deprecated interface virt_to_bus(). All new architectures
301 should probably not select this.
302
Andrea Arcangelicddb8a52008-07-28 15:46:29 -0700303
304config MMU_NOTIFIER
305 bool
Pranith Kumar83fe27e2014-12-05 11:24:45 -0500306 select SRCU
Jason Gunthorpe99cb2522019-11-12 16:22:19 -0400307 select INTERVAL_TREE
David Howellsfc4d5c22009-05-06 16:03:05 -0700308
Hugh Dickinsf8af4da2009-09-21 17:01:57 -0700309config KSM
310 bool "Enable KSM for page merging"
311 depends on MMU
Timofey Titovets59e1a2f42018-12-28 00:34:05 -0800312 select XXHASH
Hugh Dickinsf8af4da2009-09-21 17:01:57 -0700313 help
314 Enable Kernel Samepage Merging: KSM periodically scans those areas
315 of an application's address space that an app has advised may be
316 mergeable. When it finds pages of identical content, it replaces
Hugh Dickinsd0f209f2009-12-14 17:59:34 -0800317 the many instances by a single page with that content, so
Hugh Dickinsf8af4da2009-09-21 17:01:57 -0700318 saving memory until one or another app needs to modify the content.
319 Recommended for use with KVM, or with other duplicative applications.
Mike Rapoportad56b732018-03-21 21:22:47 +0200320 See Documentation/vm/ksm.rst for more information: KSM is inactive
Hugh Dickinsc73602a2009-10-07 16:32:22 -0700321 until a program has madvised that an area is MADV_MERGEABLE, and
322 root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
Hugh Dickinsf8af4da2009-09-21 17:01:57 -0700323
Christoph Lametere0a94c22009-06-03 16:04:31 -0400324config DEFAULT_MMAP_MIN_ADDR
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800325 int "Low address space to protect from user allocation"
David Howells6e141542009-12-15 19:27:45 +0000326 depends on MMU
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800327 default 4096
328 help
Christoph Lametere0a94c22009-06-03 16:04:31 -0400329 This is the portion of low virtual memory which should be protected
330 from userspace allocation. Keeping a user from writing to low pages
331 can help reduce the impact of kernel NULL pointer bugs.
332
333 For most ia64, ppc64 and x86 users with lots of address space
334 a value of 65536 is reasonable and should cause no problems.
335 On arm and other archs it should not be higher than 32768.
Eric Paris788084a2009-07-31 12:54:11 -0400336 Programs which use vm86 functionality or have some need to map
337 this low address space will need CAP_SYS_RAWIO or disable this
338 protection by setting the value to 0.
Christoph Lametere0a94c22009-06-03 16:04:31 -0400339
340 This value can be changed after boot using the
341 /proc/sys/vm/mmap_min_addr tunable.
342
Linus Torvaldsd949f362009-09-26 09:35:07 -0700343config ARCH_SUPPORTS_MEMORY_FAILURE
344 bool
Christoph Lametere0a94c22009-06-03 16:04:31 -0400345
Andi Kleen6a460792009-09-16 11:50:15 +0200346config MEMORY_FAILURE
347 depends on MMU
Linus Torvaldsd949f362009-09-26 09:35:07 -0700348 depends on ARCH_SUPPORTS_MEMORY_FAILURE
Andi Kleen6a460792009-09-16 11:50:15 +0200349 bool "Enable recovery from hardware memory errors"
Minchan Kimee6f5092012-07-31 16:43:50 -0700350 select MEMORY_ISOLATION
Xie XiuQi97f0b132015-06-24 16:57:36 -0700351 select RAS
Andi Kleen6a460792009-09-16 11:50:15 +0200352 help
353 Enables code to recover from some memory failures on systems
354 with MCA recovery. This allows a system to continue running
355 even when some of its memory has uncorrected errors. This requires
356 special hardware support and typically ECC memory.
357
Andi Kleencae681f2009-09-16 11:50:17 +0200358config HWPOISON_INJECT
Andi Kleen413f9ef2009-12-16 12:20:00 +0100359 tristate "HWPoison pages injector"
Andi Kleen27df5062009-12-21 19:56:42 +0100360 depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS
Wu Fengguang478c5ff2009-12-16 12:19:59 +0100361 select PROC_PAGE_MONITOR
Andi Kleencae681f2009-09-16 11:50:17 +0200362
David Howellsfc4d5c22009-05-06 16:03:05 -0700363config NOMMU_INITIAL_TRIM_EXCESS
364 int "Turn on mmap() excess space trimming before booting"
365 depends on !MMU
366 default 1
367 help
368 The NOMMU mmap() frequently needs to allocate large contiguous chunks
369 of memory on which to store mappings, but it can only ask the system
370 allocator for chunks in 2^N*PAGE_SIZE amounts - which is frequently
371 more than it requires. To deal with this, mmap() is able to trim off
372 the excess and return it to the allocator.
373
374 If trimming is enabled, the excess is trimmed off and returned to the
375 system allocator, which can cause extra fragmentation, particularly
376 if there are a lot of transient processes.
377
378 If trimming is disabled, the excess is kept, but not used, which for
379 long-term mappings means that the space is wasted.
380
381 Trimming can be dynamically controlled through a sysctl option
382 (/proc/sys/vm/nr_trim_pages) which specifies the minimum number of
383 excess pages there must be before trimming should occur, or zero if
384 no trimming is to occur.
385
386 This option specifies the initial value of this option. The default
387 of 1 says that all excess pages should be trimmed.
388
389 See Documentation/nommu-mmap.txt for more information.
Tejun Heobbddff02010-09-03 18:22:48 +0200390
Andrea Arcangeli4c76d9d2011-01-13 15:46:39 -0800391config TRANSPARENT_HUGEPAGE
Andrea Arcangeli13ece882011-01-13 15:47:07 -0800392 bool "Transparent Hugepage Support"
Gerald Schaefer15626062012-10-08 16:30:04 -0700393 depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE
Andrea Arcangeli5d689242011-01-13 15:47:07 -0800394 select COMPACTION
Matthew Wilcox3a08cd52018-09-22 16:14:30 -0400395 select XARRAY_MULTI
Andrea Arcangeli4c76d9d2011-01-13 15:46:39 -0800396 help
397 Transparent Hugepages allows the kernel to use huge pages and
398 huge tlb transparently to the applications whenever possible.
399 This feature can improve computing performance to certain
400 applications by speeding up page faults during memory
401 allocation, by reducing the number of tlb misses and by speeding
402 up the pagetable walking.
403
404 If memory constrained on embedded, you may want to say N.
405
Andrea Arcangeli13ece882011-01-13 15:47:07 -0800406choice
407 prompt "Transparent Hugepage Support sysfs defaults"
408 depends on TRANSPARENT_HUGEPAGE
409 default TRANSPARENT_HUGEPAGE_ALWAYS
410 help
411 Selects the sysfs defaults for Transparent Hugepage Support.
412
413 config TRANSPARENT_HUGEPAGE_ALWAYS
414 bool "always"
415 help
416 Enabling Transparent Hugepage always, can increase the
417 memory footprint of applications without a guaranteed
418 benefit but it will work automatically for all applications.
419
420 config TRANSPARENT_HUGEPAGE_MADVISE
421 bool "madvise"
422 help
423 Enabling Transparent Hugepage madvise, will only provide a
424 performance improvement benefit to the applications using
425 madvise(MADV_HUGEPAGE) but it won't risk to increase the
426 memory footprint of applications without a guaranteed
427 benefit.
428endchoice
429
Huang Ying38d8b4e2017-07-06 15:37:18 -0700430config ARCH_WANTS_THP_SWAP
Krzysztof Kozlowski19fa40a2019-11-30 17:58:23 -0800431 def_bool n
Huang Ying38d8b4e2017-07-06 15:37:18 -0700432
433config THP_SWAP
434 def_bool y
Huang Ying14fef282018-08-17 15:49:41 -0700435 depends on TRANSPARENT_HUGEPAGE && ARCH_WANTS_THP_SWAP && SWAP
Huang Ying38d8b4e2017-07-06 15:37:18 -0700436 help
437 Swap transparent huge pages in one piece, without splitting.
Huang Ying14fef282018-08-17 15:49:41 -0700438 XXX: For now, swap cluster backing transparent huge page
439 will be split after swapout.
Huang Ying38d8b4e2017-07-06 15:37:18 -0700440
441 For selection by architectures with reasonable THP sizes.
442
Kirill A. Shutemove496cf32016-07-26 15:26:35 -0700443#
Tejun Heobbddff02010-09-03 18:22:48 +0200444# UP and nommu archs use km based percpu allocator
445#
446config NEED_PER_CPU_KM
447 depends on !SMP
448 bool
449 default y
Dan Magenheimer077b1f82011-05-26 10:01:36 -0600450
451config CLEANCACHE
452 bool "Enable cleancache driver to cache clean pages if tmem is present"
Dan Magenheimer077b1f82011-05-26 10:01:36 -0600453 help
454 Cleancache can be thought of as a page-granularity victim cache
455 for clean pages that the kernel's pageframe replacement algorithm
456 (PFRA) would like to keep around, but can't since there isn't enough
457 memory. So when the PFRA "evicts" a page, it first attempts to use
Michael Witten140a1ef2011-06-10 03:57:26 +0000458 cleancache code to put the data contained in that page into
Dan Magenheimer077b1f82011-05-26 10:01:36 -0600459 "transcendent memory", memory that is not directly accessible or
460 addressable by the kernel and is of unknown and possibly
461 time-varying size. And when a cleancache-enabled
462 filesystem wishes to access a page in a file on disk, it first
463 checks cleancache to see if it already contains it; if it does,
464 the page is copied into the kernel and a disk access is avoided.
465 When a transcendent memory driver is available (such as zcache or
466 Xen transcendent memory), a significant I/O reduction
467 may be achieved. When none is available, all cleancache calls
468 are reduced to a single pointer-compare-against-NULL resulting
469 in a negligible performance hit.
470
471 If unsure, say Y to enable cleancache
Dan Magenheimer27c6aec2012-04-09 17:10:34 -0600472
473config FRONTSWAP
474 bool "Enable frontswap to cache swap pages if tmem is present"
475 depends on SWAP
Dan Magenheimer27c6aec2012-04-09 17:10:34 -0600476 help
477 Frontswap is so named because it can be thought of as the opposite
478 of a "backing" store for a swap device. The data is stored into
479 "transcendent memory", memory that is not directly accessible or
480 addressable by the kernel and is of unknown and possibly
481 time-varying size. When space in transcendent memory is available,
482 a significant swap I/O reduction may be achieved. When none is
483 available, all frontswap calls are reduced to a single pointer-
484 compare-against-NULL resulting in a negligible performance hit
485 and swap data is stored as normal on the matching swap device.
486
487 If unsure, say Y to enable frontswap.
Aneesh Kumar K.Vf825c732013-07-02 11:15:15 +0530488
489config CMA
490 bool "Contiguous Memory Allocator"
Mike Rapoportaca52c32018-10-30 15:07:44 -0700491 depends on MMU
Aneesh Kumar K.Vf825c732013-07-02 11:15:15 +0530492 select MIGRATION
493 select MEMORY_ISOLATION
494 help
495 This enables the Contiguous Memory Allocator which allows other
496 subsystems to allocate big physically-contiguous blocks of memory.
497 CMA reserves a region of memory and allows only movable pages to
498 be allocated from it. This way, the kernel can use the memory for
499 pagecache and when a subsystem requests for contiguous area, the
500 allocated pages are migrated away to serve the contiguous request.
501
502 If unsure, say "n".
503
504config CMA_DEBUG
505 bool "CMA debug messages (DEVELOPMENT)"
506 depends on DEBUG_KERNEL && CMA
507 help
508 Turns on debug messages in CMA. This produces KERN_DEBUG
509 messages for every CMA call as well as various messages while
510 processing calls such as dma_alloc_from_contiguous().
511 This option does not affect warning and error messages.
Alexander Grafbf550fc2013-08-29 00:41:59 +0200512
Sasha Levin28b24c12015-04-14 15:44:57 -0700513config CMA_DEBUGFS
514 bool "CMA debugfs interface"
515 depends on CMA && DEBUG_FS
516 help
517 Turns on the DebugFS interface for CMA.
518
Joonsoo Kima2541292014-08-06 16:05:25 -0700519config CMA_AREAS
520 int "Maximum count of the CMA areas"
521 depends on CMA
522 default 7
523 help
524 CMA allows to create CMA areas for particular purpose, mainly,
525 used as device private area. This parameter sets the maximum
526 number of CMA area in the system.
527
528 If unsure, leave the default value "7".
529
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700530config MEM_SOFT_DIRTY
531 bool "Track memory changes"
532 depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
533 select PROC_PAGE_MONITOR
Seth Jennings4e2e2772013-07-10 16:04:55 -0700534 help
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700535 This option enables memory changes tracking by introducing a
536 soft-dirty bit on pte-s. This bit it set when someone writes
537 into a page just as regular dirty bit, but unlike the latter
538 it can be cleared by hands.
539
Mike Rapoport1ad13352018-04-18 11:07:49 +0300540 See Documentation/admin-guide/mm/soft-dirty.rst for more details.
Seth Jennings4e2e2772013-07-10 16:04:55 -0700541
Seth Jennings2b281112013-07-10 16:05:03 -0700542config ZSWAP
543 bool "Compressed cache for swap pages (EXPERIMENTAL)"
544 depends on FRONTSWAP && CRYPTO=y
Dan Streetman12d79d62014-08-06 16:08:40 -0700545 select ZPOOL
Seth Jennings2b281112013-07-10 16:05:03 -0700546 help
547 A lightweight compressed cache for swap pages. It takes
548 pages that are in the process of being swapped out and attempts to
549 compress them into a dynamically allocated RAM-based memory pool.
550 This can result in a significant I/O reduction on swap device and,
551 in the case where decompressing from RAM is faster that swap device
552 reads, can also improve workload performance.
553
554 This is marked experimental because it is a new feature (as of
555 v3.11) that interacts heavily with memory reclaim. While these
556 interactions don't cause any known issues on simple memory setups,
557 they have not be fully explored on the large set of potential
558 configurations and workloads that exist.
559
Maciej S. Szmigierobb8b93b2020-04-06 20:08:03 -0700560choice
561 prompt "Compressed cache for swap pages default compressor"
562 depends on ZSWAP
563 default ZSWAP_COMPRESSOR_DEFAULT_LZO
564 help
565 Selects the default compression algorithm for the compressed cache
566 for swap pages.
567
568 For an overview what kind of performance can be expected from
569 a particular compression algorithm please refer to the benchmarks
570 available at the following LWN page:
571 https://lwn.net/Articles/751795/
572
573 If in doubt, select 'LZO'.
574
575 The selection made here can be overridden by using the kernel
576 command line 'zswap.compressor=' option.
577
578config ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
579 bool "Deflate"
580 select CRYPTO_DEFLATE
581 help
582 Use the Deflate algorithm as the default compression algorithm.
583
584config ZSWAP_COMPRESSOR_DEFAULT_LZO
585 bool "LZO"
586 select CRYPTO_LZO
587 help
588 Use the LZO algorithm as the default compression algorithm.
589
590config ZSWAP_COMPRESSOR_DEFAULT_842
591 bool "842"
592 select CRYPTO_842
593 help
594 Use the 842 algorithm as the default compression algorithm.
595
596config ZSWAP_COMPRESSOR_DEFAULT_LZ4
597 bool "LZ4"
598 select CRYPTO_LZ4
599 help
600 Use the LZ4 algorithm as the default compression algorithm.
601
602config ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
603 bool "LZ4HC"
604 select CRYPTO_LZ4HC
605 help
606 Use the LZ4HC algorithm as the default compression algorithm.
607
608config ZSWAP_COMPRESSOR_DEFAULT_ZSTD
609 bool "zstd"
610 select CRYPTO_ZSTD
611 help
612 Use the zstd algorithm as the default compression algorithm.
613endchoice
614
615config ZSWAP_COMPRESSOR_DEFAULT
616 string
617 depends on ZSWAP
618 default "deflate" if ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
619 default "lzo" if ZSWAP_COMPRESSOR_DEFAULT_LZO
620 default "842" if ZSWAP_COMPRESSOR_DEFAULT_842
621 default "lz4" if ZSWAP_COMPRESSOR_DEFAULT_LZ4
622 default "lz4hc" if ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
623 default "zstd" if ZSWAP_COMPRESSOR_DEFAULT_ZSTD
624 default ""
625
626choice
627 prompt "Compressed cache for swap pages default allocator"
628 depends on ZSWAP
629 default ZSWAP_ZPOOL_DEFAULT_ZBUD
630 help
631 Selects the default allocator for the compressed cache for
632 swap pages.
633 The default is 'zbud' for compatibility, however please do
634 read the description of each of the allocators below before
635 making a right choice.
636
637 The selection made here can be overridden by using the kernel
638 command line 'zswap.zpool=' option.
639
640config ZSWAP_ZPOOL_DEFAULT_ZBUD
641 bool "zbud"
642 select ZBUD
643 help
644 Use the zbud allocator as the default allocator.
645
646config ZSWAP_ZPOOL_DEFAULT_Z3FOLD
647 bool "z3fold"
648 select Z3FOLD
649 help
650 Use the z3fold allocator as the default allocator.
651
652config ZSWAP_ZPOOL_DEFAULT_ZSMALLOC
653 bool "zsmalloc"
654 select ZSMALLOC
655 help
656 Use the zsmalloc allocator as the default allocator.
657endchoice
658
659config ZSWAP_ZPOOL_DEFAULT
660 string
661 depends on ZSWAP
662 default "zbud" if ZSWAP_ZPOOL_DEFAULT_ZBUD
663 default "z3fold" if ZSWAP_ZPOOL_DEFAULT_Z3FOLD
664 default "zsmalloc" if ZSWAP_ZPOOL_DEFAULT_ZSMALLOC
665 default ""
666
667config ZSWAP_DEFAULT_ON
668 bool "Enable the compressed cache for swap pages by default"
669 depends on ZSWAP
670 help
671 If selected, the compressed cache for swap pages will be enabled
672 at boot, otherwise it will be disabled.
673
674 The selection made here can be overridden by using the kernel
675 command line 'zswap.enabled=' option.
676
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700677config ZPOOL
678 tristate "Common API for compressed memory storage"
Pavel Emelyanov0f8975e2013-07-03 15:01:20 -0700679 help
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700680 Compressed memory storage API. This allows using either zbud or
681 zsmalloc.
Pavel Emelyanov0f8975e2013-07-03 15:01:20 -0700682
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700683config ZBUD
Vitaly Wool9a001fc2016-05-20 16:58:30 -0700684 tristate "Low (Up to 2x) density storage for compressed pages"
Dan Streetmanaf8d4172014-08-06 16:08:36 -0700685 help
686 A special purpose allocator for storing compressed pages.
687 It is designed to store up to two compressed pages per physical
688 page. While this design limits storage density, it has simple and
689 deterministic reclaim properties that make it preferable to a higher
690 density approach when reclaim will be used.
Minchan Kimbcf16472014-01-30 15:45:50 -0800691
Vitaly Wool9a001fc2016-05-20 16:58:30 -0700692config Z3FOLD
693 tristate "Up to 3x density storage for compressed pages"
694 depends on ZPOOL
Vitaly Wool9a001fc2016-05-20 16:58:30 -0700695 help
696 A special purpose allocator for storing compressed pages.
697 It is designed to store up to three compressed pages per physical
698 page. It is a ZBUD derivative so the simplicity and determinism are
699 still there.
700
Minchan Kimbcf16472014-01-30 15:45:50 -0800701config ZSMALLOC
Minchan Kimd867f202014-06-04 16:11:10 -0700702 tristate "Memory allocator for compressed pages"
Minchan Kimbcf16472014-01-30 15:45:50 -0800703 depends on MMU
Minchan Kimbcf16472014-01-30 15:45:50 -0800704 help
705 zsmalloc is a slab-based memory allocator designed to store
706 compressed RAM pages. zsmalloc uses virtual memory mapping
707 in order to reduce fragmentation. However, this results in a
708 non-standard allocator interface where a handle, not a pointer, is
709 returned by an alloc(). This handle must be mapped in order to
710 access the allocated space.
711
712config PGTABLE_MAPPING
713 bool "Use page table mapping to access object in zsmalloc"
714 depends on ZSMALLOC
715 help
716 By default, zsmalloc uses a copy-based object mapping method to
717 access allocations that span two pages. However, if a particular
718 architecture (ex, ARM) performs VM mapping faster than copying,
719 then you should select this. This causes zsmalloc to use page table
720 mapping rather than copying for object mapping.
721
Ben Hutchings2216ee82014-03-10 15:49:46 -0700722 You can check speed with zsmalloc benchmark:
723 https://github.com/spartacus06/zsmapbench
Mark Salter9e5c33d2014-04-07 15:39:48 -0700724
Ganesh Mahendran0f050d92015-02-12 15:00:54 -0800725config ZSMALLOC_STAT
726 bool "Export zsmalloc statistics"
727 depends on ZSMALLOC
728 select DEBUG_FS
729 help
730 This option enables code in the zsmalloc to collect various
731 statistics about whats happening in zsmalloc and exports that
732 information to userspace via debugfs.
733 If unsure, say N.
734
Mark Salter9e5c33d2014-04-07 15:39:48 -0700735config GENERIC_EARLY_IOREMAP
736 bool
Helge Deller042d27a2014-04-30 23:26:02 +0200737
738config MAX_STACK_SIZE_MB
739 int "Maximum user stack size for 32-bit processes (MB)"
740 default 80
Helge Deller042d27a2014-04-30 23:26:02 +0200741 range 8 2048
742 depends on STACK_GROWSUP && (!64BIT || COMPAT)
743 help
744 This is the maximum stack size in Megabytes in the VM layout of 32-bit
745 user processes when the stack grows upwards (currently only on parisc
James Hogan5f171572017-10-24 16:52:32 +0100746 arch). The stack will be located at the highest memory address minus
747 the given value, unless the RLIMIT_STACK hard limit is changed to a
748 smaller value in which case that is used.
Helge Deller042d27a2014-04-30 23:26:02 +0200749
750 A sane initial value is 80 MB.
Mel Gorman3a80a7f2015-06-30 14:57:02 -0700751
Mel Gorman3a80a7f2015-06-30 14:57:02 -0700752config DEFERRED_STRUCT_PAGE_INIT
Vlastimil Babka1ce22102016-02-05 15:36:21 -0800753 bool "Defer initialisation of struct pages to kthreads"
Mike Rapoportd39f8fb2018-08-17 15:47:07 -0700754 depends on SPARSEMEM
Pavel Tatashinab1e8d82018-05-18 16:09:13 -0700755 depends on !NEED_PER_CPU_KM
Pasha Tatashin889c6952018-09-20 12:22:30 -0700756 depends on 64BIT
Mel Gorman3a80a7f2015-06-30 14:57:02 -0700757 help
758 Ordinarily all struct pages are initialised during early boot in a
759 single thread. On very large machines this can take a considerable
760 amount of time. If this option is set, large machines will bring up
761 a subset of memmap at boot and then initialise the rest in parallel
Vlastimil Babka1ce22102016-02-05 15:36:21 -0800762 by starting one-off "pgdatinitX" kernel thread for each node X. This
763 has a potential performance impact on processes running early in the
764 lifetime of the system until these kthreads finish the
765 initialisation.
Dan Williams033fbae2015-08-09 15:29:06 -0400766
Vladimir Davydov33c3fc72015-09-09 15:35:45 -0700767config IDLE_PAGE_TRACKING
768 bool "Enable idle page tracking"
769 depends on SYSFS && MMU
770 select PAGE_EXTENSION if !64BIT
771 help
772 This feature allows to estimate the amount of user pages that have
773 not been touched during a given period of time. This information can
774 be useful to tune memory cgroup limits and/or for job placement
775 within a compute cluster.
776
Mike Rapoport1ad13352018-04-18 11:07:49 +0300777 See Documentation/admin-guide/mm/idle_page_tracking.rst for
778 more details.
Vladimir Davydov33c3fc72015-09-09 15:35:45 -0700779
Robin Murphy17596732019-07-16 16:30:47 -0700780config ARCH_HAS_PTE_DEVMAP
Oliver O'Halloran65f7d042017-06-28 11:32:31 +1000781 bool
782
Dan Williams033fbae2015-08-09 15:29:06 -0400783config ZONE_DEVICE
Jérôme Glisse5042db42017-09-08 16:11:43 -0700784 bool "Device memory (pmem, HMM, etc...) hotplug support"
Dan Williams033fbae2015-08-09 15:29:06 -0400785 depends on MEMORY_HOTPLUG
786 depends on MEMORY_HOTREMOVE
Dan Williams99490f12016-03-17 14:19:58 -0700787 depends on SPARSEMEM_VMEMMAP
Robin Murphy17596732019-07-16 16:30:47 -0700788 depends on ARCH_HAS_PTE_DEVMAP
Matthew Wilcox3a08cd52018-09-22 16:14:30 -0400789 select XARRAY_MULTI
Dan Williams033fbae2015-08-09 15:29:06 -0400790
791 help
792 Device memory hotplug support allows for establishing pmem,
793 or other device driver discovered memory regions, in the
794 memmap. This allows pfn_to_page() lookups of otherwise
795 "device-physical" addresses which is needed for using a DAX
796 mapping in an O_DIRECT operation, among other things.
797
798 If FS_DAX is enabled, then say Y.
Linus Torvalds06a660a2015-09-11 16:42:39 -0700799
Dan Williamse76384882018-05-16 11:46:08 -0700800config DEV_PAGEMAP_OPS
801 bool
802
Christoph Hellwig9c240a72019-08-06 19:05:52 +0300803#
804# Helpers to mirror range of the CPU page tables of a process into device page
805# tables.
806#
Jérôme Glissec0b12402017-09-08 16:11:27 -0700807config HMM_MIRROR
Christoph Hellwig9c240a72019-08-06 19:05:52 +0300808 bool
Christoph Hellwigf442c282019-08-06 19:05:51 +0300809 depends on MMU
Jérôme Glissec0b12402017-09-08 16:11:27 -0700810
Jérôme Glisse5042db42017-09-08 16:11:43 -0700811config DEVICE_PRIVATE
812 bool "Unaddressable device memory (GPU memory, ...)"
Christoph Hellwig7328d9c2019-06-26 14:27:22 +0200813 depends on ZONE_DEVICE
Dan Williamse76384882018-05-16 11:46:08 -0700814 select DEV_PAGEMAP_OPS
Jérôme Glisse5042db42017-09-08 16:11:43 -0700815
816 help
817 Allows creation of struct pages to represent unaddressable device
818 memory; i.e., memory that is only accessible from the device (or
819 group of devices). You likely also want to select HMM_MIRROR.
820
Jan Kara8025e5d2015-07-13 11:55:44 -0300821config FRAME_VECTOR
822 bool
Dave Hansen63c17fb2016-02-12 13:02:08 -0800823
824config ARCH_USES_HIGH_VMA_FLAGS
825 bool
Dave Hansen66d37572016-02-12 13:02:32 -0800826config ARCH_HAS_PKEYS
827 bool
Dennis Zhou30a5b532017-06-19 19:28:31 -0400828
829config PERCPU_STATS
830 bool "Collect percpu memory statistics"
Dennis Zhou30a5b532017-06-19 19:28:31 -0400831 help
832 This feature collects and exposes statistics via debugfs. The
833 information includes global and per chunk statistics, which can
834 be used to help understand percpu memory usage.
Kirill A. Shutemov64c349f2017-11-17 15:31:22 -0800835
836config GUP_BENCHMARK
837 bool "Enable infrastructure for get_user_pages_fast() benchmarking"
Kirill A. Shutemov64c349f2017-11-17 15:31:22 -0800838 help
839 Provides /sys/kernel/debug/gup_benchmark that helps with testing
840 performance of get_user_pages_fast().
841
842 See tools/testing/selftests/vm/gup_benchmark.c
Laurent Dufour3010a5e2018-06-07 17:06:08 -0700843
Christoph Hellwig39656e82019-07-11 20:56:49 -0700844config GUP_GET_PTE_LOW_HIGH
845 bool
846
Song Liu99cb0db2019-09-23 15:38:00 -0700847config READ_ONLY_THP_FOR_FS
848 bool "Read-only THP for filesystems (EXPERIMENTAL)"
Matthew Wilcox (Oracle)396bcc52020-04-06 20:04:35 -0700849 depends on TRANSPARENT_HUGEPAGE && SHMEM
Song Liu99cb0db2019-09-23 15:38:00 -0700850
851 help
852 Allow khugepaged to put read-only file-backed pages in THP.
853
854 This is marked experimental because it is a new feature. Write
855 support of file THPs will be developed in the next few release
856 cycles.
857
Laurent Dufour3010a5e2018-06-07 17:06:08 -0700858config ARCH_HAS_PTE_SPECIAL
859 bool
Christoph Hellwig59e0b522018-07-31 13:39:35 +0200860
Christoph Hellwigcbd34da2019-07-11 20:57:28 -0700861#
862# Some architectures require a special hugepage directory format that is
863# required to support multiple hugepage sizes. For example a4fe3ce76
864# "powerpc/mm: Allow more flexible layouts for hugepage pagetables"
865# introduced it on powerpc. This allows for a more flexible hugepage
866# pagetable layouts.
867#
868config ARCH_HAS_HUGEPD
869 bool
870
Thomas Hellstromc5acad82019-03-19 13:12:30 +0100871config MAPPING_DIRTY_HELPERS
872 bool
873
Christoph Hellwig59e0b522018-07-31 13:39:35 +0200874endmenu