Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[pandora-kernel.git] / lib / Kconfig.debug
index 16c2e98..8fd2dbf 100644 (file)
@@ -8,6 +8,13 @@ config PRINTK_TIME
          operations.  This is useful for identifying long delays
          in kernel startup.
 
+config ENABLE_MUST_CHECK
+       bool "Enable __must_check logic"
+       default y
+       help
+         Enable the __must_check logic in the kernel build.  Disable this to
+         suppress the "warning: ignoring return value of 'foo', declared with
+         attribute warn_unused_result" messages.
 
 config MAGIC_SYSRQ
        bool "Magic SysRq key"
@@ -64,7 +71,7 @@ config LOG_BUF_SHIFT
 
 config DETECT_SOFTLOCKUP
        bool "Detect Soft Lockups"
-       depends on DEBUG_KERNEL
+       depends on DEBUG_KERNEL && !S390
        default y
        help
          Say Y here to enable the kernel to detect "soft lockups",
@@ -134,7 +141,7 @@ config RT_MUTEX_TESTER
          This option enables a rt-mutex tester.
 
 config DEBUG_SPINLOCK
-       bool "Spinlock debugging"
+       bool "Spinlock and rw-lock debugging: basic checks"
        depends on DEBUG_KERNEL
        help
          Say Y here and build SMP to catch missing spinlock initialization
@@ -142,8 +149,103 @@ config DEBUG_SPINLOCK
          best used in conjunction with the NMI watchdog so that spinlock
          deadlocks are also debuggable.
 
+config DEBUG_MUTEXES
+       bool "Mutex debugging: basic checks"
+       depends on DEBUG_KERNEL
+       help
+        This feature allows mutex semantics violations to be detected and
+        reported.
+
+config DEBUG_RWSEMS
+       bool "RW-sem debugging: basic checks"
+       depends on DEBUG_KERNEL
+       help
+        This feature allows read-write semaphore semantics violations to
+        be detected and reported.
+
+config DEBUG_LOCK_ALLOC
+       bool "Lock debugging: detect incorrect freeing of live locks"
+       depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+       select DEBUG_SPINLOCK
+       select DEBUG_MUTEXES
+       select DEBUG_RWSEMS
+       select LOCKDEP
+       help
+        This feature will check whether any held lock (spinlock, rwlock,
+        mutex or rwsem) is incorrectly freed by the kernel, via any of the
+        memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
+        vfree(), etc.), whether a live lock is incorrectly reinitialized via
+        spin_lock_init()/mutex_init()/etc., or whether there is any lock
+        held during task exit.
+
+config PROVE_LOCKING
+       bool "Lock debugging: prove locking correctness"
+       depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+       select LOCKDEP
+       select DEBUG_SPINLOCK
+       select DEBUG_MUTEXES
+       select DEBUG_RWSEMS
+       select DEBUG_LOCK_ALLOC
+       default n
+       help
+        This feature enables the kernel to prove that all locking
+        that occurs in the kernel runtime is mathematically
+        correct: that under no circumstance could an arbitrary (and
+        not yet triggered) combination of observed locking
+        sequences (on an arbitrary number of CPUs, running an
+        arbitrary number of tasks and interrupt contexts) cause a
+        deadlock.
+
+        In short, this feature enables the kernel to report locking
+        related deadlocks before they actually occur.
+
+        The proof does not depend on how hard and complex a
+        deadlock scenario would be to trigger: how many
+        participant CPUs, tasks and irq-contexts would be needed
+        for it to trigger. The proof also does not depend on
+        timing: if a race and a resulting deadlock is possible
+        theoretically (no matter how unlikely the race scenario
+        is), it will be proven so and will immediately be
+        reported by the kernel (once the event is observed that
+        makes the deadlock theoretically possible).
+
+        If a deadlock is impossible (i.e. the locking rules, as
+        observed by the kernel, are mathematically correct), the
+        kernel reports nothing.
+
+        NOTE: this feature can also be enabled for rwlocks, mutexes
+        and rwsems - in which case all dependencies between these
+        different locking variants are observed and mapped too, and
+        the proof of observed correctness is also maintained for an
+        arbitrary combination of these separate locking variants.
+
+        For more details, see Documentation/lockdep-design.txt.
+
+config LOCKDEP
+       bool
+       depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+       select STACKTRACE
+       select FRAME_POINTER if !X86
+       select KALLSYMS
+       select KALLSYMS_ALL
+
+config DEBUG_LOCKDEP
+       bool "Lock dependency engine debugging"
+       depends on DEBUG_KERNEL && LOCKDEP
+       help
+         If you say Y here, the lock dependency engine will do
+         additional runtime checks to debug itself, at the price
+         of more runtime overhead.
+
+config TRACE_IRQFLAGS
+       depends on DEBUG_KERNEL
+       bool
+       default y
+       depends on TRACE_IRQFLAGS_SUPPORT
+       depends on PROVE_LOCKING
+
 config DEBUG_SPINLOCK_SLEEP
-       bool "Sleep-inside-spinlock checking"
+       bool "Spinlock debugging: sleep-inside-spinlock checking"
        depends on DEBUG_KERNEL
        help
          If you say Y here, various routines which may sleep will become very
@@ -162,6 +264,7 @@ config DEBUG_LOCKING_API_SELFTESTS
 
 config STACKTRACE
        bool
+       depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
 
 config DEBUG_KOBJECT
@@ -181,7 +284,7 @@ config DEBUG_HIGHMEM
 config DEBUG_BUGVERBOSE
        bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED
        depends on BUG
-       depends on ARM || ARM26 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV
+       depends on ARM || ARM26 || AVR32 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV || SUPERH
        default !EMBEDDED
        help
          Say Y here to make BUG() panics output the file name and line number
@@ -217,9 +320,18 @@ config DEBUG_VM
 
          If unsure, say N.
 
+config DEBUG_LIST
+       bool "Debug linked list manipulation"
+       depends on DEBUG_KERNEL
+       help
+         Enable this to turn on extended checks in the linked-list
+         walking routines.
+
+         If unsure, say N.
+
 config FRAME_POINTER
        bool "Compile the kernel with frame pointers"
-       depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390)
+       depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || AVR32 || SUPERH)
        default y if DEBUG_INFO && UML
        help
          If you say Y here the resulting kernel image will be slightly larger
@@ -259,6 +371,19 @@ config FORCED_INLINING
          become the default in the future, until then this option is there to
          test gcc for this.
 
+config HEADERS_CHECK
+       bool "Run 'make headers_check' when building vmlinux"
+       help
+         This option will extract the user-visible kernel headers whenever
+         building the kernel, and will run basic sanity checks on them to
+         ensure that exported files do not attempt to include files which
+         were not exported, etc.
+
+         If you're making modifications to header files which are
+         relevant for userspace, say 'Y', and check the headers
+         exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
+         your build tree), to make sure they're suitable.
+
 config RCU_TORTURE_TEST
        tristate "torture tests for RCU"
        depends on DEBUG_KERNEL
@@ -272,3 +397,17 @@ config RCU_TORTURE_TEST
          at boot time (you probably don't).
          Say M if you want the RCU torture tests to build as a module.
          Say N if you are unsure.
+
+config LKDTM
+       tristate "Linux Kernel Dump Test Tool Module"
+       depends on KPROBES
+       default n
+       help
+       This module enables testing of the different dumping mechanisms by
+       inducing system failures at predefined crash points.
+       If you don't need it: say N
+       Choose M here to compile this code as a module. The module will be
+       called lkdtm.
+
+       Documentation on how to use the module can be found in
+       drivers/misc/lkdtm.c