NOMMU: Make VMAs per MM as for MMU-mode linux
[safe/jmp/linux-2.6] / lib / Kconfig.debug
index f3e0c2a..d0a32aa 100644 (file)
@@ -9,6 +9,14 @@ config PRINTK_TIME
          operations.  This is useful for identifying long delays
          in kernel startup.
 
+config ENABLE_WARN_DEPRECATED
+       bool "Enable __deprecated logic"
+       default y
+       help
+         Enable the __deprecated logic in the kernel build.
+         Disable this to suppress the "warning: 'foo' is deprecated
+         (declared at kernel/power/somefile.c:1234)" messages.
+
 config ENABLE_MUST_CHECK
        bool "Enable __must_check logic"
        default y
@@ -17,6 +25,17 @@ config ENABLE_MUST_CHECK
          suppress the "warning: ignoring return value of 'foo', declared with
          attribute warn_unused_result" messages.
 
+config FRAME_WARN
+       int "Warn for stack frames larger than (needs gcc 4.4)"
+       range 0 8192
+       default 1024 if !64BIT
+       default 2048 if 64BIT
+       help
+         Tell gcc to warn at build time for stack frames larger than this.
+         Setting this too low will cause a lot of warnings.
+         Setting it to 0 disables the warning.
+         Requires gcc 4.4
+
 config MAGIC_SYSRQ
        bool "Magic SysRq key"
        depends on !UML
@@ -55,6 +74,9 @@ config DEBUG_FS
          debugging files into.  Enable this option to be able to read and
          write to these files.
 
+         For detailed documentation on the debugfs API, see
+         Documentation/DocBook/filesystems.
+
          If unsure, say N.
 
 config HEADERS_CHECK
@@ -71,6 +93,41 @@ config HEADERS_CHECK
          exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
          your build tree), to make sure they're suitable.
 
+config DEBUG_SECTION_MISMATCH
+       bool "Enable full Section mismatch analysis"
+       depends on UNDEFINED
+       # This option is on purpose disabled for now.
+       # It will be enabled when we are down to a resonable number
+       # of section mismatch warnings (< 10 for an allyesconfig build)
+       help
+         The section mismatch analysis checks if there are illegal
+         references from one section to another section.
+         Linux will during link or during runtime drop some sections
+         and any use of code/data previously in these sections will
+         most likely result in an oops.
+         In the code functions and variables are annotated with
+         __init, __devinit etc. (see full list in include/linux/init.h)
+         which results in the code/data being placed in specific sections.
+         The section mismatch analysis is always done after a full
+         kernel build but enabling this option will in addition
+         do the following:
+         - Add the option -fno-inline-functions-called-once to gcc
+           When inlining a function annotated __init in a non-init
+           function we would lose the section information and thus
+           the analysis would not catch the illegal reference.
+           This option tells gcc to inline less but will also
+           result in a larger kernel.
+         - Run the section mismatch analysis for each module/built-in.o
+           When we run the section mismatch analysis on vmlinux.o we
+           lose valueble information about where the mismatch was
+           introduced.
+           Running the analysis for each module/built-in.o file
+           will tell where the mismatch happens much closer to the
+           source. The drawback is that we will report the same
+           mismatch at least twice.
+         - Enable verbose reporting from modpost to help solving
+           the section mismatches reported.
+
 config DEBUG_KERNEL
        bool "Kernel debugging"
        help
@@ -93,7 +150,7 @@ config DETECT_SOFTLOCKUP
        help
          Say Y here to enable the kernel to detect "soft lockups",
          which are bugs that cause the kernel to loop in kernel
-         mode for more than 10 seconds, without giving other tasks a
+         mode for more than 60 seconds, without giving other tasks a
          chance to run.
 
          When a soft-lockup is detected, the kernel will print the
@@ -105,6 +162,30 @@ config DETECT_SOFTLOCKUP
           can be detected via the NMI-watchdog, on platforms that
           support it.)
 
