Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[safe/jmp/linux-2.6] / init / Kconfig
index ef90a15..8e9904f 100644 (file)
@@ -1,3 +1,11 @@
+config ARCH
+       string
+       option env="ARCH"
+
+config KERNELVERSION
+       string
+       option env="KERNELVERSION"
+
 config DEFCONFIG_LIST
        string
        depends on !UML
 config DEFCONFIG_LIST
        string
        depends on !UML
@@ -5,6 +13,7 @@ config DEFCONFIG_LIST
        default "/lib/modules/$UNAME_RELEASE/.config"
        default "/etc/kernel-config"
        default "/boot/config-$UNAME_RELEASE"
        default "/lib/modules/$UNAME_RELEASE/.config"
        default "/etc/kernel-config"
        default "/boot/config-$UNAME_RELEASE"
+       default "$ARCH_DEFCONFIG"
        default "arch/$ARCH/defconfig"
 
 menu "General setup"
        default "arch/$ARCH/defconfig"
 
 menu "General setup"
@@ -162,7 +171,7 @@ config BSD_PROCESS_ACCT_V3
          process and it's parent. Note that this file format is incompatible
          with previous v0/v1/v2 file formats, so you will need updated tools
          for processing it. A preliminary version of these tools is available
          process and it's parent. Note that this file format is incompatible
          with previous v0/v1/v2 file formats, so you will need updated tools
          for processing it. A preliminary version of these tools is available
-         at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>.
+         at <http://www.gnu.org/software/acct/>.
 
 config TASKSTATS
        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
 
 config TASKSTATS
        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
@@ -206,15 +215,6 @@ config TASK_IO_ACCOUNTING
 
          Say N if unsure.
 
 
          Say N if unsure.
 
-config USER_NS
-       bool "User Namespaces (EXPERIMENTAL)"
-       default n
-       depends on EXPERIMENTAL
-       help
-         Support user namespaces.  This allows containers, i.e.
-         vservers, to use user namespaces to provide different
-         user info for different servers.  If unsure, say N.
-
 config AUDIT
        bool "Auditing support"
        depends on NET
 config AUDIT
        bool "Auditing support"
        depends on NET
@@ -226,7 +226,7 @@ config AUDIT
 
 config AUDITSYSCALL
        bool "Enable system-call auditing support"
 
 config AUDITSYSCALL
        bool "Enable system-call auditing support"
-       depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64)
+       depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64|| SUPERH)
        default y if SECURITY_SELINUX
        help
          Enable low-overhead system-call auditing infrastructure that
        default y if SECURITY_SELINUX
        help
          Enable low-overhead system-call auditing infrastructure that
@@ -234,6 +234,10 @@ config AUDITSYSCALL
          such as SELinux.  To use audit's filesystem watch feature, please
          ensure that INOTIFY is configured.
 
          such as SELinux.  To use audit's filesystem watch feature, please
          ensure that INOTIFY is configured.
 
+config AUDIT_TREE
+       def_bool y
+       depends on AUDITSYSCALL && INOTIFY
+
 config IKCONFIG
        tristate "Kernel .config support"
        ---help---
 config IKCONFIG
        tristate "Kernel .config support"
        ---help---
@@ -256,23 +260,62 @@ config IKCONFIG_PROC
 config LOG_BUF_SHIFT
        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
        range 12 21
 config LOG_BUF_SHIFT
        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
        range 12 21
-       default 17 if S390 || LOCKDEP
-       default 16 if X86_NUMAQ || IA64
-       default 15 if SMP
-       default 14
+       default 17
        help
          Select kernel log buffer size as a power of 2.
        help
          Select kernel log buffer size as a power of 2.
-         Defaults and Examples:
-                    17 => 128 KB for S/390
-                    16 => 64 KB for x86 NUMAQ or IA-64
-                    15 => 32 KB for SMP
-                    14 => 16 KB for uniprocessor
+         Examples:
+                    17 => 128 KB
+                    16 => 64 KB
+                    15 => 32 KB
+                    14 => 16 KB
                     13 =>  8 KB
                     12 =>  4 KB
 
                     13 =>  8 KB
                     12 =>  4 KB
 
