Back to home page

LXR

 
 

    


0001 config SELECT_MEMORY_MODEL
0002         def_bool y
0003         depends on ARCH_SELECT_MEMORY_MODEL
0004 
0005 choice
0006         prompt "Memory model"
0007         depends on SELECT_MEMORY_MODEL
0008         default DISCONTIGMEM_MANUAL if ARCH_DISCONTIGMEM_DEFAULT
0009         default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
0010         default FLATMEM_MANUAL
0011 
0012 config FLATMEM_MANUAL
0013         bool "Flat Memory"
0014         depends on !(ARCH_DISCONTIGMEM_ENABLE || ARCH_SPARSEMEM_ENABLE) || ARCH_FLATMEM_ENABLE
0015         help
0016           This option allows you to change some of the ways that
0017           Linux manages its memory internally.  Most users will
0018           only have one option here: FLATMEM.  This is normal
0019           and a correct option.
0020 
0021           Some users of more advanced features like NUMA and
0022           memory hotplug may have different options here.
0023           DISCONTIGMEM is a more mature, better tested system,
0024           but is incompatible with memory hotplug and may suffer
0025           decreased performance over SPARSEMEM.  If unsure between
0026           "Sparse Memory" and "Discontiguous Memory", choose
0027           "Discontiguous Memory".
0028 
0029           If unsure, choose this option (Flat Memory) over any other.
0030 
0031 config DISCONTIGMEM_MANUAL
0032         bool "Discontiguous Memory"
0033         depends on ARCH_DISCONTIGMEM_ENABLE
0034         help
0035           This option provides enhanced support for discontiguous
0036           memory systems, over FLATMEM.  These systems have holes
0037           in their physical address spaces, and this option provides
0038           more efficient handling of these holes.  However, the vast
0039           majority of hardware has quite flat address spaces, and
0040           can have degraded performance from the extra overhead that
0041           this option imposes.
0042 
0043           Many NUMA configurations will have this as the only option.
0044 
0045           If unsure, choose "Flat Memory" over this option.
0046 
0047 config SPARSEMEM_MANUAL
0048         bool "Sparse Memory"
0049         depends on ARCH_SPARSEMEM_ENABLE
0050         help
0051           This will be the only option for some systems, including
0052           memory hotplug systems.  This is normal.
0053 
0054           For many other systems, this will be an alternative to
0055           "Discontiguous Memory".  This option provides some potential
0056           performance benefits, along with decreased code complexity,
0057           but it is newer, and more experimental.
0058 
0059           If unsure, choose "Discontiguous Memory" or "Flat Memory"
0060           over this option.
0061 
0062 endchoice
0063 
0064 config DISCONTIGMEM
0065         def_bool y
0066         depends on (!SELECT_MEMORY_MODEL && ARCH_DISCONTIGMEM_ENABLE) || DISCONTIGMEM_MANUAL
0067 
0068 config SPARSEMEM
0069         def_bool y
0070         depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
0071 
0072 config FLATMEM
0073         def_bool y
0074         depends on (!DISCONTIGMEM && !SPARSEMEM) || FLATMEM_MANUAL
0075 
0076 config FLAT_NODE_MEM_MAP
0077         def_bool y
0078         depends on !SPARSEMEM
0079 
0080 #
0081 # Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
0082 # to represent different areas of memory.  This variable allows
0083 # those dependencies to exist individually.
0084 #
0085 config NEED_MULTIPLE_NODES
0086         def_bool y
0087         depends on DISCONTIGMEM || NUMA
0088 
0089 config HAVE_MEMORY_PRESENT
0090         def_bool y
0091         depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
0092 
0093 #
0094 # SPARSEMEM_EXTREME (which is the default) does some bootmem
0095 # allocations when memory_present() is called.  If this cannot
0096 # be done on your architecture, select this option.  However,
0097 # statically allocating the mem_section[] array can potentially
0098 # consume vast quantities of .bss, so be careful.
0099 #
0100 # This option will also potentially produce smaller runtime code
0101 # with gcc 3.4 and later.
0102 #
0103 config SPARSEMEM_STATIC
0104         bool
0105 
0106 #
0107 # Architecture platforms which require a two level mem_section in SPARSEMEM
0108 # must select this option. This is usually for architecture platforms with
0109 # an extremely sparse physical address space.
0110 #
0111 config SPARSEMEM_EXTREME
0112         def_bool y
0113         depends on SPARSEMEM && !SPARSEMEM_STATIC
0114 
0115 config SPARSEMEM_VMEMMAP_ENABLE
0116         bool
0117 
0118 config SPARSEMEM_ALLOC_MEM_MAP_TOGETHER
0119         def_bool y
0120         depends on SPARSEMEM && X86_64
0121 
0122 config SPARSEMEM_VMEMMAP
0123         bool "Sparse Memory virtual memmap"
0124         depends on SPARSEMEM && SPARSEMEM_VMEMMAP_ENABLE
0125         default y
0126         help
0127          SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
0128          pfn_to_page and page_to_pfn operations.  This is the most
0129          efficient option when sufficient kernel resources are available.
0130 
0131 config HAVE_MEMBLOCK
0132         bool
0133 
0134 config HAVE_MEMBLOCK_NODE_MAP
0135         bool
0136 
0137 config HAVE_MEMBLOCK_PHYS_MAP
0138         bool
0139 
0140 config HAVE_GENERIC_RCU_GUP
0141         bool
0142 
0143 config ARCH_DISCARD_MEMBLOCK
0144         bool
0145 
0146 config NO_BOOTMEM
0147         bool
0148 
0149 config MEMORY_ISOLATION
0150         bool
0151 
0152 config MOVABLE_NODE
0153         bool "Enable to assign a node which has only movable memory"
0154         depends on HAVE_MEMBLOCK
0155         depends on NO_BOOTMEM
0156         depends on X86_64 || OF_EARLY_FLATTREE || MEMORY_HOTPLUG
0157         depends on NUMA
0158         default n
0159         help
0160           Allow a node to have only movable memory.  Pages used by the kernel,
0161           such as direct mapping pages cannot be migrated.  So the corresponding
0162           memory device cannot be hotplugged.  This option allows the following
0163           two things:
0164           - When the system is booting, node full of hotpluggable memory can
0165           be arranged to have only movable memory so that the whole node can
0166           be hot-removed. (need movable_node boot option specified).
0167           - After the system is up, the option allows users to online all the
0168           memory of a node as movable memory so that the whole node can be
0169           hot-removed.
0170 
0171           Users who don't use the memory hotplug feature are fine with this
0172           option on since they don't specify movable_node boot option or they
0173           don't online memory as movable.
0174 
0175           Say Y here if you want to hotplug a whole node.
0176           Say N here if you want kernel to use memory on all nodes evenly.
0177 
0178 #
0179 # Only be set on architectures that have completely implemented memory hotplug
0180 # feature. If you are not sure, don't touch it.
0181 #
0182 config HAVE_BOOTMEM_INFO_NODE
0183         def_bool n
0184 
0185 # eventually, we can have this option just 'select SPARSEMEM'
0186 config MEMORY_HOTPLUG
0187         bool "Allow for memory hot-add"
0188         depends on SPARSEMEM || X86_64_ACPI_NUMA
0189         depends on ARCH_ENABLE_MEMORY_HOTPLUG
0190         depends on COMPILE_TEST || !KASAN
0191 
0192 config MEMORY_HOTPLUG_SPARSE
0193         def_bool y
0194         depends on SPARSEMEM && MEMORY_HOTPLUG
0195 
0196 config MEMORY_HOTPLUG_DEFAULT_ONLINE
0197         bool "Online the newly added memory blocks by default"
0198         default n
0199         depends on MEMORY_HOTPLUG
0200         help
0201           This option sets the default policy setting for memory hotplug
0202           onlining policy (/sys/devices/system/memory/auto_online_blocks) which
0203           determines what happens to newly added memory regions. Policy setting
0204           can always be changed at runtime.
0205           See Documentation/memory-hotplug.txt for more information.
0206 
0207           Say Y here if you want all hot-plugged memory blocks to appear in
0208           'online' state by default.
0209           Say N here if you want the default policy to keep all hot-plugged
0210           memory blocks in 'offline' state.
0211 
0212 config MEMORY_HOTREMOVE
0213         bool "Allow for memory hot remove"
0214         select MEMORY_ISOLATION
0215         select HAVE_BOOTMEM_INFO_NODE if (X86_64 || PPC64)
0216         depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
0217         depends on MIGRATION
0218 
0219 # Heavily threaded applications may benefit from splitting the mm-wide
0220 # page_table_lock, so that faults on different parts of the user address
0221 # space can be handled with less contention: split it at this NR_CPUS.
0222 # Default to 4 for wider testing, though 8 might be more appropriate.
0223 # ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
0224 # PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.
0225 # DEBUG_SPINLOCK and DEBUG_LOCK_ALLOC spinlock_t also enlarge struct page.
0226 #
0227 config SPLIT_PTLOCK_CPUS
0228         int
0229         default "999999" if !MMU
0230         default "999999" if ARM && !CPU_CACHE_VIPT
0231         default "999999" if PARISC && !PA20
0232         default "4"
0233 
0234 config ARCH_ENABLE_SPLIT_PMD_PTLOCK
0235         bool
0236 
0237 #
0238 # support for memory balloon
0239 config MEMORY_BALLOON
0240         bool
0241 
0242 #
0243 # support for memory balloon compaction
0244 config BALLOON_COMPACTION
0245         bool "Allow for balloon memory compaction/migration"
0246         def_bool y
0247         depends on COMPACTION && MEMORY_BALLOON
0248         help
0249           Memory fragmentation introduced by ballooning might reduce
0250           significantly the number of 2MB contiguous memory blocks that can be
0251           used within a guest, thus imposing performance penalties associated
0252           with the reduced number of transparent huge pages that could be used
0253           by the guest workload. Allowing the compaction & migration for memory
0254           pages enlisted as being part of memory balloon devices avoids the
0255           scenario aforementioned and helps improving memory defragmentation.
0256 
0257 #
0258 # support for memory compaction
0259 config COMPACTION
0260         bool "Allow for memory compaction"
0261         def_bool y
0262         select MIGRATION
0263         depends on MMU
0264         help
0265           Compaction is the only memory management component to form
0266           high order (larger physically contiguous) memory blocks
0267           reliably. The page allocator relies on compaction heavily and
0268           the lack of the feature can lead to unexpected OOM killer
0269           invocations for high order memory requests. You shouldn't
0270           disable this option unless there really is a strong reason for
0271           it and then we would be really interested to hear about that at
0272           linux-mm@kvack.org.
0273 
0274 #
0275 # support for page migration
0276 #
0277 config MIGRATION
0278         bool "Page migration"
0279         def_bool y
0280         depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
0281         help
0282           Allows the migration of the physical location of pages of processes
0283           while the virtual addresses are not changed. This is useful in
0284           two situations. The first is on NUMA systems to put pages nearer
0285           to the processors accessing. The second is when allocating huge
0286           pages as migration can relocate pages to satisfy a huge page
0287           allocation instead of reclaiming.
0288 
0289 config ARCH_ENABLE_HUGEPAGE_MIGRATION
0290         bool
0291 
0292 config PHYS_ADDR_T_64BIT
0293         def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
0294 
0295 config BOUNCE
0296         bool "Enable bounce buffers"
0297         default y
0298         depends on BLOCK && MMU && (ZONE_DMA || HIGHMEM)
0299         help
0300           Enable bounce buffers for devices that cannot access
0301           the full range of memory available to the CPU. Enabled
0302           by default when ZONE_DMA or HIGHMEM is selected, but you
0303           may say n to override this.
0304 
0305 # On the 'tile' arch, USB OHCI needs the bounce pool since tilegx will often
0306 # have more than 4GB of memory, but we don't currently use the IOTLB to present
0307 # a 32-bit address to OHCI.  So we need to use a bounce pool instead.
0308 config NEED_BOUNCE_POOL
0309         bool
0310         default y if TILE && USB_OHCI_HCD
0311 
0312 config NR_QUICK
0313         int
0314         depends on QUICKLIST
0315         default "2" if AVR32
0316         default "1"
0317 
0318 config VIRT_TO_BUS
0319         bool
0320         help
0321           An architecture should select this if it implements the
0322           deprecated interface virt_to_bus().  All new architectures
0323           should probably not select this.
0324 
0325 
0326 config MMU_NOTIFIER
0327         bool
0328         select SRCU
0329 
0330 config KSM
0331         bool "Enable KSM for page merging"
0332         depends on MMU
0333         help
0334           Enable Kernel Samepage Merging: KSM periodically scans those areas
0335           of an application's address space that an app has advised may be
0336           mergeable.  When it finds pages of identical content, it replaces
0337           the many instances by a single page with that content, so
0338           saving memory until one or another app needs to modify the content.
0339           Recommended for use with KVM, or with other duplicative applications.
0340           See Documentation/vm/ksm.txt for more information: KSM is inactive
0341           until a program has madvised that an area is MADV_MERGEABLE, and
0342           root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
0343 
0344 config DEFAULT_MMAP_MIN_ADDR
0345         int "Low address space to protect from user allocation"
0346         depends on MMU
0347         default 4096
0348         help
0349           This is the portion of low virtual memory which should be protected
0350           from userspace allocation.  Keeping a user from writing to low pages
0351           can help reduce the impact of kernel NULL pointer bugs.
0352 
0353           For most ia64, ppc64 and x86 users with lots of address space
0354           a value of 65536 is reasonable and should cause no problems.
0355           On arm and other archs it should not be higher than 32768.
0356           Programs which use vm86 functionality or have some need to map
0357           this low address space will need CAP_SYS_RAWIO or disable this
0358           protection by setting the value to 0.
0359 
0360           This value can be changed after boot using the
0361           /proc/sys/vm/mmap_min_addr tunable.
0362 
0363 config ARCH_SUPPORTS_MEMORY_FAILURE
0364         bool
0365 
0366 config MEMORY_FAILURE
0367         depends on MMU
0368         depends on ARCH_SUPPORTS_MEMORY_FAILURE
0369         bool "Enable recovery from hardware memory errors"
0370         select MEMORY_ISOLATION
0371         select RAS
0372         help
0373           Enables code to recover from some memory failures on systems
0374           with MCA recovery. This allows a system to continue running
0375           even when some of its memory has uncorrected errors. This requires
0376           special hardware support and typically ECC memory.
0377 
0378 config HWPOISON_INJECT
0379         tristate "HWPoison pages injector"
0380         depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS
0381         select PROC_PAGE_MONITOR
0382 
0383 config NOMMU_INITIAL_TRIM_EXCESS
0384         int "Turn on mmap() excess space trimming before booting"
0385         depends on !MMU
0386         default 1
0387         help
0388           The NOMMU mmap() frequently needs to allocate large contiguous chunks
0389           of memory on which to store mappings, but it can only ask the system
0390           allocator for chunks in 2^N*PAGE_SIZE amounts - which is frequently
0391           more than it requires.  To deal with this, mmap() is able to trim off
0392           the excess and return it to the allocator.
0393 
0394           If trimming is enabled, the excess is trimmed off and returned to the
0395           system allocator, which can cause extra fragmentation, particularly
0396           if there are a lot of transient processes.
0397 
0398           If trimming is disabled, the excess is kept, but not used, which for
0399           long-term mappings means that the space is wasted.
0400 
0401           Trimming can be dynamically controlled through a sysctl option
0402           (/proc/sys/vm/nr_trim_pages) which specifies the minimum number of
0403           excess pages there must be before trimming should occur, or zero if
0404           no trimming is to occur.
0405 
0406           This option specifies the initial value of this option.  The default
0407           of 1 says that all excess pages should be trimmed.
0408 
0409           See Documentation/nommu-mmap.txt for more information.
0410 
0411 config TRANSPARENT_HUGEPAGE
0412         bool "Transparent Hugepage Support"
0413         depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE
0414         select COMPACTION
0415         select RADIX_TREE_MULTIORDER
0416         help
0417           Transparent Hugepages allows the kernel to use huge pages and
0418           huge tlb transparently to the applications whenever possible.
0419           This feature can improve computing performance to certain
0420           applications by speeding up page faults during memory
0421           allocation, by reducing the number of tlb misses and by speeding
0422           up the pagetable walking.
0423 
0424           If memory constrained on embedded, you may want to say N.
0425 
0426 choice
0427         prompt "Transparent Hugepage Support sysfs defaults"
0428         depends on TRANSPARENT_HUGEPAGE
0429         default TRANSPARENT_HUGEPAGE_ALWAYS
0430         help
0431           Selects the sysfs defaults for Transparent Hugepage Support.
0432 
0433         config TRANSPARENT_HUGEPAGE_ALWAYS
0434                 bool "always"
0435         help
0436           Enabling Transparent Hugepage always, can increase the
0437           memory footprint of applications without a guaranteed
0438           benefit but it will work automatically for all applications.
0439 
0440         config TRANSPARENT_HUGEPAGE_MADVISE
0441                 bool "madvise"
0442         help
0443           Enabling Transparent Hugepage madvise, will only provide a
0444           performance improvement benefit to the applications using
0445           madvise(MADV_HUGEPAGE) but it won't risk to increase the
0446           memory footprint of applications without a guaranteed
0447           benefit.
0448 endchoice
0449 
0450 config  TRANSPARENT_HUGE_PAGECACHE
0451         def_bool y
0452         depends on TRANSPARENT_HUGEPAGE
0453 
0454 #
0455 # UP and nommu archs use km based percpu allocator
0456 #
0457 config NEED_PER_CPU_KM
0458         depends on !SMP
0459         bool
0460         default y
0461 
0462 config CLEANCACHE
0463         bool "Enable cleancache driver to cache clean pages if tmem is present"
0464         default n
0465         help
0466           Cleancache can be thought of as a page-granularity victim cache
0467           for clean pages that the kernel's pageframe replacement algorithm
0468           (PFRA) would like to keep around, but can't since there isn't enough
0469           memory.  So when the PFRA "evicts" a page, it first attempts to use
0470           cleancache code to put the data contained in that page into
0471           "transcendent memory", memory that is not directly accessible or
0472           addressable by the kernel and is of unknown and possibly
0473           time-varying size.  And when a cleancache-enabled
0474           filesystem wishes to access a page in a file on disk, it first
0475           checks cleancache to see if it already contains it; if it does,
0476           the page is copied into the kernel and a disk access is avoided.
0477           When a transcendent memory driver is available (such as zcache or
0478           Xen transcendent memory), a significant I/O reduction
0479           may be achieved.  When none is available, all cleancache calls
0480           are reduced to a single pointer-compare-against-NULL resulting
0481           in a negligible performance hit.
0482 
0483           If unsure, say Y to enable cleancache
0484 
0485 config FRONTSWAP
0486         bool "Enable frontswap to cache swap pages if tmem is present"
0487         depends on SWAP
0488         default n
0489         help
0490           Frontswap is so named because it can be thought of as the opposite
0491           of a "backing" store for a swap device.  The data is stored into
0492           "transcendent memory", memory that is not directly accessible or
0493           addressable by the kernel and is of unknown and possibly
0494           time-varying size.  When space in transcendent memory is available,
0495           a significant swap I/O reduction may be achieved.  When none is
0496           available, all frontswap calls are reduced to a single pointer-
0497           compare-against-NULL resulting in a negligible performance hit
0498           and swap data is stored as normal on the matching swap device.
0499 
0500           If unsure, say Y to enable frontswap.
0501 
0502 config CMA
0503         bool "Contiguous Memory Allocator"
0504         depends on HAVE_MEMBLOCK && MMU
0505         select MIGRATION
0506         select MEMORY_ISOLATION
0507         help
0508           This enables the Contiguous Memory Allocator which allows other
0509           subsystems to allocate big physically-contiguous blocks of memory.
0510           CMA reserves a region of memory and allows only movable pages to
0511           be allocated from it. This way, the kernel can use the memory for
0512           pagecache and when a subsystem requests for contiguous area, the
0513           allocated pages are migrated away to serve the contiguous request.
0514 
0515           If unsure, say "n".
0516 
0517 config CMA_DEBUG
0518         bool "CMA debug messages (DEVELOPMENT)"
0519         depends on DEBUG_KERNEL && CMA
0520         help
0521           Turns on debug messages in CMA.  This produces KERN_DEBUG
0522           messages for every CMA call as well as various messages while
0523           processing calls such as dma_alloc_from_contiguous().
0524           This option does not affect warning and error messages.
0525 
0526 config CMA_DEBUGFS
0527         bool "CMA debugfs interface"
0528         depends on CMA && DEBUG_FS
0529         help
0530           Turns on the DebugFS interface for CMA.
0531 
0532 config CMA_AREAS
0533         int "Maximum count of the CMA areas"
0534         depends on CMA
0535         default 7
0536         help
0537           CMA allows to create CMA areas for particular purpose, mainly,
0538           used as device private area. This parameter sets the maximum
0539           number of CMA area in the system.
0540 
0541           If unsure, leave the default value "7".
0542 
0543 config MEM_SOFT_DIRTY
0544         bool "Track memory changes"
0545         depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
0546         select PROC_PAGE_MONITOR
0547         help
0548           This option enables memory changes tracking by introducing a
0549           soft-dirty bit on pte-s. This bit it set when someone writes
0550           into a page just as regular dirty bit, but unlike the latter
0551           it can be cleared by hands.
0552 
0553           See Documentation/vm/soft-dirty.txt for more details.
0554 
0555 config ZSWAP
0556         bool "Compressed cache for swap pages (EXPERIMENTAL)"
0557         depends on FRONTSWAP && CRYPTO=y
0558         select CRYPTO_LZO
0559         select ZPOOL
0560         default n
0561         help
0562           A lightweight compressed cache for swap pages.  It takes
0563           pages that are in the process of being swapped out and attempts to
0564           compress them into a dynamically allocated RAM-based memory pool.
0565           This can result in a significant I/O reduction on swap device and,
0566           in the case where decompressing from RAM is faster that swap device
0567           reads, can also improve workload performance.
0568 
0569           This is marked experimental because it is a new feature (as of
0570           v3.11) that interacts heavily with memory reclaim.  While these
0571           interactions don't cause any known issues on simple memory setups,
0572           they have not be fully explored on the large set of potential
0573           configurations and workloads that exist.
0574 
0575 config ZPOOL
0576         tristate "Common API for compressed memory storage"
0577         default n
0578         help
0579           Compressed memory storage API.  This allows using either zbud or
0580           zsmalloc.
0581 
0582 config ZBUD
0583         tristate "Low (Up to 2x) density storage for compressed pages"
0584         default n
0585         help
0586           A special purpose allocator for storing compressed pages.
0587           It is designed to store up to two compressed pages per physical
0588           page.  While this design limits storage density, it has simple and
0589           deterministic reclaim properties that make it preferable to a higher
0590           density approach when reclaim will be used.
0591 
0592 config Z3FOLD
0593         tristate "Up to 3x density storage for compressed pages"
0594         depends on ZPOOL
0595         default n
0596         help
0597           A special purpose allocator for storing compressed pages.
0598           It is designed to store up to three compressed pages per physical
0599           page. It is a ZBUD derivative so the simplicity and determinism are
0600           still there.
0601 
0602 config ZSMALLOC
0603         tristate "Memory allocator for compressed pages"
0604         depends on MMU
0605         default n
0606         help
0607           zsmalloc is a slab-based memory allocator designed to store
0608           compressed RAM pages.  zsmalloc uses virtual memory mapping
0609           in order to reduce fragmentation.  However, this results in a
0610           non-standard allocator interface where a handle, not a pointer, is
0611           returned by an alloc().  This handle must be mapped in order to
0612           access the allocated space.
0613 
0614 config PGTABLE_MAPPING
0615         bool "Use page table mapping to access object in zsmalloc"
0616         depends on ZSMALLOC
0617         help
0618           By default, zsmalloc uses a copy-based object mapping method to
0619           access allocations that span two pages. However, if a particular
0620           architecture (ex, ARM) performs VM mapping faster than copying,
0621           then you should select this. This causes zsmalloc to use page table
0622           mapping rather than copying for object mapping.
0623 
0624           You can check speed with zsmalloc benchmark:
0625           https://github.com/spartacus06/zsmapbench
0626 
0627 config ZSMALLOC_STAT
0628         bool "Export zsmalloc statistics"
0629         depends on ZSMALLOC
0630         select DEBUG_FS
0631         help
0632           This option enables code in the zsmalloc to collect various
0633           statistics about whats happening in zsmalloc and exports that
0634           information to userspace via debugfs.
0635           If unsure, say N.
0636 
0637 config GENERIC_EARLY_IOREMAP
0638         bool
0639 
0640 config MAX_STACK_SIZE_MB
0641         int "Maximum user stack size for 32-bit processes (MB)"
0642         default 80
0643         range 8 256 if METAG
0644         range 8 2048
0645         depends on STACK_GROWSUP && (!64BIT || COMPAT)
0646         help
0647           This is the maximum stack size in Megabytes in the VM layout of 32-bit
0648           user processes when the stack grows upwards (currently only on parisc
0649           and metag arch). The stack will be located at the highest memory
0650           address minus the given value, unless the RLIMIT_STACK hard limit is
0651           changed to a smaller value in which case that is used.
0652 
0653           A sane initial value is 80 MB.
0654 
0655 # For architectures that support deferred memory initialisation
0656 config ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
0657         bool
0658 
0659 config DEFERRED_STRUCT_PAGE_INIT
0660         bool "Defer initialisation of struct pages to kthreads"
0661         default n
0662         depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
0663         depends on NO_BOOTMEM && MEMORY_HOTPLUG
0664         depends on !FLATMEM
0665         help
0666           Ordinarily all struct pages are initialised during early boot in a
0667           single thread. On very large machines this can take a considerable
0668           amount of time. If this option is set, large machines will bring up
0669           a subset of memmap at boot and then initialise the rest in parallel
0670           by starting one-off "pgdatinitX" kernel thread for each node X. This
0671           has a potential performance impact on processes running early in the
0672           lifetime of the system until these kthreads finish the
0673           initialisation.
0674 
0675 config IDLE_PAGE_TRACKING
0676         bool "Enable idle page tracking"
0677         depends on SYSFS && MMU
0678         select PAGE_EXTENSION if !64BIT
0679         help
0680           This feature allows to estimate the amount of user pages that have
0681           not been touched during a given period of time. This information can
0682           be useful to tune memory cgroup limits and/or for job placement
0683           within a compute cluster.
0684 
0685           See Documentation/vm/idle_page_tracking.txt for more details.
0686 
0687 config ZONE_DEVICE
0688         bool "Device memory (pmem, etc...) hotplug support"
0689         depends on MEMORY_HOTPLUG
0690         depends on MEMORY_HOTREMOVE
0691         depends on SPARSEMEM_VMEMMAP
0692         depends on X86_64 #arch_add_memory() comprehends device memory
0693 
0694         help
0695           Device memory hotplug support allows for establishing pmem,
0696           or other device driver discovered memory regions, in the
0697           memmap. This allows pfn_to_page() lookups of otherwise
0698           "device-physical" addresses which is needed for using a DAX
0699           mapping in an O_DIRECT operation, among other things.
0700 
0701           If FS_DAX is enabled, then say Y.
0702 
0703 config FRAME_VECTOR
0704         bool
0705 
0706 config ARCH_USES_HIGH_VMA_FLAGS
0707         bool
0708 config ARCH_HAS_PKEYS
0709         bool