+config BOOTPARAM_SOFTLOCKUP_PANIC
+       bool "Panic (Reboot) On Soft Lockups"
+       depends on DETECT_SOFTLOCKUP
+       help
+         Say Y here to enable the kernel to panic on "soft lockups",
+         which are bugs that cause the kernel to loop in kernel
+         mode for more than 60 seconds, without giving other tasks a
+         chance to run.
+
+         The panic can be used in combination with panic_timeout,
+         to cause the system to reboot automatically after a
+         lockup has been detected. This feature is useful for
+         high-availability systems that have uptime guarantees and
+         where a lockup must be resolved ASAP.
+
+         Say N if unsure.
+
+config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
+       int
+       depends on DETECT_SOFTLOCKUP
+       range 0 1
+       default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
+       default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
+
 config SCHED_DEBUG
        bool "Collect scheduler debugging info"
        depends on DEBUG_KERNEL && PROC_FS
@@ -140,6 +221,45 @@ config TIMER_STATS
          (it defaults to deactivated on bootup and will only be activated
          if some application like powertop activates it explicitly).
 
+config DEBUG_OBJECTS
+       bool "Debug object operations"
+       depends on DEBUG_KERNEL
+       help
+         If you say Y here, additional code will be inserted into the
+         kernel to track the life time of various objects and validate
+         the operations on those objects.
+
+config DEBUG_OBJECTS_SELFTEST
+       bool "Debug objects selftest"
+       depends on DEBUG_OBJECTS
+       help
+         This enables the selftest of the object debug code.
+
+config DEBUG_OBJECTS_FREE
+       bool "Debug objects in freed memory"
+       depends on DEBUG_OBJECTS
+       help
+         This enables checks whether a k/v free operation frees an area
+         which contains an object which has not been deactivated
+         properly. This can make kmalloc/kfree-intensive workloads
+         much slower.
+
+config DEBUG_OBJECTS_TIMERS
+       bool "Debug timer objects"
+       depends on DEBUG_OBJECTS
+       help
+         If you say Y here, additional code will be inserted into the
+         timer routines to track the life time of timer objects and
+         validate the timer operations.
+
+config DEBUG_OBJECTS_ENABLE_DEFAULT
+       int "debug_objects bootup default value (0-1)"
+        range 0 1
+        default "1"
+        depends on DEBUG_OBJECTS
+        help
+          Debug objects boot parameter default value
+
 config DEBUG_SLAB
        bool "Debug slab memory allocations"
        depends on DEBUG_KERNEL && SLAB
@@ -165,9 +285,22 @@ config SLUB_DEBUG_ON
          off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
          "slub_debug=-".
 
+config SLUB_STATS
+       default n
+       bool "Enable SLUB performance statistics"
+       depends on SLUB && SLUB_DEBUG && SYSFS
+       help
+         SLUB statistics are useful to debug SLUBs allocation behavior in
+         order find ways to optimize the allocator. This should never be
+         enabled for production use since keeping statistics slows down
+         the allocator by a few percentage points. The slabinfo command
+         supports the determination of the most active slabs to figure
+         out which slabs are relevant to a particular load.
+         Try running: slabinfo -DA
+
 config DEBUG_PREEMPT
        bool "Debug preemptible kernel"
-       depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
+       depends on DEBUG_KERNEL && PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64)
        default y
        help
          If you say Y here then the kernel will use a debug variant of the
@@ -209,16 +342,6 @@ config DEBUG_MUTEXES
         This feature allows mutex semantics violations to be detected and
         reported.
 
-config DEBUG_SEMAPHORE
-       bool "Semaphore debugging"
-       depends on DEBUG_KERNEL
-       depends on ALPHA || FRV
-       default n
-       help
-         If you say Y here then semaphore processing will issue lots of
-         verbose debugging messages.  If you suspect a semaphore problem or a
-         kernel hacker asks for this option then say Y.  Otherwise say N.
-
 config DEBUG_LOCK_ALLOC
        bool "Lock debugging: detect incorrect freeing of live locks"
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
@@ -279,12 +402,12 @@ config LOCKDEP
        bool
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
        select STACKTRACE
