select OF
        select OF_EARLY_FLATTREE
        select PERF_USE_VMALLOC
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config SCHED_OMIT_FRAME_POINTER
        def_bool y
 
          with klogd/syslogd or the X server. 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 16KSTACKS
        bool "Use 16Kb for kernel stacks instead of 8Kb"
        help
 
        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
 
 
 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
 
        select ARCH_WANT_IPC_PARSE_VERSION
        select OLD_SIGSUSPEND3
        select OLD_SIGACTION
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config ZONE_DMA
        bool
 
 
 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
 
        select GENERIC_ATOMIC64
        select ARCH_USES_GETTIMEOFFSET
        select MODULES_USE_ELF_RELA
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config SBUS
        bool
 
 
 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
 
        select OF
        select OF_EARLY_FLATTREE
        select SPARSE_IRQ
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config STACKTRACE_SUPPORT
        def_bool y
 
 
 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
        bool "Use 4Kb for kernel stacks instead of 8Kb"
        depends on DEBUG_KERNEL
 
        select MODULES_USE_ELF_REL if MODULES
        select MODULES_USE_ELF_RELA if MODULES && 64BIT
        select CLONE_BACKWARDS
+       select HAVE_DEBUG_STACKOVERFLOW
 
 menu "Machine selection"
 
 
 
          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
 
        select MODULES_USE_ELF_RELA
        select OLD_SIGSUSPEND3
        select OLD_SIGACTION
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config AM33_2
        def_bool n
 
 
 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
 
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
        select MODULES_USE_ELF_RELA
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config MMU
        def_bool y
 
 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
        bool "Try to die gracefully"
        default y
 
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
        select TTY # Needed for pdc_cons.c
+       select HAVE_DEBUG_STACKOVERFLOW
 
        help
          The PA-RISC microprocessor is designed by Hewlett-Packard and used
 
          If in doubt, say "N".
 
 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".
 
        select ARCH_USE_BUILTIN_BSWAP
        select OLD_SIGSUSPEND
        select OLD_SIGACTION if PPC32
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config EARLY_PRINTK
        bool
 
          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
 
        select HAVE_ARCH_TRACEHOOK
        select HAVE_SYSCALL_TRACEPOINTS
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
+       select HAVE_DEBUG_STACKOVERFLOW
 
 # FIXME: investigate whether we need/want these options.
 #      select HAVE_IOREMAP_PROT
 
          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
 
        select OLD_SIGACTION if X86_32
        select COMPAT_OLD_SIGACTION if IA32_EMULATION
        select RTC_LIB
+       select HAVE_DEBUG_STACKOVERFLOW
 
 config INSTRUCTION_DECODER
        def_bool y
 
          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
 
 
          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"