Skip to contentSkip to conversation

consolidate per-arch stack overflow debugging options

PATCH In review Dave Hansen 4 participants 5 messages Jan 11, 2013 – Jan 14, 2013

Subsystems (5)
x86 PowerPC Library code MIPS +1 more subsystems
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 consolidate per-arch stack overflow debugging options

I'm looking for some Acked-bys on this from the various arch maintainers that it affects. I'd like to send it up to Linus in the next merge window. This is part of a larger series to clean up the "Kernel Hacking" menu:

	https://lkml.org/lkml/2012/12/17/306

--

Several architectures have similar stack debugging config options. They all pretty much do the same thing, some with slightly differing help text.

This patch changes the architectures to instead enable a Kconfig boolean, and then use that boolean in the generic Kconfig.debug to present the actual menu option. This removes a bunch of duplication and adds consistency across arches.

Cc Mike Frysinger <[email protected]>
Cc David Howells <[email protected]>
Cc Hirokazu Takata <[email protected]>
Cc Ralf Baechle <[email protected]>
Cc Koichi Yasutake <[email protected]>
Cc Benjamin Herrenschmidt <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Chris Metcalf <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc H. Peter Anvin <[email protected]>

---

 linux-2.6.git-dave/arch/blackfin/Kconfig       |    1 +
 linux-2.6.git-dave/arch/blackfin/Kconfig.debug |    7 -------
 linux-2.6.git-dave/arch/frv/Kconfig            |    1 +
 linux-2.6.git-dave/arch/frv/Kconfig.debug      |    4 ----
 linux-2.6.git-dave/arch/m32r/Kconfig           |    1 +
 linux-2.6.git-dave/arch/m32r/Kconfig.debug     |    7 -------
 linux-2.6.git-dave/arch/mips/Kconfig           |    1 +
 linux-2.6.git-dave/arch/mips/Kconfig.debug     |    9 ---------
 linux-2.6.git-dave/arch/mn10300/Kconfig        |    1 +
 linux-2.6.git-dave/arch/mn10300/Kconfig.debug  |    4 ----
 linux-2.6.git-dave/arch/powerpc/Kconfig        |    1 +
 linux-2.6.git-dave/arch/powerpc/Kconfig.debug  |    7 -------
 linux-2.6.git-dave/arch/tile/Kconfig           |    1 +
 linux-2.6.git-dave/arch/tile/Kconfig.debug     |    7 -------
 linux-2.6.git-dave/arch/x86/Kconfig            |    1 +
 linux-2.6.git-dave/arch/x86/Kconfig.debug      |   10 ----------
 linux-2.6.git-dave/lib/Kconfig.debug           |   21 +++++++++++++++++++++
 17 files changed, 29 insertions(+), 55 deletions(-)
arch/blackfin/Kconfig renamed from arch/blackfin/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/blackfin/Kconfig~consolidat-stack-debugging-configs arch/blackfin/Kconfig
@@ -45,6 +45,7 @@ config BLACKFIN
 	select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS
 	select HAVE_MOD_ARCH_SPECIFIC
 	select MODULES_USE_ELF_RELA
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config GENERIC_CSUM
 	def_bool y
arch/blackfin/Kconfig.debug renamed from arch/blackfin/Kconfig.debug~consolidat-stack-debugging-configs +0 -7
diff -puN arch/blackfin/Kconfig.debug~consolidat-stack-debugging-configs arch/blackfin/Kconfig.debug
@@ -2,13 +2,6 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	help
-	  This option will cause messages to be printed if free stack space
-	  drops below a certain limit.
-
 config DEBUG_VERBOSE
 	bool "Verbose fault messages"
 	default y
arch/frv/Kconfig renamed from arch/frv/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/frv/Kconfig~consolidat-stack-debugging-configs arch/frv/Kconfig
@@ -12,6 +12,7 @@ config FRV
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_CPU_DEVICES
 	select ARCH_WANT_IPC_PARSE_VERSION
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config ZONE_DMA
 	bool
