ARM64: dts: rk3399: fixup android next backlight gpio
[firefly-linux-kernel-4.4.55.git] / init / Kconfig
index 79b356f892f9a22f261b3281a3925ba37597c433..5d9097e2b805fa8b97c5a91031515aaae3532e99 100644 (file)
@@ -53,6 +53,20 @@ config CROSS_COMPILE
          need to set this unless you want the configured kernel build
          directory to select the cross-compiler automatically.
 
+config COMPILE_TEST
+       bool "Compile also drivers which will not load"
+       default n
+       help
+         Some drivers can be compiled on a different platform than they are
+         intended to be run on. Despite they cannot be loaded there (or even
+         when they load they cannot be used due to missing HW support),
+         developers still, opposing to distributors, might want to build such
+         drivers to compile-test them.
+
+         If you are a developer and want to build everything available, say Y
+         here. If you are a user/distributor, say N here to exclude useless
+         drivers to be distributed.
+
 config LOCALVERSION
        string "Local version - append to kernel release"
        help
@@ -98,10 +112,13 @@ config HAVE_KERNEL_XZ
 config HAVE_KERNEL_LZO
        bool
 
+config HAVE_KERNEL_LZ4
+       bool
+
 choice
        prompt "Kernel compression mode"
        default KERNEL_GZIP
-       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
+       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
        help
          The linux kernel is a kind of self-extracting executable.
          Several compression algorithms are available, which differ
@@ -168,6 +185,18 @@ config KERNEL_LZO
          size is about 10% bigger than gzip; however its speed
          (both compression and decompression) is the fastest.
 
+config KERNEL_LZ4
+       bool "LZ4"
+       depends on HAVE_KERNEL_LZ4
+       help
+         LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
+         A preliminary version of LZ4 de/compression tool is available at
+         <https://code.google.com/p/lz4/>.
+
+         Its compression ratio is worse than LZO. The size of the kernel
+         is about 8% bigger than LZO. But the decompression speed is
+         faster than LZO.
+
 endchoice
 
 config DEFAULT_HOSTNAME
@@ -232,6 +261,16 @@ config POSIX_MQUEUE_SYSCTL
        depends on SYSCTL
        default y
 
+config CROSS_MEMORY_ATTACH
+       bool "Enable process_vm_readv/writev syscalls"
+       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 another process' address space.
+         See the man page for more details.
+
 config FHANDLE
        bool "open by fhandle syscalls"
        select EXPORTFS
@@ -244,6 +283,16 @@ config FHANDLE
          get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
          syscalls.
 
+config USELIB
+       bool "uselib syscall"
+       default y
+       help
+         This option enables the uselib syscall, a system call used in the
+         dynamic linker from libc5 and earlier.  glibc does not use this
+         system call.  If you intend to run programs built on libc5 or
+         earlier, you may need to enable this syscall.  Current systems
+         running glibc can safely disable this.
+
 config AUDIT
        bool "Auditing support"
        depends on NET
@@ -253,9 +302,12 @@ config AUDIT
          logging of avc messages output).  Does not do system-call
          auditing without CONFIG_AUDITSYSCALL.
 
+config HAVE_ARCH_AUDITSYSCALL
+       bool
+
 config AUDITSYSCALL
        bool "Enable system-call auditing support"
-       depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
+       depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
        default y if SECURITY_SELINUX
        help
          Enable low-overhead system-call auditing infrastructure that
@@ -272,20 +324,6 @@ config AUDIT_TREE
        depends on AUDITSYSCALL
        select FSNOTIFY
 
-config AUDIT_LOGINUID_IMMUTABLE
-       bool "Make audit loginuid immutable"
-       depends on AUDIT
-       help
-         The config option toggles if a task setting its loginuid requires
-         CAP_SYS_AUDITCONTROL or if that task should require no special permissions
-         but should instead only allow setting its loginuid if it was never
-         previously set.  On systems which use systemd or a similar central
-         process to restart login services this should be set to true.  On older
-         systems in which an admin would typically have to directly stop and
-         start processes this should be set to false.  Setting this to true allows
-         one to drop potentially dangerous capabilites from the login tasks,
-         but may not be backwards compatible with older init systems.
-
 source "kernel/irq/Kconfig"
 source "kernel/time/Kconfig"
 
@@ -325,7 +363,8 @@ config VIRT_CPU_ACCOUNTING_NATIVE
 
 config VIRT_CPU_ACCOUNTING_GEN
        bool "Full dynticks CPU time accounting"
-       depends on HAVE_CONTEXT_TRACKING && 64BIT
+       depends on HAVE_CONTEXT_TRACKING
+       depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
        select VIRT_CPU_ACCOUNTING
        select CONTEXT_TRACKING
        help
@@ -355,6 +394,7 @@ endchoice
 
 config BSD_PROCESS_ACCT
        bool "BSD Process Accounting"
+       depends on MULTIUSER
        help
          If you say Y here, a user level program will be able to instruct the
          kernel (via a special system call) to write process accounting
@@ -381,6 +421,7 @@ config BSD_PROCESS_ACCT_V3
 config TASKSTATS
        bool "Export task/process statistics through netlink"
        depends on NET
+       depends on MULTIUSER
        default n
        help
          Export selected statistics for tasks/processes through the
