x86, kgdb, init: Add early and late debug states
[safe/jmp/linux-2.6] / init / Kconfig
index f2f9b53..5fe94b8 100644 (file)
@@ -16,6 +16,11 @@ config DEFCONFIG_LIST
        default "$ARCH_DEFCONFIG"
        default "arch/$ARCH/defconfig"
 
        default "$ARCH_DEFCONFIG"
        default "arch/$ARCH/defconfig"
 
+config CONSTRUCTORS
+       bool
+       depends on !UML
+       default y
+
 menu "General setup"
 
 config EXPERIMENTAL
 menu "General setup"
 
 config EXPERIMENTAL
@@ -110,10 +115,13 @@ config HAVE_KERNEL_BZIP2
 config HAVE_KERNEL_LZMA
        bool
 
 config HAVE_KERNEL_LZMA
        bool
 
+config HAVE_KERNEL_LZO
+       bool
+
 choice
        prompt "Kernel compression mode"
        default KERNEL_GZIP
 choice
        prompt "Kernel compression mode"
        default KERNEL_GZIP
-       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA
+       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO
        help
          The linux kernel is a kind of self-extracting executable.
          Several compression algorithms are available, which differ
        help
          The linux kernel is a kind of self-extracting executable.
          Several compression algorithms are available, which differ
@@ -136,9 +144,8 @@ config KERNEL_GZIP
        bool "Gzip"
        depends on HAVE_KERNEL_GZIP
        help
        bool "Gzip"
        depends on HAVE_KERNEL_GZIP
        help
-         The old and tried gzip compression. Its compression ratio is
-         the poorest among the 3 choices; however its speed (both
-         compression and decompression) is the fastest.
+         The old and tried gzip compression. It provides a good balance
+         between compression ratio and decompression speed.
 
 config KERNEL_BZIP2
        bool "Bzip2"
 
 config KERNEL_BZIP2
        bool "Bzip2"
@@ -159,6 +166,14 @@ config KERNEL_LZMA
          two. Compression is slowest.  The kernel size is about 33%
          smaller with LZMA in comparison to gzip.
 
          two. Compression is slowest.  The kernel size is about 33%
          smaller with LZMA in comparison to gzip.
 
+config KERNEL_LZO
+       bool "LZO"
+       depends on HAVE_KERNEL_LZO
+       help
+         Its compression ratio is the poorest among the 4. The kernel
+         size is about about 10% bigger than gzip; however its speed
+         (both compression and decompression) is the fastest.
+
 endchoice
 
 config SWAP
 endchoice
 
 config SWAP