arch/frv/Kconfig.debug renamed from arch/frv/Kconfig.debug~consolidat-stack-debugging-configs +0 -4
diff -puN arch/frv/Kconfig.debug~consolidat-stack-debugging-configs arch/frv/Kconfig.debug
@@ -2,10 +2,6 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-
 config GDBSTUB
 	bool "Remote GDB kernel debugging"
 	depends on DEBUG_KERNEL
arch/m32r/Kconfig renamed from arch/m32r/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/m32r/Kconfig~consolidat-stack-debugging-configs arch/m32r/Kconfig
@@ -15,6 +15,7 @@ config M32R
 	select GENERIC_ATOMIC64
 	select ARCH_USES_GETTIMEOFFSET
 	select MODULES_USE_ELF_RELA
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config SBUS
 	bool
arch/m32r/Kconfig.debug renamed from arch/m32r/Kconfig.debug~consolidat-stack-debugging-configs +0 -7
diff -puN arch/m32r/Kconfig.debug~consolidat-stack-debugging-configs arch/m32r/Kconfig.debug
@@ -2,13 +2,6 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	help
-	  This option will cause messages to be printed if free stack space
-	  drops below a certain limit.
-
 config DEBUG_PAGEALLOC
 	bool "Debug page memory allocations"
 	depends on DEBUG_KERNEL && BROKEN
arch/mips/Kconfig renamed from arch/mips/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/mips/Kconfig~consolidat-stack-debugging-configs arch/mips/Kconfig
@@ -41,6 +41,7 @@ config MIPS
 	select HAVE_MOD_ARCH_SPECIFIC
 	select MODULES_USE_ELF_REL if MODULES
 	select MODULES_USE_ELF_RELA if MODULES && 64BIT
+	select HAVE_DEBUG_STACKOVERFLOW
 
 menu "Machine selection"
 
arch/mips/Kconfig.debug renamed from arch/mips/Kconfig.debug~consolidat-stack-debugging-configs +0 -9
diff -puN arch/mips/Kconfig.debug~consolidat-stack-debugging-configs arch/mips/Kconfig.debug
@@ -67,15 +67,6 @@ config CMDLINE_OVERRIDE
 
 	  Normally, you will choose 'N' here.
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	help
-	  This option will cause messages to be printed if free stack space
-	  drops below a certain limit(2GB on MIPS). The debugging option
-	  provides another way to check stack overflow happened on kernel mode
-	  stack usually caused by nested interruption.
-
 config SMTC_IDLE_HOOK_DEBUG
 	bool "Enable additional debug checks before going into CPU idle loop"
 	depends on DEBUG_KERNEL && MIPS_MT_SMTC
arch/mn10300/Kconfig renamed from arch/mn10300/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/mn10300/Kconfig~consolidat-stack-debugging-configs arch/mn10300/Kconfig
@@ -9,6 +9,7 @@ config MN10300
 	select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
 	select GENERIC_CLOCKEVENTS
 	select MODULES_USE_ELF_RELA
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config AM33_2
 	def_bool n
arch/mn10300/Kconfig.debug renamed from arch/mn10300/Kconfig.debug~consolidat-stack-debugging-configs +0 -4
diff -puN arch/mn10300/Kconfig.debug~consolidat-stack-debugging-configs arch/mn10300/Kconfig.debug
@@ -2,10 +2,6 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-
 config DEBUG_DECOMPRESS_KERNEL
 	bool "Using serial port during decompressing kernel"
 	depends on DEBUG_KERNEL
arch/powerpc/Kconfig renamed from arch/powerpc/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/powerpc/Kconfig~consolidat-stack-debugging-configs arch/powerpc/Kconfig
@@ -144,6 +144,7 @@ config PPC
 	select HAVE_MOD_ARCH_SPECIFIC
 	select MODULES_USE_ELF_RELA
 	select CLONE_BACKWARDS
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config EARLY_PRINTK
 	bool