@@ -394,6 +435,7 @@ config TASKSTATS
 config TASK_DELAY_ACCT
        bool "Enable per-task delay accounting"
        depends on TASKSTATS
+       select SCHED_INFO
        help
          Collect information on time spent by a task waiting for system
          resources like cpu, synchronous block I/O completion and swapping
@@ -424,23 +466,18 @@ endmenu # "CPU/Task time and stats accounting"
 
 menu "RCU Subsystem"
 
-choice
-       prompt "RCU Implementation"
-       default TREE_RCU
-
 config TREE_RCU
-       bool "Tree-based hierarchical RCU"
-       depends on !PREEMPT && SMP
-       select IRQ_WORK
+       bool
+       default y if !PREEMPT && SMP
        help
          This option selects the RCU implementation that is
          designed for very large SMP system with hundreds or
          thousands of CPUs.  It also scales down nicely to
          smaller systems.
 
-config TREE_PREEMPT_RCU
-       bool "Preemptible tree-based hierarchical RCU"
-       depends on PREEMPT
+config PREEMPT_RCU
+       bool
+       default y if PREEMPT
        help
          This option selects the RCU implementation that is
          designed for very large SMP systems with hundreds or
@@ -451,32 +488,47 @@ config TREE_PREEMPT_RCU
          Select this option if you are unsure.
 
 config TINY_RCU
-       bool "UP-only small-memory-footprint RCU"
-       depends on !PREEMPT && !SMP
+       bool
+       default y if !PREEMPT && !SMP
        help
          This option selects the RCU implementation that is
          designed for UP systems from which real-time response
          is not required.  This option greatly reduces the
          memory footprint of RCU.
 
-config TINY_PREEMPT_RCU
-       bool "Preemptible UP-only small-memory-footprint RCU"
-       depends on PREEMPT && !SMP
+config RCU_EXPERT
+       bool "Make expert-level adjustments to RCU configuration"
+       default n
        help
-         This option selects the RCU implementation that is designed
-         for real-time UP systems.  This option greatly reduces the
-         memory footprint of RCU.
+         This option needs to be enabled if you wish to make
+         expert-level adjustments to RCU configuration.  By default,
+         no such adjustments can be made, which has the often-beneficial
+         side-effect of preventing "make oldconfig" from asking you all
+         sorts of detailed questions about how you would like numerous
+         obscure RCU options to be set up.
 
-endchoice
+         Say Y if you need to make expert-level adjustments to RCU.
 
-config PREEMPT_RCU
-       def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
+         Say N if you are unsure.
+
+config SRCU
+       bool
        help
-         This option enables preemptible-RCU code that is common between
-         the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
+         This option selects the sleepable version of RCU. This version
+         permits arbitrary sleeping or blocking within RCU read-side critical
+         sections.
+
+config TASKS_RCU
+       bool
+       default n
+       select SRCU
+       help
+         This option enables a task-based RCU implementation that uses
+         only voluntary context switch (not preemption!), idle, and
+         user-mode execution as quiescent states.
 
 config RCU_STALL_COMMON
-       def_bool ( TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE )
+       def_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE )
        help
          This option enables RCU CPU stall code that is common between
          the TINY and TREE variants of RCU.  The purpose is to allow
@@ -486,39 +538,38 @@ config RCU_STALL_COMMON
 config CONTEXT_TRACKING
        bool
 
-config RCU_USER_QS
-       bool "Consider userspace as in RCU extended quiescent state"
-       depends on HAVE_CONTEXT_TRACKING && SMP
-       select CONTEXT_TRACKING
-       help
-         This option sets hooks on kernel / userspace boundaries and
-         puts RCU in extended quiescent state when the CPU runs in
-         userspace. It means that when a CPU runs in userspace, it is
-         excluded from the global RCU state machine and thus doesn't
-         try to keep the timer tick on for RCU.
-
-         Unless you want to hack and help the development of the full
-         dynticks mode, you shouldn't enable this option.  It also
-         adds unnecessary overhead.
-
-         If unsure say N
-
 config CONTEXT_TRACKING_FORCE
        bool "Force context tracking"
        depends on CONTEXT_TRACKING
-       default CONTEXT_TRACKING
+       default y if !NO_HZ_FULL
        help
-         Probe on user/kernel boundaries by default in order to
-         test the features that rely on it such as userspace RCU extended
-         quiescent states.
-         This test is there for debugging until we have a real user like the
-         full dynticks mode.
+         The major pre-requirement for full dynticks to work is to
+         support the context tracking subsystem. But there are also
+         other dependencies to provide in order to make the full
+         dynticks working.
+
+         This option stands for testing when an arch implements the
+         context tracking backend but doesn't yet fullfill all the
+         requirements to make the full dynticks feature working.
+         Without the full dynticks, there is no way to test the support
+         for context tracking and the subsystems that rely on it: RCU
+         userspace extended quiescent state and tickless cputime
+         accounting. This option copes with the absence of the full
+         dynticks subsystem by forcing the context tracking on all
+         CPUs in the system.
+
+         Say Y only if you're working on the development of an
+         architecture backend for the context tracking.
+
+         Say N otherwise, this option brings an overhead that you
+         don't want in production.
+
 
 config RCU_FANOUT
        int "Tree-based hierarchical RCU fanout value"
        range 2 64 if 64BIT
        range 2 32 if !64BIT