+config CGROUPS
+       bool "Control Group support"
+       help
+         This option will let you use process cgroup subsystems
+         such as Cpusets
+
+         Say N if unsure.
+
+config CGROUP_DEBUG
+       bool "Example debug cgroup subsystem"
+       depends on CGROUPS
+       default n
+       help
+         This option enables a simple cgroup subsystem that
+         exports useful debugging information about the cgroups
+         framework
+
+         Say N if unsure
+
+config CGROUP_NS
+        bool "Namespace cgroup subsystem"
+        depends on CGROUPS
+        help
+          Provides a simple namespace cgroup subsystem to
+          provide hierarchical naming of sets of namespaces,
+          for instance virtual servers and checkpoint/restart
+          jobs.
+
+config CGROUP_FREEZER
+        bool "control group freezer subsystem"
+        depends on CGROUPS
+        help
+          Provides a way to freeze and unfreeze all tasks in a
+         cgroup.
+
+config CGROUP_DEVICE
+       bool "Device controller for cgroups"
+       depends on CGROUPS && EXPERIMENTAL
+       help
+         Provides a cgroup implementing whitelists for devices which
+         a process in the cgroup can mknod or open.
+
 config CPUSETS
        bool "Cpuset support"
 config CPUSETS
        bool "Cpuset support"
-       depends on SMP
+       depends on SMP && CGROUPS
        help
          This option will let you create and manage CPUSETs which
          allow dynamically partitioning a system into sets of CPUs and
        help
          This option will let you create and manage CPUSETs which
          allow dynamically partitioning a system into sets of CPUs and
@@ -281,17 +324,109 @@ config CPUSETS
 
          Say N if unsure.
 
 
          Say N if unsure.
 
-config FAIR_GROUP_SCHED
-       bool "Fair group cpu scheduler"
-       default n
+#
+# Architectures with an unreliable sched_clock() should select this:
+#
+config HAVE_UNSTABLE_SCHED_CLOCK
+       bool
+
+config GROUP_SCHED
+       bool "Group CPU scheduler"
        depends on EXPERIMENTAL
        depends on EXPERIMENTAL
+       default n
        help
        help
-         This feature lets cpu scheduler recognize task groups and control cpu
+         This feature lets CPU scheduler recognize task groups and control CPU
          bandwidth allocation to such task groups.
 
          bandwidth allocation to such task groups.
 
