Commit d1a1dc0b authored by Dave Hansen's avatar Dave Hansen Committed by Linus Torvalds

consolidate per-arch stack overflow debugging options

Original posting:

	http://lkml.kernel.org/r/20121214184202.F54094D9@kernel.stglabs.ibm.com

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.
Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
Reviewed-by: default avatarH. Peter Anvin <hpa@zytor.com>
Reviewed-by: default avatarJames Hogan <james.hogan@imgtec.com>
Acked-by: Chris Metcalf <cmetcalf@tilera.com> [for tile]
Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8bb495e3
...@@ -34,6 +34,7 @@ config ARC ...@@ -34,6 +34,7 @@ config ARC
select OF select OF
select OF_EARLY_FLATTREE select OF_EARLY_FLATTREE
select PERF_USE_VMALLOC select PERF_USE_VMALLOC
select HAVE_DEBUG_STACKOVERFLOW
config SCHED_OMIT_FRAME_POINTER config SCHED_OMIT_FRAME_POINTER
def_bool y def_bool y
......
...@@ -15,13 +15,6 @@ config EARLY_PRINTK ...@@ -15,13 +15,6 @@ config EARLY_PRINTK
with klogd/syslogd or the X server. You should normally N here, with klogd/syslogd or the X server. You should normally N here,
unless you want to debug such a crash. 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 16KSTACKS config 16KSTACKS
bool "Use 16Kb for kernel stacks instead of 8Kb" bool "Use 16Kb for kernel stacks instead of 8Kb"
help help
......
...@@ -41,6 +41,7 @@ config BLACKFIN ...@@ -41,6 +41,7 @@ config BLACKFIN
select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select HAVE_DEBUG_STACKOVERFLOW
config GENERIC_CSUM config GENERIC_CSUM
def_bool y def_bool y
......
...@@ -2,13 +2,6 @@ menu "Kernel hacking" ...@@ -2,13 +2,6 @@ menu "Kernel hacking"
source "lib/Kconfig.debug" 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 config DEBUG_VERBOSE
bool "Verbose fault messages" bool "Verbose fault messages"
default y default y
......
...@@ -14,6 +14,7 @@ config FRV ...@@ -14,6 +14,7 @@ config FRV
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select OLD_SIGSUSPEND3 select OLD_SIGSUSPEND3
select OLD_SIGACTION select OLD_SIGACTION
select HAVE_DEBUG_STACKOVERFLOW
config ZONE_DMA config ZONE_DMA
bool bool
......
...@@ -2,10 +2,6 @@ menu "Kernel hacking" ...@@ -2,10 +2,6 @@ menu "Kernel hacking"
source "lib/Kconfig.debug" source "lib/Kconfig.debug"
config DEBUG_STACKOVERFLOW
bool "Check for stack overflows"
depends on DEBUG_KERNEL
config GDBSTUB config GDBSTUB
bool "Remote GDB kernel debugging" bool "Remote GDB kernel debugging"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -16,6 +16,7 @@ config M32R ...@@ -16,6 +16,7 @@ config M32R
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select ARCH_USES_GETTIMEOFFSET select ARCH_USES_GETTIMEOFFSET
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select HAVE_DEBUG_STACKOVERFLOW
config SBUS config SBUS
bool bool
......
...@@ -2,13 +2,6 @@ menu "Kernel hacking" ...@@ -2,13 +2,6 @@ menu "Kernel hacking"
source "lib/Kconfig.debug" 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 config DEBUG_PAGEALLOC
bool "Debug page memory allocations" bool "Debug page memory allocations"
depends on DEBUG_KERNEL && BROKEN depends on DEBUG_KERNEL && BROKEN
......
...@@ -30,6 +30,7 @@ config METAG ...@@ -30,6 +30,7 @@ config METAG
select OF select OF
select OF_EARLY_FLATTREE select OF_EARLY_FLATTREE
select SPARSE_IRQ select SPARSE_IRQ
select HAVE_DEBUG_STACKOVERFLOW
config STACKTRACE_SUPPORT config STACKTRACE_SUPPORT
def_bool y def_bool y
......
...@@ -6,13 +6,6 @@ config TRACE_IRQFLAGS_SUPPORT ...@@ -6,13 +6,6 @@ config TRACE_IRQFLAGS_SUPPORT
source "lib/Kconfig.debug" 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 4KSTACKS config 4KSTACKS
bool "Use 4Kb for kernel stacks instead of 8Kb" bool "Use 4Kb for kernel stacks instead of 8Kb"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -42,6 +42,7 @@ config MIPS ...@@ -42,6 +42,7 @@ config MIPS
select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_REL if MODULES
select MODULES_USE_ELF_RELA if MODULES && 64BIT select MODULES_USE_ELF_RELA if MODULES && 64BIT
select CLONE_BACKWARDS select CLONE_BACKWARDS
select HAVE_DEBUG_STACKOVERFLOW
menu "Machine selection" menu "Machine selection"
......
...@@ -67,15 +67,6 @@ config CMDLINE_OVERRIDE ...@@ -67,15 +67,6 @@ config CMDLINE_OVERRIDE
Normally, you will choose 'N' here. 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 config SMTC_IDLE_HOOK_DEBUG
bool "Enable additional debug checks before going into CPU idle loop" bool "Enable additional debug checks before going into CPU idle loop"
depends on DEBUG_KERNEL && MIPS_MT_SMTC depends on DEBUG_KERNEL && MIPS_MT_SMTC
......
...@@ -13,6 +13,7 @@ config MN10300 ...@@ -13,6 +13,7 @@ config MN10300
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select OLD_SIGSUSPEND3 select OLD_SIGSUSPEND3
select OLD_SIGACTION select OLD_SIGACTION
select HAVE_DEBUG_STACKOVERFLOW
config AM33_2 config AM33_2
def_bool n def_bool n
......
...@@ -2,10 +2,6 @@ menu "Kernel hacking" ...@@ -2,10 +2,6 @@ menu "Kernel hacking"
source "lib/Kconfig.debug" source "lib/Kconfig.debug"
config DEBUG_STACKOVERFLOW
bool "Check for stack overflows"
depends on DEBUG_KERNEL
config DEBUG_DECOMPRESS_KERNEL config DEBUG_DECOMPRESS_KERNEL
bool "Using serial port during decompressing kernel" bool "Using serial port during decompressing kernel"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -22,6 +22,7 @@ config OPENRISC ...@@ -22,6 +22,7 @@ config OPENRISC
select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNCPY_FROM_USER
select GENERIC_STRNLEN_USER select GENERIC_STRNLEN_USER
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select HAVE_DEBUG_STACKOVERFLOW
config MMU config MMU
def_bool y def_bool y
...@@ -128,16 +129,6 @@ config CMDLINE ...@@ -128,16 +129,6 @@ config CMDLINE
menu "Debugging options" menu "Debugging options"
config DEBUG_STACKOVERFLOW
bool "Check for kernel stack overflow"
default y
help
Make extra checks for space available on stack in some
critical functions. This will cause kernel to run a bit slower,
but will catch most of kernel stack overruns and exit gracefully.
Say Y if you are unsure.
config JUMP_UPON_UNHANDLED_EXCEPTION config JUMP_UPON_UNHANDLED_EXCEPTION
bool "Try to die gracefully" bool "Try to die gracefully"
default y default y
......
...@@ -27,6 +27,7 @@ config PARISC ...@@ -27,6 +27,7 @@ config PARISC
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select CLONE_BACKWARDS select CLONE_BACKWARDS
select TTY # Needed for pdc_cons.c select TTY # Needed for pdc_cons.c
select HAVE_DEBUG_STACKOVERFLOW
help help
The PA-RISC microprocessor is designed by Hewlett-Packard and used The PA-RISC microprocessor is designed by Hewlett-Packard and used
......
...@@ -13,14 +13,3 @@ config DEBUG_RODATA ...@@ -13,14 +13,3 @@ config DEBUG_RODATA
If in doubt, say "N". If in doubt, say "N".
endmenu endmenu
config DEBUG_STACKOVERFLOW
bool "Check for stack overflows"
default y
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".
...@@ -138,6 +138,7 @@ config PPC ...@@ -138,6 +138,7 @@ config PPC
select ARCH_USE_BUILTIN_BSWAP select ARCH_USE_BUILTIN_BSWAP
select OLD_SIGSUSPEND select OLD_SIGSUSPEND
select OLD_SIGACTION if PPC32 select OLD_SIGACTION if PPC32
select HAVE_DEBUG_STACKOVERFLOW
config EARLY_PRINTK config EARLY_PRINTK
bool bool
......
...@@ -28,13 +28,6 @@ config PRINT_STACK_DEPTH ...@@ -28,13 +28,6 @@ config PRINT_STACK_DEPTH
too small and stack traces cause important information to too small and stack traces cause important information to
scroll off the screen. 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 config HCALL_STATS
bool "Hypervisor call instrumentation" bool "Hypervisor call instrumentation"
depends on PPC_PSERIES && DEBUG_FS && TRACEPOINTS depends on PPC_PSERIES && DEBUG_FS && TRACEPOINTS
......
...@@ -25,6 +25,7 @@ config TILE ...@@ -25,6 +25,7 @@ config TILE
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
select HAVE_SYSCALL_TRACEPOINTS select HAVE_SYSCALL_TRACEPOINTS
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
select HAVE_DEBUG_STACKOVERFLOW
# FIXME: investigate whether we need/want these options. # FIXME: investigate whether we need/want these options.
# select HAVE_IOREMAP_PROT # select HAVE_IOREMAP_PROT
......
...@@ -14,13 +14,6 @@ config EARLY_PRINTK ...@@ -14,13 +14,6 @@ config EARLY_PRINTK
with klogd/syslogd. You should normally N here, with klogd/syslogd. You should normally N here,
unless you want to debug such a crash. 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 config DEBUG_EXTRA_FLAGS
string "Additional compiler arguments when building with '-g'" string "Additional compiler arguments when building with '-g'"
depends on DEBUG_INFO depends on DEBUG_INFO
......
...@@ -121,6 +121,7 @@ config X86 ...@@ -121,6 +121,7 @@ config X86
select OLD_SIGACTION if X86_32 select OLD_SIGACTION if X86_32
select COMPAT_OLD_SIGACTION if IA32_EMULATION select COMPAT_OLD_SIGACTION if IA32_EMULATION
select RTC_LIB select RTC_LIB
select HAVE_DEBUG_STACKOVERFLOW
config INSTRUCTION_DECODER config INSTRUCTION_DECODER
def_bool y def_bool y
......
...@@ -59,16 +59,6 @@ config EARLY_PRINTK_DBGP ...@@ -59,16 +59,6 @@ config EARLY_PRINTK_DBGP
with klogd/syslogd or the X server. You should normally N here, 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. 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 config X86_PTDUMP
bool "Export kernel pagetable layout to userspace via debugfs" bool "Export kernel pagetable layout to userspace via debugfs"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -1475,6 +1475,27 @@ config ASYNC_RAID6_TEST ...@@ -1475,6 +1475,27 @@ config ASYNC_RAID6_TEST
If unsure, say N. 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 "samples/Kconfig"
source "lib/Kconfig.kgdb" source "lib/Kconfig.kgdb"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment