Merge tag 'metag-for-v3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan...
[cascardo/linux.git] / lib / Kconfig.debug
index c0d41df..88c8d98 100644 (file)
@@ -1,3 +1,4 @@
+menu "printk and dmesg options"
 
 config PRINTK_TIME
        bool "Show timing information on printks"
@@ -25,6 +26,95 @@ config DEFAULT_MESSAGE_LOGLEVEL
          that are auditing their logs closely may want to set it to a lower
          priority.
 
+config BOOT_PRINTK_DELAY
+       bool "Delay each boot printk message by N milliseconds"
+       depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
+       help
+         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 LOCKUP_DETECTOR to detect
+         what it believes to be lockup conditions.
+
+config DYNAMIC_DEBUG
+       bool "Enable dynamic printk() support"
+       default n
+       depends on PRINTK
+       depends on DEBUG_FS
+       help
+
+         Compiles debug level messages into the kernel, which would not
+         otherwise be available at runtime. These messages can then be
+         enabled/disabled based on various levels of scope - per source file,
+         function, module, format string, and line number. This mechanism
+         implicitly compiles in all pr_debug() and dev_dbg() calls, which
+         enlarges the kernel text size by about 2%.
+
+         If a source file is compiled with DEBUG flag set, any
+         pr_debug() calls in it are enabled by default, but can be
+         disabled at runtime as below.  Note that DEBUG flag is
+         turned on by many CONFIG_*DEBUG* options.
+
+         Usage:
+
+         Dynamic debugging is controlled via the 'dynamic_debug/control' file,
+         which is contained in the 'debugfs' filesystem. Thus, the debugfs
+         filesystem must first be mounted before making use of this feature.
+         We refer the control file as: <debugfs>/dynamic_debug/control. This
+         file contains a list of the debug statements that can be enabled. The
+         format for each line of the file is:
+
+               filename:lineno [module]function flags format
+
+         filename : source file of the debug statement
+         lineno : line number of the debug statement
+         module : module that contains the debug statement
+         function : function that contains the debug statement
+          flags : '=p' means the line is turned 'on' for printing
+          format : the format used for the debug statement
+
+         From a live system:
+
+               nullarbor:~ # cat <debugfs>/dynamic_debug/control
+               # filename:lineno [module]function flags format
+               fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
+               fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
+               fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
+
+         Example usage:
+
+               // enable the message at line 1603 of file svcsock.c
+               nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
+                                               <debugfs>/dynamic_debug/control
+
+               // enable all the messages in file svcsock.c
+               nullarbor:~ # echo -n 'file svcsock.c +p' >
+                                               <debugfs>/dynamic_debug/control
+
+               // enable all the messages in the NFS server module
+               nullarbor:~ # echo -n 'module nfsd +p' >
+                                               <debugfs>/dynamic_debug/control
+
+               // enable all 12 messages in the function svc_process()
+               nullarbor:~ # echo -n 'func svc_process +p' >
+                                               <debugfs>/dynamic_debug/control
+
+               // disable all 12 messages in the function svc_process()
+               nullarbor:~ # echo -n 'func svc_process -p' >
+                                               <debugfs>/dynamic_debug/control
+
+         See Documentation/dynamic-debug-howto.txt for additional information.
+
+endmenu # "printk and dmesg options"
+
 menu "Compile-time checks and compiler options"
 
 config DEBUG_INFO
@@ -514,6 +604,8 @@ config DEBUG_SHIRQ
          Drivers ought to be able to handle interrupts coming in at those
          points; some don't and need to be caught.
 
+menu "Debug Lockups and Hangs"
+
 config LOCKUP_DETECTOR
        bool "Detect Hard and Soft Lockups"
        depends on DEBUG_KERNEL && !S390
@@ -585,25 +677,6 @@ config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
        default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
        default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
 
-config PANIC_ON_OOPS
-       bool "Panic on Oops"
-       help
-         Say Y here to enable the kernel to panic when it oopses. This
-         has the same effect as setting oops=panic on the kernel command
-         line.
-
-         This feature is useful to ensure that the kernel does not do
-         anything erroneous after an oops which could result in data
-         corruption or other issues.
-
-         Say N if unsure.
-
-config PANIC_ON_OOPS_VALUE
-       int
-       range 0 1
-       default 0 if !PANIC_ON_OOPS
-       default 1 if PANIC_ON_OOPS
-
 config DETECT_HUNG_TASK
        bool "Detect Hung Tasks"
        depends on DEBUG_KERNEL
@@ -658,6 +731,27 @@ config BOOTPARAM_HUNG_TASK_PANIC_VALUE
        default 0 if !BOOTPARAM_HUNG_TASK_PANIC
        default 1 if BOOTPARAM_HUNG_TASK_PANIC
 
