linux/mm/Kconfig
<<
>>
Prefs
   1config SELECT_MEMORY_MODEL
   2        def_bool y
   3        depends on ARCH_SELECT_MEMORY_MODEL
   4
   5choice
   6        prompt "Memory model"
   7        depends on SELECT_MEMORY_MODEL
   8        default DISCONTIGMEM_MANUAL if ARCH_DISCONTIGMEM_DEFAULT
   9        default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
  10        default FLATMEM_MANUAL
  11
  12config FLATMEM_MANUAL
  13        bool "Flat Memory"
  14        depends on !(ARCH_DISCONTIGMEM_ENABLE || ARCH_SPARSEMEM_ENABLE) || ARCH_FLATMEM_ENABLE
  15        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: FLATMEM.  This is normal
  19          and a correct option.
  20
  21          Some users of more advanced features like NUMA and
  22          memory hotplug may have different options here.
  23          DISCONTIGMEM is a more mature, better tested system,
  24          but is incompatible with memory hotplug and may suffer
  25          decreased performance over SPARSEMEM.  If unsure between
  26          "Sparse Memory" and "Discontiguous Memory", choose
  27          "Discontiguous Memory".
  28
  29          If unsure, choose this option (Flat Memory) over any other.
  30
  31config DISCONTIGMEM_MANUAL
  32        bool "Discontiguous Memory"
  33        depends on ARCH_DISCONTIGMEM_ENABLE
  34        help
  35          This option provides enhanced support for discontiguous
  36          memory systems, over FLATMEM.  These systems have holes
  37          in their physical address spaces, and this option provides
  38          more efficient handling of these holes.  However, the vast
  39          majority of hardware has quite flat address spaces, and
  40          can have degraded performance from the extra overhead that
  41          this option imposes.
  42
  43          Many NUMA configurations will have this as the only option.
  44
  45          If unsure, choose "Flat Memory" over this option.
  46
  47config SPARSEMEM_MANUAL
  48        bool "Sparse Memory"
  49        depends on ARCH_SPARSEMEM_ENABLE
  50        help
  51          This will be the only option for some systems, including
  52          memory hotplug systems.  This is normal.
  53
  54          For many other systems, this will be an alternative to
  55          "Discontiguous Memory".  This option provides some potential
  56          performance benefits, along with decreased code complexity,
  57          but it is newer, and more experimental.
  58
  59          If unsure, choose "Discontiguous Memory" or "Flat Memory"
  60          over this option.
  61
  62endchoice
  63
  64config DISCONTIGMEM
  65        def_bool y
  66        depends on (!SELECT_MEMORY_MODEL && ARCH_DISCONTIGMEM_ENABLE) || DISCONTIGMEM_MANUAL
  67
  68config SPARSEMEM
  69        def_bool y
  70        depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
  71
  72config FLATMEM
  73        def_bool y
  74        depends on (!DISCONTIGMEM && !SPARSEMEM) || FLATMEM_MANUAL
  75
  76config FLAT_NODE_MEM_MAP
  77        def_bool y
  78        depends on !SPARSEMEM
  79
  80#
  81# Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
  82# to represent different areas of memory.  This variable allows
  83# those dependencies to exist individually.
  84#
  85config NEED_MULTIPLE_NODES
  86        def_bool y
  87        depends on DISCONTIGMEM || NUMA
  88
  89config HAVE_MEMORY_PRESENT
  90        def_bool y
  91        depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
  92
  93#
  94# SPARSEMEM_EXTREME (which is the default) does some bootmem
  95# allocations when memory_present() is called.  If this cannot
  96# be done on your architecture, select this option.  However,
  97# statically allocating the mem_section[] array can potentially
  98# consume vast quantities of .bss, so be careful.
  99#
 100# This option will also potentially produce smaller runtime code
 101# with gcc 3.4 and later.
 102#
 103config SPARSEMEM_STATIC
 104        bool
 105
 106#
 107# Architecture platforms which require a two level mem_section in SPARSEMEM
 108# must select this option. This is usually for architecture platforms with
 109# an extremely sparse physical address space.
 110#
 111config SPARSEMEM_EXTREME
 112        def_bool y
 113        depends on SPARSEMEM && !SPARSEMEM_STATIC
 114
 115config SPARSEMEM_VMEMMAP_ENABLE
 116        bool
 117
 118config SPARSEMEM_ALLOC_MEM_MAP_TOGETHER
 119        def_bool y
 120        depends on SPARSEMEM && X86_64
 121
 122config SPARSEMEM_VMEMMAP
 123        bool "Sparse Memory virtual memmap"
 124        depends on SPARSEMEM && SPARSEMEM_VMEMMAP_ENABLE
 125        default y
 126        help
 127         SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
 128         pfn_to_page and page_to_pfn operations.  This is the most
 129         efficient option when sufficient kernel resources are available.
 130
 131config HAVE_MEMBLOCK
 132        bool
 133
 134config HAVE_MEMBLOCK_NODE_MAP
 135        bool
 136
 137config HAVE_MEMBLOCK_PHYS_MAP
 138        bool
 139
 140config HAVE_GENERIC_RCU_GUP
 141        bool
 142
 143config ARCH_DISCARD_MEMBLOCK
 144        bool
 145
 146config NO_BOOTMEM
 147        bool
 148
 149config MEMORY_ISOLATION
 150        bool
 151
 152config MOVABLE_NODE
 153        bool "Enable to assign a node which has only movable memory"
 154        depends on HAVE_MEMBLOCK
 155        depends on NO_BOOTMEM
 156        depends on X86_64
 157        depends on NUMA
 158        default n
 159        help
 160          Allow a node to have only movable memory.  Pages used by the kernel,
 161          such as direct mapping pages cannot be migrated.  So the corresponding
 162          memory device cannot be hotplugged.  This option allows the following
 163          two things:
 164          - When the system is booting, node full of hotpluggable memory can
 165          be arranged to have only movable memory so that the whole node can
 166          be hot-removed. (need movable_node boot option specified).
 167          - After the system is up, the option allows users to online all the
 168          memory of a node as movable memory so that the whole node can be
 169          hot-removed.
 170
 171          Users who don't use the memory hotplug feature are fine with this
 172          option on since they don't specify movable_node boot option or they
 173          don't online memory as movable.
 174
 175          Say Y here if you want to hotplug a whole node.
 176          Say N here if you want kernel to use memory on all nodes evenly.
 177
 178#
 179# Only be set on architectures that have completely implemented memory hotplug
 180# feature. If you are not sure, don't touch it.
 181#
 182config HAVE_BOOTMEM_INFO_NODE
 183        def_bool n
 184
 185# eventually, we can have this option just 'select SPARSEMEM'
 186config MEMORY_HOTPLUG
 187        bool "Allow for memory hot-add"
 188        depends on SPARSEMEM || X86_64_ACPI_NUMA
 189        depends on ARCH_ENABLE_MEMORY_HOTPLUG
 190
 191config MEMORY_HOTPLUG_SPARSE
 192        def_bool y
 193        depends on SPARSEMEM && MEMORY_HOTPLUG
 194
 195config MEMORY_HOTREMOVE
 196        bool "Allow for memory hot remove"
 197        select MEMORY_ISOLATION
 198        select HAVE_BOOTMEM_INFO_NODE if (X86_64 || PPC64)
 199        depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
 200        depends on MIGRATION
 201
 202# Heavily threaded applications may benefit from splitting the mm-wide
 203# page_table_lock, so that faults on different parts of the user address
 204# space can be handled with less contention: split it at this NR_CPUS.
 205# Default to 4 for wider testing, though 8 might be more appropriate.
 206# ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
 207# PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.
 208# DEBUG_SPINLOCK and DEBUG_LOCK_ALLOC spinlock_t also enlarge struct page.
 209#
 210config SPLIT_PTLOCK_CPUS
 211        int
 212        default "999999" if !MMU
 213        default "999999" if ARM && !CPU_CACHE_VIPT
 214        default "999999" if PARISC && !PA20
 215        default "4"
 216
 217config ARCH_ENABLE_SPLIT_PMD_PTLOCK
 218        bool
 219
 220#
 221# support for memory balloon
 222config MEMORY_BALLOON
 223        bool
 224
 225#
 226# support for memory balloon compaction
 227config BALLOON_COMPACTION
 228        bool "Allow for balloon memory compaction/migration"
 229        def_bool y
 230        depends on COMPACTION && MEMORY_BALLOON
 231        help
 232          Memory fragmentation introduced by ballooning might reduce
 233          significantly the number of 2MB contiguous memory blocks that can be
 234          used within a guest, thus imposing performance penalties associated
 235          with the reduced number of transparent huge pages that could be used
 236          by the guest workload. Allowing the compaction & migration for memory
 237          pages enlisted as being part of memory balloon devices avoids the
 238          scenario aforementioned and helps improving memory defragmentation.
 239
 240#
 241# support for memory compaction
 242config COMPACTION
 243        bool "Allow for memory compaction"
 244        def_bool y
 245        select MIGRATION
 246        depends on MMU
 247        help
 248          Allows the compaction of memory for the allocation of huge pages.
 249
 250#
 251# support for page migration
 252#
 253config MIGRATION
 254        bool "Page migration"
 255        def_bool y
 256        depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
 257        help
 258          Allows the migration of the physical location of pages of processes
 259          while the virtual addresses are not changed. This is useful in
 260          two situations. The first is on NUMA systems to put pages nearer
 261          to the processors accessing. The second is when allocating huge
 262          pages as migration can relocate pages to satisfy a huge page
 263          allocation instead of reclaiming.
 264
 265config ARCH_ENABLE_HUGEPAGE_MIGRATION
 266        bool
 267
 268config PHYS_ADDR_T_64BIT
 269        def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
 270
 271config ZONE_DMA_FLAG
 272        int
 273        default "0" if !ZONE_DMA
 274        default "1"
 275
 276config BOUNCE
 277        bool "Enable bounce buffers"
 278        default y
 279        depends on BLOCK && MMU && (ZONE_DMA || HIGHMEM)
 280        help
 281          Enable bounce buffers for devices that cannot access
 282          the full range of memory available to the CPU. Enabled
 283          by default when ZONE_DMA or HIGHMEM is selected, but you
 284          may say n to override this.
 285
 286# On the 'tile' arch, USB OHCI needs the bounce pool since tilegx will often
 287# have more than 4GB of memory, but we don't currently use the IOTLB to present
 288# a 32-bit address to OHCI.  So we need to use a bounce pool instead.
 289config NEED_BOUNCE_POOL
 290        bool
 291        default y if TILE && USB_OHCI_HCD
 292
 293config NR_QUICK
 294        int
 295        depends on QUICKLIST
 296        default "2" if AVR32
 297        default "1"
 298
 299config VIRT_TO_BUS
 300        bool
 301        help
 302          An architecture should select this if it implements the
 303          deprecated interface virt_to_bus().  All new architectures
 304          should probably not select this.
 305
 306
 307config MMU_NOTIFIER
 308        bool
 309        select SRCU
 310
 311config KSM
 312        bool "Enable KSM for page merging"
 313        depends on MMU
 314        help
 315          Enable Kernel Samepage Merging: KSM periodically scans those areas
 316          of an application's address space that an app has advised may be
 317          mergeable.  When it finds pages of identical content, it replaces
 318          the many instances by a single page with that content, so
 319          saving memory until one or another app needs to modify the content.
 320          Recommended for use with KVM, or with other duplicative applications.
 321          See Documentation/vm/ksm.txt for more information: KSM is inactive
 322          until a program has madvised that an area is MADV_MERGEABLE, and
 323          root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
 324
 325config DEFAULT_MMAP_MIN_ADDR
 326        int "Low address space to protect from user allocation"
 327        depends on MMU
 328        default 4096
 329        help
 330          This is the portion of low virtual memory which should be protected
 331          from userspace allocation.  Keeping a user from writing to low pages
 332          can help reduce the impact of kernel NULL pointer bugs.
 333
 334          For most ia64, ppc64 and x86 users with lots of address space
 335          a value of 65536 is reasonable and should cause no problems.
 336          On arm and other archs it should not be higher than 32768.
 337          Programs which use vm86 functionality or have some need to map
 338          this low address space will need CAP_SYS_RAWIO or disable this
 339          protection by setting the value to 0.
 340
 341          This value can be changed after boot using the
 342          /proc/sys/vm/mmap_min_addr tunable.
 343
 344config ARCH_SUPPORTS_MEMORY_FAILURE
 345        bool
 346
 347config MEMORY_FAILURE
 348        depends on MMU
 349        depends on ARCH_SUPPORTS_MEMORY_FAILURE
 350        bool "Enable recovery from hardware memory errors"
 351        select MEMORY_ISOLATION
 352        select RAS
 353        help
 354          Enables code to recover from some memory failures on systems
 355          with MCA recovery. This allows a system to continue running
 356          even when some of its memory has uncorrected errors. This requires
 357          special hardware support and typically ECC memory.
 358
 359config HWPOISON_INJECT
 360        tristate "HWPoison pages injector"
 361        depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS
 362        select PROC_PAGE_MONITOR
 363
 364config NOMMU_INITIAL_TRIM_EXCESS
 365        int "Turn on mmap() excess space trimming before booting"
 366        depends on !MMU
 367        default 1
 368        help
 369          The NOMMU mmap() frequently needs to allocate large contiguous chunks
 370          of memory on which to store mappings, but it can only ask the system
 371          allocator for chunks in 2^N*PAGE_SIZE amounts - which is frequently
 372          more than it requires.  To deal with this, mmap() is able to trim off
 373          the excess and return it to the allocator.
 374
 375          If trimming is enabled, the excess is trimmed off and returned to the
 376          system allocator, which can cause extra fragmentation, particularly
 377          if there are a lot of transient processes.
 378
 379          If trimming is disabled, the excess is kept, but not used, which for
 380          long-term mappings means that the space is wasted.
 381
 382          Trimming can be dynamically controlled through a sysctl option
 383          (/proc/sys/vm/nr_trim_pages) which specifies the minimum number of
 384          excess pages there must be before trimming should occur, or zero if
 385          no trimming is to occur.
 386
 387          This option specifies the initial value of this option.  The default
 388          of 1 says that all excess pages should be trimmed.
 389
 390          See Documentation/nommu-mmap.txt for more information.
 391
 392config TRANSPARENT_HUGEPAGE
 393        bool "Transparent Hugepage Support"
 394        depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE
 395        select COMPACTION
 396        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
 406choice
 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
 430#
 431# UP and nommu archs use km based percpu allocator
 432#
 433config NEED_PER_CPU_KM
 434        depends on !SMP
 435        bool
 436        default y
 437
 438config CLEANCACHE
 439        bool "Enable cleancache driver to cache clean pages if tmem is present"
 440        default n
 441        help
 442          Cleancache can be thought of as a page-granularity victim cache
 443          for clean pages that the kernel's pageframe replacement algorithm
 444          (PFRA) would like to keep around, but can't since there isn't enough
 445          memory.  So when the PFRA "evicts" a page, it first attempts to use
 446          cleancache code to put the data contained in that page into
 447          "transcendent memory", memory that is not directly accessible or
 448          addressable by the kernel and is of unknown and possibly
 449          time-varying size.  And when a cleancache-enabled
 450          filesystem wishes to access a page in a file on disk, it first
 451          checks cleancache to see if it already contains it; if it does,
 452          the page is copied into the kernel and a disk access is avoided.
 453          When a transcendent memory driver is available (such as zcache or
 454          Xen transcendent memory), a significant I/O reduction
 455          may be achieved.  When none is available, all cleancache calls
 456          are reduced to a single pointer-compare-against-NULL resulting
 457          in a negligible performance hit.
 458
 459          If unsure, say Y to enable cleancache
 460
 461config FRONTSWAP
 462        bool "Enable frontswap to cache swap pages if tmem is present"
 463        depends on SWAP
 464        default n
 465        help
 466          Frontswap is so named because it can be thought of as the opposite
 467          of a "backing" store for a swap device.  The data is stored into
 468          "transcendent memory", memory that is not directly accessible or
 469          addressable by the kernel and is of unknown and possibly
 470          time-varying size.  When space in transcendent memory is available,
 471          a significant swap I/O reduction may be achieved.  When none is
 472          available, all frontswap calls are reduced to a single pointer-
 473          compare-against-NULL resulting in a negligible performance hit
 474          and swap data is stored as normal on the matching swap device.
 475
 476          If unsure, say Y to enable frontswap.
 477
 478config CMA
 479        bool "Contiguous Memory Allocator"
 480        depends on HAVE_MEMBLOCK && MMU
 481        select MIGRATION
 482        select MEMORY_ISOLATION
 483        help
 484          This enables the Contiguous Memory Allocator which allows other
 485          subsystems to allocate big physically-contiguous blocks of memory.
 486          CMA reserves a region of memory and allows only movable pages to
 487          be allocated from it. This way, the kernel can use the memory for
 488          pagecache and when a subsystem requests for contiguous area, the
 489          allocated pages are migrated away to serve the contiguous request.
 490
 491          If unsure, say "n".
 492
 493config CMA_DEBUG
 494        bool "CMA debug messages (DEVELOPMENT)"
 495        depends on DEBUG_KERNEL && CMA
 496        help
 497          Turns on debug messages in CMA.  This produces KERN_DEBUG
 498          messages for every CMA call as well as various messages while
 499          processing calls such as dma_alloc_from_contiguous().
 500          This option does not affect warning and error messages.
 501
 502config CMA_DEBUGFS
 503        bool "CMA debugfs interface"
 504        depends on CMA && DEBUG_FS
 505        help
 506          Turns on the DebugFS interface for CMA.
 507
 508config CMA_AREAS
 509        int "Maximum count of the CMA areas"
 510        depends on CMA
 511        default 7
 512        help
 513          CMA allows to create CMA areas for particular purpose, mainly,
 514          used as device private area. This parameter sets the maximum
 515          number of CMA area in the system.
 516
 517          If unsure, leave the default value "7".
 518
 519config MEM_SOFT_DIRTY
 520        bool "Track memory changes"
 521        depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
 522        select PROC_PAGE_MONITOR
 523        help
 524          This option enables memory changes tracking by introducing a
 525          soft-dirty bit on pte-s. This bit it set when someone writes
 526          into a page just as regular dirty bit, but unlike the latter
 527          it can be cleared by hands.
 528
 529          See Documentation/vm/soft-dirty.txt for more details.
 530
 531config ZSWAP
 532        bool "Compressed cache for swap pages (EXPERIMENTAL)"
 533        depends on FRONTSWAP && CRYPTO=y
 534        select CRYPTO_LZO
 535        select ZPOOL
 536        default n
 537        help
 538          A lightweight compressed cache for swap pages.  It takes
 539          pages that are in the process of being swapped out and attempts to
 540          compress them into a dynamically allocated RAM-based memory pool.
 541          This can result in a significant I/O reduction on swap device and,
 542          in the case where decompressing from RAM is faster that swap device
 543          reads, can also improve workload performance.
 544
 545          This is marked experimental because it is a new feature (as of
 546          v3.11) that interacts heavily with memory reclaim.  While these
 547          interactions don't cause any known issues on simple memory setups,
 548          they have not be fully explored on the large set of potential
 549          configurations and workloads that exist.
 550
 551config ZPOOL
 552        tristate "Common API for compressed memory storage"
 553        default n
 554        help
 555          Compressed memory storage API.  This allows using either zbud or
 556          zsmalloc.
 557
 558config ZBUD
 559        tristate "Low density storage for compressed pages"
 560        default n
 561        help
 562          A special purpose allocator for storing compressed pages.
 563          It is designed to store up to two compressed pages per physical
 564          page.  While this design limits storage density, it has simple and
 565          deterministic reclaim properties that make it preferable to a higher
 566          density approach when reclaim will be used.
 567
 568config ZSMALLOC
 569        tristate "Memory allocator for compressed pages"
 570        depends on MMU
 571        default n
 572        help
 573          zsmalloc is a slab-based memory allocator designed to store
 574          compressed RAM pages.  zsmalloc uses virtual memory mapping
 575          in order to reduce fragmentation.  However, this results in a
 576          non-standard allocator interface where a handle, not a pointer, is
 577          returned by an alloc().  This handle must be mapped in order to
 578          access the allocated space.
 579
 580config PGTABLE_MAPPING
 581        bool "Use page table mapping to access object in zsmalloc"
 582        depends on ZSMALLOC
 583        help
 584          By default, zsmalloc uses a copy-based object mapping method to
 585          access allocations that span two pages. However, if a particular
 586          architecture (ex, ARM) performs VM mapping faster than copying,
 587          then you should select this. This causes zsmalloc to use page table
 588          mapping rather than copying for object mapping.
 589
 590          You can check speed with zsmalloc benchmark:
 591          https://github.com/spartacus06/zsmapbench
 592
 593config ZSMALLOC_STAT
 594        bool "Export zsmalloc statistics"
 595        depends on ZSMALLOC
 596        select DEBUG_FS
 597        help
 598          This option enables code in the zsmalloc to collect various
 599          statistics about whats happening in zsmalloc and exports that
 600          information to userspace via debugfs.
 601          If unsure, say N.
 602
 603config GENERIC_EARLY_IOREMAP
 604        bool
 605
 606config MAX_STACK_SIZE_MB
 607        int "Maximum user stack size for 32-bit processes (MB)"
 608        default 80
 609        range 8 256 if METAG
 610        range 8 2048
 611        depends on STACK_GROWSUP && (!64BIT || COMPAT)
 612        help
 613          This is the maximum stack size in Megabytes in the VM layout of 32-bit
 614          user processes when the stack grows upwards (currently only on parisc
 615          and metag arch). The stack will be located at the highest memory
 616          address minus the given value, unless the RLIMIT_STACK hard limit is
 617          changed to a smaller value in which case that is used.
 618
 619          A sane initial value is 80 MB.
 620
 621# For architectures that support deferred memory initialisation
 622config ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
 623        bool
 624
 625config DEFERRED_STRUCT_PAGE_INIT
 626        bool "Defer initialisation of struct pages to kthreads"
 627        default n
 628        depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
 629        depends on MEMORY_HOTPLUG
 630        help
 631          Ordinarily all struct pages are initialised during early boot in a
 632          single thread. On very large machines this can take a considerable
 633          amount of time. If this option is set, large machines will bring up
 634          a subset of memmap at boot and then initialise the rest in parallel
 635          by starting one-off "pgdatinitX" kernel thread for each node X. This
 636          has a potential performance impact on processes running early in the
 637          lifetime of the system until these kthreads finish the
 638          initialisation.
 639
 640config IDLE_PAGE_TRACKING
 641        bool "Enable idle page tracking"
 642        depends on SYSFS && MMU
 643        select PAGE_EXTENSION if !64BIT
 644        help
 645          This feature allows to estimate the amount of user pages that have
 646          not been touched during a given period of time. This information can
 647          be useful to tune memory cgroup limits and/or for job placement
 648          within a compute cluster.
 649
 650          See Documentation/vm/idle_page_tracking.txt for more details.
 651
 652config ZONE_DEVICE
 653        bool "Device memory (pmem, etc...) hotplug support" if EXPERT
 654        depends on MEMORY_HOTPLUG
 655        depends on MEMORY_HOTREMOVE
 656        depends on SPARSEMEM_VMEMMAP
 657        depends on X86_64 #arch_add_memory() comprehends device memory
 658
 659        help
 660          Device memory hotplug support allows for establishing pmem,
 661          or other device driver discovered memory regions, in the
 662          memmap. This allows pfn_to_page() lookups of otherwise
 663          "device-physical" addresses which is needed for using a DAX
 664          mapping in an O_DIRECT operation, among other things.
 665
 666          If FS_DAX is enabled, then say Y.
 667
 668config FRAME_VECTOR
 669        bool
 670
 671config ARCH_USES_HIGH_VMA_FLAGS
 672        bool
 673config ARCH_HAS_PKEYS
 674        bool
 675