@@ -292,7 +307,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|| SUPERH)
+       depends on AUDIT && (X86 || PPC || 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
@@ -302,46 +317,47 @@ config AUDITSYSCALL
 
 config AUDIT_TREE
        def_bool y
 
 config AUDIT_TREE
        def_bool y
-       depends on AUDITSYSCALL && INOTIFY
+       depends on AUDITSYSCALL
+       select INOTIFY
 
 menu "RCU Subsystem"
 
 choice
        prompt "RCU Implementation"
 
 menu "RCU Subsystem"
 
 choice
        prompt "RCU Implementation"
-       default CLASSIC_RCU
-
-config CLASSIC_RCU
-       bool "Classic RCU"
-       help
-         This option selects the classic RCU implementation that is
-         designed for best read-side performance on non-realtime
-         systems.
-
-         Select this option if you are unsure.
+       default TREE_RCU
 
 config TREE_RCU
        bool "Tree-based hierarchical RCU"
        help
          This option selects the RCU implementation that is
          designed for very large SMP system with hundreds or
 
 config TREE_RCU
        bool "Tree-based hierarchical RCU"
        help
          This option selects the RCU implementation that is
          designed for very large SMP system with hundreds or
-         thousands of CPUs.
+         thousands of CPUs.  It also scales down nicely to
+         smaller systems.
 
 
-config PREEMPT_RCU
-       bool "Preemptible RCU"
+config TREE_PREEMPT_RCU
+       bool "Preemptable tree-based hierarchical RCU"
        depends on PREEMPT
        help
        depends on PREEMPT
        help
-         This option reduces the latency of the kernel by making certain
-         RCU sections preemptible. Normally RCU code is non-preemptible, if
-         this option is selected then read-only RCU sections become
-         preemptible. This helps latency, but may expose bugs due to
-         now-naive assumptions about each RCU read-side critical section
-         remaining on a given CPU through its execution.
+         This option selects the RCU implementation that is
+         designed for very large SMP systems with hundreds or
+         thousands of CPUs, but for which real-time response
+         is also required.  It also scales down nicely to
+         smaller systems.
+
+config TINY_RCU
+       bool "UP-only small-memory-footprint RCU"
+       depends on !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.
 
 endchoice
 
 config RCU_TRACE
        bool "Enable tracing for RCU"
 
 endchoice
 
 config RCU_TRACE
        bool "Enable tracing for RCU"
-       depends on TREE_RCU || PREEMPT_RCU
+       depends on TREE_RCU || TREE_PREEMPT_RCU
        help
          This option provides tracing in RCU which presents stats
          in debugfs for debugging RCU implementation.
        help
          This option provides tracing in RCU which presents stats
          in debugfs for debugging RCU implementation.
@@ -353,7 +369,7 @@ config RCU_FANOUT
        int "Tree-based hierarchical RCU fanout value"
        range 2 64 if 64BIT
        range 2 32 if !64BIT
        int "Tree-based hierarchical RCU fanout value"
        range 2 64 if 64BIT
        range 2 32 if !64BIT
-       depends on TREE_RCU
+       depends on TREE_RCU || TREE_PREEMPT_RCU
        default 64 if 64BIT
        default 32 if !64BIT
        help
        default 64 if 64BIT
        default 32 if !64BIT
        help
@@ -368,7 +384,7 @@ config RCU_FANOUT
 
 config RCU_FANOUT_EXACT
        bool "Disable tree-based hierarchical RCU auto-balancing"
 
 config RCU_FANOUT_EXACT
        bool "Disable tree-based hierarchical RCU auto-balancing"
-       depends on TREE_RCU
+       depends on TREE_RCU || TREE_PREEMPT_RCU
        default n
        help
          This option forces use of the exact RCU_FANOUT value specified,
        default n
        help
          This option forces use of the exact RCU_FANOUT value specified,
@@ -380,19 +396,29 @@ config RCU_FANOUT_EXACT
 
          Say N if unsure.
 
 
          Say N if unsure.
 
-config TREE_RCU_TRACE
-       def_bool RCU_TRACE && TREE_RCU
-       select DEBUG_FS
+config RCU_FAST_NO_HZ
+       bool "Accelerate last non-dyntick-idle CPU's grace periods"
+       depends on TREE_RCU && NO_HZ && SMP
+       default n
        help
        help
-         This option provides tracing for the TREE_RCU implementation,
-         permitting Makefile to trivially select kernel/rcutree_trace.c.
+         This option causes RCU to attempt to accelerate grace periods
+         in order to allow the final CPU to enter dynticks-idle state
+         more quickly.  On the other hand, this option increases the
+         overhead of the dynticks-idle checking, particularly on systems
+         with large numbers of CPUs.
+
+         Say Y if energy efficiency is critically important, particularly
+               if you have relatively few CPUs.
+
+         Say N if you are unsure.
 
 
-config PREEMPT_RCU_TRACE
-       def_bool RCU_TRACE && PREEMPT_RCU
+config TREE_RCU_TRACE
+       def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
        select DEBUG_FS
        help
        select DEBUG_FS
        help
-         This option provides tracing for the PREEMPT_RCU implementation,
-         permitting Makefile to trivially select kernel/rcupreempt_trace.c.
+         This option provides tracing for the TREE_RCU and
+         TREE_PREEMPT_RCU implementations, permitting Makefile to
+         trivially select kernel/rcutree_trace.c.
 
 endmenu # "RCU Subsystem"
 
 
 endmenu # "RCU Subsystem"
 
@@ -435,59 +461,9 @@ config LOG_BUF_SHIFT
 config HAVE_UNSTABLE_SCHED_CLOCK
        bool
 
 config HAVE_UNSTABLE_SCHED_CLOCK
        bool
 
-config GROUP_SCHED
-       bool "Group CPU scheduler"
-       depends on EXPERIMENTAL
-       default n
-       help
-         This feature lets CPU scheduler recognize task groups and control CPU
-         bandwidth allocation to such task groups.
-         In order to create a group from arbitrary set of processes, use
-         CONFIG_CGROUPS. (See Control Group support.)
-
-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/cgroups.txt for more
-         information on "cgroup" pseudo filesystem.
-
-endchoice
-
 menuconfig CGROUPS
        boolean "Control Group support"
 menuconfig CGROUPS
        boolean "Control Group support"
+       depends on EVENTFD
        help
          This option adds support for grouping sets of processes together, for
          use with process control subsystems such as Cpusets, CFS, memory
        help
          This option adds support for grouping sets of processes together, for
          use with process control subsystems such as Cpusets, CFS, memory
@@ -606,6 +582,35 @@ config CGROUP_MEM_RES_CTLR_SWAP
          Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
          size is 4096bytes, 512k per 1Gbytes of swap.
 
          Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
          size is 4096bytes, 512k per 1Gbytes of swap.
 
+menuconfig CGROUP_SCHED
+       bool "Group CPU scheduler"
+       depends on EXPERIMENTAL && CGROUPS
+       default n
+       help
+         This feature lets CPU scheduler recognize task groups and control CPU
+         bandwidth allocation to such task groups. It uses cgroups to group
+         tasks.
+
+if CGROUP_SCHED
+config FAIR_GROUP_SCHED
+       bool "Group scheduling for SCHED_OTHER"
+       depends on CGROUP_SCHED
+       default CGROUP_SCHED
+
+config RT_GROUP_SCHED
+       bool "Group scheduling for SCHED_RR/FIFO"
+       depends on EXPERIMENTAL
+       depends on CGROUP_SCHED
+       default n
+       help
+         This feature lets you explicitly allocate real CPU bandwidth
+         to task groups. 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.
+
+endif #CGROUP_SCHED
+
 endif # CGROUPS
 
 config MM_OWNER
 endif # CGROUPS
 
 config MM_OWNER
@@ -615,13 +620,13 @@ config SYSFS_DEPRECATED
        bool
 
 config SYSFS_DEPRECATED_V2
        bool
 
 config SYSFS_DEPRECATED_V2
-       bool "Create deprecated sysfs layout for older userspace tools"
+       bool "enable deprecated sysfs features to support old userspace tools"
        depends on SYSFS
        depends on SYSFS
-       default y
+       default n
        select SYSFS_DEPRECATED
        help
          This option switches the layout of sysfs to the deprecated
        select SYSFS_DEPRECATED
        help
          This option switches the layout of sysfs to the deprecated
-         version.
+         version. Do not use it on recent distributions.
 
          The current sysfs layout features a unified device tree at
          /sys/devices/, which is able to express a hierarchy between
 
          The current sysfs layout features a unified device tree at
          /sys/devices/, which is able to express a hierarchy between
@@ -763,6 +768,7 @@ config UID16
 
 config SYSCTL_SYSCALL
        bool "Sysctl syscall support" if EMBEDDED
 
 config SYSCTL_SYSCALL
        bool "Sysctl syscall support" if EMBEDDED
+       depends on PROC_SYSCTL
        default y
        select SYSCTL
        ---help---
        default y
        select SYSCTL
        ---help---
@@ -925,6 +931,73 @@ config AIO
           by some high performance threaded applications. Disabling
           this option saves about 7k.
 
           by some high performance threaded applications. Disabling
           this option saves about 7k.
 
+config HAVE_PERF_EVENTS
+       bool
+       help
+         See tools/perf/design.txt for details.
+
+config PERF_USE_VMALLOC
+       bool
+       help
+         See tools/perf/design.txt for details
+
+menu "Kernel Performance Events And Counters"
+
+config PERF_EVENTS
+       bool "Kernel performance events and counters"
+       default y if (PROFILING || PERF_COUNTERS)
+       depends on HAVE_PERF_EVENTS
+       select ANON_INODES
+       help
+         Enable kernel support for various performance events provided
+         by software and hardware.
+
+         Software events are supported either built-in or via the
+         use of generic tracepoints.
+
+         Most modern CPUs support performance events via performance
+         counter registers. These registers count the number of certain
+         types of hw events: such as instructions executed, cachemisses
+         suffered, or branches mis-predicted - without slowing down the
+         kernel or applications. These registers can also trigger interrupts
+         when a threshold number of events have passed - and can thus be
+         used to profile the code that runs on that CPU.
+
+         The Linux Performance Event subsystem provides an abstraction of
+         these software and hardware event capabilities, available via a
+         system call and used by the "perf" utility in tools/perf/. It
+         provides per task and per CPU counters, and it provides event
+         capabilities on top of those.
+
+         Say Y if unsure.
+
+config PERF_COUNTERS
+       bool "Kernel performance counters (old config option)"
+       depends on HAVE_PERF_EVENTS
+       help
+         This config has been obsoleted by the PERF_EVENTS
+         config option - please see that one for details.
+
+         It has no effect on the kernel whether you enable
+         it or not, it is a compatibility placeholder.
+
+         Say N if unsure.
+
+config DEBUG_PERF_USE_VMALLOC
+       default n
+       bool "Debug: use vmalloc to back perf mmap() buffers"
+       depends on PERF_EVENTS && DEBUG_KERNEL
+       select PERF_USE_VMALLOC
+       help
+        Use vmalloc memory to back perf mmap() buffers.
+
+        Mostly useful for debugging the vmalloc code on platforms
+        that don't require it.
+
+        Say N if unsure.
+
+endmenu
+
 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
@@ -998,8 +1071,30 @@ config SLOB
 
 endchoice
 
 
 endchoice
 
+config MMAP_ALLOW_UNINITIALIZED
+       bool "Allow mmapped anonymous memory to be uninitialized"
+       depends on EMBEDDED && !MMU
+       default n
+       help
+         Normally, and according to the Linux spec, anonymous memory obtained
+         from mmap() has it's contents cleared before it is passed to
+         userspace.  Enabling this config option allows you to request that
+         mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
+         providing a huge performance boost.  If this option is not enabled,
+         then the flag will be ignored.
+
+         This is taken advantage of by uClibc's malloc(), and also by
+         ELF-FDPIC binfmt's brk and stack allocator.
+
+         Because of the obvious security issues, this option should only be
+         enabled on embedded devices where you control what is run in
+         userspace.  Since that isn't generally a problem on no-MMU systems,
+         it is normally safe to say Y here.
+
+         See Documentation/nommu-mmap.txt for more information.
+
 config PROFILING
 config PROFILING
-       bool "Profiling support (EXPERIMENTAL)"
+       bool "Profiling support"
        help
          Say Y here to enable the extended profiling support mechanisms used
          by profilers such as OProfile.
        help
          Say Y here to enable the extended profiling support mechanisms used
          by profilers such as OProfile.
@@ -1011,13 +1106,6 @@ config PROFILING
 config TRACEPOINTS
        bool
 
 config TRACEPOINTS
        bool
 
-config MARKERS
-       bool "Activate markers"
-       select TRACEPOINTS
-       help
-         Place an empty function call at each marker site. Can be
-         dynamically changed for a probe function.
-
 source "arch/Kconfig"
 
 config SLOW_WORK
 source "arch/Kconfig"
 
 config SLOW_WORK
@@ -1034,6 +1122,16 @@ config SLOW_WORK
 
          See Documentation/slow-work.txt.
 
 
          See Documentation/slow-work.txt.
 
+config SLOW_WORK_DEBUG
+       bool "Slow work debugging through debugfs"
+       default n
+       depends on SLOW_WORK && DEBUG_FS
+       help
+         Display the contents of the slow work run queue through debugfs,
+         including items currently executing.
+
+         See Documentation/slow-work.txt.
+
 endmenu                # General setup
 
 config HAVE_GENERIC_DMA_COHERENT
 endmenu                # General setup
 
 config HAVE_GENERIC_DMA_COHERENT
@@ -1146,3 +1244,8 @@ source "block/Kconfig"
 config PREEMPT_NOTIFIERS
        bool
 
 config PREEMPT_NOTIFIERS
        bool
 
+config PADATA
+       depends on SMP
+       bool
+
+source "kernel/Kconfig.locks"