arch/powerpc/Kconfig.debug renamed from arch/powerpc/Kconfig.debug~consolidat-stack-debugging-configs +0 -7
diff -puN arch/powerpc/Kconfig.debug~consolidat-stack-debugging-configs arch/powerpc/Kconfig.debug
@@ -28,13 +28,6 @@ config PRINT_STACK_DEPTH
 	  too small and stack traces cause important information to
 	  scroll off the screen.
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	help
-	  This option will cause messages to be printed if free stack space
-	  drops below a certain limit.
-
 config HCALL_STATS
 	bool "Hypervisor call instrumentation"
 	depends on PPC_PSERIES && DEBUG_FS && TRACEPOINTS
arch/tile/Kconfig renamed from arch/tile/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/tile/Kconfig~consolidat-stack-debugging-configs arch/tile/Kconfig
@@ -21,6 +21,7 @@ config TILE
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_CLOCKEVENTS
 	select MODULES_USE_ELF_RELA
+	select HAVE_DEBUG_STACKOVERFLOW
 
 # FIXME: investigate whether we need/want these options.
 #	select HAVE_IOREMAP_PROT
arch/tile/Kconfig.debug renamed from arch/tile/Kconfig.debug~consolidat-stack-debugging-configs +0 -7
diff -puN arch/tile/Kconfig.debug~consolidat-stack-debugging-configs arch/tile/Kconfig.debug
@@ -14,13 +14,6 @@ config EARLY_PRINTK
 	  with klogd/syslogd. You should normally N here,
 	  unless you want to debug such a crash.
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	help
-	  This option will cause messages to be printed if free stack space
-	  drops below a certain limit.
-
 config DEBUG_EXTRA_FLAGS
 	string "Additional compiler arguments when building with '-g'"
 	depends on DEBUG_INFO
arch/x86/Kconfig renamed from arch/x86/Kconfig~consolidat-stack-debugging-configs +1 -0
diff -puN arch/x86/Kconfig~consolidat-stack-debugging-configs arch/x86/Kconfig
@@ -114,6 +114,7 @@ config X86
 	select MODULES_USE_ELF_RELA if X86_64
 	select CLONE_BACKWARDS if X86_32
 	select GENERIC_SIGALTSTACK
+	select HAVE_DEBUG_STACKOVERFLOW
 
 config INSTRUCTION_DECODER
 	def_bool y
arch/x86/Kconfig.debug renamed from arch/x86/Kconfig.debug~consolidat-stack-debugging-configs +0 -10
diff -puN arch/x86/Kconfig.debug~consolidat-stack-debugging-configs arch/x86/Kconfig.debug
@@ -59,16 +59,6 @@ config EARLY_PRINTK_DBGP
 	  with klogd/syslogd or the X server. You should normally N here,
 	  unless you want to debug such a crash. You need usb debug device.
 
-config DEBUG_STACKOVERFLOW
-	bool "Check for stack overflows"
-	depends on DEBUG_KERNEL
-	---help---
-	  Say Y here if you want to check the overflows of kernel, IRQ
-	  and exception stacks. This option will cause messages of the
-	  stacks in detail when free stack space drops below a certain
-	  limit.
-	  If in doubt, say "N".
-
 config X86_PTDUMP
 	bool "Export kernel pagetable layout to userspace via debugfs"
 	depends on DEBUG_KERNEL
lib/Kconfig.debug renamed from lib/Kconfig.debug~consolidat-stack-debugging-configs +21 -0
diff -puN lib/Kconfig.debug~consolidat-stack-debugging-configs lib/Kconfig.debug
@@ -1441,6 +1441,27 @@ config ASYNC_RAID6_TEST
 
 	  If unsure, say N.
 