-       select FRAME_POINTER if !X86 && !MIPS
+       select FRAME_POINTER if !X86 && !MIPS && !PPC
        select KALLSYMS
        select KALLSYMS_ALL
 
 config LOCK_STAT
-       bool "Lock usage statisitics"
+       bool "Lock usage statistics"
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
        select LOCKDEP
        select DEBUG_SPINLOCK
@@ -294,6 +417,8 @@ config LOCK_STAT
        help
         This feature enables tracking lock contention points
 
+        For more details, see Documentation/lockstat.txt
+
 config DEBUG_LOCKDEP
        bool "Lock dependency engine debugging"
        depends on DEBUG_KERNEL && LOCKDEP
@@ -329,7 +454,6 @@ config DEBUG_LOCKING_API_SELFTESTS
 
 config STACKTRACE
        bool
-       depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
 
 config DEBUG_KOBJECT
@@ -349,7 +473,8 @@ config DEBUG_HIGHMEM
 config DEBUG_BUGVERBOSE
        bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED
        depends on BUG
-       depends on ARM || ARM26 || AVR32 || M32R || M68K || SPARC32 || SPARC64 || FRV || SUPERH || GENERIC_BUG || BFIN
+       depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \
+                  FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300
        default !EMBEDDED
        help
          Say Y here to make BUG() panics output the file name and line number
@@ -378,6 +503,44 @@ config DEBUG_VM
 
          If unsure, say N.
 
+config DEBUG_VIRTUAL
+       bool "Debug VM translations"
+       depends on DEBUG_KERNEL && X86
+       help
+         Enable some costly sanity checks in virtual to page code. This can
+         catch mistakes with virt_to_page() and friends.
+
+         If unsure, say N.
+
+config DEBUG_NOMMU_REGIONS
+       bool "Debug the global anon/private NOMMU mapping region tree"
+       depends on DEBUG_KERNEL && !MMU
+       help
+         This option causes the global tree of anonymous and private mapping
+         regions to be regularly checked for invalid topology.
+
+config DEBUG_WRITECOUNT
+       bool "Debug filesystem writers count"
+       depends on DEBUG_KERNEL
+       help
+         Enable this to catch wrong use of the writers count in struct
+         vfsmount.  This will increase the size of each file struct by
+         32 bits.
+
+         If unsure, say N.
+
+config DEBUG_MEMORY_INIT
+       bool "Debug memory initialisation" if EMBEDDED
+       default !EMBEDDED
+       help
+         Enable this for additional checks during memory initialisation.
+         The sanity checks verify aspects of the VM such as the memory model
+         and other information provided by the architecture. Verbose
+         information will be printed at KERN_DEBUG loglevel depending
+         on the mminit_loglevel= command-line option.
+
+         If unsure, say Y
+
 config DEBUG_LIST
        bool "Debug linked list manipulation"
        depends on DEBUG_KERNEL
@@ -387,9 +550,31 @@ config DEBUG_LIST
 
          If unsure, say N.
 
+config DEBUG_SG
+       bool "Debug SG table operations"
+       depends on DEBUG_KERNEL
+       help
+         Enable this to turn on checks on scatter-gather tables. This can
+         help find problems with drivers that do not properly initialize
+         their sg tables.
+
+         If unsure, say N.
+
+config DEBUG_NOTIFIERS
+       bool "Debug notifier call chains"
+       depends on DEBUG_KERNEL
+       help
+         Enable this to turn on sanity checking for notifier call chains.
+         This is most useful for kernel developers to make sure that
+         modules properly unregister themselves from notifier chains.
+         This is a relatively cheap check but if you care about maximum
+         performance, say N.
+
 config FRAME_POINTER
        bool "Compile the kernel with frame pointers"
