]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - init/Kconfig
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6.git] / init / Kconfig
index d2eb7a84a264f0330d0aab1792f3ac34bbba23b2..da071c4bbfb7aa179964b6dbc92606f88b87a5c4 100644 (file)
@@ -1,12 +1,21 @@
+config ARCH
+       string
+       option env="ARCH"
+
+config KERNELVERSION
+       string
+       option env="KERNELVERSION"
+
 config DEFCONFIG_LIST
        string
+       depends on !UML
        option defconfig_list
        default "/lib/modules/$UNAME_RELEASE/.config"
        default "/etc/kernel-config"
        default "/boot/config-$UNAME_RELEASE"
        default "arch/$ARCH/defconfig"
 
-menu "Code maturity level options"
+menu "General setup"
 
 config EXPERIMENTAL
        bool "Prompt for development and/or incomplete code/drivers"
@@ -60,9 +69,6 @@ config INIT_ENV_ARG_LIMIT
          Maximum of each of the number of arguments and environment
          variables passed to init from the kernel command line.
 
-endmenu
-
-menu "General setup"
 
 config LOCALVERSION
        string "Local version - append to kernel release"
@@ -79,16 +85,20 @@ config LOCALVERSION_AUTO
        default y
        help
          This will try to automatically determine if the current tree is a
-         release tree by looking for git tags that
-         belong to the current top of tree revision.
+         release tree by looking for git tags that belong to the current
+         top of tree revision.
 
          A string of the format -gxxxxxxxx will be added to the localversion
-         if a git based tree is found.  The string generated by this will be
+         if a git-based tree is found.  The string generated by this will be
          appended after any matching localversion* files, and after the value
-         set in CONFIG_LOCALVERSION
+         set in CONFIG_LOCALVERSION.
+
+         (The actual string used here is the first eight characters produced
+         by running the command:
+
+           $ git rev-parse --verify HEAD
 
-         Note: This requires Perl, and a git repository, but not necessarily
-         the git or cogito tools to be installed.
+         which is done within the script "scripts/setlocalversion".)
 
 config SWAP
        bool "Support for paging of anonymous memory (swap)"
@@ -115,6 +125,12 @@ config SYSVIPC
          section 6.4 of the Linux Programmer's Guide, available from
          <http://www.tldp.org/guides.html>.
 
+config SYSVIPC_SYSCTL
+       bool
+       depends on SYSVIPC
+       depends on SYSCTL
+       default y
+
 config POSIX_MQUEUE
        bool "POSIX Message Queues"
        depends on NET && EXPERIMENTAL
@@ -123,9 +139,7 @@ config POSIX_MQUEUE
          queues every message has a priority which decides about succession
          of receiving it by a process. If you want to compile and run
          programs written e.g. for Solaris with use of its POSIX message
-         queues (functions mq_*) say Y here. To use this feature you will
-         also need mqueue library, available from
-         <http://www.mat.uni.torun.pl/~wrona/posix_ipc/>
+         queues (functions mq_*) say Y here.
 
          POSIX message queues are visible as a filesystem called 'mqueue'
          and can be mounted somewhere if you want to do filesystem
@@ -182,6 +196,24 @@ config TASK_DELAY_ACCT
 
          Say N if unsure.
 
+config TASK_XACCT
+       bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
+       depends on TASKSTATS
+       help
+         Collect extended task accounting data and send the data
+         to userland for processing over the taskstats interface.
+
+         Say N if unsure.
+
+config TASK_IO_ACCOUNTING
+       bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
+       depends on TASK_XACCT
+       help
+         Collect information on the number of bytes of storage I/O which this
+         task has caused.
+
+         Say N if unsure.
+
 config AUDIT
        bool "Auditing support"
        depends on NET
@@ -193,7 +225,7 @@ config AUDIT
 
 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
@@ -201,8 +233,12 @@ config AUDITSYSCALL
          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
-       bool "Kernel .config support"
+       tristate "Kernel .config support"
        ---help---
          This option enables the complete Linux kernel ".config" file
          contents to be saved in the kernel. It provides documentation
@@ -220,9 +256,53 @@ config IKCONFIG_PROC
          This option enables access to the kernel configuration file
          through /proc/config.gz.
 
+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
+       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
+                    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
+       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 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
@@ -231,6 +311,114 @@ config CPUSETS
 
          Say N if unsure.
 