+config FAIR_GROUP_SCHED
+       bool "Group scheduling for SCHED_OTHER"
+       depends on GROUP_SCHED
+       default GROUP_SCHED
+
+config RT_GROUP_SCHED
+       bool "Group scheduling for SCHED_RR/FIFO"
+       depends on EXPERIMENTAL
+       depends on GROUP_SCHED
+       default n
+       help
+         This feature lets you explicitly allocate real CPU bandwidth
+         to users or control groups (depending on the "Basis for grouping tasks"
+         setting below. If enabled, it will also make it impossible to
+         schedule realtime tasks for non-root users until you allocate
+         realtime bandwidth for them.
+         See Documentation/scheduler/sched-rt-group.txt for more information.
+
+choice
+       depends on GROUP_SCHED
+       prompt "Basis for grouping tasks"
+       default USER_SCHED
+
+config USER_SCHED
+       bool "user id"
+       help
+         This option will choose userid as the basis for grouping
+         tasks, thus providing equal CPU bandwidth to each user.
+
+config CGROUP_SCHED
+       bool "Control groups"
+       depends on CGROUPS
+       help
+         This option allows you to create arbitrary task groups
+         using the "cgroup" pseudo filesystem and control
+         the cpu bandwidth allocated to each such task group.
+         Refer to Documentation/cgroups.txt for more information
+         on "cgroup" pseudo filesystem.
+
+endchoice
+
+config CGROUP_CPUACCT
+       bool "Simple CPU accounting cgroup subsystem"
+       depends on CGROUPS
+       help
+         Provides a simple Resource Controller for monitoring the
+         total CPU consumed by the tasks in a cgroup
+
+config RESOURCE_COUNTERS
+       bool "Resource counters"
+       help
+         This option enables controller independent resource accounting
+          infrastructure that works with cgroups
+       depends on CGROUPS
+
+config MM_OWNER
+       bool
+
+config CGROUP_MEM_RES_CTLR
+       bool "Memory Resource Controller for Control Groups"
+       depends on CGROUPS && RESOURCE_COUNTERS
+       select MM_OWNER
+       help
+         Provides a memory resource controller that manages both anonymous
+         memory and page cache. (See Documentation/controllers/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 contoller)
+
+         This config option also selects MM_OWNER config option, which
+         could in turn add some fork/exit overhead.
+
 config SYSFS_DEPRECATED
 config SYSFS_DEPRECATED
+       bool
+
+config SYSFS_DEPRECATED_V2
        bool "Create deprecated sysfs files"
        bool "Create deprecated sysfs files"
+       depends on SYSFS
        default y
        default y
+       select SYSFS_DEPRECATED
        help
          This option creates deprecated symlinks such as the
          "device"-link, the <subsystem>:<name>-link, and the
        help
          This option creates deprecated symlinks such as the
          "device"-link, the <subsystem>:<name>-link, and the
@@ -304,10 +439,16 @@ config SYSFS_DEPRECATED
 
          If enabled, this option will also move any device structures
          that belong to a class, back into the /sys/class hierarchy, in
 
          If enabled, this option will also move any device structures
          that belong to a class, back into the /sys/class hierarchy, in
-         order to support older versions of udev.
+         order to support older versions of udev and some userspace
+         programs.
+
+         If you are using a distro with the most recent userspace
+         packages, it should be safe to say N here.
 
 
-         If you are using a distro that was released in 2006 or later,
-         it should be safe to say N here.
+config PROC_PID_CPUSET
+       bool "Include legacy /proc/<pid>/cpuset file"
+       depends on CPUSETS
+       default y
 
 config RELAY
        bool "Kernel->user space relay support (formerly relayfs)"
 
 config RELAY
        bool "Kernel->user space relay support (formerly relayfs)"
@@ -320,6 +461,49 @@ config RELAY
 
          If unsure, say N.
 
 
          If unsure, say N.
 
+config NAMESPACES
+       bool "Namespaces support" if EMBEDDED
+       default !EMBEDDED
+       help
+         Provides the way to make tasks work with different objects using
+         the same id. For example same IPC id may refer to different objects
+         or same user id or pid may refer to different tasks when used in
+         different namespaces.
+
+config UTS_NS
+       bool "UTS namespace"
+       depends on NAMESPACES
+       help
+         In this namespace tasks see different info provided with the
+         uname() system call
+
+config IPC_NS
+       bool "IPC namespace"
+       depends on NAMESPACES && SYSVIPC
+       help
+         In this namespace tasks work with IPC ids which correspond to
+         different IPC objects in different namespaces
+
+config USER_NS
+       bool "User namespace (EXPERIMENTAL)"
+       depends on NAMESPACES && EXPERIMENTAL
+       help
+         This allows containers, i.e. vservers, to use user namespaces
+         to provide different user info for different servers.
+         If unsure, say N.
+
+config PID_NS
+       bool "PID Namespaces (EXPERIMENTAL)"
+       default n
+       depends on NAMESPACES && EXPERIMENTAL
+       help
+         Support process id namespaces.  This allows having multiple
+         process with the same pid as long as they are in different
+         pid namespaces.  This is a building block of containers.
+
+         Unless you want to work with an experimental feature
+         say N here.
+
 config BLK_DEV_INITRD
        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
        depends on BROKEN || !FRV
 config BLK_DEV_INITRD
        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
        depends on BROKEN || !FRV
@@ -343,17 +527,13 @@ source "usr/Kconfig"
 endif
 
 config CC_OPTIMIZE_FOR_SIZE
 endif
 
 config CC_OPTIMIZE_FOR_SIZE
-       bool "Optimize for size (Look out for broken compilers!)"
+       bool "Optimize for size"
        default y
        default y
-       depends on ARM || H8300 || SUPERH || EXPERIMENTAL
        help
          Enabling this option will pass "-Os" instead of "-O2" to gcc
          resulting in a smaller kernel.
 
        help
          Enabling this option will pass "-Os" instead of "-O2" to gcc
          resulting in a smaller kernel.
 
-         WARNING: some versions of gcc may generate incorrect code with this
-         option.  If problems are observed, a gcc upgrade may be needed.
-
-         If unsure, say N.
+         If unsure, say Y.
 
 config SYSCTL
        bool
 
 config SYSCTL
        bool
@@ -368,7 +548,7 @@ menuconfig EMBEDDED
 
 config UID16
        bool "Enable 16-bit UID system calls" if EMBEDDED
 
 config UID16
        bool "Enable 16-bit UID system calls" if EMBEDDED
-       depends on ARM || BFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && SPARC32_COMPAT) || UML || (X86_64 && IA32_EMULATION)
+       depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
        default y
        help
          This enables the legacy 16-bit UID syscall wrappers.
        default y
        help
          This enables the legacy 16-bit UID syscall wrappers.