-       depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || AVR32 || SUPERH || BFIN)
+       depends on DEBUG_KERNEL && \
+               (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \
+                AVR32 || SUPERH || BLACKFIN || MN10300)
        default y if DEBUG_INFO && UML
        help
          If you say Y here the resulting kernel image will be slightly larger
@@ -397,37 +582,140 @@ config FRAME_POINTER
          some architectures or if you use external debuggers.
          If you don't debug the kernel, you can say N.
 
-config FORCED_INLINING
-       bool "Force gcc to inline functions marked 'inline'"
-       depends on DEBUG_KERNEL
-       default y
+config BOOT_PRINTK_DELAY
+       bool "Delay each boot printk message by N milliseconds"
+       depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
        help
-         This option determines if the kernel forces gcc to inline the functions
-         developers have marked 'inline'. Doing so takes away freedom from gcc to
-         do what it thinks is best, which is desirable for the gcc 3.x series of
-         compilers. The gcc 4.x series have a rewritten inlining algorithm and
-         disabling this option will generate a smaller kernel there. Hopefully
-         this algorithm is so good that allowing gcc4 to make the decision can
-         become the default in the future, until then this option is there to
-         test gcc for this.
+         This build option allows you to read kernel boot messages
+         by inserting a short delay after each one.  The delay is
+         specified in milliseconds on the kernel command line,
+         using "boot_delay=N".
+
+         It is likely that you would also need to use "lpj=M" to preset
+         the "loops per jiffie" value.
+         See a previous boot log for the "lpj" value to use for your
+         system, and then set "lpj=M" before setting "boot_delay=N".
+         NOTE:  Using this option may adversely affect SMP systems.
+         I.e., processors other than the first one may not boot up.
+         BOOT_PRINTK_DELAY also may cause DETECT_SOFTLOCKUP to detect
+         what it believes to be lockup conditions.
 
 config RCU_TORTURE_TEST
        tristate "torture tests for RCU"
        depends on DEBUG_KERNEL
-       depends on m
        default n
        help
          This option provides a kernel module that runs torture tests
          on the RCU infrastructure.  The kernel module may be built
          after the fact on the running kernel to be tested, if desired.
 
+         Say Y here if you want RCU torture tests to be built into
+         the kernel.
          Say M if you want the RCU torture tests to build as a module.
          Say N if you are unsure.
 