-       depends on TREE_RCU || TREE_PREEMPT_RCU
+       depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
        default 64 if 64BIT
        default 32 if !64BIT
        help
@@ -536,9 +587,9 @@ config RCU_FANOUT
 
 config RCU_FANOUT_LEAF
        int "Tree-based hierarchical RCU leaf-level fanout value"
-       range 2 RCU_FANOUT if 64BIT
-       range 2 RCU_FANOUT if !64BIT
-       depends on TREE_RCU || TREE_PREEMPT_RCU
+       range 2 64 if 64BIT
+       range 2 32 if !64BIT
+       depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
        default 16
        help
          This option controls the leaf-level fanout of hierarchical
@@ -561,23 +612,9 @@ config RCU_FANOUT_LEAF
 
          Take the default if unsure.
 
-config RCU_FANOUT_EXACT
-       bool "Disable tree-based hierarchical RCU auto-balancing"
-       depends on TREE_RCU || TREE_PREEMPT_RCU
-       default n
-       help
-         This option forces use of the exact RCU_FANOUT value specified,
-         regardless of imbalances in the hierarchy.  This is useful for
-         testing RCU itself, and might one day be useful on systems with
-         strong NUMA behavior.
-
-         Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
-
-         Say N if unsure.
-
 config RCU_FAST_NO_HZ
        bool "Accelerate last non-dyntick-idle CPU's grace periods"
-       depends on NO_HZ_COMMON && SMP
+       depends on NO_HZ_COMMON && SMP && RCU_EXPERT
        default n
        help
          This option permits CPUs to enter dynticks-idle state even if
@@ -594,16 +631,16 @@ config RCU_FAST_NO_HZ
          Say N if you are unsure.
 
 config TREE_RCU_TRACE
-       def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
+       def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )
        select DEBUG_FS
        help
          This option provides tracing for the TREE_RCU and
-         TREE_PREEMPT_RCU implementations, permitting Makefile to
+         PREEMPT_RCU implementations, permitting Makefile to
          trivially select kernel/rcutree_trace.c.
 
 config RCU_BOOST
        bool "Enable RCU priority boosting"
-       depends on RT_MUTEXES && PREEMPT_RCU
+       depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT
        default n
        help
          This option boosts the priority of preempted RCU readers that
@@ -614,30 +651,33 @@ config RCU_BOOST
          Say Y here if you are working with real-time apps or heavy loads
          Say N here if you are unsure.
 
-config RCU_BOOST_PRIO
-       int "Real-time priority to boost RCU readers to"
-       range 1 99
-       depends on RCU_BOOST
-       default 1
-       help
-         This option specifies the real-time priority to which long-term
-         preempted RCU readers are to be boosted.  If you are working
-         with a real-time application that has one or more CPU-bound
-         threads running at a real-time priority level, you should set
-         RCU_BOOST_PRIO to a priority higher then the highest-priority
-         real-time CPU-bound thread.  The default RCU_BOOST_PRIO value
-         of 1 is appropriate in the common case, which is real-time
+config RCU_KTHREAD_PRIO
+       int "Real-time priority to use for RCU worker threads"
+       range 1 99 if RCU_BOOST
+       range 0 99 if !RCU_BOOST
+       default 1 if RCU_BOOST
+       default 0 if !RCU_BOOST
+       depends on RCU_EXPERT
+       help
+         This option specifies the SCHED_FIFO priority value that will be
+         assigned to the rcuc/n and rcub/n threads and is also the value
+         used for RCU_BOOST (if enabled). If you are working with a
+         real-time application that has one or more CPU-bound threads
+         running at a real-time priority level, you should set
+         RCU_KTHREAD_PRIO to a priority higher than the highest-priority
+         real-time CPU-bound application thread.  The default RCU_KTHREAD_PRIO
+         value of 1 is appropriate in the common case, which is real-time
          applications that do not have any CPU-bound threads.
 
          Some real-time applications might not have a single real-time
          thread that saturates a given CPU, but instead might have
          multiple real-time threads that, taken together, fully utilize
-         that CPU.  In this case, you should set RCU_BOOST_PRIO to
+         that CPU.  In this case, you should set RCU_KTHREAD_PRIO to
          a priority higher than the lowest-priority thread that is
          conspiring to prevent the CPU from running any non-real-time
          tasks.  For example, if one thread at priority 10 and another
          thread at priority 5 are between themselves fully consuming
-         the CPU time on a given CPU, then RCU_BOOST_PRIO should be
+         the CPU time on a given CPU, then RCU_KTHREAD_PRIO should be
          set to priority 6 or higher.
 
          Specify the real-time priority, or take the default if unsure.
@@ -656,8 +696,9 @@ config RCU_BOOST_DELAY
          Accept the default if unsure.
 
 config RCU_NOCB_CPU
-       bool "Offload RCU callback processing from boot-selected CPUs (EXPERIMENTAL"
-       depends on TREE_RCU || TREE_PREEMPT_RCU
+       bool "Offload RCU callback processing from boot-selected CPUs"
+       depends on TREE_RCU || PREEMPT_RCU
+       depends on RCU_EXPERT || NO_HZ_FULL
        default n
        help
          Use this option to reduce OS jitter for aggressive HPC or