+config GROUP_SCHED
+       bool "Group CPU scheduler"
+       default y
+       help
+         This feature lets CPU scheduler recognize task groups and control CPU
+         bandwidth allocation to such task groups.
+
+config FAIR_GROUP_SCHED
+       bool "Group scheduling for SCHED_OTHER"
+       depends on GROUP_SCHED
+       default y
+
+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/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 CGROUP_MEM_RES_CTLR
+       bool "Memory Resource Controller for Control Groups"
+       depends on CGROUPS && RESOURCE_COUNTERS
+       help
+         Provides a memory resource controller that manages both page cache and
+         RSS memory.
+
+         Note that setting this option increases fixed memory overhead
+         associated with each page of memory in the system by 4/8 bytes
+         and also increases cache misses because struct page on many 64bit
+         systems will not fit into a single cache line anymore.
+
+         Only enable when you're ok with these trade offs and really
+         sure you need the memory resource controller.
+
+config SYSFS_DEPRECATED
+       bool
+
+config SYSFS_DEPRECATED_V2
+       bool "Create deprecated sysfs files"
+       depends on SYSFS
+       default y
+       select SYSFS_DEPRECATED
+       help
+         This option creates deprecated symlinks such as the
+         "device"-link, the <subsystem>:<name>-link, and the
+         "bus"-link. It may also add deprecated key in the
+         uevent environment.
+         None of these features or values should be used today, as
+         they export driver core implementation details to userspace
+         or export properties which can't be kept stable across kernel
+         releases.
+
+         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 and some userspace
+         programs.
+
+         If you are using a distro with the most recent userspace
+         packages, 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)"
        help
@@ -242,21 +430,83 @@ config RELAY
 
          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
+         Suport 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
+       help
+         The initial RAM filesystem is a ramfs which is loaded by the
+         boot loader (loadlin or lilo) and that is mounted as root
+         before the normal boot procedure. It is typically used to
+         load modules needed to mount the "real" root file system,
+         etc. See <file:Documentation/initrd.txt> for details.
+
+         If RAM disk support (BLK_DEV_RAM) is also included, this
+         also enables initial RAM disk (initrd) support and adds
+         15 Kbytes (more on some other architectures) to the kernel size.
+
+         If unsure say Y.
+
+if BLK_DEV_INITRD
+
 source "usr/Kconfig"
 
+endif
+
 config CC_OPTIMIZE_FOR_SIZE
-       bool "Optimize for size (Look out for broken compilers!)"
+       bool "Optimize for size"
        default y
-       depends on ARM || H8300 || EXPERIMENTAL
        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.
 
+config SYSCTL
+       bool
+
 menuconfig EMBEDDED
        bool "Configure standard kernel features (for small systems)"
        help
@@ -267,33 +517,29 @@ menuconfig EMBEDDED
 
 config UID16
        bool "Enable 16-bit UID system calls" if EMBEDDED
-       depends on ARM || 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.
 
-config SYSCTL
-       bool
-
 config SYSCTL_SYSCALL
-       bool "Sysctl syscall support"
-       default n
+       bool "Sysctl syscall support" if EMBEDDED
+       default y
        select SYSCTL
        ---help---
-         Enable the deprecated sysctl system call.  sys_sysctl uses
-         binary paths that have been found to be a major pain to maintain
-         and use.  The interface in /proc/sys is now the primary and what
-         everyone uses.
+         sys_sysctl uses binary paths that have been found challenging
+         to properly maintain and use.  The interface in /proc/sys
+         using paths with ascii names is now the primary path to this
+         information.
 
-         Nothing has been using the binary sysctl interface for some time
-         time now so nothing should break if you disable sysctl syscall
-         support, and you kernel will get marginally smaller.
+         Almost nothing using the binary sysctl interface so if you are
+         trying to save some space it is probably safe to disable this,
+         making your kernel marginally smaller.
 
-         Unless you have an application that uses the sys_syscall interface
-         you should probably say N here.
+         If unsure say Y here.
 
 config KALLSYMS
-        bool "Load all symbols for debugging/kksymoops" if EMBEDDED
+        bool "Load all symbols for debugging/ksymoops" if EMBEDDED
         default y
         help
           Say Y here to let the kernel print out symbolic crash information and
@@ -358,6 +604,18 @@ config ELF_CORE
        help
          Enable support for generating core dumps. Disabling saves about 4k.
 
+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
@@ -375,13 +633,47 @@ config FUTEX
          support for "fast userspace mutexes".  The resulting kernel may not
          run glibc-based applications correctly.
 
+config ANON_INODES
+       bool
+
 config EPOLL
        bool "Enable eventpoll support" if EMBEDDED
        default y