+config RCU_TORTURE_TEST_RUNNABLE
+       bool "torture tests for RCU runnable by default"
+       depends on RCU_TORTURE_TEST = y
+       default n
+       help
+         This option provides a way to build the RCU torture tests
+         directly into the kernel without them starting up at boot
+         time.  You can use /proc/sys/kernel/rcutorture_runnable
+         to manually override this setting.  This /proc file is
+         available only when the RCU torture tests have been built
+         into the kernel.
+
+         Say Y here if you want the RCU torture tests to start during
+         boot (you probably don't).
+         Say N here if you want the RCU torture tests to start only
+         after being manually enabled via /proc.
+
+config RCU_CPU_STALL_DETECTOR
+       bool "Check for stalled CPUs delaying RCU grace periods"
+       depends on CLASSIC_RCU
+       default n
+       help
+         This option causes RCU to printk information on which
+         CPUs are delaying the current grace period, but only when
+         the grace period extends for excessive time periods.
+
+         Say Y if you want RCU to perform such checks.
+
+         Say N if you are unsure.
+
+config RCU_CPU_STALL_DETECTOR
+       bool "Check for stalled CPUs delaying RCU grace periods"
+       depends on CLASSIC_RCU || TREE_RCU
+       default n
+       help
+         This option causes RCU to printk information on which
+         CPUs are delaying the current grace period, but only when
+         the grace period extends for excessive time periods.
+
+         Say Y if you want RCU to perform such checks.
+
+         Say N if you are unsure.
+
+config KPROBES_SANITY_TEST
+       bool "Kprobes sanity tests"
+       depends on DEBUG_KERNEL
+       depends on KPROBES
+       default n
+       help
+         This option provides for testing basic kprobes functionality on
+         boot. A sample kprobe, jprobe and kretprobe are inserted and
+         verified for functionality.
+
+         Say N if you are unsure.
+
+config BACKTRACE_SELF_TEST
+       tristate "Self test for the backtrace code"
+       depends on DEBUG_KERNEL
+       default n
+       help
+         This option provides a kernel module that can be used to test
+         the kernel stack backtrace code. This option is not useful
+         for distributions or general kernels, but only for kernel
+         developers working on architecture code.
+
+         Note that if you want to also test saved backtraces, you will
+         have to enable STACKTRACE as well.
+
+         Say N if you are unsure.
+
+config DEBUG_BLOCK_EXT_DEVT
+        bool "Force extended block device numbers and spread them"
+       depends on DEBUG_KERNEL
+       depends on BLOCK
+       default n
+       help
+         BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
+         SOME DISTRIBUTIONS.  DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
+         YOU ARE DOING.  Distros, please enable this and fix whatever
+         is broken.
+
+         Conventionally, block device numbers are allocated from
+         predetermined contiguous area.  However, extended block area
+         may introduce non-contiguous block device numbers.  This
+         option forces most block device numbers to be allocated from
+         the extended space and spreads them to discover kernel or
+         userland code paths which assume predetermined contiguous
+         device number allocation.
+
+         Note that turning on this debug option shuffles all the
+         device numbers for all IDE and SCSI devices including libata
+         ones, so root partition specified using device number
+         directly (via rdev or root=MAJ:MIN) won't work anymore.
+         Textual device names (root=/dev/sdXn) will continue to work.
+
+         Say N if you are unsure.
+
 config LKDTM
        tristate "Linux Kernel Dump Test Tool Module"
        depends on DEBUG_KERNEL
        depends on KPROBES
+       depends on BLOCK
        default n
        help
        This module enables testing of the different dumping mechanisms by
@@ -449,6 +737,7 @@ config FAULT_INJECTION
 config FAILSLAB
        bool "Fault-injection capability for kmalloc"
        depends on FAULT_INJECTION
+       depends on SLAB || SLUB
        help
          Provide fault-injection capability for kmalloc.
 
@@ -460,10 +749,21 @@ config FAIL_PAGE_ALLOC
 
 config FAIL_MAKE_REQUEST
        bool "Fault-injection capability for disk IO"
-       depends on FAULT_INJECTION
+       depends on FAULT_INJECTION && BLOCK
        help
          Provide fault-injection capability for disk IO.
 
+config FAIL_IO_TIMEOUT
+       bool "Faul-injection capability for faking disk interrupts"
+       depends on FAULT_INJECTION && BLOCK
+       help
+         Provide fault-injection capability on end IO handling. This
+         will make the block layer "forget" an interrupt as configured,
+         thus exercising the error handling.
+
+         Only works with drivers that use the generic timeout handling,
+         for others it wont do anything.
+
 config FAULT_INJECTION_DEBUG_FS
        bool "Debugfs entries for fault-injection capabilities"
        depends on FAULT_INJECTION && SYSFS && DEBUG_FS
@@ -475,6 +775,137 @@ config FAULT_INJECTION_STACKTRACE_FILTER
        depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
        depends on !X86_64
        select STACKTRACE
-       select FRAME_POINTER
+       select FRAME_POINTER if !PPC
        help
          Provide stacktrace filter for fault-injection capabilities
+
+config LATENCYTOP
+       bool "Latency measuring infrastructure"
+       select FRAME_POINTER if !MIPS && !PPC
+       select KALLSYMS
+       select KALLSYMS_ALL
+       select STACKTRACE
+       select SCHEDSTATS
+       select SCHED_DEBUG
+       depends on HAVE_LATENCYTOP_SUPPORT
+       help
+         Enable this option if you want to use the LatencyTOP tool
+         to find out which userspace is blocking on what kernel operations.
+
+config SYSCTL_SYSCALL_CHECK
+       bool "Sysctl checks"
+       depends on SYSCTL_SYSCALL
+       ---help---
+         sys_sysctl uses binary paths that have been found challenging
+         to properly maintain and use. This enables checks that help
+         you to keep things correct.
+
+source kernel/trace/Kconfig
+
+config PROVIDE_OHCI1394_DMA_INIT
+       bool "Remote debugging over FireWire early on boot"
+       depends on PCI && X86
+       help
+         If you want to debug problems which hang or crash the kernel early
+         on boot and the crashing machine has a FireWire port, you can use
+         this feature to remotely access the memory of the crashed machine
+         over FireWire. This employs remote DMA as part of the OHCI1394
+         specification which is now the standard for FireWire controllers.
+
+         With remote DMA, you can monitor the printk buffer remotely using
+         firescope and access all memory below 4GB using fireproxy from gdb.
+         Even controlling a kernel debugger is possible using remote DMA.
+
+         Usage:
+
+         If ohci1394_dma=early is used as boot parameter, it will initialize
+         all OHCI1394 controllers which are found in the PCI config space.
+
+         As all changes to the FireWire bus such as enabling and disabling
+         devices cause a bus reset and thereby disable remote DMA for all
+         devices, be sure to have the cable plugged and FireWire enabled on
+         the debugging host before booting the debug target for debugging.
+
+         This code (~1k) is freed after boot. By then, the firewire stack
+         in charge of the OHCI-1394 controllers should be used instead.
+
+         See Documentation/debugging-via-ohci1394.txt for more information.
+
+config FIREWIRE_OHCI_REMOTE_DMA
+       bool "Remote debugging over FireWire with firewire-ohci"
+       depends on FIREWIRE_OHCI
+       help
+         This option lets you use the FireWire bus for remote debugging
+         with help of the firewire-ohci driver. It enables unfiltered
+         remote DMA in firewire-ohci.
+         See Documentation/debugging-via-ohci1394.txt for more information.
+
+         If unsure, say N.
+
+menuconfig BUILD_DOCSRC
+       bool "Build targets in Documentation/ tree"
+       depends on HEADERS_CHECK
+       help
+         This option attempts to build objects from the source files in the
+         kernel Documentation/ tree.
+
+         Say N if you are unsure.
+
+config DYNAMIC_PRINTK_DEBUG
+       bool "Enable dynamic printk() call support"
+       default n
+       depends on PRINTK
+       select PRINTK_DEBUG
+       help
+
+         Compiles debug level messages into the kernel, which would not
+         otherwise be available at runtime. These messages can then be
+         enabled/disabled on a per module basis. This mechanism implicitly
+         enables all pr_debug() and dev_dbg() calls. The impact of this
+         compile option is a larger kernel text size of about 2%.
+
+         Usage:
+
+         Dynamic debugging is controlled by the debugfs file,
+         dynamic_printk/modules. This file contains a list of the modules that
+         can be enabled. The format of the file is the module name, followed
+         by a set of flags that can be enabled. The first flag is always the
+         'enabled' flag. For example:
+
+               <module_name> <enabled=0/1>
+                               .
+                               .
+                               .
+
+         <module_name> : Name of the module in which the debug call resides
+         <enabled=0/1> : whether the messages are enabled or not
+
+         From a live system:
+
+               snd_hda_intel enabled=0
+               fixup enabled=0
+               driver enabled=0
+
+         Enable a module:
+
+               $echo "set enabled=1 <module_name>" > dynamic_printk/modules
+
+         Disable a module:
+
+               $echo "set enabled=0 <module_name>" > dynamic_printk/modules
+
+         Enable all modules:
+
+               $echo "set enabled=1 all" > dynamic_printk/modules
+
+         Disable all modules:
+
+               $echo "set enabled=0 all" > dynamic_printk/modules
+
+         Finally, passing "dynamic_printk" at the command line enables
+         debugging for all modules. This mode can be turned off via the above
+         disable command.
+
+source "samples/Kconfig"
+
+source "lib/Kconfig.kgdb"