@@ -408,6 +588,13 @@ config KALLSYMS_ALL
 
           Say N.
 
 
           Say N.
 
+config KALLSYMS_STRIP_GENERATED
+       bool "Strip machine generated symbols from kallsyms"
+       depends on KALLSYMS_ALL
+       default y
+       help
+         Say N if you want kallsyms to retain even machine generated symbols.
+
 config KALLSYMS_EXTRA_PASS
        bool "Do an extra kallsyms pass"
        depends on KALLSYMS
 config KALLSYMS_EXTRA_PASS
        bool "Do an extra kallsyms pass"
        depends on KALLSYMS
@@ -455,6 +642,26 @@ config ELF_CORE
        help
          Enable support for generating core dumps. Disabling saves about 4k.
 
        help
          Enable support for generating core dumps. Disabling saves about 4k.
 
+config PCSPKR_PLATFORM
+       bool "Enable PC-Speaker support" if EMBEDDED
+       depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
+       default y
+       help
+          This option allows to disable the internal PC-Speaker
+          support, saving some memory.
+
+config COMPAT_BRK
+       bool "Disable heap randomization"
+       default y
+       help
+         Randomizing heap placement makes heap exploits harder, but it
+         also breaks ancient binaries (including anything libc5 based).
+         This option changes the bootup default to heap randomization
+         disabled, and can be overriden runtime by setting
+         /proc/sys/kernel/randomize_va_space to 2.
+
+         On non-ancient distros (post-2000 ones) N is usually a safe choice.
+
 config BASE_FULL
        default y
        bool "Enable full-sized data structures for core" if EMBEDDED
 config BASE_FULL
        default y
        bool "Enable full-sized data structures for core" if EMBEDDED
@@ -496,7 +703,6 @@ config SIGNALFD
 config TIMERFD
        bool "Enable timerfd() system call" if EMBEDDED
        select ANON_INODES
 config TIMERFD
        bool "Enable timerfd() system call" if EMBEDDED
        select ANON_INODES
-       depends on BROKEN
        default y
        help
          Enable the timerfd() system call that allows to receive timer
        default y
        help
          Enable the timerfd() system call that allows to receive timer
@@ -525,6 +731,14 @@ config SHMEM
          option replaces shmem and tmpfs with the much simpler ramfs code,
          which may be appropriate on small systems without swap.
 
          option replaces shmem and tmpfs with the much simpler ramfs code,
          which may be appropriate on small systems without swap.
 