+config HAVE_DEBUG_STACKOVERFLOW
+	bool
+
+config DEBUG_STACKOVERFLOW
+	bool "Check for stack overflows"
+	depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
+	---help---
+	  Say Y here if you want to check for overflows of kernel, IRQ
+	  and exception stacks (if your archicture uses them). This
+	  option will show detailed messages if free stack space drops
+	  below a certain limit.
+
+	  These kinds of bugs usually occur when call-chains in the
+	  kernel get too deep, especially when interrupts are
+	  involved.
+
+	  Use this in cases where you see apparently random memory
+	  corruption, especially if it appears in 'struct thread_info'
+
+	  If in doubt, say "N".
+
 source "samples/Kconfig"
 
 source "lib/Kconfig.kgdb"

_

Reviewed-by on v1 1/1
#1 lore raw
Quoted 19 lines · Dave Hansen

I'm looking for some Acked-bys on this from the various arch maintainers that it affects. I'd like to send it up to Linus in the next merge window. This is part of a larger series to clean up the "Kernel Hacking" menu:

	https://lkml.org/lkml/2012/12/17/306

--

Several architectures have similar stack debugging config options. They all pretty much do the same thing, some with slightly differing help text.

This patch changes the architectures to instead enable a Kconfig boolean, and then use that boolean in the generic Kconfig.debug to present the actual menu option. This removes a bunch of duplication and adds consistency across arches.

Quoted 14 lines
Cc Mike Frysinger <[email protected]>
Cc David Howells <[email protected]>
Cc Hirokazu Takata <[email protected]>
Cc Ralf Baechle <[email protected]>
Cc Koichi Yasutake <[email protected]>
Cc Benjamin Herrenschmidt <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Chris Metcalf <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc H. Peter Anvin <[email protected]>

(I can use this for arch/metag too).

Cheers
James

Acked-by on v1 1/1
#2 lore raw
In reply to Dave Hansen
Quoted 9 lines · Dave Hansen

I'm looking for some Acked-bys on this from the various arch maintainers that it affects. I'd like to send it up to Linus in the next merge window. This is part of a larger series to clean up the "Kernel Hacking" menu:

	https://lkml.org/lkml/2012/12/17/306

--

Quoted 9 lines

Several architectures have similar stack debugging config options. They all pretty much do the same thing, some with slightly differing help text.

This patch changes the architectures to instead enable a Kconfig boolean, and then use that boolean in the generic Kconfig.debug to present the actual menu option. This removes a bunch of duplication and adds consistency across arches.

Signature · 2 lines
Chris Metcalf, Tilera Corp.
http://www.tilera.com
#3 lore raw
In reply to Dave Hansen

Hi Dave,

Quoted 7 lines · On Fri, 11 Jan 2013 09:00:43 -0800 Dave Hansen <[email protected]> wrote:

I'm looking for some Acked-bys on this from the various arch maintainers that it affects. I'd like to send it up to Linus in the next merge window. This is part of a larger series to clean up the "Kernel Hacking" menu:

	https://lkml.org/lkml/2012/12/17/306

This should be added to linux-next soon, if possible. Either directly (if you have a tree I can fetch) or via some other maintainer's tree.

Signature · 2 lines
Cheers,
Stephen Rothwell                    [email protected]
#4 lore raw
Quoted 11 lines · Stephen Rothwell
Quoted 7 lines · On Fri, 11 Jan 2013 09:00:43 -0800 Dave Hansen <[email protected]> wrote:

I'm looking for some Acked-bys on this from the various arch maintainers that it affects. I'd like to send it up to Linus in the next merge window. This is part of a larger series to clean up the "Kernel Hacking" menu:

	https://lkml.org/lkml/2012/12/17/306

This should be added to linux-next soon, if possible. Either directly (if you have a tree I can fetch) or via some other maintainer's tree.

Hi Stephen,

I've got it stashed in here for the moment:

https://github.com/hansendc/linux/tree/kconfig-reorg

It was forked off 3.8-rc2.