arm64: dts: rk3399: add reserved memory for drm loader display
[firefly-linux-kernel-4.4.55.git] / mm / Kconfig
index e742d06285b780eea632efe643e18d695f766928..97a4e06b15c00dfd7f8b8bc0f1e1e4610b769938 100644 (file)
@@ -20,7 +20,7 @@ config FLATMEM_MANUAL
 
          Some users of more advanced features like NUMA and
          memory hotplug may have different options here.
-         DISCONTIGMEM is an more mature, better tested system,
+         DISCONTIGMEM is a more mature, better tested system,
          but is incompatible with memory hotplug and may suffer
          decreased performance over SPARSEMEM.  If unsure between
          "Sparse Memory" and "Discontiguous Memory", choose
@@ -129,22 +129,28 @@ config SPARSEMEM_VMEMMAP
         efficient option when sufficient kernel resources are available.
 
 config HAVE_MEMBLOCK
-       boolean
+       bool
 
 config HAVE_MEMBLOCK_NODE_MAP
-       boolean
+       bool
+
+config HAVE_MEMBLOCK_PHYS_MAP
+       bool
+
+config HAVE_GENERIC_RCU_GUP
+       bool
 
 config ARCH_DISCARD_MEMBLOCK
-       boolean
+       bool
 
 config NO_BOOTMEM
-       boolean
+       bool
 
 config MEMORY_ISOLATION
-       boolean
+       bool
 
 config MOVABLE_NODE
-       boolean "Enable to assign a node which has only movable memory"
+       bool "Enable to assign a node which has only movable memory"
        depends on HAVE_MEMBLOCK
        depends on NO_BOOTMEM
        depends on X86_64
@@ -153,11 +159,18 @@ config MOVABLE_NODE
        help
          Allow a node to have only movable memory.  Pages used by the kernel,
          such as direct mapping pages cannot be migrated.  So the corresponding
-         memory device cannot be hotplugged.  This option allows users to
-         online all the memory of a node as movable memory so that the whole
-         node can be hotplugged.  Users who don't use the memory hotplug
-         feature are fine with this option on since they don't online memory
-         as movable.
+         memory device cannot be hotplugged.  This option allows the following
+         two things:
+         - When the system is booting, node full of hotpluggable memory can
+         be arranged to have only movable memory so that the whole node can
+         be hot-removed. (need movable_node boot option specified).
+         - After the system is up, the option allows users to online all the
+         memory of a node as movable memory so that the whole node can be
+         hot-removed.
+
+         Users who don't use the memory hotplug feature are fine with this
+         option on since they don't specify movable_node boot option or they
+         don't online memory as movable.
 
          Say Y here if you want to hotplug a whole node.
          Say N here if you want kernel to use memory on all nodes evenly.
@@ -173,7 +186,7 @@ config HAVE_BOOTMEM_INFO_NODE
 config MEMORY_HOTPLUG
        bool "Allow for memory hot-add"
        depends on SPARSEMEM || X86_64_ACPI_NUMA
-       depends on HOTPLUG && ARCH_ENABLE_MEMORY_HOTPLUG
+       depends on ARCH_ENABLE_MEMORY_HOTPLUG
        depends on (IA64 || X86 || PPC_BOOK3S_64 || SUPERH || S390)
 
 config MEMORY_HOTPLUG_SPARSE
@@ -183,22 +196,10 @@ config MEMORY_HOTPLUG_SPARSE
 config MEMORY_HOTREMOVE
        bool "Allow for memory hot remove"
        select MEMORY_ISOLATION
-       select HAVE_BOOTMEM_INFO_NODE if X86_64
+       select HAVE_BOOTMEM_INFO_NODE if (X86_64 || PPC64)
        depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
        depends on MIGRATION
 
-#
-# If we have space for more page flags then we can enable additional
-# optimizations and functionality.
-#
-# Regular Sparsemem takes page flag bits for the sectionid if it does not
-# use a virtual memmap. Disable extended page flags for 32 bit platforms
-# that require the use of a sectionid in the page flags.
-#
-config PAGEFLAGS_EXTENDED
-       def_bool y
-       depends on 64BIT || SPARSEMEM_VMEMMAP || !SPARSEMEM
-
 # Heavily threaded applications may benefit from splitting the mm-wide
 # page_table_lock, so that faults on different parts of the user address
 # space can be handled with less contention: split it at this NR_CPUS.
@@ -209,17 +210,25 @@ config PAGEFLAGS_EXTENDED
 #
 config SPLIT_PTLOCK_CPUS
        int
+       default "999999" if !MMU
        default "999999" if ARM && !CPU_CACHE_VIPT
        default "999999" if PARISC && !PA20
-       default "999999" if DEBUG_SPINLOCK || DEBUG_LOCK_ALLOC
        default "4"
 
+config ARCH_ENABLE_SPLIT_PMD_PTLOCK
+       bool
+
+#
+# support for memory balloon
+config MEMORY_BALLOON
+       bool
+
 #
 # support for memory balloon compaction
 config BALLOON_COMPACTION
        bool "Allow for balloon memory compaction/migration"
        def_bool y