@@ -681,46 +722,78 @@ config RCU_NOCB_CPU
 choice
        prompt "Build-forced no-CBs CPUs"
        default RCU_NOCB_CPU_NONE
+       depends on RCU_NOCB_CPU
        help
-         This option allows no-CBs CPUs to be specified at build time.
-         Additional no-CBs CPUs may be specified by the rcu_nocbs=
-         boot parameter.
+         This option allows no-CBs CPUs (whose RCU callbacks are invoked
+         from kthreads rather than from softirq context) to be specified
+         at build time.  Additional no-CBs CPUs may be specified by
+         the rcu_nocbs= boot parameter.
 
 config RCU_NOCB_CPU_NONE
        bool "No build_forced no-CBs CPUs"
-       depends on RCU_NOCB_CPU && !NO_HZ_FULL
        help
          This option does not force any of the CPUs to be no-CBs CPUs.
          Only CPUs designated by the rcu_nocbs= boot parameter will be
-         no-CBs CPUs.
+         no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU
+         kthreads whose names begin with "rcuo".  All other CPUs will
+         invoke their own RCU callbacks in softirq context.
+
+         Select this option if you want to choose no-CBs CPUs at
+         boot time, for example, to allow testing of different no-CBs
+         configurations without having to rebuild the kernel each time.
 
 config RCU_NOCB_CPU_ZERO
        bool "CPU 0 is a build_forced no-CBs CPU"
-       depends on RCU_NOCB_CPU && !NO_HZ_FULL
        help
-         This option forces CPU 0 to be a no-CBs CPU.  Additional CPUs
-         may be designated as no-CBs CPUs using the rcu_nocbs= boot
-         parameter will be no-CBs CPUs.
+         This option forces CPU 0 to be a no-CBs CPU, so that its RCU
+         callbacks are invoked by a per-CPU kthread whose name begins
+         with "rcuo".  Additional CPUs may be designated as no-CBs
+         CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs.
+         All other CPUs will invoke their own RCU callbacks in softirq
+         context.
 
          Select this if CPU 0 needs to be a no-CBs CPU for real-time
-         or energy-efficiency reasons.
+         or energy-efficiency reasons, but the real reason it exists
+         is to ensure that randconfig testing covers mixed systems.
 
 config RCU_NOCB_CPU_ALL
        bool "All CPUs are build_forced no-CBs CPUs"
-       depends on RCU_NOCB_CPU
        help
          This option forces all CPUs to be no-CBs CPUs.  The rcu_nocbs=
-         boot parameter will be ignored.
+         boot parameter will be ignored.  All CPUs' RCU callbacks will
+         be executed in the context of per-CPU rcuo kthreads created for
+         this purpose.  Assuming that the kthreads whose names start with
+         "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter
+         on the remaining CPUs, but might decrease memory locality during
+         RCU-callback invocation, thus potentially degrading throughput.
 
          Select this if all CPUs need to be no-CBs CPUs for real-time
          or energy-efficiency reasons.
 
 endchoice
 
+config RCU_EXPEDITE_BOOT
+       bool
+       default n
+       help
+         This option enables expedited grace periods at boot time,
+         as if rcu_expedite_gp() had been invoked early in boot.
+         The corresponding rcu_unexpedite_gp() is invoked from
+         rcu_end_inkernel_boot(), which is intended to be invoked
+         at the end of the kernel-only boot sequence, just before
+         init is exec'ed.
+
+         Accept the default if unsure.
+
 endmenu # "RCU Subsystem"
 
+config BUILD_BIN2C
+       bool
+       default n
+
 config IKCONFIG
        tristate "Kernel .config support"
+       select BUILD_BIN2C
        ---help---
          This option enables the complete Linux kernel ".config" file
          contents to be saved in the kernel. It provides documentation
@@ -740,24 +813,68 @@ config IKCONFIG_PROC
 
 config LOG_BUF_SHIFT
        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
-       range 12 21
+       range 12 25
        default 17
+       depends on PRINTK
        help
-         Select kernel log buffer size as a power of 2.
+         Select the minimal kernel log buffer size as a power of 2.
+         The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
+         parameter, see below. Any higher size also might be forced
+         by "log_buf_len" boot parameter.
+
          Examples:
-                    17 => 128 KB
+                    17 => 128 KB
                     16 => 64 KB
-                    15 => 32 KB
-                    14 => 16 KB
+                    15 => 32 KB
+                    14 => 16 KB
                     13 =>  8 KB
                     12 =>  4 KB
 
