KCONFIG: With a simple menuconfig, kernel debugging is prettier.
PATCH 1/1 KCONFIG: With a simple menuconfig, kernel debugging is prettier.
Implementing kernel debugging with a menuconfig allows for the removal of a pile of unnecessary dependencies.
---
lib/Kconfig.debug +49 -63
@@ -114,15 +114,17 @@ config DEBUG_SECTION_MISMATCH - Enable verbose reporting from modpost to help solving the section mismatches reported. -config DEBUG_KERNEL +menuconfig DEBUG_KERNEL bool "Kernel debugging" help Say Y here if you are developing drivers or trying to debug and identify kernel problems. +if DEBUG_KERNEL + config DEBUG_SHIRQ bool "Debug shared IRQ handlers" - depends on DEBUG_KERNEL && GENERIC_HARDIRQS + depends on GENERIC_HARDIRQS help Enable this to generate a spurious interrupt as soon as a shared interrupt handler is registered, and just before one is deregistered.
@@ -131,7 +133,7 @@ config DEBUG_SHIRQ config DETECT_SOFTLOCKUP bool "Detect Soft Lockups" - depends on DEBUG_KERNEL && !S390 + depends on !S390 default y help Say Y here to enable the kernel to detect "soft lockups",
@@ -150,7 +152,7 @@ config DETECT_SOFTLOCKUP config SCHED_DEBUG bool "Collect scheduler debugging info" - depends on DEBUG_KERNEL && PROC_FS + depends on PROC_FS default y help If you say Y here, the /proc/sched_debug file will be provided
@@ -159,7 +161,7 @@ config SCHED_DEBUG config SCHEDSTATS bool "Collect scheduler statistics" - depends on DEBUG_KERNEL && PROC_FS + depends on PROC_FS help If you say Y here, additional code will be inserted into the scheduler and related routines to collect statistics about
@@ -171,7 +173,7 @@ config SCHEDSTATS config TIMER_STATS bool "Collect kernel timers statistics" - depends on DEBUG_KERNEL && PROC_FS + depends on PROC_FS help If you say Y here, additional code will be inserted into the timer routines to collect statistics about kernel timers being
@@ -185,7 +187,7 @@ config TIMER_STATS config DEBUG_SLAB bool "Debug slab memory allocations" - depends on DEBUG_KERNEL && SLAB + depends on SLAB help Say Y here to have the kernel do limited verification on memory allocation as well as poisoning memory on free to catch use of freed
@@ -195,35 +197,9 @@ config DEBUG_SLAB_LEAK bool "Memory leak debugging" depends on DEBUG_SLAB -config SLUB_DEBUG_ON - bool "SLUB debugging on by default" - depends on SLUB && SLUB_DEBUG - default n - help - Boot with debugging on by default. SLUB boots by default with - the runtime debug capabilities switched off. Enabling this is - equivalent to specifying the "slub_debug" parameter on boot. - There is no support for more fine grained debug control like - possible with slub_debug=xxx. SLUB debugging may be switched - 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 || PPC64) + depends on PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64) default y help If you say Y here then the kernel will use a debug variant of the
@@ -233,7 +209,7 @@ config DEBUG_PREEMPT config DEBUG_RT_MUTEXES bool "RT Mutex debugging, deadlock detection" - depends on DEBUG_KERNEL && RT_MUTEXES + depends on RT_MUTEXES help This allows rt mutex semantics violations and rt mutex related deadlocks (lockups) to be detected and reported automatically.
@@ -245,13 +221,12 @@ config DEBUG_PI_LIST config RT_MUTEX_TESTER bool "Built-in scriptable tester for rt-mutexes" - depends on DEBUG_KERNEL && RT_MUTEXES + depends on RT_MUTEXES help This option enables a rt-mutex tester. config DEBUG_SPINLOCK bool "Spinlock and rw-lock debugging: basic checks" - depends on DEBUG_KERNEL help Say Y here and build SMP to catch missing spinlock initialization and certain other kinds of spinlock errors commonly made. This is
@@ -260,14 +235,13 @@ config DEBUG_SPINLOCK 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_LOCK_ALLOC bool "Lock debugging: detect incorrect freeing of live locks" - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT + depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT select DEBUG_SPINLOCK select DEBUG_MUTEXES select LOCKDEP
@@ -281,7 +255,7 @@ config DEBUG_LOCK_ALLOC config PROVE_LOCKING bool "Lock debugging: prove locking correctness" - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT + depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES
@@ -323,7 +297,7 @@ config PROVE_LOCKING config LOCKDEP bool - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT + depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT select STACKTRACE select FRAME_POINTER if !X86 && !MIPS select KALLSYMS
@@ -331,7 +305,7 @@ config LOCKDEP config LOCK_STAT bool "Lock usage statistics" - depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT + depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT select LOCKDEP select DEBUG_SPINLOCK select DEBUG_MUTEXES
@@ -344,14 +318,13 @@ config LOCK_STAT config DEBUG_LOCKDEP bool "Lock dependency engine debugging" - depends on DEBUG_KERNEL && LOCKDEP + depends on 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
@@ -359,14 +332,12 @@ config TRACE_IRQFLAGS config DEBUG_SPINLOCK_SLEEP 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 noisy if they are called with a spinlock held. config DEBUG_LOCKING_API_SELFTESTS bool "Locking API boot-time self-tests" - depends on DEBUG_KERNEL help Say Y here if you want the kernel to run a short self-test during bootup. The self-test checks whether common types of locking bugs
@@ -377,25 +348,23 @@ config DEBUG_LOCKING_API_SELFTESTS config STACKTRACE bool - depends on DEBUG_KERNEL depends on STACKTRACE_SUPPORT config DEBUG_KOBJECT bool "kobject debugging" - depends on DEBUG_KERNEL help If you say Y here, some extra kobject debugging messages will be sent to the syslog. config DEBUG_HIGHMEM bool "Highmem debugging" - depends on DEBUG_KERNEL && HIGHMEM + depends on HIGHMEM help This options enables addition error checking for high memory systems. Disable for production systems. config DEBUG_BUGVERBOSE - bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED + bool "Verbose BUG() reporting (adds 70K)" if EMBEDDED depends on BUG depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300
@@ -407,7 +376,6 @@ config DEBUG_BUGVERBOSE config DEBUG_INFO bool "Compile the kernel with debug info" - depends on DEBUG_KERNEL help If you say Y here the resulting kernel image will include debugging info resulting in a larger kernel image.
@@ -420,7 +388,6 @@ config DEBUG_INFO config DEBUG_VM bool "Debug VM" - depends on DEBUG_KERNEL help Enable this to turn on extended checks in the virtual-memory system that may impact performance.
@@ -429,7 +396,6 @@ config DEBUG_VM 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
@@ -439,7 +405,6 @@ config DEBUG_WRITECOUNT 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.
@@ -448,7 +413,6 @@ config DEBUG_LIST 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
@@ -458,8 +422,7 @@ config DEBUG_SG config FRAME_POINTER bool "Compile the kernel with frame pointers" - depends on DEBUG_KERNEL && \ - (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ + depends on (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ AVR32 || SUPERH || BLACKFIN || MN10300) default y if DEBUG_INFO && UML help
@@ -470,7 +433,7 @@ config FRAME_POINTER config BOOT_PRINTK_DELAY bool "Delay each boot printk message by N milliseconds" - depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY + depends on 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
@@ -488,7 +451,6 @@ config BOOT_PRINTK_DELAY config RCU_TORTURE_TEST tristate "torture tests for RCU" - depends on DEBUG_KERNEL depends on m default n help
@@ -501,7 +463,6 @@ config RCU_TORTURE_TEST config KPROBES_SANITY_TEST bool "Kprobes sanity tests" - depends on DEBUG_KERNEL depends on KPROBES default n help
@@ -513,7 +474,6 @@ config KPROBES_SANITY_TEST 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
@@ -525,7 +485,6 @@ config BACKTRACE_SELF_TEST config LKDTM tristate "Linux Kernel Dump Test Tool Module" - depends on DEBUG_KERNEL depends on KPROBES depends on BLOCK default n
@@ -541,7 +500,6 @@ config LKDTM config FAULT_INJECTION bool "Fault-injection framework" - depends on DEBUG_KERNEL help Provide fault-injection framework. For more details, see Documentation/fault-injection/.
@@ -579,6 +537,34 @@ config FAULT_INJECTION_STACKTRACE_FILTER help Provide stacktrace filter for fault-injection capabilities +endif # DEBUG_KERNEL + +config SLUB_DEBUG_ON + bool "SLUB debugging on by default" + depends on SLUB && SLUB_DEBUG + default n + help + Boot with debugging on by default. SLUB boots by default with + the runtime debug capabilities switched off. Enabling this is + equivalent to specifying the "slub_debug" parameter on boot. + There is no support for more fine grained debug control like + possible with slub_debug=xxx. SLUB debugging may be switched + 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 LATENCYTOP bool "Latency measuring infrastructure" select FRAME_POINTER if !MIPS
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry:
Have classroom, will lecture.
http://crashcourse.ca Waterloo, Ontario, CANADA
========================================================================
Andrew Morton
maintainerQuoted 2 lines · On Thu, 24 Apr 2008 19:31:26 -0400 (EDT) "Robert P. J. Day"…
Implementing kernel debugging with a menuconfig allows for the removal of a pile of unnecessary dependencies.
Kconfig.debug | 112 +++++++++++++++++++++++++--------------------------------- 1 file changed, 49 insertions(+), 63 deletions(-)
I'm afraid,
akpm:/usr/src/25> grep -l lib/Kconfig.debug pc/*.pc pc/documentation-build-source-files-in-documentation-sub-dir-disable.pc pc/documentation-build-source-files-in-documentation-sub-dir.pc pc/git-sched.pc
pc/git-x86-latest.pc
pc/linux-next.pc
pc/make-frame_pointer-default=y.pc pc/mm-add-a-basic-debugging-framework-for-memory-initialisation.pc pc/mutex-subsystem-synchro-test-module.pc pc/page-owner-tracking-leak-detector.pc pc/profile-likely-unlikely-macros.pc pc/slab-leaks3-default-y.pc
that our chances of finding a window in which to merge this patch are pretty darn small.
Quoted 24 lines · Andrew Morton
Quoted 2 lines · On Thu, 24 Apr 2008 19:31:26 -0400 (EDT) "Robert P. J. Day"…
Implementing kernel debugging with a menuconfig allows for the removal of a pile of unnecessary dependencies.
Kconfig.debug | 112 +++++++++++++++++++++++++--------------------------------- 1 file changed, 49 insertions(+), 63 deletions(-)I'm afraid,
akpm:/usr/src/25> grep -l
lib/Kconfig.debugpc/*.pc pc/documentation-build-source-files-in-documentation-sub-dir-disable.pc pc/documentation-build-source-files-in-documentation-sub-dir.pc pc/git-sched.pc
pc/git-x86-latest.pc
pc/linux-next.pc
pc/make-frame_pointer-default=y.pc pc/mm-add-a-basic-debugging-framework-for-memory-initialisation.pc pc/mutex-subsystem-synchro-test-module.pc pc/page-owner-tracking-leak-detector.pc pc/profile-likely-unlikely-macros.pc pc/slab-leaks3-default-y.pc
Quoted 2 lines
that our chances of finding a window in which to merge this patch are pretty darn small.
fair enough, but is there any sort of reorg that can be done with the kernel debugging menu? it really is getting a bit out of hand. at the very least, could it be collected into related categories?
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry:
Have classroom, will lecture.
http://crashcourse.ca Waterloo, Ontario, CANADA
========================================================================