lib: add support for LZ4-compressed kernel
[cascardo/linux.git] / init / Kconfig
index 1e825c2..54d3fa5 100644 (file)
@@ -112,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
@@ -182,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
@@ -473,18 +488,10 @@ config TINY_RCU
          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
-       help
-         This option selects the RCU implementation that is designed
-         for real-time UP systems.  This option greatly reduces the
-         memory footprint of RCU.
-
 endchoice
 
 config PREEMPT_RCU
-       def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
+       def_bool TREE_PREEMPT_RCU
        help
          This option enables preemptible-RCU code that is common between
          the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
@@ -670,7 +677,7 @@ config RCU_BOOST_DELAY
          Accept the default if unsure.
 
 config RCU_NOCB_CPU
-       bool "Offload RCU callback processing from boot-selected CPUs (EXPERIMENTAL"
+       bool "Offload RCU callback processing from boot-selected CPUs"
        depends on TREE_RCU || TREE_PREEMPT_RCU
        default n
        help
@@ -696,9 +703,10 @@ choice
        prompt "Build-forced no-CBs CPUs"
        default RCU_NOCB_CPU_NONE
        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"
@@ -706,25 +714,40 @@ config RCU_NOCB_CPU_NONE
        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.
@@ -772,6 +795,9 @@ config LOG_BUF_SHIFT
 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:
@@ -891,7 +917,7 @@ config MEMCG
 
          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
+         8(16)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.