+config LOG_CPU_MAX_BUF_SHIFT
+       int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
+       depends on SMP
+       range 0 21
+       default 12 if !BASE_SMALL
+       default 0 if BASE_SMALL
+       depends on PRINTK
+       help
+         This option allows to increase the default ring buffer size
+         according to the number of CPUs. The value defines the contribution
+         of each CPU as a power of 2. The used space is typically only few
+         lines however it might be much more when problems are reported,
+         e.g. backtraces.
+
+         The increased size means that a new buffer has to be allocated and
+         the original static one is unused. It makes sense only on systems
+         with more CPUs. Therefore this value is used only when the sum of
+         contributions is greater than the half of the default kernel ring
+         buffer as defined by LOG_BUF_SHIFT. The default values are set
+         so that more than 64 CPUs are needed to trigger the allocation.
+
+         Also this option is ignored when "log_buf_len" kernel parameter is
+         used as it forces an exact (power of two) size of the ring buffer.
+
+         The number of possible CPUs is used for this computation ignoring
+         hotplugging making the compuation optimal for the the worst case
+         scenerio while allowing a simple algorithm to be used from bootup.
+
+         Examples shift values and their meaning:
+                    17 => 128 KB for each CPU
+                    16 =>  64 KB for each CPU
+                    15 =>  32 KB for each CPU
+                    14 =>  16 KB for each CPU
+                    13 =>   8 KB for each CPU
+                    12 =>   4 KB for each CPU
+
 #
 # Architectures with an unreliable sched_clock() should select this:
 #
 config HAVE_UNSTABLE_SCHED_CLOCK
        bool
 
+config GENERIC_SCHED_CLOCK
+       bool
+
 #
 # For architectures that want to enable the support for NUMA-affine scheduler
 # balancing logic:
@@ -765,30 +882,27 @@ config HAVE_UNSTABLE_SCHED_CLOCK
 config ARCH_SUPPORTS_NUMA_BALANCING
        bool
 
-# For architectures that (ab)use NUMA to represent different memory regions
-# all cpu-local but of different latencies, such as SuperH.
 #
-config ARCH_WANT_NUMA_VARIABLE_LOCALITY
+# For architectures that prefer to flush all TLBs after a number of pages
+# are unmapped instead of sending one IPI per page to flush. The architecture
+# must provide guarantees on what happens if a clean TLB cache entry is
+# written after the unmap. Details are in mm/rmap.c near the check for
+# should_defer_flush. The architecture should also consider if the full flush
+# and the refill costs are offset by the savings of sending fewer IPIs.
+config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
        bool
 
 #
-# For architectures that are willing to define _PAGE_NUMA as _PAGE_PROTNONE
-config ARCH_WANTS_PROT_NUMA_PROT_NONE
+# For architectures that know their GCC __int128 support is sound
+#
+config ARCH_SUPPORTS_INT128
        bool
 
-config ARCH_USES_NUMA_PROT_NONE
+# For architectures that (ab)use NUMA to represent different memory regions
+# all cpu-local but of different latencies, such as SuperH.
+#
+config ARCH_WANT_NUMA_VARIABLE_LOCALITY
        bool
-       default y
-       depends on ARCH_WANTS_PROT_NUMA_PROT_NONE
-       depends on NUMA_BALANCING
-
-config NUMA_BALANCING_DEFAULT_ENABLED
-       bool "Automatically enable NUMA aware memory/task placement"
-       default y
-       depends on NUMA_BALANCING
-       help
-         If set, autonumic NUMA balancing will be enabled if running on a NUMA
-         machine.
 
 config NUMA_BALANCING
        bool "Memory placement aware NUMA scheduler"
@@ -798,13 +912,21 @@ config NUMA_BALANCING
        help
          This option adds support for automatic NUMA aware memory/task placement.
          The mechanism is quite primitive and is based on migrating memory when
-         it is references to the node the task is running on.
+         it has references to the node the task is running on.
 
          This system will be inactive on UMA systems.
 
+config NUMA_BALANCING_DEFAULT_ENABLED
+       bool "Automatically enable NUMA aware memory/task placement"
+       default y
+       depends on NUMA_BALANCING
+       help
+         If set, automatic NUMA balancing will be enabled if running on a NUMA
+         machine.
+
 menuconfig CGROUPS
-       boolean "Control Group support"
-       depends on EVENTFD
+       bool "Control Group support"
+       select KERNFS
        help
          This option adds support for grouping sets of processes together, for
          use with process control subsystems such as Cpusets, CFS, memory
@@ -834,6 +956,22 @@ config CGROUP_FREEZER
          Provides a way to freeze and unfreeze all tasks in a
          cgroup.
 
+config CGROUP_PIDS
+       bool "PIDs cgroup subsystem"
+       help
+         Provides enforcement of process number limits in the scope of a
+         cgroup. Any attempt to fork more processes than is allowed in the
+         cgroup will fail. PIDs are fundamentally a global resource because it
+         is fairly trivial to reach PID exhaustion before you reach even a
+         conservative kmemcg limit. As a result, it is possible to grind a
+         system to halt without being limited by other cgroup policies. The
+         PIDs cgroup subsystem is designed to stop this from happening.
+
+         It should be noted that organisational operations (such as attaching
+         to a cgroup hierarchy will *not* be blocked by the PIDs subsystem),
+         since the PIDs limit only affects a process's ability to fork, not to
+         attach to a cgroup.
+
 config CGROUP_DEVICE
        bool "Device controller for cgroups"
        help
@@ -861,35 +999,34 @@ config CGROUP_CPUACCT
          Provides a simple Resource Controller for monitoring the
          total CPU consumed by the tasks in a cgroup.
 
-config RESOURCE_COUNTERS
-       bool "Resource counters"
+config CGROUP_SCHEDTUNE
+       bool "CFS tasks boosting cgroup subsystem (EXPERIMENTAL)"
+       depends on SCHED_TUNE
        help
