trace: Toggle irqsoff tracing to dmesg
Allow tracing irqsoff to dmesg based on userspace tunable. Change-Id: I36ca46c787d25ec08a6d050eed4ce0a23db26a1a Signed-off-by: Sai Harshini Nimmala <snimmala@codeaurora.org>
This commit is contained in:
@@ -608,11 +608,16 @@ static void irqsoff_tracer_stop(struct trace_array *tr)
|
||||
|
||||
#ifdef CONFIG_IRQSOFF_TRACER
|
||||
#ifdef CONFIG_PREEMPTIRQ_EVENTS
|
||||
#define IRQSOFF_SENTINEL 0x0fffDEAD
|
||||
/*
|
||||
* irqsoff stack tracing threshold in ns.
|
||||
* default: 1ms
|
||||
* default: 5ms
|
||||
*/
|
||||
unsigned int sysctl_irqsoff_tracing_threshold_ns = 1000000UL;
|
||||
unsigned int sysctl_irqsoff_tracing_threshold_ns = 5000000UL;
|
||||
/*
|
||||
* Enable irqsoff tracing to dmesg
|
||||
*/
|
||||
unsigned int sysctl_irqsoff_dmesg_output_enabled;
|
||||
|
||||
struct irqsoff_store {
|
||||
u64 ts;
|
||||
@@ -637,9 +642,14 @@ void tracer_hardirqs_on(unsigned long a0, unsigned long a1)
|
||||
delta = sched_clock() - is->ts;
|
||||
|
||||
if (!is_idle_task(current) &&
|
||||
delta > sysctl_irqsoff_tracing_threshold_ns)
|
||||
delta > sysctl_irqsoff_tracing_threshold_ns) {
|
||||
trace_irqs_disable(delta, is->caddr[0], is->caddr[1],
|
||||
is->caddr[2], is->caddr[3]);
|
||||
if (sysctl_irqsoff_dmesg_output_enabled == IRQSOFF_SENTINEL)
|
||||
printk_deferred(KERN_ERR "D=%llu C:(%ps<-%ps<-%ps<-%ps)\n",
|
||||
delta, is->caddr[0], is->caddr[1],
|
||||
is->caddr[2], is->caddr[3]);
|
||||
}
|
||||
is->ts = 0;
|
||||
lockdep_on();
|
||||
#endif /* CONFIG_PREEMPTIRQ_EVENTS */
|
||||
|
Reference in New Issue
Block a user