+       select ANON_INODES
        help
          Disabling this option will cause the kernel to be built without
          support for epoll family of system calls.
 
+config SIGNALFD
+       bool "Enable signalfd() system call" if EMBEDDED
+       select ANON_INODES
+       default y
+       help
+         Enable the signalfd() system call that allows to receive signals
+         on a file descriptor.
+
+         If unsure, say Y.
+
+config TIMERFD
+       bool "Enable timerfd() system call" if EMBEDDED
+       select ANON_INODES
+       default y
+       help
+         Enable the timerfd() system call that allows to receive timer
+         events on a file descriptor.
+
+         If unsure, say Y.
+
+config EVENTFD
+       bool "Enable eventfd() system call" if EMBEDDED
+       select ANON_INODES
+       default y
+       help
+         Enable the eventfd() system call that allows to receive both
+         kernel notification (ie. KAIO) or userspace notifications.
+
+         If unsure, say Y.
+
 config SHMEM
        bool "Use full shmem filesystem" if EMBEDDED
        default y
@@ -393,26 +685,90 @@ config SHMEM
          option replaces shmem and tmpfs with the much simpler ramfs code,
          which may be appropriate on small systems without swap.
 
-config SLAB
+config VM_EVENT_COUNTERS
        default y
-       bool "Use full SLAB allocator" if EMBEDDED
+       bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
        help
-         Disabling this replaces the advanced SLAB allocator and
-         kmalloc support with the drastically simpler SLOB allocator.
-         SLOB is more space efficient but does not scale well and is
-         more susceptible to fragmentation.
+         VM event counters are needed for event counts to be shown.
+         This option allows the disabling of the VM event counters
+         on EMBEDDED systems.  /proc/vmstat will only show page counts
+         if VM event counters are disabled.
 
-config VM_EVENT_COUNTERS
+config SLUB_DEBUG
        default y
-       bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
+       bool "Enable SLUB debugging support" if EMBEDDED
+       depends on SLUB
+       help
+         SLUB has extensive debug support features. Disabling these can
+         result in significant savings in code size. This also disables
+         SLUB sysfs support. /sys/slab will not exist and there will be
+         no support for cache validation etc.
+
+choice
+       prompt "Choose SLAB allocator"
+       default SLUB
+       help
+          This option allows to select a slab allocator.
+
+config SLAB
+       bool "SLAB"
+       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.
+
+config SLUB
+       bool "SLUB (Unqueued Allocator)"
+       help
+          SLUB is a slab allocator that minimizes cache line usage
+          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.
+
+config SLOB
+       depends on EMBEDDED
+       bool "SLOB (Simple Allocator)"
+       help
+          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
+
+config PROFILING
+       bool "Profiling support (EXPERIMENTAL)"
        help
-         VM event counters are only needed to for event counts to be
-         shown. They have no function for the kernel itself. This
-         option allows the disabling of the VM event counters.
-         /proc/vmstat will only show page counts.
+         Say Y here to enable the extended profiling support mechanisms used
+         by profilers such as OProfile.
+
+config MARKERS
+       bool "Activate markers"
+       help
+         Place an empty function call at each marker site. Can be
+         dynamically changed for a probe function.
+
+source "arch/Kconfig"
+
+config PROC_PAGE_MONITOR
+       default y
+       depends on PROC_FS && MMU
+       bool "Enable /proc page monitoring" if EMBEDDED
+       help
+         Various /proc files exist to monitor process memory utilization:
+         /proc/pid/smaps, /proc/pid/clear_refs, /proc/pid/pagemap,
+         /proc/kpagecount, and /proc/kpageflags. Disabling these
+          interfaces will reduce the size of the kernel by approximately 4kb.
 
 endmenu                # General setup
 
+config SLABINFO
+       bool
+       depends on PROC_FS
+       depends on SLAB || SLUB_DEBUG
+       default y
+
 config RT_MUTEXES
        boolean
        select PLIST
@@ -426,13 +782,7 @@ config BASE_SMALL
        default 0 if BASE_FULL
        default 1 if !BASE_FULL
 
-config SLOB
-       default !SLAB
-       bool
-
-menu "Loadable module support"
-
-config MODULES
+menuconfig MODULES
        bool "Enable loadable module support"
        help
          Kernel modules are small pieces of compiled code which can
@@ -512,8 +862,16 @@ config STOP_MACHINE
        depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
        help
          Need stop_machine() primitive.
-endmenu
 
-menu "Block layer"
 source "block/Kconfig"
-endmenu
+
+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.