+config AIO
+       bool "Enable AIO support" if EMBEDDED
+       default y
+       help
+         This option enables POSIX asynchronous I/O which may by used
+          by some high performance threaded applications. Disabling
+          this option saves about 7k.
+
 config VM_EVENT_COUNTERS
        default y
        bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
 config VM_EVENT_COUNTERS
        default y
        bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
@@ -534,10 +748,19 @@ config VM_EVENT_COUNTERS
          on EMBEDDED systems.  /proc/vmstat will only show page counts
          if VM event counters are disabled.
 
          on EMBEDDED systems.  /proc/vmstat will only show page counts
          if VM event counters are disabled.
 
+config PCI_QUIRKS
+       default y
+       bool "Enable PCI quirk workarounds" if EMBEDDED
+       depends on PCI
+       help
+         This enables workarounds for various PCI chipset
+          bugs/quirks. Disable this only if your target machine is
+          unaffected by PCI quirks.
+
 config SLUB_DEBUG
        default y
        bool "Enable SLUB debugging support" if EMBEDDED
 config SLUB_DEBUG
        default y
        bool "Enable SLUB debugging support" if EMBEDDED
-       depends on SLUB
+       depends on SLUB && SYSFS
        help
          SLUB has extensive debug support features. Disabling these can
          result in significant savings in code size. This also disables
        help
          SLUB has extensive debug support features. Disabling these can
          result in significant savings in code size. This also disables
@@ -555,8 +778,7 @@ config SLAB
        help
          The regular slab allocator that is established and known to work
          well in all environments. It organizes cache hot objects in
        help
          The regular slab allocator that is established and known to work
          well in all environments. It organizes cache hot objects in
-         per cpu and per node queues. SLAB is the default choice for
-         a slab allocator.
+         per cpu and per node queues.
 
 config SLUB
        bool "SLUB (Unqueued Allocator)"
 
 config SLUB
        bool "SLUB (Unqueued Allocator)"
@@ -565,22 +787,53 @@ config SLUB
           instead of managing queues of cached objects (SLAB approach).
           Per cpu caching is realized using slabs of objects instead
           of queues of objects. SLUB can use memory efficiently
           instead of managing queues of cached objects (SLAB approach).
           Per cpu caching is realized using slabs of objects instead
           of queues of objects. SLUB can use memory efficiently
-          and has enhanced diagnostics.
+          and has enhanced diagnostics. SLUB is the default choice for
+          a slab allocator.
 
 config SLOB
        depends on EMBEDDED
        bool "SLOB (Simple Allocator)"
        help
 
 config SLOB
        depends on EMBEDDED
        bool "SLOB (Simple Allocator)"
        help
-          SLOB replaces the SLAB allocator with a drastically simpler
-          allocator.  SLOB is more space efficient than SLAB but does not
-          scale well (single lock for all operations) and is also highly
-          susceptible to fragmentation. SLUB can accomplish a higher object
-          density. It is usually better to use SLUB instead of SLOB.
+          SLOB replaces the stock allocator with a drastically simpler
+          allocator. SLOB is generally more space efficient but
+          does not perform as well on large systems.
 
 endchoice
 
 
 endchoice
 
+config PROFILING
+       bool "Profiling support (EXPERIMENTAL)"
+       help
+         Say Y here to enable the extended profiling support mechanisms used
+         by profilers such as OProfile.
+
+#
+# Place an empty function call at each tracepoint site. Can be
+# dynamically changed for a probe function.
+#
+config TRACEPOINTS
+       bool
+
+config MARKERS
+       bool "Activate markers"
+       depends on TRACEPOINTS
+       help
+         Place an empty function call at each marker site. Can be
+         dynamically changed for a probe function.
+
+source "arch/Kconfig"
+
 endmenu                # General setup
 
 endmenu                # General setup
 
+config HAVE_GENERIC_DMA_COHERENT
+       bool
+       default n
+
+config SLABINFO
+       bool
+       depends on PROC_FS
+       depends on SLAB || SLUB_DEBUG
+       default y
+
 config RT_MUTEXES
        boolean
        select PLIST
 config RT_MUTEXES
        boolean
        select PLIST