-         This option enables controller independent resource accounting
-         infrastructure that works with cgroups.
+         This option provides the "schedtune" controller which improves the
+         flexibility of the task boosting mechanism by introducing the support
+         to define "per task" boost values.
+
+         This new controller:
+         1. allows only a two layers hierarchy, where the root defines the
+            system-wide boost value and its direct childrens define each one a
+            different "class of tasks" to be boosted with a different value
+         2. supports up to 16 different task classes, each one which could be
+            configured with a different boost value
+
+         Say N if unsure.
+
+config PAGE_COUNTER
+       bool
 
 config MEMCG
        bool "Memory Resource Controller for Control Groups"
-       depends on RESOURCE_COUNTERS
-       select MM_OWNER
+       select PAGE_COUNTER
+       select EVENTFD
        help
          Provides a memory resource controller that manages both anonymous
          memory and page cache. (See Documentation/cgroups/memory.txt)
 
-         Note that setting this option increases fixed memory overhead
-         associated with each page of memory in the system. By this,
-         20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
-         usage tracking struct at boot. Total amount of this is printed out
-         at boot.
-
-         Only enable when you're ok with these trade offs and really
-         sure you need the memory resource controller. Even when you enable
-         this, you can set "cgroup_disable=memory" at your boot option to
-         disable memory resource controller and you can avoid overheads.
-         (and lose benefits of memory resource controller)
-
-         This config option also selects MM_OWNER config option, which
-         could in turn add some fork/exit overhead.
-
 config MEMCG_SWAP
        bool "Memory Resource Controller Swap Extension"
        depends on MEMCG && SWAP
@@ -915,7 +1052,7 @@ config MEMCG_SWAP_ENABLED
          Memory Resource Controller Swap Extension comes with its price in
          a bigger memory consumption. General purpose distribution kernels
          which want to enable the feature but keep it disabled by default