+endmenu # "Debug lockups and hangs"
+
+config PANIC_ON_OOPS
+       bool "Panic on Oops"
+       help
+         Say Y here to enable the kernel to panic when it oopses. This
+         has the same effect as setting oops=panic on the kernel command
+         line.
+
+         This feature is useful to ensure that the kernel does not do
+         anything erroneous after an oops which could result in data
+         corruption or other issues.
+
+         Say N if unsure.
+
+config PANIC_ON_OOPS_VALUE
+       int
+       range 0 1
+       default 0 if !PANIC_ON_OOPS
+       default 1 if PANIC_ON_OOPS
+
 config SCHED_DEBUG
        bool "Collect scheduler debugging info"
        depends on DEBUG_KERNEL && PROC_FS
@@ -740,6 +834,19 @@ config DEBUG_MUTEXES
         This feature allows mutex semantics violations to be detected and
         reported.
 
+config DEBUG_WW_MUTEX_SLOWPATH
+       bool "Wait/wound mutex debugging: Slowpath testing"
+       depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+       select DEBUG_LOCK_ALLOC
+       select DEBUG_SPINLOCK
+       select DEBUG_MUTEXES
+       help
+        This feature enables slowpath testing for w/w mutex users by
+        injecting additional -EDEADLK wound/backoff cases. Together with
+        the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
+        will test all possible w/w mutex interface abuse with the
+        exception of simply not acquiring all the required locks.
+
 config DEBUG_LOCK_ALLOC
        bool "Lock debugging: detect incorrect freeing of live locks"
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
@@ -940,24 +1047,6 @@ config DEBUG_CREDENTIALS
 
          If unsure, say N.
 
-config BOOT_PRINTK_DELAY
-       bool "Delay each boot printk message by N milliseconds"
-       depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
-       help
-         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 LOCKUP_DETECTOR to detect
-         what it believes to be lockup conditions.
-
 menu "RCU Debugging"
 
 config PROVE_RCU
@@ -1441,75 +1530,6 @@ config BUILD_DOCSRC
 
          Say N if you are unsure.
 
-config DYNAMIC_DEBUG
-       bool "Enable dynamic printk() support"
-       default n
-       depends on PRINTK
-       depends on DEBUG_FS
-       help
-
-         Compiles debug level messages into the kernel, which would not
-         otherwise be available at runtime. These messages can then be
-         enabled/disabled based on various levels of scope - per source file,
-         function, module, format string, and line number. This mechanism
-         implicitly compiles in all pr_debug() and dev_dbg() calls, which
-         enlarges the kernel text size by about 2%.
-
-         If a source file is compiled with DEBUG flag set, any
-         pr_debug() calls in it are enabled by default, but can be
-         disabled at runtime as below.  Note that DEBUG flag is
-         turned on by many CONFIG_*DEBUG* options.
-
-         Usage:
-
-         Dynamic debugging is controlled via the 'dynamic_debug/control' file,
-         which is contained in the 'debugfs' filesystem. Thus, the debugfs
-         filesystem must first be mounted before making use of this feature.
-         We refer the control file as: <debugfs>/dynamic_debug/control. This
-         file contains a list of the debug statements that can be enabled. The
-         format for each line of the file is:
-
-               filename:lineno [module]function flags format
-
-         filename : source file of the debug statement
-         lineno : line number of the debug statement
-         module : module that contains the debug statement
-         function : function that contains the debug statement
-          flags : '=p' means the line is turned 'on' for printing
-          format : the format used for the debug statement
-
-         From a live system:
-
-               nullarbor:~ # cat <debugfs>/dynamic_debug/control
-               # filename:lineno [module]function flags format
-               fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
-               fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
-               fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
-
-         Example usage:
-
-               // enable the message at line 1603 of file svcsock.c
-               nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
-                                               <debugfs>/dynamic_debug/control
-
-               // enable all the messages in file svcsock.c
-               nullarbor:~ # echo -n 'file svcsock.c +p' >
-                                               <debugfs>/dynamic_debug/control
-
-               // enable all the messages in the NFS server module
-               nullarbor:~ # echo -n 'module nfsd +p' >
-                                               <debugfs>/dynamic_debug/control
-
-               // enable all 12 messages in the function svc_process()
-               nullarbor:~ # echo -n 'func svc_process +p' >
-                                               <debugfs>/dynamic_debug/control
-
-               // disable all 12 messages in the function svc_process()
-               nullarbor:~ # echo -n 'func svc_process -p' >
-                                               <debugfs>/dynamic_debug/control
-
-         See Documentation/dynamic-debug-howto.txt for additional information.
-
 config DMA_API_DEBUG
        bool "Enable debugging of DMA-API usage"
        depends on HAVE_DMA_API_DEBUG