@@ -614,14 +867,23 @@ menuconfig MODULES
 
          If unsure, say Y.
 
 
          If unsure, say Y.
 
+if MODULES
+
+config MODULE_FORCE_LOAD
+       bool "Forced module loading"
+       default n
+       help
+         Allow loading of modules without version information (ie. modprobe
+         --force).  Forced module loading sets the 'F' (forced) taint flag and
+         is usually a really bad idea.
+
 config MODULE_UNLOAD
        bool "Module unloading"
 config MODULE_UNLOAD
        bool "Module unloading"
-       depends on MODULES
        help
          Without this option you will not be able to unload any
          modules (note that some modules may not be unloadable
        help
          Without this option you will not be able to unload any
          modules (note that some modules may not be unloadable
-         anyway), which makes your kernel slightly smaller and
-         simpler.  If unsure, say Y.
+         anyway), which makes your kernel smaller, faster
+         and simpler.  If unsure, say Y.
 
 config MODULE_FORCE_UNLOAD
        bool "Forced module unloading"
 
 config MODULE_FORCE_UNLOAD
        bool "Forced module unloading"
@@ -635,7 +897,6 @@ config MODULE_FORCE_UNLOAD
 
 config MODVERSIONS
        bool "Module versioning support"
 
 config MODVERSIONS
        bool "Module versioning support"
-       depends on MODULES
        help
          Usually, you have to use modules compiled with your kernel.
          Saying Y here makes it sometimes possible to use modules
        help
          Usually, you have to use modules compiled with your kernel.
          Saying Y here makes it sometimes possible to use modules
@@ -646,7 +907,6 @@ config MODVERSIONS
 
 config MODULE_SRCVERSION_ALL
        bool "Source checksum for all modules"
 
 config MODULE_SRCVERSION_ALL
        bool "Source checksum for all modules"
-       depends on MODULES
        help
          Modules which contain a MODULE_VERSION get an extra "srcversion"
          field inserted into their modinfo section, which contains a
        help
          Modules which contain a MODULE_VERSION get an extra "srcversion"
          field inserted into their modinfo section, which contains a
@@ -657,16 +917,21 @@ config MODULE_SRCVERSION_ALL
          will be created for all modules.  If unsure, say N.
 
 config KMOD
          will be created for all modules.  If unsure, say N.
 
 config KMOD
-       bool "Automatic kernel module loading"
-       depends on MODULES
+       def_bool y
        help
        help
-         Normally when you have selected some parts of the kernel to
-         be created as kernel modules, you must load them (using the
-         "modprobe" command) before you can use them. If you say Y
-         here, some parts of the kernel will be able to load modules
-         automatically: when a part of the kernel needs a module, it
-         runs modprobe with the appropriate arguments, thereby
-         loading the module if it is available.  If unsure, say Y.
+         This is being removed soon.  These days, CONFIG_MODULES
+         implies CONFIG_KMOD, so use that instead.
+
+endif # MODULES
+
+config INIT_ALL_POSSIBLE
+       bool
+       help
+         Back when each arch used to define their own cpu_online_map and
+         cpu_possible_map, some of them chose to initialize cpu_possible_map
+         with all 1s, and others with all 0s.  When they were centralised,
+         it was better to provide this option than to break all the archs
+         and have several arch maintainers persuing me down dark alleys.
 
 config STOP_MACHINE
        bool
 
 config STOP_MACHINE
        bool
@@ -676,3 +941,14 @@ config STOP_MACHINE
          Need stop_machine() primitive.
 
 source "block/Kconfig"
          Need stop_machine() primitive.
 
 source "block/Kconfig"
+
+config PREEMPT_NOTIFIERS
+       bool
+
+config CLASSIC_RCU
+       def_bool !PREEMPT_RCU
+       help
+         This option selects the classic RCU implementation that is
+         designed for best read-side performance on non-realtime
+         systems.  Classic RCU is the default.  Note that the
+         PREEMPT_RCU symbol is used to select/deselect this option.