-         and let the user enable it by swapaccount boot command line
+         and let the user enable it by swapaccount=1 boot command line
          parameter should have this option unselected.
          For those who want to have the feature enabled by default should
          select this option (if, for some reason, they need to disable it
@@ -934,7 +1071,8 @@ config MEMCG_KMEM
 
 config CGROUP_HUGETLB
        bool "HugeTLB Resource Controller for Control Groups"
-       depends on RESOURCE_COUNTERS && HUGETLB_PAGE
+       depends on HUGETLB_PAGE
+       select PAGE_COUNTER
        default n
        help
          Provides a cgroup Resource Controller for HugeTLB pages.
@@ -1025,10 +1163,16 @@ config DEBUG_BLK_CGROUP
        Enable some debugging help. Currently it exports additional stat
        files in a cgroup which can be useful for debugging.
 
+config CGROUP_WRITEBACK
+       bool
+       depends on MEMCG && BLK_CGROUP
+       default y
+
 endif # CGROUPS
 
 config CHECKPOINT_RESTORE
        bool "Checkpoint/restore support" if EXPERT
+       select PROC_CHILDREN
        default n
        help
          Enables additional kernel features in a sake of checkpoint/restore.
@@ -1040,6 +1184,7 @@ config CHECKPOINT_RESTORE
 
 menuconfig NAMESPACES
        bool "Namespaces support" if EXPERT
+       depends on MULTIUSER
        default !EXPERT
        help
          Provides the way to make tasks work with different objects using
@@ -1066,9 +1211,6 @@ config IPC_NS
 
 config USER_NS
        bool "User namespace"
-       depends on UIDGID_CONVERTED
-       select UIDGID_STRICT_TYPE_CHECKS
-
        default n
        help
          This allows containers, i.e. vservers, to use user namespaces
@@ -1100,30 +1242,8 @@ config NET_NS
 
 endif # NAMESPACES
 
-config UIDGID_CONVERTED
-       # True if all of the selected software conmponents are known
-       # to have uid_t and gid_t converted to kuid_t and kgid_t
-       # where appropriate and are otherwise safe to use with
-       # the user namespace.
-       bool
-       default y
-
-       # Filesystems
-       depends on XFS_FS = n
-
-config UIDGID_STRICT_TYPE_CHECKS
-       bool "Require conversions between uid/gids and their internal representation"
-       depends on UIDGID_CONVERTED
-       default n
-       help
-        While the nececessary conversions are being added to all subsystems this option allows
-        the code to continue to build for unconverted subsystems.
-
-        Say Y here if you want the strict type checking enabled
-
 config SCHED_AUTOGROUP
        bool "Automatic process group scheduling"
-       select EVENTFD
        select CGROUPS
        select CGROUP_SCHED
        select FAIR_GROUP_SCHED
@@ -1134,8 +1254,31 @@ config SCHED_AUTOGROUP
          desktop applications.  Task group autogeneration is currently based
          upon task session.
 
-config MM_OWNER
-       bool
+config SCHED_TUNE
+       bool "Boosting for CFS tasks (EXPERIMENTAL)"
+       help
+         This option enables the system-wide support for task boosting.
+         When this support is enabled a new sysctl interface is exposed to
+         userspace via:
+            /proc/sys/kernel/sched_cfs_boost
+         which allows to set a system-wide boost value in range [0..100].
+
+         The currently boosting strategy is implemented in such a way that:
+         - a 0% boost value requires to operate in "standard" mode by
+           scheduling all tasks at the minimum capacities required by their
+           workload demand
+         - a 100% boost value requires to push at maximum the task
+           performances, "regardless" of the incurred energy consumption
+
+         A boost value in between these two boundaries is used to bias the
+         power/performance trade-off, the higher the boost value the more the
+         scheduler is biased toward performance boosting instead of energy
+         efficiency.
+
+         Since this support exposes a single system-wide knob, the specified
+         boost value is applied to all (CFS) tasks in the system.
+
+         If unsure, say N.
 
 config SYSFS_DEPRECATED
        bool "Enable deprecated sysfs features to support old userspace tools"
@@ -1211,8 +1354,8 @@ endif
 config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size"
        help
-         Enabling this option will pass "-Os" instead of "-O2" to gcc
-         resulting in a smaller kernel.
+         Enabling this option will pass "-Os" instead of "-O2" to
+         your compiler resulting in a smaller kernel.
 
          If unsure, say N.
 
@@ -1245,17 +1388,12 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
          the unaligned access emulation.
          see arch/parisc/kernel/unaligned.c for reference
 
-config HOTPLUG
-       def_bool y
-
 config HAVE_PCSPKR_PLATFORM
        bool
 
-config PANIC_TIMEOUT
-       int "Default panic timeout"
-       default 0
-       help
-         Set default panic timeout.
+# interpreter that classic socket filters depend on
+config BPF
+       bool
 
 menuconfig EXPERT
        bool "Configure standard kernel features (expert users)"
@@ -1269,11 +1407,45 @@ menuconfig EXPERT
 
 config UID16
        bool "Enable 16-bit UID system calls" if EXPERT
-       depends on HAVE_UID16
+       depends on HAVE_UID16 && MULTIUSER
        default y
        help
          This enables the legacy 16-bit UID syscall wrappers.
 
+config MULTIUSER
+       bool "Multiple users, groups and capabilities support" if EXPERT
+       default y
+       help
+         This option enables support for non-root users, groups and
+         capabilities.
+
+         If you say N here, all processes will run with UID 0, GID 0, and all
+         possible capabilities.  Saying N here also compiles out support for
+         system calls related to UIDs, GIDs, and capabilities, such as setuid,
+         setgid, and capset.
+
+         If unsure, say Y here.
+
+config SGETMASK_SYSCALL
+       bool "sgetmask/ssetmask syscalls support" if EXPERT
+       def_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH
+       ---help---
+         sys_sgetmask and sys_ssetmask are obsolete system calls
+         no longer supported in libc but still enabled by default in some
+         architectures.
+
+         If unsure, leave the default option here.
+
+config SYSFS_SYSCALL
+       bool "Sysfs syscall support" if EXPERT
+       default y
+       ---help---
+         sys_sysfs is an obsolete system call no longer supported in libc.
+         Note that disabling this option is more secure but might break
+         compatibility with some systems.
+
+         If unsure say Y here.
+
 config SYSCTL_SYSCALL
        bool "Sysctl syscall support" if EXPERT
        depends on PROC_SYSCTL
@@ -1417,6 +1589,16 @@ config EVENTFD
 
          If unsure, say Y.
 
+# syscall, maps, verifier
+config BPF_SYSCALL
+       bool "Enable bpf() system call"
+       select ANON_INODES
+       select BPF
+       default n
+       help
+         Enable the bpf() system call that allows to manipulate eBPF
+         programs and maps via file descriptors.
+
 config SHMEM
        bool "Use full shmem filesystem" if EXPERT
        default y
@@ -1436,6 +1618,24 @@ config AIO
          by some high performance threaded applications. Disabling
          this option saves about 7k.
 
+config ADVISE_SYSCALLS
+       bool "Enable madvise/fadvise syscalls" if EXPERT
+       default y
+       help
+         This option enables the madvise and fadvise syscalls, used by
+         applications to advise the kernel about their future memory or file
+         usage, improving performance. If building an embedded system where no
+         applications use these syscalls, you can disable this option to save
+         space.
+
+config USERFAULTFD
+       bool "Enable userfaultfd() system call"
+       select ANON_INODES
+       depends on MMU
+       help
+         Enable the userfaultfd() system call that allows to intercept and
+         handle page faults in userland.
+
 config PCI_QUIRKS
        default y
        bool "Enable PCI quirk workarounds" if EXPERT
@@ -1445,8 +1645,21 @@ config PCI_QUIRKS
          bugs/quirks. Disable this only if your target machine is
          unaffected by PCI quirks.
 
+config MEMBARRIER
+       bool "Enable membarrier() system call" if EXPERT
+       default y
+       help
+         Enable the membarrier() system call that allows issuing memory
+         barriers across all running threads, which can be used to distribute
+         the cost of user-space memory barriers asymmetrically by transforming
+         pairs of memory barriers into pairs consisting of membarrier() and a
+         compiler barrier.
+
+         If unsure, say Y.
+
 config EMBEDDED
        bool "Embedded system"
+       option allnoconfig_y
        select EXPERT
        help
          This option should be enabled if compiling the kernel for
@@ -1471,6 +1684,7 @@ config PERF_EVENTS
        depends on HAVE_PERF_EVENTS
        select ANON_INODES
        select IRQ_WORK
+       select SRCU
        help
          Enable kernel support for various performance events provided
          by software and hardware.
@@ -1497,7 +1711,7 @@ config PERF_EVENTS
 config DEBUG_PERF_USE_VMALLOC
        default n
        bool "Debug: use vmalloc to back perf mmap() buffers"
-       depends on PERF_EVENTS && DEBUG_KERNEL
+       depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
        select PERF_USE_VMALLOC
        help
         Use vmalloc memory to back perf mmap() buffers.
@@ -1573,6 +1787,17 @@ config SLOB
 
 endchoice
 
+config SLUB_CPU_PARTIAL
+       default y
+       depends on SLUB && SMP
+       bool "SLUB per cpu partial cache"
+       help
+         Per cpu partial caches accellerate objects allocation and freeing
+         that is local to a processor at the price of more indeterminism
+         in the latency of the free. On overflow these caches will be cleared
+         which requires the taking of locks that may cause latency spikes.
+         Typically one would choose no for a realtime system.
+
 config MMAP_ALLOW_UNINITIALIZED
        bool "Allow mmapped anonymous memory to be uninitialized"
        depends on EXPERT && !MMU
@@ -1595,6 +1820,24 @@ config MMAP_ALLOW_UNINITIALIZED
 
          See Documentation/nommu-mmap.txt for more information.
 
+config SYSTEM_DATA_VERIFICATION
+       def_bool n
+       select SYSTEM_TRUSTED_KEYRING
+       select KEYS
+       select CRYPTO
+       select ASYMMETRIC_KEY_TYPE
+       select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
+       select PUBLIC_KEY_ALGO_RSA
+       select ASN1
+       select OID_REGISTRY
+       select X509_CERTIFICATE_PARSER
+       select PKCS7_MESSAGE_PARSER
+       help
+         Provide PKCS#7 message verification using the contents of the system
+         trusted keyring to provide public keys.  This then can be used for
+         module verification, kexec image verification and firmware blob
+         verification.
+
 config PROFILING
        bool "Profiling support"
        help
@@ -1623,7 +1866,7 @@ config SLABINFO
        default y
 
 config RT_MUTEXES
-       boolean
+       bool
 
 config BASE_SMALL
        int
@@ -1632,6 +1875,7 @@ config BASE_SMALL
 
 menuconfig MODULES
        bool "Enable loadable module support"
+       option modules
        help
          Kernel modules are small pieces of compiled code which can
          be inserted in the running kernel, rather than being
@@ -1702,19 +1946,16 @@ config MODULE_SRCVERSION_ALL
 config MODULE_SIG
        bool "Module signature verification"
        depends on MODULES
-       select KEYS
-       select CRYPTO
-       select ASYMMETRIC_KEY_TYPE
-       select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
-       select PUBLIC_KEY_ALGO_RSA
-       select ASN1
-       select OID_REGISTRY
-       select X509_CERTIFICATE_PARSER
+       select SYSTEM_DATA_VERIFICATION
        help
          Check modules for valid signatures upon load: the signature
          is simply appended to the module. For more information see
          Documentation/module-signing.txt.
 
+         Note that this option adds the OpenSSL development packages as a
+         kernel build dependency so that the signing tool can use its crypto
+         library.
+
          !!!WARNING!!!  If you enable this option, you MUST make sure that the
          module DOES NOT get stripped after being signed.  This includes the
          debuginfo strip done by some packagers (such as rpmbuild) and
@@ -1779,8 +2020,50 @@ config MODULE_SIG_HASH
        default "sha384" if MODULE_SIG_SHA384
        default "sha512" if MODULE_SIG_SHA512
 
+config MODULE_COMPRESS
+       bool "Compress modules on installation"
+       depends on MODULES
+       help
+
+         Compresses kernel modules when 'make modules_install' is run; gzip or
+         xz depending on "Compression algorithm" below.
+
+         module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
+
+         Out-of-tree kernel modules installed using Kbuild will also be
+         compressed upon installation.
+
+         Note: for modules inside an initrd or initramfs, it's more efficient
+         to compress the whole initrd or initramfs instead.
+
+         Note: This is fully compatible with signed modules.
+
+         If in doubt, say N.
+
+choice
+       prompt "Compression algorithm"
+       depends on MODULE_COMPRESS
+       default MODULE_COMPRESS_GZIP
+       help
+         This determines which sort of compression will be used during
+         'make modules_install'.
+
+         GZIP (default) and XZ are supported.
+
+config MODULE_COMPRESS_GZIP
+       bool "GZIP"
+
+config MODULE_COMPRESS_XZ
+       bool "XZ"
+
+endchoice
+
 endif # MODULES
 
+config MODULES_TREE_LOOKUP
+       def_bool y
+       depends on PERF_EVENTS || TRACING
+
 config INIT_ALL_POSSIBLE
        bool
        help
@@ -1790,13 +2073,6 @@ config INIT_ALL_POSSIBLE
          it was better to provide this option than to break all the archs
          and have several arch maintainers pursuing me down dark alleys.
 
-config STOP_MACHINE
-       bool
-       default y
-       depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
-       help
-         Need stop_machine() primitive.
-
 source "block/Kconfig"
 
 config PREEMPT_NOTIFIERS