-       depends on COMPACTION && VIRTIO_BALLOON
+       depends on COMPACTION && MEMORY_BALLOON
        help
          Memory fragmentation introduced by ballooning might reduce
          significantly the number of 2MB contiguous memory blocks that can be
@@ -245,7 +254,7 @@ config COMPACTION
 config MIGRATION
        bool "Page migration"
        def_bool y
-       depends on NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA
+       depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
        help
          Allows the migration of the physical location of pages of processes
          while the virtual addresses are not changed. This is useful in
@@ -254,6 +263,9 @@ config MIGRATION
          pages as migration can relocate pages to satisfy a huge page
          allocation instead of reclaiming.
 
+config ARCH_ENABLE_HUGEPAGE_MIGRATION
+       bool
+
 config PHYS_ADDR_T_64BIT
        def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
 
@@ -275,15 +287,9 @@ config BOUNCE
 # On the 'tile' arch, USB OHCI needs the bounce pool since tilegx will often
 # have more than 4GB of memory, but we don't currently use the IOTLB to present
 # a 32-bit address to OHCI.  So we need to use a bounce pool instead.
-#
-# We also use the bounce pool to provide stable page writes for jbd.  jbd
-# initiates buffer writeback without locking the page or setting PG_writeback,
-# and fixing that behavior (a second time; jbd2 doesn't have this problem) is
-# a major rework effort.  Instead, use the bounce buffer to snapshot pages
-# (until jbd goes away).  The only jbd user is ext3.
 config NEED_BOUNCE_POOL
        bool
-       default y if (TILE && USB_OHCI_HCD) || (BLK_DEV_INTEGRITY && JBD)
+       default y if TILE && USB_OHCI_HCD
 
 config NR_QUICK
        int
@@ -301,6 +307,7 @@ config VIRT_TO_BUS
 
 config MMU_NOTIFIER
        bool
+       select SRCU
 
 config KSM
        bool "Enable KSM for page merging"
@@ -343,6 +350,7 @@ config MEMORY_FAILURE
        depends on ARCH_SUPPORTS_MEMORY_FAILURE
        bool "Enable recovery from hardware memory errors"
        select MEMORY_ISOLATION
+       select RAS
        help
          Enables code to recover from some memory failures on systems
          with MCA recovery. This allows a system to continue running
@@ -420,16 +428,6 @@ choice
          benefit.
 endchoice
 
-config CROSS_MEMORY_ATTACH
-       bool "Cross Memory Support"
-       depends on MMU
-       default y
-       help
-         Enabling this option adds the system calls process_vm_readv and
-         process_vm_writev which allow a process with the correct privileges
-         to directly read from or write to to another process's address space.
-         See the man page for more details.
-
 #
 # UP and nommu archs use km based percpu allocator
 #
@@ -477,3 +475,196 @@ config FRONTSWAP
          and swap data is stored as normal on the matching swap device.
 
          If unsure, say Y to enable frontswap.
