sh: Replace DEBUG_STACKOVERFLOW with STACK_DEBUG.
STACK_DEBUG ties in to mcount in order to do function-granular stack overflow checks as opposed to lazily checking from IRQ context. As the default is nohz, the frequency of overflow checking is too irregular to catch much useful information, and so the mcount approach employed by sparc64 is adopted instead. This kills off the old check entirely from the do_IRQ() path and now adopts CONFIG_MCOUNT instead. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
473d1cf4ee
commit
9f14b84afd
@ -61,12 +61,14 @@ config EARLY_PRINTK
|
||||
select both the EARLY_SCIF_CONSOLE and SH_STANDARD_BIOS, using
|
||||
the kernel command line option to toggle back and forth.
|
||||
|
||||
config DEBUG_STACKOVERFLOW
|
||||
config STACK_DEBUG
|
||||
bool "Check for stack overflows"
|
||||
depends on DEBUG_KERNEL && SUPERH32
|
||||
help
|
||||
This option will cause messages to be printed if free stack space
|
||||
drops below a certain limit.
|
||||
drops below a certain limit. Saying Y here will add overhead to
|
||||
every function call and will therefore incur a major
|
||||
performance hit. Most users should say N.
|
||||
|
||||
config DEBUG_STACK_USAGE
|
||||
bool "Stack utilization instrumentation"
|
||||
@ -123,17 +125,6 @@ config SH64_SR_WATCH
|
||||
bool "Debug: set SR.WATCH to enable hardware watchpoints and trace"
|
||||
depends on SUPERH64
|
||||
|
||||
config STACK_DEBUG
|
||||
bool "Enable diagnostic checks of the kernel stack"
|
||||
depends on FUNCTION_TRACER
|
||||
select DEBUG_STACKOVERFLOW
|
||||
default n
|
||||
help
|
||||
This option allows checks to be performed on the kernel stack
|
||||
at runtime. Saying Y here will add overhead to every function
|
||||
call and will therefore incur a major performance hit. Most
|
||||
users should say N.
|
||||
|
||||
config MCOUNT
|
||||
def_bool y
|
||||
depends on SUPERH32
|
||||
|
@ -114,23 +114,6 @@ asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs)
|
||||
#endif
|
||||
|
||||
irq_enter();
|
||||
|
||||
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
||||
/* Debugging check for stack overflow: is there less than 1KB free? */
|
||||
{
|
||||
long sp;
|
||||
|
||||
__asm__ __volatile__ ("and r15, %0" :
|
||||
"=r" (sp) : "0" (THREAD_SIZE - 1));
|
||||
|
||||
if (unlikely(sp < (sizeof(struct thread_info) + STACK_WARN))) {
|
||||
printk("do_IRQ: stack overflow: %ld\n",
|
||||
sp - sizeof(struct thread_info));
|
||||
dump_stack();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
irq = irq_demux(intc_evt2irq(irq));
|
||||
|
||||
#ifdef CONFIG_IRQSTACKS
|
||||
|
Loading…
Reference in New Issue
Block a user