diff options
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/Kconfig | 2 | ||||
| -rw-r--r-- | kernel/trace/ftrace.c | 8 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 7 | ||||
| -rw-r--r-- | kernel/trace/trace.h | 20 |
4 files changed, 26 insertions, 11 deletions
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index e0cea282e0c5..b58f43bec363 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig | |||
| @@ -8,7 +8,6 @@ config NOP_TRACER | |||
| 8 | 8 | ||
| 9 | config HAVE_FUNCTION_TRACER | 9 | config HAVE_FUNCTION_TRACER |
| 10 | bool | 10 | bool |
| 11 | select NOP_TRACER | ||
| 12 | 11 | ||
| 13 | config HAVE_DYNAMIC_FTRACE | 12 | config HAVE_DYNAMIC_FTRACE |
| 14 | bool | 13 | bool |
| @@ -28,6 +27,7 @@ config TRACING | |||
| 28 | select RING_BUFFER | 27 | select RING_BUFFER |
| 29 | select STACKTRACE | 28 | select STACKTRACE |
| 30 | select TRACEPOINTS | 29 | select TRACEPOINTS |
| 30 | select NOP_TRACER | ||
| 31 | 31 | ||
| 32 | menu "Tracers" | 32 | menu "Tracers" |
| 33 | 33 | ||
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 7618c528756b..4a39d24568c8 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1339,6 +1339,14 @@ void __init ftrace_init(void) | |||
| 1339 | } | 1339 | } |
| 1340 | 1340 | ||
| 1341 | #else | 1341 | #else |
| 1342 | |||
| 1343 | static int __init ftrace_nodyn_init(void) | ||
| 1344 | { | ||
| 1345 | ftrace_enabled = 1; | ||
| 1346 | return 0; | ||
| 1347 | } | ||
| 1348 | device_initcall(ftrace_nodyn_init); | ||
| 1349 | |||
| 1342 | # define ftrace_startup() do { } while (0) | 1350 | # define ftrace_startup() do { } while (0) |
| 1343 | # define ftrace_shutdown() do { } while (0) | 1351 | # define ftrace_shutdown() do { } while (0) |
| 1344 | # define ftrace_startup_sysctl() do { } while (0) | 1352 | # define ftrace_startup_sysctl() do { } while (0) |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index a610ca771558..8a499e2adaec 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -656,7 +656,11 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, | |||
| 656 | entry->preempt_count = pc & 0xff; | 656 | entry->preempt_count = pc & 0xff; |
| 657 | entry->pid = (tsk) ? tsk->pid : 0; | 657 | entry->pid = (tsk) ? tsk->pid : 0; |
| 658 | entry->flags = | 658 | entry->flags = |
| 659 | #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT | ||
| 659 | (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) | | 660 | (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) | |
| 661 | #else | ||
| 662 | TRACE_FLAG_IRQS_NOSUPPORT | | ||
| 663 | #endif | ||
| 660 | ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | | 664 | ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | |
| 661 | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | | 665 | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | |
| 662 | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); | 666 | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); |
| @@ -1244,7 +1248,8 @@ lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu) | |||
| 1244 | trace_seq_printf(s, "%8.8s-%-5d ", comm, entry->pid); | 1248 | trace_seq_printf(s, "%8.8s-%-5d ", comm, entry->pid); |
| 1245 | trace_seq_printf(s, "%3d", cpu); | 1249 | trace_seq_printf(s, "%3d", cpu); |
| 1246 | trace_seq_printf(s, "%c%c", | 1250 | trace_seq_printf(s, "%c%c", |
| 1247 | (entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' : '.', | 1251 | (entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' : |
| 1252 | (entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ? 'X' : '.', | ||
| 1248 | ((entry->flags & TRACE_FLAG_NEED_RESCHED) ? 'N' : '.')); | 1253 | ((entry->flags & TRACE_FLAG_NEED_RESCHED) ? 'N' : '.')); |
| 1249 | 1254 | ||
| 1250 | hardirq = entry->flags & TRACE_FLAG_HARDIRQ; | 1255 | hardirq = entry->flags & TRACE_FLAG_HARDIRQ; |
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 6889ca48f1f1..8465ad052707 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
| @@ -120,18 +120,20 @@ struct trace_boot { | |||
| 120 | /* | 120 | /* |
| 121 | * trace_flag_type is an enumeration that holds different | 121 | * trace_flag_type is an enumeration that holds different |
| 122 | * states when a trace occurs. These are: | 122 | * states when a trace occurs. These are: |
| 123 | * IRQS_OFF - interrupts were disabled | 123 | * IRQS_OFF - interrupts were disabled |
| 124 | * NEED_RESCED - reschedule is requested | 124 | * IRQS_NOSUPPORT - arch does not support irqs_disabled_flags |
| 125 | * HARDIRQ - inside an interrupt handler | 125 | * NEED_RESCED - reschedule is requested |
| 126 | * SOFTIRQ - inside a softirq handler | 126 | * HARDIRQ - inside an interrupt handler |
| 127 | * CONT - multiple entries hold the trace item | 127 | * SOFTIRQ - inside a softirq handler |
| 128 | * CONT - multiple entries hold the trace item | ||
| 128 | */ | 129 | */ |
| 129 | enum trace_flag_type { | 130 | enum trace_flag_type { |
| 130 | TRACE_FLAG_IRQS_OFF = 0x01, | 131 | TRACE_FLAG_IRQS_OFF = 0x01, |
| 131 | TRACE_FLAG_NEED_RESCHED = 0x02, | 132 | TRACE_FLAG_IRQS_NOSUPPORT = 0x02, |
| 132 | TRACE_FLAG_HARDIRQ = 0x04, | 133 | TRACE_FLAG_NEED_RESCHED = 0x04, |
| 133 | TRACE_FLAG_SOFTIRQ = 0x08, | 134 | TRACE_FLAG_HARDIRQ = 0x08, |
| 134 | TRACE_FLAG_CONT = 0x10, | 135 | TRACE_FLAG_SOFTIRQ = 0x10, |
| 136 | TRACE_FLAG_CONT = 0x20, | ||
| 135 | }; | 137 | }; |
| 136 | 138 | ||
| 137 | #define TRACE_BUF_SIZE 1024 | 139 | #define TRACE_BUF_SIZE 1024 |