+
+config CMA
+       bool "Contiguous Memory Allocator"
+       depends on HAVE_MEMBLOCK && MMU
+       select MIGRATION
+       select MEMORY_ISOLATION
+       help
+         This enables the Contiguous Memory Allocator which allows other
+         subsystems to allocate big physically-contiguous blocks of memory.
+         CMA reserves a region of memory and allows only movable pages to
+         be allocated from it. This way, the kernel can use the memory for
+         pagecache and when a subsystem requests for contiguous area, the
+         allocated pages are migrated away to serve the contiguous request.
+
+         If unsure, say "n".
+
+config CMA_DEBUG
+       bool "CMA debug messages (DEVELOPMENT)"
+       depends on DEBUG_KERNEL && CMA
+       help
+         Turns on debug messages in CMA.  This produces KERN_DEBUG
+         messages for every CMA call as well as various messages while
+         processing calls such as dma_alloc_from_contiguous().
+         This option does not affect warning and error messages.
+
+config CMA_DEBUGFS
+       bool "CMA debugfs interface"
+       depends on CMA && DEBUG_FS
+       help
+         Turns on the DebugFS interface for CMA.
+
+config CMA_AREAS
+       int "Maximum count of the CMA areas"
+       depends on CMA
+       default 7
+       help
+         CMA allows to create CMA areas for particular purpose, mainly,
+         used as device private area. This parameter sets the maximum
+         number of CMA area in the system.
+
+         If unsure, leave the default value "7".
+
+config MEM_SOFT_DIRTY
+       bool "Track memory changes"
+       depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
+       select PROC_PAGE_MONITOR
+       help
+         This option enables memory changes tracking by introducing a
+         soft-dirty bit on pte-s. This bit it set when someone writes
+         into a page just as regular dirty bit, but unlike the latter
+         it can be cleared by hands.
+
+         See Documentation/vm/soft-dirty.txt for more details.
+
+config ZSWAP
+       bool "Compressed cache for swap pages (EXPERIMENTAL)"
+       depends on FRONTSWAP && CRYPTO=y
+       select CRYPTO_LZO
+       select ZPOOL
+       default n
+       help
+         A lightweight compressed cache for swap pages.  It takes
+         pages that are in the process of being swapped out and attempts to
+         compress them into a dynamically allocated RAM-based memory pool.
+         This can result in a significant I/O reduction on swap device and,
+         in the case where decompressing from RAM is faster that swap device
+         reads, can also improve workload performance.
+
+         This is marked experimental because it is a new feature (as of
+         v3.11) that interacts heavily with memory reclaim.  While these
+         interactions don't cause any known issues on simple memory setups,
+         they have not be fully explored on the large set of potential
+         configurations and workloads that exist.
+
+config ZPOOL
+       tristate "Common API for compressed memory storage"
+       default n
+       help
+         Compressed memory storage API.  This allows using either zbud or
+         zsmalloc.
+
+config ZBUD
+       tristate "Low density storage for compressed pages"
+       default n
+       help
+         A special purpose allocator for storing compressed pages.
+         It is designed to store up to two compressed pages per physical
+         page.  While this design limits storage density, it has simple and
+         deterministic reclaim properties that make it preferable to a higher
+         density approach when reclaim will be used.
+
+config ZSMALLOC
+       tristate "Memory allocator for compressed pages"
+       depends on MMU
+       default n
+       help
+         zsmalloc is a slab-based memory allocator designed to store
+         compressed RAM pages.  zsmalloc uses virtual memory mapping
+         in order to reduce fragmentation.  However, this results in a
+         non-standard allocator interface where a handle, not a pointer, is
+         returned by an alloc().  This handle must be mapped in order to
+         access the allocated space.
+
+config PGTABLE_MAPPING
+       bool "Use page table mapping to access object in zsmalloc"
+       depends on ZSMALLOC
+       help
+         By default, zsmalloc uses a copy-based object mapping method to
+         access allocations that span two pages. However, if a particular
+         architecture (ex, ARM) performs VM mapping faster than copying,
+         then you should select this. This causes zsmalloc to use page table
+         mapping rather than copying for object mapping.
+
+         You can check speed with zsmalloc benchmark:
+         https://github.com/spartacus06/zsmapbench
+
+config ZSMALLOC_STAT
+       bool "Export zsmalloc statistics"
+       depends on ZSMALLOC
+       select DEBUG_FS
+       help
+         This option enables code in the zsmalloc to collect various
+         statistics about whats happening in zsmalloc and exports that
+         information to userspace via debugfs.
+         If unsure, say N.
+
+config GENERIC_EARLY_IOREMAP
+       bool
+
+config MAX_STACK_SIZE_MB
+       int "Maximum user stack size for 32-bit processes (MB)"
+       default 80
+       range 8 256 if METAG
+       range 8 2048
+       depends on STACK_GROWSUP && (!64BIT || COMPAT)
+       help
+         This is the maximum stack size in Megabytes in the VM layout of 32-bit
+         user processes when the stack grows upwards (currently only on parisc
+         and metag arch). The stack will be located at the highest memory
+         address minus the given value, unless the RLIMIT_STACK hard limit is
+         changed to a smaller value in which case that is used.
+
+         A sane initial value is 80 MB.
+
+# For architectures that support deferred memory initialisation
+config ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
+       bool
+
+config DEFERRED_STRUCT_PAGE_INIT
+       bool "Defer initialisation of struct pages to kswapd"
+       default n
+       depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
+       depends on MEMORY_HOTPLUG
+       help
+         Ordinarily all struct pages are initialised during early boot in a
+         single thread. On very large machines this can take a considerable
+         amount of time. If this option is set, large machines will bring up
+         a subset of memmap at boot and then initialise the rest in parallel
+         when kswapd starts. This has a potential performance impact on
+         processes running early in the lifetime of the systemm until kswapd
+         finishes the initialisation.
+
+config IDLE_PAGE_TRACKING
+       bool "Enable idle page tracking"
+       depends on SYSFS && MMU
+       select PAGE_EXTENSION if !64BIT
+       help
+         This feature allows to estimate the amount of user pages that have
+         not been touched during a given period of time. This information can
+         be useful to tune memory cgroup limits and/or for job placement
+         within a compute cluster.
+
+         See Documentation/vm/idle_page_tracking.txt for more details.
+
+config ZONE_DEVICE
+       bool "Device memory (pmem, etc...) hotplug support" if EXPERT
+       default !ZONE_DMA
+       depends on !ZONE_DMA
+       depends on MEMORY_HOTPLUG
+       depends on MEMORY_HOTREMOVE
+       depends on X86_64 #arch_add_memory() comprehends device memory
+
+       help
+         Device memory hotplug support allows for establishing pmem,
+         or other device driver discovered memory regions, in the
+         memmap. This allows pfn_to_page() lookups of otherwise
+         "device-physical" addresses which is needed for using a DAX
+         mapping in an O_DIRECT operation, among other things.
+
+         If FS_DAX is enabled, then say Y.
+
+config FRAME_VECTOR
+       bool