2 * ring buffer based function tracer
4 * Copyright (C) 2007-2012 Steven Rostedt <srostedt@redhat.com>
5 * Copyright (C) 2008 Ingo Molnar <mingo@redhat.com>
7 * Originally taken from the RT patch by:
8 * Arnaldo Carvalho de Melo <acme@redhat.com>
10 * Based on code from the latency_tracer, that is:
11 * Copyright (C) 2004-2006 Ingo Molnar
12 * Copyright (C) 2004 Nadia Yvette Chambers
14 #include <linux/ring_buffer.h>
15 #include <generated/utsrelease.h>
16 #include <linux/stacktrace.h>
17 #include <linux/writeback.h>
18 #include <linux/kallsyms.h>
19 #include <linux/seq_file.h>
20 #include <linux/notifier.h>
21 #include <linux/irqflags.h>
22 #include <linux/debugfs.h>
23 #include <linux/pagemap.h>
24 #include <linux/hardirq.h>
25 #include <linux/linkage.h>
26 #include <linux/uaccess.h>
27 #include <linux/kprobes.h>
28 #include <linux/ftrace.h>
29 #include <linux/module.h>
30 #include <linux/percpu.h>
31 #include <linux/splice.h>
32 #include <linux/kdebug.h>
33 #include <linux/string.h>
34 #include <linux/rwsem.h>
35 #include <linux/slab.h>
36 #include <linux/ctype.h>
37 #include <linux/init.h>
38 #include <linux/poll.h>
39 #include <linux/nmi.h>
41 #include <linux/sched/rt.h>
44 #include "trace_output.h"
47 * On boot up, the ring buffer is set to the minimum size, so that
48 * we do not waste memory on systems that are not using tracing.
50 bool ring_buffer_expanded;
53 * We need to change this state when a selftest is running.
54 * A selftest will lurk into the ring-buffer to count the
55 * entries inserted during the selftest although some concurrent
56 * insertions into the ring-buffer such as trace_printk could occurred
57 * at the same time, giving false positive or negative results.
59 static bool __read_mostly tracing_selftest_running;
62 * If a tracer is running, we do not want to run SELFTEST.
64 bool __read_mostly tracing_selftest_disabled;
66 /* For tracers that don't implement custom flags */
67 static struct tracer_opt dummy_tracer_opt[] = {
71 static struct tracer_flags dummy_tracer_flags = {
73 .opts = dummy_tracer_opt
77 dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
83 * To prevent the comm cache from being overwritten when no
84 * tracing is active, only save the comm when a trace event
87 static DEFINE_PER_CPU(bool, trace_cmdline_save);
90 * Kill all tracing for good (never come back).
91 * It is initialized to 1 but will turn to zero if the initialization
92 * of the tracer is successful. But that is the only place that sets
95 static int tracing_disabled = 1;
97 DEFINE_PER_CPU(int, ftrace_cpu_disabled);
99 cpumask_var_t __read_mostly tracing_buffer_mask;
102 * ftrace_dump_on_oops - variable to dump ftrace buffer on oops
104 * If there is an oops (or kernel panic) and the ftrace_dump_on_oops
105 * is set, then ftrace_dump is called. This will output the contents
106 * of the ftrace buffers to the console. This is very useful for
107 * capturing traces that lead to crashes and outputing it to a
110 * It is default off, but you can enable it with either specifying
111 * "ftrace_dump_on_oops" in the kernel command line, or setting
112 * /proc/sys/kernel/ftrace_dump_on_oops
113 * Set 1 if you want to dump buffers of all CPUs
114 * Set 2 if you want to dump the buffer of the CPU that triggered oops
117 enum ftrace_dump_mode ftrace_dump_on_oops;
119 /* When set, tracing will stop when a WARN*() is hit */
120 int __disable_trace_on_warning;
122 static int tracing_set_tracer(struct trace_array *tr, const char *buf);
124 #define MAX_TRACER_SIZE 100
125 static char bootup_tracer_buf[MAX_TRACER_SIZE] __initdata;
126 static char *default_bootup_tracer;
128 static bool allocate_snapshot;
130 static int __init set_cmdline_ftrace(char *str)
132 strlcpy(bootup_tracer_buf, str, MAX_TRACER_SIZE);
133 default_bootup_tracer = bootup_tracer_buf;
134 /* We are using ftrace early, expand it */
135 ring_buffer_expanded = true;
138 __setup("ftrace=", set_cmdline_ftrace);
140 static int __init set_ftrace_dump_on_oops(char *str)
142 if (*str++ != '=' || !*str) {
143 ftrace_dump_on_oops = DUMP_ALL;
147 if (!strcmp("orig_cpu", str)) {
148 ftrace_dump_on_oops = DUMP_ORIG;
154 __setup("ftrace_dump_on_oops", set_ftrace_dump_on_oops);
156 static int __init stop_trace_on_warning(char *str)
158 __disable_trace_on_warning = 1;
161 __setup("traceoff_on_warning=", stop_trace_on_warning);
163 static int __init boot_alloc_snapshot(char *str)
165 allocate_snapshot = true;
166 /* We also need the main ring buffer expanded */
167 ring_buffer_expanded = true;
170 __setup("alloc_snapshot", boot_alloc_snapshot);
173 static char trace_boot_options_buf[MAX_TRACER_SIZE] __initdata;
174 static char *trace_boot_options __initdata;
176 static int __init set_trace_boot_options(char *str)
178 strlcpy(trace_boot_options_buf, str, MAX_TRACER_SIZE);
179 trace_boot_options = trace_boot_options_buf;
182 __setup("trace_options=", set_trace_boot_options);
184 static char trace_boot_clock_buf[MAX_TRACER_SIZE] __initdata;
185 static char *trace_boot_clock __initdata;
187 static int __init set_trace_boot_clock(char *str)
189 strlcpy(trace_boot_clock_buf, str, MAX_TRACER_SIZE);
190 trace_boot_clock = trace_boot_clock_buf;
193 __setup("trace_clock=", set_trace_boot_clock);
196 unsigned long long ns2usecs(cycle_t nsec)
204 * The global_trace is the descriptor that holds the tracing
205 * buffers for the live tracing. For each CPU, it contains
206 * a link list of pages that will store trace entries. The
207 * page descriptor of the pages in the memory is used to hold
208 * the link list by linking the lru item in the page descriptor
209 * to each of the pages in the buffer per CPU.
211 * For each active CPU there is a data field that holds the
212 * pages for the buffer for that CPU. Each CPU has the same number
213 * of pages allocated for its buffer.
215 static struct trace_array global_trace;
217 LIST_HEAD(ftrace_trace_arrays);
219 int trace_array_get(struct trace_array *this_tr)
221 struct trace_array *tr;
224 mutex_lock(&trace_types_lock);
225 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
232 mutex_unlock(&trace_types_lock);
237 static void __trace_array_put(struct trace_array *this_tr)
239 WARN_ON(!this_tr->ref);
243 void trace_array_put(struct trace_array *this_tr)
245 mutex_lock(&trace_types_lock);
246 __trace_array_put(this_tr);
247 mutex_unlock(&trace_types_lock);
250 int filter_check_discard(struct ftrace_event_file *file, void *rec,
251 struct ring_buffer *buffer,
252 struct ring_buffer_event *event)
254 if (unlikely(file->flags & FTRACE_EVENT_FL_FILTERED) &&
255 !filter_match_preds(file->filter, rec)) {
256 ring_buffer_discard_commit(buffer, event);
262 EXPORT_SYMBOL_GPL(filter_check_discard);
264 int call_filter_check_discard(struct ftrace_event_call *call, void *rec,
265 struct ring_buffer *buffer,
266 struct ring_buffer_event *event)
268 if (unlikely(call->flags & TRACE_EVENT_FL_FILTERED) &&
269 !filter_match_preds(call->filter, rec)) {
270 ring_buffer_discard_commit(buffer, event);
276 EXPORT_SYMBOL_GPL(call_filter_check_discard);
278 static cycle_t buffer_ftrace_now(struct trace_buffer *buf, int cpu)
282 /* Early boot up does not have a buffer yet */
284 return trace_clock_local();
286 ts = ring_buffer_time_stamp(buf->buffer, cpu);
287 ring_buffer_normalize_time_stamp(buf->buffer, cpu, &ts);
292 cycle_t ftrace_now(int cpu)
294 return buffer_ftrace_now(&global_trace.trace_buffer, cpu);
298 * tracing_is_enabled - Show if global_trace has been disabled
300 * Shows if the global trace has been enabled or not. It uses the
301 * mirror flag "buffer_disabled" to be used in fast paths such as for
302 * the irqsoff tracer. But it may be inaccurate due to races. If you
303 * need to know the accurate state, use tracing_is_on() which is a little
304 * slower, but accurate.
306 int tracing_is_enabled(void)
309 * For quick access (irqsoff uses this in fast path), just
310 * return the mirror variable of the state of the ring buffer.
311 * It's a little racy, but we don't really care.
314 return !global_trace.buffer_disabled;
318 * trace_buf_size is the size in bytes that is allocated
319 * for a buffer. Note, the number of bytes is always rounded
322 * This number is purposely set to a low number of 16384.
323 * If the dump on oops happens, it will be much appreciated
324 * to not have to wait for all that output. Anyway this can be
325 * boot time and run time configurable.
327 #define TRACE_BUF_SIZE_DEFAULT 1441792UL /* 16384 * 88 (sizeof(entry)) */
329 static unsigned long trace_buf_size = TRACE_BUF_SIZE_DEFAULT;
331 /* trace_types holds a link list of available tracers. */
332 static struct tracer *trace_types __read_mostly;
335 * trace_types_lock is used to protect the trace_types list.
337 DEFINE_MUTEX(trace_types_lock);
340 * serialize the access of the ring buffer
342 * ring buffer serializes readers, but it is low level protection.
343 * The validity of the events (which returns by ring_buffer_peek() ..etc)
344 * are not protected by ring buffer.
346 * The content of events may become garbage if we allow other process consumes
347 * these events concurrently:
348 * A) the page of the consumed events may become a normal page
349 * (not reader page) in ring buffer, and this page will be rewrited
350 * by events producer.
351 * B) The page of the consumed events may become a page for splice_read,
352 * and this page will be returned to system.
354 * These primitives allow multi process access to different cpu ring buffer
357 * These primitives don't distinguish read-only and read-consume access.
358 * Multi read-only access are also serialized.
362 static DECLARE_RWSEM(all_cpu_access_lock);
363 static DEFINE_PER_CPU(struct mutex, cpu_access_lock);
365 static inline void trace_access_lock(int cpu)
367 if (cpu == RING_BUFFER_ALL_CPUS) {
368 /* gain it for accessing the whole ring buffer. */
369 down_write(&all_cpu_access_lock);
371 /* gain it for accessing a cpu ring buffer. */
373 /* Firstly block other trace_access_lock(RING_BUFFER_ALL_CPUS). */
374 down_read(&all_cpu_access_lock);
376 /* Secondly block other access to this @cpu ring buffer. */
377 mutex_lock(&per_cpu(cpu_access_lock, cpu));
381 static inline void trace_access_unlock(int cpu)
383 if (cpu == RING_BUFFER_ALL_CPUS) {
384 up_write(&all_cpu_access_lock);
386 mutex_unlock(&per_cpu(cpu_access_lock, cpu));
387 up_read(&all_cpu_access_lock);
391 static inline void trace_access_lock_init(void)
395 for_each_possible_cpu(cpu)
396 mutex_init(&per_cpu(cpu_access_lock, cpu));
401 static DEFINE_MUTEX(access_lock);
403 static inline void trace_access_lock(int cpu)
406 mutex_lock(&access_lock);
409 static inline void trace_access_unlock(int cpu)
412 mutex_unlock(&access_lock);
415 static inline void trace_access_lock_init(void)
421 /* trace_flags holds trace_options default values */
422 unsigned long trace_flags = TRACE_ITER_PRINT_PARENT | TRACE_ITER_PRINTK |
423 TRACE_ITER_ANNOTATE | TRACE_ITER_CONTEXT_INFO | TRACE_ITER_SLEEP_TIME |
424 TRACE_ITER_GRAPH_TIME | TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE |
425 TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS | TRACE_ITER_FUNCTION;
427 static void tracer_tracing_on(struct trace_array *tr)
429 if (tr->trace_buffer.buffer)
430 ring_buffer_record_on(tr->trace_buffer.buffer);
432 * This flag is looked at when buffers haven't been allocated
433 * yet, or by some tracers (like irqsoff), that just want to
434 * know if the ring buffer has been disabled, but it can handle
435 * races of where it gets disabled but we still do a record.
436 * As the check is in the fast path of the tracers, it is more
437 * important to be fast than accurate.
439 tr->buffer_disabled = 0;
440 /* Make the flag seen by readers */
445 * tracing_on - enable tracing buffers
447 * This function enables tracing buffers that may have been
448 * disabled with tracing_off.
450 void tracing_on(void)
452 tracer_tracing_on(&global_trace);
454 EXPORT_SYMBOL_GPL(tracing_on);
457 * __trace_puts - write a constant string into the trace buffer.
458 * @ip: The address of the caller
459 * @str: The constant string to write
460 * @size: The size of the string.
462 int __trace_puts(unsigned long ip, const char *str, int size)
464 struct ring_buffer_event *event;
465 struct ring_buffer *buffer;
466 struct print_entry *entry;
467 unsigned long irq_flags;
471 if (!(trace_flags & TRACE_ITER_PRINTK))
474 pc = preempt_count();
476 if (unlikely(tracing_selftest_running || tracing_disabled))
479 alloc = sizeof(*entry) + size + 2; /* possible \n added */
481 local_save_flags(irq_flags);
482 buffer = global_trace.trace_buffer.buffer;
483 event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc,
488 entry = ring_buffer_event_data(event);
491 memcpy(&entry->buf, str, size);
493 /* Add a newline if necessary */
494 if (entry->buf[size - 1] != '\n') {
495 entry->buf[size] = '\n';
496 entry->buf[size + 1] = '\0';
498 entry->buf[size] = '\0';
500 __buffer_unlock_commit(buffer, event);
501 ftrace_trace_stack(buffer, irq_flags, 4, pc);
505 EXPORT_SYMBOL_GPL(__trace_puts);
508 * __trace_bputs - write the pointer to a constant string into trace buffer
509 * @ip: The address of the caller
510 * @str: The constant string to write to the buffer to
512 int __trace_bputs(unsigned long ip, const char *str)
514 struct ring_buffer_event *event;
515 struct ring_buffer *buffer;
516 struct bputs_entry *entry;
517 unsigned long irq_flags;
518 int size = sizeof(struct bputs_entry);
521 if (!(trace_flags & TRACE_ITER_PRINTK))
524 pc = preempt_count();
526 if (unlikely(tracing_selftest_running || tracing_disabled))
529 local_save_flags(irq_flags);
530 buffer = global_trace.trace_buffer.buffer;
531 event = trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size,
536 entry = ring_buffer_event_data(event);
540 __buffer_unlock_commit(buffer, event);
541 ftrace_trace_stack(buffer, irq_flags, 4, pc);
545 EXPORT_SYMBOL_GPL(__trace_bputs);
547 #ifdef CONFIG_TRACER_SNAPSHOT
549 * trace_snapshot - take a snapshot of the current buffer.
551 * This causes a swap between the snapshot buffer and the current live
552 * tracing buffer. You can use this to take snapshots of the live
553 * trace when some condition is triggered, but continue to trace.
555 * Note, make sure to allocate the snapshot with either
556 * a tracing_snapshot_alloc(), or by doing it manually
557 * with: echo 1 > /sys/kernel/debug/tracing/snapshot
559 * If the snapshot buffer is not allocated, it will stop tracing.
560 * Basically making a permanent snapshot.
562 void tracing_snapshot(void)
564 struct trace_array *tr = &global_trace;
565 struct tracer *tracer = tr->current_trace;
569 internal_trace_puts("*** SNAPSHOT CALLED FROM NMI CONTEXT ***\n");
570 internal_trace_puts("*** snapshot is being ignored ***\n");
574 if (!tr->allocated_snapshot) {
575 internal_trace_puts("*** SNAPSHOT NOT ALLOCATED ***\n");
576 internal_trace_puts("*** stopping trace here! ***\n");
581 /* Note, snapshot can not be used when the tracer uses it */
582 if (tracer->use_max_tr) {
583 internal_trace_puts("*** LATENCY TRACER ACTIVE ***\n");
584 internal_trace_puts("*** Can not use snapshot (sorry) ***\n");
588 local_irq_save(flags);
589 update_max_tr(tr, current, smp_processor_id());
590 local_irq_restore(flags);
592 EXPORT_SYMBOL_GPL(tracing_snapshot);
594 static int resize_buffer_duplicate_size(struct trace_buffer *trace_buf,
595 struct trace_buffer *size_buf, int cpu_id);
596 static void set_buffer_entries(struct trace_buffer *buf, unsigned long val);
598 static int alloc_snapshot(struct trace_array *tr)
602 if (!tr->allocated_snapshot) {
604 /* allocate spare buffer */
605 ret = resize_buffer_duplicate_size(&tr->max_buffer,
606 &tr->trace_buffer, RING_BUFFER_ALL_CPUS);
610 tr->allocated_snapshot = true;
616 static void free_snapshot(struct trace_array *tr)
619 * We don't free the ring buffer. instead, resize it because
620 * The max_tr ring buffer has some state (e.g. ring->clock) and
621 * we want preserve it.
623 ring_buffer_resize(tr->max_buffer.buffer, 1, RING_BUFFER_ALL_CPUS);
624 set_buffer_entries(&tr->max_buffer, 1);
625 tracing_reset_online_cpus(&tr->max_buffer);
626 tr->allocated_snapshot = false;
630 * tracing_alloc_snapshot - allocate snapshot buffer.
632 * This only allocates the snapshot buffer if it isn't already
633 * allocated - it doesn't also take a snapshot.
635 * This is meant to be used in cases where the snapshot buffer needs
636 * to be set up for events that can't sleep but need to be able to
637 * trigger a snapshot.
639 int tracing_alloc_snapshot(void)
641 struct trace_array *tr = &global_trace;
644 ret = alloc_snapshot(tr);
649 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
652 * trace_snapshot_alloc - allocate and take a snapshot of the current buffer.
654 * This is similar to trace_snapshot(), but it will allocate the
655 * snapshot buffer if it isn't already allocated. Use this only
656 * where it is safe to sleep, as the allocation may sleep.
658 * This causes a swap between the snapshot buffer and the current live
659 * tracing buffer. You can use this to take snapshots of the live
660 * trace when some condition is triggered, but continue to trace.
662 void tracing_snapshot_alloc(void)
666 ret = tracing_alloc_snapshot();
672 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
674 void tracing_snapshot(void)
676 WARN_ONCE(1, "Snapshot feature not enabled, but internal snapshot used");
678 EXPORT_SYMBOL_GPL(tracing_snapshot);
679 int tracing_alloc_snapshot(void)
681 WARN_ONCE(1, "Snapshot feature not enabled, but snapshot allocation used");
684 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
685 void tracing_snapshot_alloc(void)
690 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
691 #endif /* CONFIG_TRACER_SNAPSHOT */
693 static void tracer_tracing_off(struct trace_array *tr)
695 if (tr->trace_buffer.buffer)
696 ring_buffer_record_off(tr->trace_buffer.buffer);
698 * This flag is looked at when buffers haven't been allocated
699 * yet, or by some tracers (like irqsoff), that just want to
700 * know if the ring buffer has been disabled, but it can handle
701 * races of where it gets disabled but we still do a record.
702 * As the check is in the fast path of the tracers, it is more
703 * important to be fast than accurate.
705 tr->buffer_disabled = 1;
706 /* Make the flag seen by readers */
711 * tracing_off - turn off tracing buffers
713 * This function stops the tracing buffers from recording data.
714 * It does not disable any overhead the tracers themselves may
715 * be causing. This function simply causes all recording to
716 * the ring buffers to fail.
718 void tracing_off(void)
720 tracer_tracing_off(&global_trace);
722 EXPORT_SYMBOL_GPL(tracing_off);
724 void disable_trace_on_warning(void)
726 if (__disable_trace_on_warning)
731 * tracer_tracing_is_on - show real state of ring buffer enabled
732 * @tr : the trace array to know if ring buffer is enabled
734 * Shows real state of the ring buffer if it is enabled or not.
736 static int tracer_tracing_is_on(struct trace_array *tr)
738 if (tr->trace_buffer.buffer)
739 return ring_buffer_record_is_on(tr->trace_buffer.buffer);
740 return !tr->buffer_disabled;
744 * tracing_is_on - show state of ring buffers enabled
746 int tracing_is_on(void)
748 return tracer_tracing_is_on(&global_trace);
750 EXPORT_SYMBOL_GPL(tracing_is_on);
752 static int __init set_buf_size(char *str)
754 unsigned long buf_size;
758 buf_size = memparse(str, &str);
759 /* nr_entries can not be zero */
762 trace_buf_size = buf_size;
765 __setup("trace_buf_size=", set_buf_size);
767 static int __init set_tracing_thresh(char *str)
769 unsigned long threshold;
774 ret = kstrtoul(str, 0, &threshold);
777 tracing_thresh = threshold * 1000;
780 __setup("tracing_thresh=", set_tracing_thresh);
782 unsigned long nsecs_to_usecs(unsigned long nsecs)
787 /* These must match the bit postions in trace_iterator_flags */
788 static const char *trace_options[] = {
821 int in_ns; /* is this clock in nanoseconds? */
823 { trace_clock_local, "local", 1 },
824 { trace_clock_global, "global", 1 },
825 { trace_clock_counter, "counter", 0 },
826 { trace_clock_jiffies, "uptime", 1 },
827 { trace_clock, "perf", 1 },
832 * trace_parser_get_init - gets the buffer for trace parser
834 int trace_parser_get_init(struct trace_parser *parser, int size)
836 memset(parser, 0, sizeof(*parser));
838 parser->buffer = kmalloc(size, GFP_KERNEL);
847 * trace_parser_put - frees the buffer for trace parser
849 void trace_parser_put(struct trace_parser *parser)
851 kfree(parser->buffer);
855 * trace_get_user - reads the user input string separated by space
856 * (matched by isspace(ch))
858 * For each string found the 'struct trace_parser' is updated,
859 * and the function returns.
861 * Returns number of bytes read.
863 * See kernel/trace/trace.h for 'struct trace_parser' details.
865 int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
866 size_t cnt, loff_t *ppos)
873 trace_parser_clear(parser);
875 ret = get_user(ch, ubuf++);
883 * The parser is not finished with the last write,
884 * continue reading the user input without skipping spaces.
887 /* skip white space */
888 while (cnt && isspace(ch)) {
889 ret = get_user(ch, ubuf++);
896 /* only spaces were written */
906 /* read the non-space input */
907 while (cnt && !isspace(ch)) {
908 if (parser->idx < parser->size - 1)
909 parser->buffer[parser->idx++] = ch;
914 ret = get_user(ch, ubuf++);
921 /* We either got finished input or we have to wait for another call. */
923 parser->buffer[parser->idx] = 0;
924 parser->cont = false;
925 } else if (parser->idx < parser->size - 1) {
927 parser->buffer[parser->idx++] = ch;
940 ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf, size_t cnt)
948 if (s->len <= s->readpos)
951 len = s->len - s->readpos;
954 ret = copy_to_user(ubuf, s->buffer + s->readpos, cnt);
964 static ssize_t trace_seq_to_buffer(struct trace_seq *s, void *buf, size_t cnt)
968 if (s->len <= s->readpos)
971 len = s->len - s->readpos;
974 memcpy(buf, s->buffer + s->readpos, cnt);
980 unsigned long __read_mostly tracing_thresh;
982 #ifdef CONFIG_TRACER_MAX_TRACE
984 * Copy the new maximum trace into the separate maximum-trace
985 * structure. (this way the maximum trace is permanently saved,
986 * for later retrieval via /sys/kernel/debug/tracing/latency_trace)
989 __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
991 struct trace_buffer *trace_buf = &tr->trace_buffer;
992 struct trace_buffer *max_buf = &tr->max_buffer;
993 struct trace_array_cpu *data = per_cpu_ptr(trace_buf->data, cpu);
994 struct trace_array_cpu *max_data = per_cpu_ptr(max_buf->data, cpu);
997 max_buf->time_start = data->preempt_timestamp;
999 max_data->saved_latency = tr->max_latency;
1000 max_data->critical_start = data->critical_start;
1001 max_data->critical_end = data->critical_end;
1003 memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN);
1004 max_data->pid = tsk->pid;
1006 * If tsk == current, then use current_uid(), as that does not use
1007 * RCU. The irq tracer can be called out of RCU scope.
1010 max_data->uid = current_uid();
1012 max_data->uid = task_uid(tsk);
1014 max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
1015 max_data->policy = tsk->policy;
1016 max_data->rt_priority = tsk->rt_priority;
1018 /* record this tasks comm */
1019 tracing_record_cmdline(tsk);
1023 * update_max_tr - snapshot all trace buffers from global_trace to max_tr
1025 * @tsk: the task with the latency
1026 * @cpu: The cpu that initiated the trace.
1028 * Flip the buffers between the @tr and the max_tr and record information
1029 * about which task was the cause of this latency.
1032 update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
1034 struct ring_buffer *buf;
1039 WARN_ON_ONCE(!irqs_disabled());
1041 if (!tr->allocated_snapshot) {
1042 /* Only the nop tracer should hit this when disabling */
1043 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1047 arch_spin_lock(&tr->max_lock);
1049 buf = tr->trace_buffer.buffer;
1050 tr->trace_buffer.buffer = tr->max_buffer.buffer;
1051 tr->max_buffer.buffer = buf;
1053 __update_max_tr(tr, tsk, cpu);
1054 arch_spin_unlock(&tr->max_lock);
1058 * update_max_tr_single - only copy one trace over, and reset the rest
1060 * @tsk - task with the latency
1061 * @cpu - the cpu of the buffer to copy.
1063 * Flip the trace of a single CPU buffer between the @tr and the max_tr.
1066 update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
1073 WARN_ON_ONCE(!irqs_disabled());
1074 if (!tr->allocated_snapshot) {
1075 /* Only the nop tracer should hit this when disabling */
1076 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1080 arch_spin_lock(&tr->max_lock);
1082 ret = ring_buffer_swap_cpu(tr->max_buffer.buffer, tr->trace_buffer.buffer, cpu);
1084 if (ret == -EBUSY) {
1086 * We failed to swap the buffer due to a commit taking
1087 * place on this CPU. We fail to record, but we reset
1088 * the max trace buffer (no one writes directly to it)
1089 * and flag that it failed.
1091 trace_array_printk_buf(tr->max_buffer.buffer, _THIS_IP_,
1092 "Failed to swap buffers due to commit in progress\n");
1095 WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY);
1097 __update_max_tr(tr, tsk, cpu);
1098 arch_spin_unlock(&tr->max_lock);
1100 #endif /* CONFIG_TRACER_MAX_TRACE */
1102 static int wait_on_pipe(struct trace_iterator *iter)
1104 /* Iterators are static, they should be filled or empty */
1105 if (trace_buffer_iter(iter, iter->cpu_file))
1108 return ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file);
1111 #ifdef CONFIG_FTRACE_STARTUP_TEST
1112 static int run_tracer_selftest(struct tracer *type)
1114 struct trace_array *tr = &global_trace;
1115 struct tracer *saved_tracer = tr->current_trace;
1118 if (!type->selftest || tracing_selftest_disabled)
1122 * Run a selftest on this tracer.
1123 * Here we reset the trace buffer, and set the current
1124 * tracer to be this tracer. The tracer can then run some
1125 * internal tracing to verify that everything is in order.
1126 * If we fail, we do not register this tracer.
1128 tracing_reset_online_cpus(&tr->trace_buffer);
1130 tr->current_trace = type;
1132 #ifdef CONFIG_TRACER_MAX_TRACE
1133 if (type->use_max_tr) {
1134 /* If we expanded the buffers, make sure the max is expanded too */
1135 if (ring_buffer_expanded)
1136 ring_buffer_resize(tr->max_buffer.buffer, trace_buf_size,
1137 RING_BUFFER_ALL_CPUS);
1138 tr->allocated_snapshot = true;
1142 /* the test is responsible for initializing and enabling */
1143 pr_info("Testing tracer %s: ", type->name);
1144 ret = type->selftest(type, tr);
1145 /* the test is responsible for resetting too */
1146 tr->current_trace = saved_tracer;
1148 printk(KERN_CONT "FAILED!\n");
1149 /* Add the warning after printing 'FAILED' */
1153 /* Only reset on passing, to avoid touching corrupted buffers */
1154 tracing_reset_online_cpus(&tr->trace_buffer);
1156 #ifdef CONFIG_TRACER_MAX_TRACE
1157 if (type->use_max_tr) {
1158 tr->allocated_snapshot = false;
1160 /* Shrink the max buffer again */
1161 if (ring_buffer_expanded)
1162 ring_buffer_resize(tr->max_buffer.buffer, 1,
1163 RING_BUFFER_ALL_CPUS);
1167 printk(KERN_CONT "PASSED\n");
1171 static inline int run_tracer_selftest(struct tracer *type)
1175 #endif /* CONFIG_FTRACE_STARTUP_TEST */
1178 * register_tracer - register a tracer with the ftrace system.
1179 * @type - the plugin for the tracer
1181 * Register a new plugin tracer.
1183 int register_tracer(struct tracer *type)
1189 pr_info("Tracer must have a name\n");
1193 if (strlen(type->name) >= MAX_TRACER_SIZE) {
1194 pr_info("Tracer has a name longer than %d\n", MAX_TRACER_SIZE);
1198 mutex_lock(&trace_types_lock);
1200 tracing_selftest_running = true;
1202 for (t = trace_types; t; t = t->next) {
1203 if (strcmp(type->name, t->name) == 0) {
1205 pr_info("Tracer %s already registered\n",
1212 if (!type->set_flag)
1213 type->set_flag = &dummy_set_flag;
1215 type->flags = &dummy_tracer_flags;
1217 if (!type->flags->opts)
1218 type->flags->opts = dummy_tracer_opt;
1220 ret = run_tracer_selftest(type);
1224 type->next = trace_types;
1228 tracing_selftest_running = false;
1229 mutex_unlock(&trace_types_lock);
1231 if (ret || !default_bootup_tracer)
1234 if (strncmp(default_bootup_tracer, type->name, MAX_TRACER_SIZE))
1237 printk(KERN_INFO "Starting tracer '%s'\n", type->name);
1238 /* Do we want this tracer to start on bootup? */
1239 tracing_set_tracer(&global_trace, type->name);
1240 default_bootup_tracer = NULL;
1241 /* disable other selftests, since this will break it. */
1242 tracing_selftest_disabled = true;
1243 #ifdef CONFIG_FTRACE_STARTUP_TEST
1244 printk(KERN_INFO "Disabling FTRACE selftests due to running tracer '%s'\n",
1252 void tracing_reset(struct trace_buffer *buf, int cpu)
1254 struct ring_buffer *buffer = buf->buffer;
1259 ring_buffer_record_disable(buffer);
1261 /* Make sure all commits have finished */
1262 synchronize_sched();
1263 ring_buffer_reset_cpu(buffer, cpu);
1265 ring_buffer_record_enable(buffer);
1268 void tracing_reset_online_cpus(struct trace_buffer *buf)
1270 struct ring_buffer *buffer = buf->buffer;
1276 ring_buffer_record_disable(buffer);
1278 /* Make sure all commits have finished */
1279 synchronize_sched();
1281 buf->time_start = buffer_ftrace_now(buf, buf->cpu);
1283 for_each_online_cpu(cpu)
1284 ring_buffer_reset_cpu(buffer, cpu);
1286 ring_buffer_record_enable(buffer);
1289 /* Must have trace_types_lock held */
1290 void tracing_reset_all_online_cpus(void)
1292 struct trace_array *tr;
1294 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
1295 tracing_reset_online_cpus(&tr->trace_buffer);
1296 #ifdef CONFIG_TRACER_MAX_TRACE
1297 tracing_reset_online_cpus(&tr->max_buffer);
1302 #define SAVED_CMDLINES_DEFAULT 128
1303 #define NO_CMDLINE_MAP UINT_MAX
1304 static arch_spinlock_t trace_cmdline_lock = __ARCH_SPIN_LOCK_UNLOCKED;
1305 struct saved_cmdlines_buffer {
1306 unsigned map_pid_to_cmdline[PID_MAX_DEFAULT+1];
1307 unsigned *map_cmdline_to_pid;
1308 unsigned cmdline_num;
1310 char *saved_cmdlines;
1312 static struct saved_cmdlines_buffer *savedcmd;
1314 /* temporary disable recording */
1315 static atomic_t trace_record_cmdline_disabled __read_mostly;
1317 static inline char *get_saved_cmdlines(int idx)
1319 return &savedcmd->saved_cmdlines[idx * TASK_COMM_LEN];
1322 static inline void set_cmdline(int idx, const char *cmdline)
1324 memcpy(get_saved_cmdlines(idx), cmdline, TASK_COMM_LEN);
1327 static int allocate_cmdlines_buffer(unsigned int val,
1328 struct saved_cmdlines_buffer *s)
1330 s->map_cmdline_to_pid = kmalloc(val * sizeof(*s->map_cmdline_to_pid),
1332 if (!s->map_cmdline_to_pid)
1335 s->saved_cmdlines = kmalloc(val * TASK_COMM_LEN, GFP_KERNEL);
1336 if (!s->saved_cmdlines) {
1337 kfree(s->map_cmdline_to_pid);
1342 s->cmdline_num = val;
1343 memset(&s->map_pid_to_cmdline, NO_CMDLINE_MAP,
1344 sizeof(s->map_pid_to_cmdline));
1345 memset(s->map_cmdline_to_pid, NO_CMDLINE_MAP,
1346 val * sizeof(*s->map_cmdline_to_pid));
1351 static int trace_create_savedcmd(void)
1355 savedcmd = kmalloc(sizeof(*savedcmd), GFP_KERNEL);
1359 ret = allocate_cmdlines_buffer(SAVED_CMDLINES_DEFAULT, savedcmd);
1369 int is_tracing_stopped(void)
1371 return global_trace.stop_count;
1375 * tracing_start - quick start of the tracer
1377 * If tracing is enabled but was stopped by tracing_stop,
1378 * this will start the tracer back up.
1380 void tracing_start(void)
1382 struct ring_buffer *buffer;
1383 unsigned long flags;
1385 if (tracing_disabled)
1388 raw_spin_lock_irqsave(&global_trace.start_lock, flags);
1389 if (--global_trace.stop_count) {
1390 if (global_trace.stop_count < 0) {
1391 /* Someone screwed up their debugging */
1393 global_trace.stop_count = 0;
1398 /* Prevent the buffers from switching */
1399 arch_spin_lock(&global_trace.max_lock);
1401 buffer = global_trace.trace_buffer.buffer;
1403 ring_buffer_record_enable(buffer);
1405 #ifdef CONFIG_TRACER_MAX_TRACE
1406 buffer = global_trace.max_buffer.buffer;
1408 ring_buffer_record_enable(buffer);
1411 arch_spin_unlock(&global_trace.max_lock);
1414 raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
1417 static void tracing_start_tr(struct trace_array *tr)
1419 struct ring_buffer *buffer;
1420 unsigned long flags;
1422 if (tracing_disabled)
1425 /* If global, we need to also start the max tracer */
1426 if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
1427 return tracing_start();
1429 raw_spin_lock_irqsave(&tr->start_lock, flags);
1431 if (--tr->stop_count) {
1432 if (tr->stop_count < 0) {
1433 /* Someone screwed up their debugging */
1440 buffer = tr->trace_buffer.buffer;
1442 ring_buffer_record_enable(buffer);
1445 raw_spin_unlock_irqrestore(&tr->start_lock, flags);
1449 * tracing_stop - quick stop of the tracer
1451 * Light weight way to stop tracing. Use in conjunction with
1454 void tracing_stop(void)
1456 struct ring_buffer *buffer;
1457 unsigned long flags;
1459 raw_spin_lock_irqsave(&global_trace.start_lock, flags);
1460 if (global_trace.stop_count++)
1463 /* Prevent the buffers from switching */
1464 arch_spin_lock(&global_trace.max_lock);
1466 buffer = global_trace.trace_buffer.buffer;
1468 ring_buffer_record_disable(buffer);
1470 #ifdef CONFIG_TRACER_MAX_TRACE
1471 buffer = global_trace.max_buffer.buffer;
1473 ring_buffer_record_disable(buffer);
1476 arch_spin_unlock(&global_trace.max_lock);
1479 raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
1482 static void tracing_stop_tr(struct trace_array *tr)
1484 struct ring_buffer *buffer;
1485 unsigned long flags;
1487 /* If global, we need to also stop the max tracer */
1488 if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
1489 return tracing_stop();
1491 raw_spin_lock_irqsave(&tr->start_lock, flags);
1492 if (tr->stop_count++)
1495 buffer = tr->trace_buffer.buffer;
1497 ring_buffer_record_disable(buffer);
1500 raw_spin_unlock_irqrestore(&tr->start_lock, flags);
1503 void trace_stop_cmdline_recording(void);
1505 static int trace_save_cmdline(struct task_struct *tsk)
1509 if (!tsk->pid || unlikely(tsk->pid > PID_MAX_DEFAULT))
1513 * It's not the end of the world if we don't get
1514 * the lock, but we also don't want to spin
1515 * nor do we want to disable interrupts,
1516 * so if we miss here, then better luck next time.
1518 if (!arch_spin_trylock(&trace_cmdline_lock))
1521 idx = savedcmd->map_pid_to_cmdline[tsk->pid];
1522 if (idx == NO_CMDLINE_MAP) {
1523 idx = (savedcmd->cmdline_idx + 1) % savedcmd->cmdline_num;
1526 * Check whether the cmdline buffer at idx has a pid
1527 * mapped. We are going to overwrite that entry so we
1528 * need to clear the map_pid_to_cmdline. Otherwise we
1529 * would read the new comm for the old pid.
1531 pid = savedcmd->map_cmdline_to_pid[idx];
1532 if (pid != NO_CMDLINE_MAP)
1533 savedcmd->map_pid_to_cmdline[pid] = NO_CMDLINE_MAP;
1535 savedcmd->map_cmdline_to_pid[idx] = tsk->pid;
1536 savedcmd->map_pid_to_cmdline[tsk->pid] = idx;
1538 savedcmd->cmdline_idx = idx;
1541 set_cmdline(idx, tsk->comm);
1543 arch_spin_unlock(&trace_cmdline_lock);
1548 static void __trace_find_cmdline(int pid, char comm[])
1553 strcpy(comm, "<idle>");
1557 if (WARN_ON_ONCE(pid < 0)) {
1558 strcpy(comm, "<XXX>");
1562 if (pid > PID_MAX_DEFAULT) {
1563 strcpy(comm, "<...>");
1567 map = savedcmd->map_pid_to_cmdline[pid];
1568 if (map != NO_CMDLINE_MAP)
1569 strcpy(comm, get_saved_cmdlines(map));
1571 strcpy(comm, "<...>");
1574 void trace_find_cmdline(int pid, char comm[])
1577 arch_spin_lock(&trace_cmdline_lock);
1579 __trace_find_cmdline(pid, comm);
1581 arch_spin_unlock(&trace_cmdline_lock);
1585 void tracing_record_cmdline(struct task_struct *tsk)
1587 if (atomic_read(&trace_record_cmdline_disabled) || !tracing_is_on())
1590 if (!__this_cpu_read(trace_cmdline_save))
1593 if (trace_save_cmdline(tsk))
1594 __this_cpu_write(trace_cmdline_save, false);
1598 tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags,
1601 struct task_struct *tsk = current;
1603 entry->preempt_count = pc & 0xff;
1604 entry->pid = (tsk) ? tsk->pid : 0;
1606 #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
1607 (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) |
1609 TRACE_FLAG_IRQS_NOSUPPORT |
1611 ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
1612 ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
1613 (tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) |
1614 (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0);
1616 EXPORT_SYMBOL_GPL(tracing_generic_entry_update);
1618 struct ring_buffer_event *
1619 trace_buffer_lock_reserve(struct ring_buffer *buffer,
1622 unsigned long flags, int pc)
1624 struct ring_buffer_event *event;
1626 event = ring_buffer_lock_reserve(buffer, len);
1627 if (event != NULL) {
1628 struct trace_entry *ent = ring_buffer_event_data(event);
1630 tracing_generic_entry_update(ent, flags, pc);
1638 __buffer_unlock_commit(struct ring_buffer *buffer, struct ring_buffer_event *event)
1640 __this_cpu_write(trace_cmdline_save, true);
1641 ring_buffer_unlock_commit(buffer, event);
1645 __trace_buffer_unlock_commit(struct ring_buffer *buffer,
1646 struct ring_buffer_event *event,
1647 unsigned long flags, int pc)
1649 __buffer_unlock_commit(buffer, event);
1651 ftrace_trace_stack(buffer, flags, 6, pc);
1652 ftrace_trace_userstack(buffer, flags, pc);
1655 void trace_buffer_unlock_commit(struct ring_buffer *buffer,
1656 struct ring_buffer_event *event,
1657 unsigned long flags, int pc)
1659 __trace_buffer_unlock_commit(buffer, event, flags, pc);
1661 EXPORT_SYMBOL_GPL(trace_buffer_unlock_commit);
1663 static struct ring_buffer *temp_buffer;
1665 struct ring_buffer_event *
1666 trace_event_buffer_lock_reserve(struct ring_buffer **current_rb,
1667 struct ftrace_event_file *ftrace_file,
1668 int type, unsigned long len,
1669 unsigned long flags, int pc)
1671 struct ring_buffer_event *entry;
1673 *current_rb = ftrace_file->tr->trace_buffer.buffer;
1674 entry = trace_buffer_lock_reserve(*current_rb,
1675 type, len, flags, pc);
1677 * If tracing is off, but we have triggers enabled
1678 * we still need to look at the event data. Use the temp_buffer
1679 * to store the trace event for the tigger to use. It's recusive
1680 * safe and will not be recorded anywhere.
1682 if (!entry && ftrace_file->flags & FTRACE_EVENT_FL_TRIGGER_COND) {
1683 *current_rb = temp_buffer;
1684 entry = trace_buffer_lock_reserve(*current_rb,
1685 type, len, flags, pc);
1689 EXPORT_SYMBOL_GPL(trace_event_buffer_lock_reserve);
1691 struct ring_buffer_event *
1692 trace_current_buffer_lock_reserve(struct ring_buffer **current_rb,
1693 int type, unsigned long len,
1694 unsigned long flags, int pc)
1696 *current_rb = global_trace.trace_buffer.buffer;
1697 return trace_buffer_lock_reserve(*current_rb,
1698 type, len, flags, pc);
1700 EXPORT_SYMBOL_GPL(trace_current_buffer_lock_reserve);
1702 void trace_current_buffer_unlock_commit(struct ring_buffer *buffer,
1703 struct ring_buffer_event *event,
1704 unsigned long flags, int pc)
1706 __trace_buffer_unlock_commit(buffer, event, flags, pc);
1708 EXPORT_SYMBOL_GPL(trace_current_buffer_unlock_commit);
1710 void trace_buffer_unlock_commit_regs(struct ring_buffer *buffer,
1711 struct ring_buffer_event *event,
1712 unsigned long flags, int pc,
1713 struct pt_regs *regs)
1715 __buffer_unlock_commit(buffer, event);
1717 ftrace_trace_stack_regs(buffer, flags, 0, pc, regs);
1718 ftrace_trace_userstack(buffer, flags, pc);
1720 EXPORT_SYMBOL_GPL(trace_buffer_unlock_commit_regs);
1722 void trace_current_buffer_discard_commit(struct ring_buffer *buffer,
1723 struct ring_buffer_event *event)
1725 ring_buffer_discard_commit(buffer, event);
1727 EXPORT_SYMBOL_GPL(trace_current_buffer_discard_commit);
1730 trace_function(struct trace_array *tr,
1731 unsigned long ip, unsigned long parent_ip, unsigned long flags,
1734 struct ftrace_event_call *call = &event_function;
1735 struct ring_buffer *buffer = tr->trace_buffer.buffer;
1736 struct ring_buffer_event *event;
1737 struct ftrace_entry *entry;
1739 /* If we are reading the ring buffer, don't trace */
1740 if (unlikely(__this_cpu_read(ftrace_cpu_disabled)))
1743 event = trace_buffer_lock_reserve(buffer, TRACE_FN, sizeof(*entry),
1747 entry = ring_buffer_event_data(event);
1749 entry->parent_ip = parent_ip;
1751 if (!call_filter_check_discard(call, entry, buffer, event))
1752 __buffer_unlock_commit(buffer, event);
1755 #ifdef CONFIG_STACKTRACE
1757 #define FTRACE_STACK_MAX_ENTRIES (PAGE_SIZE / sizeof(unsigned long))
1758 struct ftrace_stack {
1759 unsigned long calls[FTRACE_STACK_MAX_ENTRIES];
1762 static DEFINE_PER_CPU(struct ftrace_stack, ftrace_stack);
1763 static DEFINE_PER_CPU(int, ftrace_stack_reserve);
1765 static void __ftrace_trace_stack(struct ring_buffer *buffer,
1766 unsigned long flags,
1767 int skip, int pc, struct pt_regs *regs)
1769 struct ftrace_event_call *call = &event_kernel_stack;
1770 struct ring_buffer_event *event;
1771 struct stack_entry *entry;
1772 struct stack_trace trace;
1774 int size = FTRACE_STACK_ENTRIES;
1776 trace.nr_entries = 0;
1780 * Since events can happen in NMIs there's no safe way to
1781 * use the per cpu ftrace_stacks. We reserve it and if an interrupt
1782 * or NMI comes in, it will just have to use the default
1783 * FTRACE_STACK_SIZE.
1785 preempt_disable_notrace();
1787 use_stack = __this_cpu_inc_return(ftrace_stack_reserve);
1789 * We don't need any atomic variables, just a barrier.
1790 * If an interrupt comes in, we don't care, because it would
1791 * have exited and put the counter back to what we want.
1792 * We just need a barrier to keep gcc from moving things
1796 if (use_stack == 1) {
1797 trace.entries = this_cpu_ptr(ftrace_stack.calls);
1798 trace.max_entries = FTRACE_STACK_MAX_ENTRIES;
1801 save_stack_trace_regs(regs, &trace);
1803 save_stack_trace(&trace);
1805 if (trace.nr_entries > size)
1806 size = trace.nr_entries;
1808 /* From now on, use_stack is a boolean */
1811 size *= sizeof(unsigned long);
1813 event = trace_buffer_lock_reserve(buffer, TRACE_STACK,
1814 sizeof(*entry) + size, flags, pc);
1817 entry = ring_buffer_event_data(event);
1819 memset(&entry->caller, 0, size);
1822 memcpy(&entry->caller, trace.entries,
1823 trace.nr_entries * sizeof(unsigned long));
1825 trace.max_entries = FTRACE_STACK_ENTRIES;
1826 trace.entries = entry->caller;
1828 save_stack_trace_regs(regs, &trace);
1830 save_stack_trace(&trace);
1833 entry->size = trace.nr_entries;
1835 if (!call_filter_check_discard(call, entry, buffer, event))
1836 __buffer_unlock_commit(buffer, event);
1839 /* Again, don't let gcc optimize things here */
1841 __this_cpu_dec(ftrace_stack_reserve);
1842 preempt_enable_notrace();
1846 void ftrace_trace_stack_regs(struct ring_buffer *buffer, unsigned long flags,
1847 int skip, int pc, struct pt_regs *regs)
1849 if (!(trace_flags & TRACE_ITER_STACKTRACE))
1852 __ftrace_trace_stack(buffer, flags, skip, pc, regs);
1855 void ftrace_trace_stack(struct ring_buffer *buffer, unsigned long flags,
1858 if (!(trace_flags & TRACE_ITER_STACKTRACE))
1861 __ftrace_trace_stack(buffer, flags, skip, pc, NULL);
1864 void __trace_stack(struct trace_array *tr, unsigned long flags, int skip,
1867 __ftrace_trace_stack(tr->trace_buffer.buffer, flags, skip, pc, NULL);
1871 * trace_dump_stack - record a stack back trace in the trace buffer
1872 * @skip: Number of functions to skip (helper handlers)
1874 void trace_dump_stack(int skip)
1876 unsigned long flags;
1878 if (tracing_disabled || tracing_selftest_running)
1881 local_save_flags(flags);
1884 * Skip 3 more, seems to get us at the caller of
1888 __ftrace_trace_stack(global_trace.trace_buffer.buffer,
1889 flags, skip, preempt_count(), NULL);
1892 static DEFINE_PER_CPU(int, user_stack_count);
1895 ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc)
1897 struct ftrace_event_call *call = &event_user_stack;
1898 struct ring_buffer_event *event;
1899 struct userstack_entry *entry;
1900 struct stack_trace trace;
1902 if (!(trace_flags & TRACE_ITER_USERSTACKTRACE))
1906 * NMIs can not handle page faults, even with fix ups.
1907 * The save user stack can (and often does) fault.
1909 if (unlikely(in_nmi()))
1913 * prevent recursion, since the user stack tracing may
1914 * trigger other kernel events.
1917 if (__this_cpu_read(user_stack_count))
1920 __this_cpu_inc(user_stack_count);
1922 event = trace_buffer_lock_reserve(buffer, TRACE_USER_STACK,
1923 sizeof(*entry), flags, pc);
1925 goto out_drop_count;
1926 entry = ring_buffer_event_data(event);
1928 entry->tgid = current->tgid;
1929 memset(&entry->caller, 0, sizeof(entry->caller));
1931 trace.nr_entries = 0;
1932 trace.max_entries = FTRACE_STACK_ENTRIES;
1934 trace.entries = entry->caller;
1936 save_stack_trace_user(&trace);
1937 if (!call_filter_check_discard(call, entry, buffer, event))
1938 __buffer_unlock_commit(buffer, event);
1941 __this_cpu_dec(user_stack_count);
1947 static void __trace_userstack(struct trace_array *tr, unsigned long flags)
1949 ftrace_trace_userstack(tr, flags, preempt_count());
1953 #endif /* CONFIG_STACKTRACE */
1955 /* created for use with alloc_percpu */
1956 struct trace_buffer_struct {
1957 char buffer[TRACE_BUF_SIZE];
1960 static struct trace_buffer_struct *trace_percpu_buffer;
1961 static struct trace_buffer_struct *trace_percpu_sirq_buffer;
1962 static struct trace_buffer_struct *trace_percpu_irq_buffer;
1963 static struct trace_buffer_struct *trace_percpu_nmi_buffer;
1966 * The buffer used is dependent on the context. There is a per cpu
1967 * buffer for normal context, softirq contex, hard irq context and
1968 * for NMI context. Thise allows for lockless recording.
1970 * Note, if the buffers failed to be allocated, then this returns NULL
1972 static char *get_trace_buf(void)
1974 struct trace_buffer_struct *percpu_buffer;
1977 * If we have allocated per cpu buffers, then we do not
1978 * need to do any locking.
1981 percpu_buffer = trace_percpu_nmi_buffer;
1983 percpu_buffer = trace_percpu_irq_buffer;
1984 else if (in_softirq())
1985 percpu_buffer = trace_percpu_sirq_buffer;
1987 percpu_buffer = trace_percpu_buffer;
1992 return this_cpu_ptr(&percpu_buffer->buffer[0]);
1995 static int alloc_percpu_trace_buffer(void)
1997 struct trace_buffer_struct *buffers;
1998 struct trace_buffer_struct *sirq_buffers;
1999 struct trace_buffer_struct *irq_buffers;
2000 struct trace_buffer_struct *nmi_buffers;
2002 buffers = alloc_percpu(struct trace_buffer_struct);
2006 sirq_buffers = alloc_percpu(struct trace_buffer_struct);
2010 irq_buffers = alloc_percpu(struct trace_buffer_struct);
2014 nmi_buffers = alloc_percpu(struct trace_buffer_struct);
2018 trace_percpu_buffer = buffers;
2019 trace_percpu_sirq_buffer = sirq_buffers;
2020 trace_percpu_irq_buffer = irq_buffers;
2021 trace_percpu_nmi_buffer = nmi_buffers;
2026 free_percpu(irq_buffers);
2028 free_percpu(sirq_buffers);
2030 free_percpu(buffers);
2032 WARN(1, "Could not allocate percpu trace_printk buffer");
2036 static int buffers_allocated;
2038 void trace_printk_init_buffers(void)
2040 if (buffers_allocated)
2043 if (alloc_percpu_trace_buffer())
2046 /* trace_printk() is for debug use only. Don't use it in production. */
2048 pr_warning("\n**********************************************************\n");
2049 pr_warning("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n");
2050 pr_warning("** **\n");
2051 pr_warning("** trace_printk() being used. Allocating extra memory. **\n");
2052 pr_warning("** **\n");
2053 pr_warning("** This means that this is a DEBUG kernel and it is **\n");
2054 pr_warning("** unsafe for produciton use. **\n");
2055 pr_warning("** **\n");
2056 pr_warning("** If you see this message and you are not debugging **\n");
2057 pr_warning("** the kernel, report this immediately to your vendor! **\n");
2058 pr_warning("** **\n");
2059 pr_warning("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n");
2060 pr_warning("**********************************************************\n");
2062 /* Expand the buffers to set size */
2063 tracing_update_buffers();
2065 buffers_allocated = 1;
2068 * trace_printk_init_buffers() can be called by modules.
2069 * If that happens, then we need to start cmdline recording
2070 * directly here. If the global_trace.buffer is already
2071 * allocated here, then this was called by module code.
2073 if (global_trace.trace_buffer.buffer)
2074 tracing_start_cmdline_record();
2077 void trace_printk_start_comm(void)
2079 /* Start tracing comms if trace printk is set */
2080 if (!buffers_allocated)
2082 tracing_start_cmdline_record();
2085 static void trace_printk_start_stop_comm(int enabled)
2087 if (!buffers_allocated)
2091 tracing_start_cmdline_record();
2093 tracing_stop_cmdline_record();
2097 * trace_vbprintk - write binary msg to tracing buffer
2100 int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
2102 struct ftrace_event_call *call = &event_bprint;
2103 struct ring_buffer_event *event;
2104 struct ring_buffer *buffer;
2105 struct trace_array *tr = &global_trace;
2106 struct bprint_entry *entry;
2107 unsigned long flags;
2109 int len = 0, size, pc;
2111 if (unlikely(tracing_selftest_running || tracing_disabled))
2114 /* Don't pollute graph traces with trace_vprintk internals */
2115 pause_graph_tracing();
2117 pc = preempt_count();
2118 preempt_disable_notrace();
2120 tbuffer = get_trace_buf();
2126 len = vbin_printf((u32 *)tbuffer, TRACE_BUF_SIZE/sizeof(int), fmt, args);
2128 if (len > TRACE_BUF_SIZE/sizeof(int) || len < 0)
2131 local_save_flags(flags);
2132 size = sizeof(*entry) + sizeof(u32) * len;
2133 buffer = tr->trace_buffer.buffer;
2134 event = trace_buffer_lock_reserve(buffer, TRACE_BPRINT, size,
2138 entry = ring_buffer_event_data(event);
2142 memcpy(entry->buf, tbuffer, sizeof(u32) * len);
2143 if (!call_filter_check_discard(call, entry, buffer, event)) {
2144 __buffer_unlock_commit(buffer, event);
2145 ftrace_trace_stack(buffer, flags, 6, pc);
2149 preempt_enable_notrace();
2150 unpause_graph_tracing();
2154 EXPORT_SYMBOL_GPL(trace_vbprintk);
2157 __trace_array_vprintk(struct ring_buffer *buffer,
2158 unsigned long ip, const char *fmt, va_list args)
2160 struct ftrace_event_call *call = &event_print;
2161 struct ring_buffer_event *event;
2162 int len = 0, size, pc;
2163 struct print_entry *entry;
2164 unsigned long flags;
2167 if (tracing_disabled || tracing_selftest_running)
2170 /* Don't pollute graph traces with trace_vprintk internals */
2171 pause_graph_tracing();
2173 pc = preempt_count();
2174 preempt_disable_notrace();
2177 tbuffer = get_trace_buf();
2183 len = vsnprintf(tbuffer, TRACE_BUF_SIZE, fmt, args);
2184 if (len > TRACE_BUF_SIZE)
2187 local_save_flags(flags);
2188 size = sizeof(*entry) + len + 1;
2189 event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
2193 entry = ring_buffer_event_data(event);
2196 memcpy(&entry->buf, tbuffer, len);
2197 entry->buf[len] = '\0';
2198 if (!call_filter_check_discard(call, entry, buffer, event)) {
2199 __buffer_unlock_commit(buffer, event);
2200 ftrace_trace_stack(buffer, flags, 6, pc);
2203 preempt_enable_notrace();
2204 unpause_graph_tracing();
2209 int trace_array_vprintk(struct trace_array *tr,
2210 unsigned long ip, const char *fmt, va_list args)
2212 return __trace_array_vprintk(tr->trace_buffer.buffer, ip, fmt, args);
2215 int trace_array_printk(struct trace_array *tr,
2216 unsigned long ip, const char *fmt, ...)
2221 if (!(trace_flags & TRACE_ITER_PRINTK))
2225 ret = trace_array_vprintk(tr, ip, fmt, ap);
2230 int trace_array_printk_buf(struct ring_buffer *buffer,
2231 unsigned long ip, const char *fmt, ...)
2236 if (!(trace_flags & TRACE_ITER_PRINTK))
2240 ret = __trace_array_vprintk(buffer, ip, fmt, ap);
2245 int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
2247 return trace_array_vprintk(&global_trace, ip, fmt, args);
2249 EXPORT_SYMBOL_GPL(trace_vprintk);
2251 static void trace_iterator_increment(struct trace_iterator *iter)
2253 struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, iter->cpu);
2257 ring_buffer_read(buf_iter, NULL);
2260 static struct trace_entry *
2261 peek_next_entry(struct trace_iterator *iter, int cpu, u64 *ts,
2262 unsigned long *lost_events)
2264 struct ring_buffer_event *event;
2265 struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, cpu);
2268 event = ring_buffer_iter_peek(buf_iter, ts);
2270 event = ring_buffer_peek(iter->trace_buffer->buffer, cpu, ts,
2274 iter->ent_size = ring_buffer_event_length(event);
2275 return ring_buffer_event_data(event);
2281 static struct trace_entry *
2282 __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
2283 unsigned long *missing_events, u64 *ent_ts)
2285 struct ring_buffer *buffer = iter->trace_buffer->buffer;
2286 struct trace_entry *ent, *next = NULL;
2287 unsigned long lost_events = 0, next_lost = 0;
2288 int cpu_file = iter->cpu_file;
2289 u64 next_ts = 0, ts;
2295 * If we are in a per_cpu trace file, don't bother by iterating over
2296 * all cpu and peek directly.
2298 if (cpu_file > RING_BUFFER_ALL_CPUS) {
2299 if (ring_buffer_empty_cpu(buffer, cpu_file))
2301 ent = peek_next_entry(iter, cpu_file, ent_ts, missing_events);
2303 *ent_cpu = cpu_file;
2308 for_each_tracing_cpu(cpu) {
2310 if (ring_buffer_empty_cpu(buffer, cpu))
2313 ent = peek_next_entry(iter, cpu, &ts, &lost_events);
2316 * Pick the entry with the smallest timestamp:
2318 if (ent && (!next || ts < next_ts)) {
2322 next_lost = lost_events;
2323 next_size = iter->ent_size;
2327 iter->ent_size = next_size;
2330 *ent_cpu = next_cpu;
2336 *missing_events = next_lost;
2341 /* Find the next real entry, without updating the iterator itself */
2342 struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,
2343 int *ent_cpu, u64 *ent_ts)
2345 return __find_next_entry(iter, ent_cpu, NULL, ent_ts);
2348 /* Find the next real entry, and increment the iterator to the next entry */
2349 void *trace_find_next_entry_inc(struct trace_iterator *iter)
2351 iter->ent = __find_next_entry(iter, &iter->cpu,
2352 &iter->lost_events, &iter->ts);
2355 trace_iterator_increment(iter);
2357 return iter->ent ? iter : NULL;
2360 static void trace_consume(struct trace_iterator *iter)
2362 ring_buffer_consume(iter->trace_buffer->buffer, iter->cpu, &iter->ts,
2363 &iter->lost_events);
2366 static void *s_next(struct seq_file *m, void *v, loff_t *pos)
2368 struct trace_iterator *iter = m->private;
2372 WARN_ON_ONCE(iter->leftover);
2376 /* can't go backwards */
2381 ent = trace_find_next_entry_inc(iter);
2385 while (ent && iter->idx < i)
2386 ent = trace_find_next_entry_inc(iter);
2393 void tracing_iter_reset(struct trace_iterator *iter, int cpu)
2395 struct ring_buffer_event *event;
2396 struct ring_buffer_iter *buf_iter;
2397 unsigned long entries = 0;
2400 per_cpu_ptr(iter->trace_buffer->data, cpu)->skipped_entries = 0;
2402 buf_iter = trace_buffer_iter(iter, cpu);
2406 ring_buffer_iter_reset(buf_iter);
2409 * We could have the case with the max latency tracers
2410 * that a reset never took place on a cpu. This is evident
2411 * by the timestamp being before the start of the buffer.
2413 while ((event = ring_buffer_iter_peek(buf_iter, &ts))) {
2414 if (ts >= iter->trace_buffer->time_start)
2417 ring_buffer_read(buf_iter, NULL);
2420 per_cpu_ptr(iter->trace_buffer->data, cpu)->skipped_entries = entries;
2424 * The current tracer is copied to avoid a global locking
2427 static void *s_start(struct seq_file *m, loff_t *pos)
2429 struct trace_iterator *iter = m->private;
2430 struct trace_array *tr = iter->tr;
2431 int cpu_file = iter->cpu_file;
2437 * copy the tracer to avoid using a global lock all around.
2438 * iter->trace is a copy of current_trace, the pointer to the
2439 * name may be used instead of a strcmp(), as iter->trace->name
2440 * will point to the same string as current_trace->name.
2442 mutex_lock(&trace_types_lock);
2443 if (unlikely(tr->current_trace && iter->trace->name != tr->current_trace->name))
2444 *iter->trace = *tr->current_trace;
2445 mutex_unlock(&trace_types_lock);
2447 #ifdef CONFIG_TRACER_MAX_TRACE
2448 if (iter->snapshot && iter->trace->use_max_tr)
2449 return ERR_PTR(-EBUSY);
2452 if (!iter->snapshot)
2453 atomic_inc(&trace_record_cmdline_disabled);
2455 if (*pos != iter->pos) {
2460 if (cpu_file == RING_BUFFER_ALL_CPUS) {
2461 for_each_tracing_cpu(cpu)
2462 tracing_iter_reset(iter, cpu);
2464 tracing_iter_reset(iter, cpu_file);
2467 for (p = iter; p && l < *pos; p = s_next(m, p, &l))
2472 * If we overflowed the seq_file before, then we want
2473 * to just reuse the trace_seq buffer again.
2479 p = s_next(m, p, &l);
2483 trace_event_read_lock();
2484 trace_access_lock(cpu_file);
2488 static void s_stop(struct seq_file *m, void *p)
2490 struct trace_iterator *iter = m->private;
2492 #ifdef CONFIG_TRACER_MAX_TRACE
2493 if (iter->snapshot && iter->trace->use_max_tr)
2497 if (!iter->snapshot)
2498 atomic_dec(&trace_record_cmdline_disabled);
2500 trace_access_unlock(iter->cpu_file);
2501 trace_event_read_unlock();
2505 get_total_entries(struct trace_buffer *buf,
2506 unsigned long *total, unsigned long *entries)
2508 unsigned long count;
2514 for_each_tracing_cpu(cpu) {
2515 count = ring_buffer_entries_cpu(buf->buffer, cpu);
2517 * If this buffer has skipped entries, then we hold all
2518 * entries for the trace and we need to ignore the
2519 * ones before the time stamp.
2521 if (per_cpu_ptr(buf->data, cpu)->skipped_entries) {
2522 count -= per_cpu_ptr(buf->data, cpu)->skipped_entries;
2523 /* total is the same as the entries */
2527 ring_buffer_overrun_cpu(buf->buffer, cpu);
2532 static void print_lat_help_header(struct seq_file *m)
2534 seq_puts(m, "# _------=> CPU# \n");
2535 seq_puts(m, "# / _-----=> irqs-off \n");
2536 seq_puts(m, "# | / _----=> need-resched \n");
2537 seq_puts(m, "# || / _---=> hardirq/softirq \n");
2538 seq_puts(m, "# ||| / _--=> preempt-depth \n");
2539 seq_puts(m, "# |||| / delay \n");
2540 seq_puts(m, "# cmd pid ||||| time | caller \n");
2541 seq_puts(m, "# \\ / ||||| \\ | / \n");
2544 static void print_event_info(struct trace_buffer *buf, struct seq_file *m)
2546 unsigned long total;
2547 unsigned long entries;
2549 get_total_entries(buf, &total, &entries);
2550 seq_printf(m, "# entries-in-buffer/entries-written: %lu/%lu #P:%d\n",
2551 entries, total, num_online_cpus());
2555 static void print_func_help_header(struct trace_buffer *buf, struct seq_file *m)
2557 print_event_info(buf, m);
2558 seq_puts(m, "# TASK-PID CPU# TIMESTAMP FUNCTION\n");
2559 seq_puts(m, "# | | | | |\n");
2562 static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file *m)
2564 print_event_info(buf, m);
2565 seq_puts(m, "# _-----=> irqs-off\n");
2566 seq_puts(m, "# / _----=> need-resched\n");
2567 seq_puts(m, "# | / _---=> hardirq/softirq\n");
2568 seq_puts(m, "# || / _--=> preempt-depth\n");
2569 seq_puts(m, "# ||| / delay\n");
2570 seq_puts(m, "# TASK-PID CPU# |||| TIMESTAMP FUNCTION\n");
2571 seq_puts(m, "# | | | |||| | |\n");
2575 print_trace_header(struct seq_file *m, struct trace_iterator *iter)
2577 unsigned long sym_flags = (trace_flags & TRACE_ITER_SYM_MASK);
2578 struct trace_buffer *buf = iter->trace_buffer;
2579 struct trace_array_cpu *data = per_cpu_ptr(buf->data, buf->cpu);
2580 struct tracer *type = iter->trace;
2581 unsigned long entries;
2582 unsigned long total;
2583 const char *name = "preemption";
2587 get_total_entries(buf, &total, &entries);
2589 seq_printf(m, "# %s latency trace v1.1.5 on %s\n",
2591 seq_puts(m, "# -----------------------------------"
2592 "---------------------------------\n");
2593 seq_printf(m, "# latency: %lu us, #%lu/%lu, CPU#%d |"
2594 " (M:%s VP:%d, KP:%d, SP:%d HP:%d",
2595 nsecs_to_usecs(data->saved_latency),
2599 #if defined(CONFIG_PREEMPT_NONE)
2601 #elif defined(CONFIG_PREEMPT_VOLUNTARY)
2603 #elif defined(CONFIG_PREEMPT)
2608 /* These are reserved for later use */
2611 seq_printf(m, " #P:%d)\n", num_online_cpus());
2615 seq_puts(m, "# -----------------\n");
2616 seq_printf(m, "# | task: %.16s-%d "
2617 "(uid:%d nice:%ld policy:%ld rt_prio:%ld)\n",
2618 data->comm, data->pid,
2619 from_kuid_munged(seq_user_ns(m), data->uid), data->nice,
2620 data->policy, data->rt_priority);
2621 seq_puts(m, "# -----------------\n");
2623 if (data->critical_start) {
2624 seq_puts(m, "# => started at: ");
2625 seq_print_ip_sym(&iter->seq, data->critical_start, sym_flags);
2626 trace_print_seq(m, &iter->seq);
2627 seq_puts(m, "\n# => ended at: ");
2628 seq_print_ip_sym(&iter->seq, data->critical_end, sym_flags);
2629 trace_print_seq(m, &iter->seq);
2630 seq_puts(m, "\n#\n");
2636 static void test_cpu_buff_start(struct trace_iterator *iter)
2638 struct trace_seq *s = &iter->seq;
2640 if (!(trace_flags & TRACE_ITER_ANNOTATE))
2643 if (!(iter->iter_flags & TRACE_FILE_ANNOTATE))
2646 if (cpumask_test_cpu(iter->cpu, iter->started))
2649 if (per_cpu_ptr(iter->trace_buffer->data, iter->cpu)->skipped_entries)
2652 cpumask_set_cpu(iter->cpu, iter->started);
2654 /* Don't print started cpu buffer for the first entry of the trace */
2656 trace_seq_printf(s, "##### CPU %u buffer started ####\n",
2660 static enum print_line_t print_trace_fmt(struct trace_iterator *iter)
2662 struct trace_seq *s = &iter->seq;
2663 unsigned long sym_flags = (trace_flags & TRACE_ITER_SYM_MASK);
2664 struct trace_entry *entry;
2665 struct trace_event *event;
2669 test_cpu_buff_start(iter);
2671 event = ftrace_find_event(entry->type);
2673 if (trace_flags & TRACE_ITER_CONTEXT_INFO) {
2674 if (iter->iter_flags & TRACE_FILE_LAT_FMT) {
2675 if (!trace_print_lat_context(iter))
2678 if (!trace_print_context(iter))
2684 return event->funcs->trace(iter, sym_flags, event);
2686 if (!trace_seq_printf(s, "Unknown type %d\n", entry->type))
2689 return TRACE_TYPE_HANDLED;
2691 return TRACE_TYPE_PARTIAL_LINE;
2694 static enum print_line_t print_raw_fmt(struct trace_iterator *iter)
2696 struct trace_seq *s = &iter->seq;
2697 struct trace_entry *entry;
2698 struct trace_event *event;
2702 if (trace_flags & TRACE_ITER_CONTEXT_INFO) {
2703 if (!trace_seq_printf(s, "%d %d %llu ",
2704 entry->pid, iter->cpu, iter->ts))
2708 event = ftrace_find_event(entry->type);
2710 return event->funcs->raw(iter, 0, event);
2712 if (!trace_seq_printf(s, "%d ?\n", entry->type))
2715 return TRACE_TYPE_HANDLED;
2717 return TRACE_TYPE_PARTIAL_LINE;
2720 static enum print_line_t print_hex_fmt(struct trace_iterator *iter)
2722 struct trace_seq *s = &iter->seq;
2723 unsigned char newline = '\n';
2724 struct trace_entry *entry;
2725 struct trace_event *event;
2729 if (trace_flags & TRACE_ITER_CONTEXT_INFO) {
2730 SEQ_PUT_HEX_FIELD_RET(s, entry->pid);
2731 SEQ_PUT_HEX_FIELD_RET(s, iter->cpu);
2732 SEQ_PUT_HEX_FIELD_RET(s, iter->ts);
2735 event = ftrace_find_event(entry->type);
2737 enum print_line_t ret = event->funcs->hex(iter, 0, event);
2738 if (ret != TRACE_TYPE_HANDLED)
2742 SEQ_PUT_FIELD_RET(s, newline);
2744 return TRACE_TYPE_HANDLED;
2747 static enum print_line_t print_bin_fmt(struct trace_iterator *iter)
2749 struct trace_seq *s = &iter->seq;
2750 struct trace_entry *entry;
2751 struct trace_event *event;
2755 if (trace_flags & TRACE_ITER_CONTEXT_INFO) {
2756 SEQ_PUT_FIELD_RET(s, entry->pid);
2757 SEQ_PUT_FIELD_RET(s, iter->cpu);
2758 SEQ_PUT_FIELD_RET(s, iter->ts);
2761 event = ftrace_find_event(entry->type);
2762 return event ? event->funcs->binary(iter, 0, event) :
2766 int trace_empty(struct trace_iterator *iter)
2768 struct ring_buffer_iter *buf_iter;
2771 /* If we are looking at one CPU buffer, only check that one */
2772 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
2773 cpu = iter->cpu_file;
2774 buf_iter = trace_buffer_iter(iter, cpu);
2776 if (!ring_buffer_iter_empty(buf_iter))
2779 if (!ring_buffer_empty_cpu(iter->trace_buffer->buffer, cpu))
2785 for_each_tracing_cpu(cpu) {
2786 buf_iter = trace_buffer_iter(iter, cpu);
2788 if (!ring_buffer_iter_empty(buf_iter))
2791 if (!ring_buffer_empty_cpu(iter->trace_buffer->buffer, cpu))
2799 /* Called with trace_event_read_lock() held. */
2800 enum print_line_t print_trace_line(struct trace_iterator *iter)
2802 enum print_line_t ret;
2804 if (iter->lost_events &&
2805 !trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
2806 iter->cpu, iter->lost_events))
2807 return TRACE_TYPE_PARTIAL_LINE;
2809 if (iter->trace && iter->trace->print_line) {
2810 ret = iter->trace->print_line(iter);
2811 if (ret != TRACE_TYPE_UNHANDLED)
2815 if (iter->ent->type == TRACE_BPUTS &&
2816 trace_flags & TRACE_ITER_PRINTK &&
2817 trace_flags & TRACE_ITER_PRINTK_MSGONLY)
2818 return trace_print_bputs_msg_only(iter);
2820 if (iter->ent->type == TRACE_BPRINT &&
2821 trace_flags & TRACE_ITER_PRINTK &&
2822 trace_flags & TRACE_ITER_PRINTK_MSGONLY)
2823 return trace_print_bprintk_msg_only(iter);
2825 if (iter->ent->type == TRACE_PRINT &&
2826 trace_flags & TRACE_ITER_PRINTK &&
2827 trace_flags & TRACE_ITER_PRINTK_MSGONLY)
2828 return trace_print_printk_msg_only(iter);
2830 if (trace_flags & TRACE_ITER_BIN)
2831 return print_bin_fmt(iter);
2833 if (trace_flags & TRACE_ITER_HEX)
2834 return print_hex_fmt(iter);
2836 if (trace_flags & TRACE_ITER_RAW)
2837 return print_raw_fmt(iter);
2839 return print_trace_fmt(iter);
2842 void trace_latency_header(struct seq_file *m)
2844 struct trace_iterator *iter = m->private;
2846 /* print nothing if the buffers are empty */
2847 if (trace_empty(iter))
2850 if (iter->iter_flags & TRACE_FILE_LAT_FMT)
2851 print_trace_header(m, iter);
2853 if (!(trace_flags & TRACE_ITER_VERBOSE))
2854 print_lat_help_header(m);
2857 void trace_default_header(struct seq_file *m)
2859 struct trace_iterator *iter = m->private;
2861 if (!(trace_flags & TRACE_ITER_CONTEXT_INFO))
2864 if (iter->iter_flags & TRACE_FILE_LAT_FMT) {
2865 /* print nothing if the buffers are empty */
2866 if (trace_empty(iter))
2868 print_trace_header(m, iter);
2869 if (!(trace_flags & TRACE_ITER_VERBOSE))
2870 print_lat_help_header(m);
2872 if (!(trace_flags & TRACE_ITER_VERBOSE)) {
2873 if (trace_flags & TRACE_ITER_IRQ_INFO)
2874 print_func_help_header_irq(iter->trace_buffer, m);
2876 print_func_help_header(iter->trace_buffer, m);
2881 static void test_ftrace_alive(struct seq_file *m)
2883 if (!ftrace_is_dead())
2885 seq_printf(m, "# WARNING: FUNCTION TRACING IS CORRUPTED\n");
2886 seq_printf(m, "# MAY BE MISSING FUNCTION EVENTS\n");
2889 #ifdef CONFIG_TRACER_MAX_TRACE
2890 static void show_snapshot_main_help(struct seq_file *m)
2892 seq_printf(m, "# echo 0 > snapshot : Clears and frees snapshot buffer\n");
2893 seq_printf(m, "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n");
2894 seq_printf(m, "# Takes a snapshot of the main buffer.\n");
2895 seq_printf(m, "# echo 2 > snapshot : Clears snapshot buffer (but does not allocate or free)\n");
2896 seq_printf(m, "# (Doesn't have to be '2' works with any number that\n");
2897 seq_printf(m, "# is not a '0' or '1')\n");
2900 static void show_snapshot_percpu_help(struct seq_file *m)
2902 seq_printf(m, "# echo 0 > snapshot : Invalid for per_cpu snapshot file.\n");
2903 #ifdef CONFIG_RING_BUFFER_ALLOW_SWAP
2904 seq_printf(m, "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n");
2905 seq_printf(m, "# Takes a snapshot of the main buffer for this cpu.\n");
2907 seq_printf(m, "# echo 1 > snapshot : Not supported with this kernel.\n");
2908 seq_printf(m, "# Must use main snapshot file to allocate.\n");
2910 seq_printf(m, "# echo 2 > snapshot : Clears this cpu's snapshot buffer (but does not allocate)\n");
2911 seq_printf(m, "# (Doesn't have to be '2' works with any number that\n");
2912 seq_printf(m, "# is not a '0' or '1')\n");
2915 static void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter)
2917 if (iter->tr->allocated_snapshot)
2918 seq_printf(m, "#\n# * Snapshot is allocated *\n#\n");
2920 seq_printf(m, "#\n# * Snapshot is freed *\n#\n");
2922 seq_printf(m, "# Snapshot commands:\n");
2923 if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
2924 show_snapshot_main_help(m);
2926 show_snapshot_percpu_help(m);
2929 /* Should never be called */
2930 static inline void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter) { }
2933 static int s_show(struct seq_file *m, void *v)
2935 struct trace_iterator *iter = v;
2938 if (iter->ent == NULL) {
2940 seq_printf(m, "# tracer: %s\n", iter->trace->name);
2942 test_ftrace_alive(m);
2944 if (iter->snapshot && trace_empty(iter))
2945 print_snapshot_help(m, iter);
2946 else if (iter->trace && iter->trace->print_header)
2947 iter->trace->print_header(m);
2949 trace_default_header(m);
2951 } else if (iter->leftover) {
2953 * If we filled the seq_file buffer earlier, we
2954 * want to just show it now.
2956 ret = trace_print_seq(m, &iter->seq);
2958 /* ret should this time be zero, but you never know */
2959 iter->leftover = ret;
2962 print_trace_line(iter);
2963 ret = trace_print_seq(m, &iter->seq);
2965 * If we overflow the seq_file buffer, then it will
2966 * ask us for this data again at start up.
2968 * ret is 0 if seq_file write succeeded.
2971 iter->leftover = ret;
2978 * Should be used after trace_array_get(), trace_types_lock
2979 * ensures that i_cdev was already initialized.
2981 static inline int tracing_get_cpu(struct inode *inode)
2983 if (inode->i_cdev) /* See trace_create_cpu_file() */
2984 return (long)inode->i_cdev - 1;
2985 return RING_BUFFER_ALL_CPUS;
2988 static const struct seq_operations tracer_seq_ops = {
2995 static struct trace_iterator *
2996 __tracing_open(struct inode *inode, struct file *file, bool snapshot)
2998 struct trace_array *tr = inode->i_private;
2999 struct trace_iterator *iter;
3002 if (tracing_disabled)
3003 return ERR_PTR(-ENODEV);
3005 iter = __seq_open_private(file, &tracer_seq_ops, sizeof(*iter));
3007 return ERR_PTR(-ENOMEM);
3009 iter->buffer_iter = kzalloc(sizeof(*iter->buffer_iter) * num_possible_cpus(),
3011 if (!iter->buffer_iter)
3015 * We make a copy of the current tracer to avoid concurrent
3016 * changes on it while we are reading.
3018 mutex_lock(&trace_types_lock);
3019 iter->trace = kzalloc(sizeof(*iter->trace), GFP_KERNEL);
3023 *iter->trace = *tr->current_trace;
3025 if (!zalloc_cpumask_var(&iter->started, GFP_KERNEL))
3030 #ifdef CONFIG_TRACER_MAX_TRACE
3031 /* Currently only the top directory has a snapshot */
3032 if (tr->current_trace->print_max || snapshot)
3033 iter->trace_buffer = &tr->max_buffer;
3036 iter->trace_buffer = &tr->trace_buffer;
3037 iter->snapshot = snapshot;
3039 iter->cpu_file = tracing_get_cpu(inode);
3040 mutex_init(&iter->mutex);
3042 /* Notify the tracer early; before we stop tracing. */
3043 if (iter->trace && iter->trace->open)
3044 iter->trace->open(iter);
3046 /* Annotate start of buffers if we had overruns */
3047 if (ring_buffer_overruns(iter->trace_buffer->buffer))
3048 iter->iter_flags |= TRACE_FILE_ANNOTATE;
3050 /* Output in nanoseconds only if we are using a clock in nanoseconds. */
3051 if (trace_clocks[tr->clock_id].in_ns)
3052 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
3054 /* stop the trace while dumping if we are not opening "snapshot" */
3055 if (!iter->snapshot)
3056 tracing_stop_tr(tr);
3058 if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
3059 for_each_tracing_cpu(cpu) {
3060 iter->buffer_iter[cpu] =
3061 ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
3063 ring_buffer_read_prepare_sync();
3064 for_each_tracing_cpu(cpu) {
3065 ring_buffer_read_start(iter->buffer_iter[cpu]);
3066 tracing_iter_reset(iter, cpu);
3069 cpu = iter->cpu_file;
3070 iter->buffer_iter[cpu] =
3071 ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
3072 ring_buffer_read_prepare_sync();
3073 ring_buffer_read_start(iter->buffer_iter[cpu]);
3074 tracing_iter_reset(iter, cpu);
3077 mutex_unlock(&trace_types_lock);
3082 mutex_unlock(&trace_types_lock);
3084 kfree(iter->buffer_iter);
3086 seq_release_private(inode, file);
3087 return ERR_PTR(-ENOMEM);
3090 int tracing_open_generic(struct inode *inode, struct file *filp)
3092 if (tracing_disabled)
3095 filp->private_data = inode->i_private;
3099 bool tracing_is_disabled(void)
3101 return (tracing_disabled) ? true: false;
3105 * Open and update trace_array ref count.
3106 * Must have the current trace_array passed to it.
3108 static int tracing_open_generic_tr(struct inode *inode, struct file *filp)
3110 struct trace_array *tr = inode->i_private;
3112 if (tracing_disabled)
3115 if (trace_array_get(tr) < 0)
3118 filp->private_data = inode->i_private;
3123 static int tracing_release(struct inode *inode, struct file *file)
3125 struct trace_array *tr = inode->i_private;
3126 struct seq_file *m = file->private_data;
3127 struct trace_iterator *iter;
3130 if (!(file->f_mode & FMODE_READ)) {
3131 trace_array_put(tr);
3135 /* Writes do not use seq_file */
3137 mutex_lock(&trace_types_lock);
3139 for_each_tracing_cpu(cpu) {
3140 if (iter->buffer_iter[cpu])
3141 ring_buffer_read_finish(iter->buffer_iter[cpu]);
3144 if (iter->trace && iter->trace->close)
3145 iter->trace->close(iter);
3147 if (!iter->snapshot)
3148 /* reenable tracing if it was previously enabled */
3149 tracing_start_tr(tr);
3151 __trace_array_put(tr);
3153 mutex_unlock(&trace_types_lock);
3155 mutex_destroy(&iter->mutex);
3156 free_cpumask_var(iter->started);
3158 kfree(iter->buffer_iter);
3159 seq_release_private(inode, file);
3164 static int tracing_release_generic_tr(struct inode *inode, struct file *file)
3166 struct trace_array *tr = inode->i_private;
3168 trace_array_put(tr);
3172 static int tracing_single_release_tr(struct inode *inode, struct file *file)
3174 struct trace_array *tr = inode->i_private;
3176 trace_array_put(tr);
3178 return single_release(inode, file);
3181 static int tracing_open(struct inode *inode, struct file *file)
3183 struct trace_array *tr = inode->i_private;
3184 struct trace_iterator *iter;
3187 if (trace_array_get(tr) < 0)
3190 /* If this file was open for write, then erase contents */
3191 if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_TRUNC)) {
3192 int cpu = tracing_get_cpu(inode);
3194 if (cpu == RING_BUFFER_ALL_CPUS)
3195 tracing_reset_online_cpus(&tr->trace_buffer);
3197 tracing_reset(&tr->trace_buffer, cpu);
3200 if (file->f_mode & FMODE_READ) {
3201 iter = __tracing_open(inode, file, false);
3203 ret = PTR_ERR(iter);
3204 else if (trace_flags & TRACE_ITER_LATENCY_FMT)
3205 iter->iter_flags |= TRACE_FILE_LAT_FMT;
3209 trace_array_put(tr);
3215 * Some tracers are not suitable for instance buffers.
3216 * A tracer is always available for the global array (toplevel)
3217 * or if it explicitly states that it is.
3220 trace_ok_for_array(struct tracer *t, struct trace_array *tr)
3222 return (tr->flags & TRACE_ARRAY_FL_GLOBAL) || t->allow_instances;
3225 /* Find the next tracer that this trace array may use */
3226 static struct tracer *
3227 get_tracer_for_array(struct trace_array *tr, struct tracer *t)
3229 while (t && !trace_ok_for_array(t, tr))
3236 t_next(struct seq_file *m, void *v, loff_t *pos)
3238 struct trace_array *tr = m->private;
3239 struct tracer *t = v;
3244 t = get_tracer_for_array(tr, t->next);
3249 static void *t_start(struct seq_file *m, loff_t *pos)
3251 struct trace_array *tr = m->private;
3255 mutex_lock(&trace_types_lock);
3257 t = get_tracer_for_array(tr, trace_types);
3258 for (; t && l < *pos; t = t_next(m, t, &l))
3264 static void t_stop(struct seq_file *m, void *p)
3266 mutex_unlock(&trace_types_lock);
3269 static int t_show(struct seq_file *m, void *v)
3271 struct tracer *t = v;
3276 seq_printf(m, "%s", t->name);
3285 static const struct seq_operations show_traces_seq_ops = {
3292 static int show_traces_open(struct inode *inode, struct file *file)
3294 struct trace_array *tr = inode->i_private;
3298 if (tracing_disabled)
3301 ret = seq_open(file, &show_traces_seq_ops);
3305 m = file->private_data;
3312 tracing_write_stub(struct file *filp, const char __user *ubuf,
3313 size_t count, loff_t *ppos)
3318 loff_t tracing_lseek(struct file *file, loff_t offset, int whence)
3322 if (file->f_mode & FMODE_READ)
3323 ret = seq_lseek(file, offset, whence);
3325 file->f_pos = ret = 0;
3330 static const struct file_operations tracing_fops = {
3331 .open = tracing_open,
3333 .write = tracing_write_stub,
3334 .llseek = tracing_lseek,
3335 .release = tracing_release,
3338 static const struct file_operations show_traces_fops = {
3339 .open = show_traces_open,
3341 .release = seq_release,
3342 .llseek = seq_lseek,
3346 * The tracer itself will not take this lock, but still we want
3347 * to provide a consistent cpumask to user-space:
3349 static DEFINE_MUTEX(tracing_cpumask_update_lock);
3352 * Temporary storage for the character representation of the
3353 * CPU bitmask (and one more byte for the newline):
3355 static char mask_str[NR_CPUS + 1];
3358 tracing_cpumask_read(struct file *filp, char __user *ubuf,
3359 size_t count, loff_t *ppos)
3361 struct trace_array *tr = file_inode(filp)->i_private;
3364 mutex_lock(&tracing_cpumask_update_lock);
3366 len = cpumask_scnprintf(mask_str, count, tr->tracing_cpumask);
3367 if (count - len < 2) {
3371 len += sprintf(mask_str + len, "\n");
3372 count = simple_read_from_buffer(ubuf, count, ppos, mask_str, NR_CPUS+1);
3375 mutex_unlock(&tracing_cpumask_update_lock);
3381 tracing_cpumask_write(struct file *filp, const char __user *ubuf,
3382 size_t count, loff_t *ppos)
3384 struct trace_array *tr = file_inode(filp)->i_private;
3385 cpumask_var_t tracing_cpumask_new;
3388 if (!alloc_cpumask_var(&tracing_cpumask_new, GFP_KERNEL))
3391 err = cpumask_parse_user(ubuf, count, tracing_cpumask_new);
3395 mutex_lock(&tracing_cpumask_update_lock);
3397 local_irq_disable();
3398 arch_spin_lock(&tr->max_lock);
3399 for_each_tracing_cpu(cpu) {
3401 * Increase/decrease the disabled counter if we are
3402 * about to flip a bit in the cpumask:
3404 if (cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
3405 !cpumask_test_cpu(cpu, tracing_cpumask_new)) {
3406 atomic_inc(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled);
3407 ring_buffer_record_disable_cpu(tr->trace_buffer.buffer, cpu);
3409 if (!cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
3410 cpumask_test_cpu(cpu, tracing_cpumask_new)) {
3411 atomic_dec(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled);
3412 ring_buffer_record_enable_cpu(tr->trace_buffer.buffer, cpu);
3415 arch_spin_unlock(&tr->max_lock);
3418 cpumask_copy(tr->tracing_cpumask, tracing_cpumask_new);
3420 mutex_unlock(&tracing_cpumask_update_lock);
3421 free_cpumask_var(tracing_cpumask_new);
3426 free_cpumask_var(tracing_cpumask_new);
3431 static const struct file_operations tracing_cpumask_fops = {
3432 .open = tracing_open_generic_tr,
3433 .read = tracing_cpumask_read,
3434 .write = tracing_cpumask_write,
3435 .release = tracing_release_generic_tr,
3436 .llseek = generic_file_llseek,
3439 static int tracing_trace_options_show(struct seq_file *m, void *v)
3441 struct tracer_opt *trace_opts;
3442 struct trace_array *tr = m->private;
3446 mutex_lock(&trace_types_lock);
3447 tracer_flags = tr->current_trace->flags->val;
3448 trace_opts = tr->current_trace->flags->opts;
3450 for (i = 0; trace_options[i]; i++) {
3451 if (trace_flags & (1 << i))
3452 seq_printf(m, "%s\n", trace_options[i]);
3454 seq_printf(m, "no%s\n", trace_options[i]);
3457 for (i = 0; trace_opts[i].name; i++) {
3458 if (tracer_flags & trace_opts[i].bit)
3459 seq_printf(m, "%s\n", trace_opts[i].name);
3461 seq_printf(m, "no%s\n", trace_opts[i].name);
3463 mutex_unlock(&trace_types_lock);
3468 static int __set_tracer_option(struct trace_array *tr,
3469 struct tracer_flags *tracer_flags,
3470 struct tracer_opt *opts, int neg)
3472 struct tracer *trace = tr->current_trace;
3475 ret = trace->set_flag(tr, tracer_flags->val, opts->bit, !neg);
3480 tracer_flags->val &= ~opts->bit;
3482 tracer_flags->val |= opts->bit;
3486 /* Try to assign a tracer specific option */
3487 static int set_tracer_option(struct trace_array *tr, char *cmp, int neg)
3489 struct tracer *trace = tr->current_trace;
3490 struct tracer_flags *tracer_flags = trace->flags;
3491 struct tracer_opt *opts = NULL;
3494 for (i = 0; tracer_flags->opts[i].name; i++) {
3495 opts = &tracer_flags->opts[i];
3497 if (strcmp(cmp, opts->name) == 0)
3498 return __set_tracer_option(tr, trace->flags, opts, neg);
3504 /* Some tracers require overwrite to stay enabled */
3505 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
3507 if (tracer->enabled && (mask & TRACE_ITER_OVERWRITE) && !set)
3513 int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled)
3515 /* do nothing if flag is already set */
3516 if (!!(trace_flags & mask) == !!enabled)
3519 /* Give the tracer a chance to approve the change */
3520 if (tr->current_trace->flag_changed)
3521 if (tr->current_trace->flag_changed(tr, mask, !!enabled))
3525 trace_flags |= mask;
3527 trace_flags &= ~mask;
3529 if (mask == TRACE_ITER_RECORD_CMD)
3530 trace_event_enable_cmd_record(enabled);
3532 if (mask == TRACE_ITER_OVERWRITE) {
3533 ring_buffer_change_overwrite(tr->trace_buffer.buffer, enabled);
3534 #ifdef CONFIG_TRACER_MAX_TRACE
3535 ring_buffer_change_overwrite(tr->max_buffer.buffer, enabled);
3539 if (mask == TRACE_ITER_PRINTK)
3540 trace_printk_start_stop_comm(enabled);
3545 static int trace_set_options(struct trace_array *tr, char *option)
3552 cmp = strstrip(option);
3554 if (strncmp(cmp, "no", 2) == 0) {
3559 mutex_lock(&trace_types_lock);
3561 for (i = 0; trace_options[i]; i++) {
3562 if (strcmp(cmp, trace_options[i]) == 0) {
3563 ret = set_tracer_flag(tr, 1 << i, !neg);
3568 /* If no option could be set, test the specific tracer options */
3569 if (!trace_options[i])
3570 ret = set_tracer_option(tr, cmp, neg);
3572 mutex_unlock(&trace_types_lock);
3578 tracing_trace_options_write(struct file *filp, const char __user *ubuf,
3579 size_t cnt, loff_t *ppos)
3581 struct seq_file *m = filp->private_data;
3582 struct trace_array *tr = m->private;
3586 if (cnt >= sizeof(buf))
3589 if (copy_from_user(&buf, ubuf, cnt))
3594 ret = trace_set_options(tr, buf);
3603 static int tracing_trace_options_open(struct inode *inode, struct file *file)
3605 struct trace_array *tr = inode->i_private;
3608 if (tracing_disabled)
3611 if (trace_array_get(tr) < 0)
3614 ret = single_open(file, tracing_trace_options_show, inode->i_private);
3616 trace_array_put(tr);
3621 static const struct file_operations tracing_iter_fops = {
3622 .open = tracing_trace_options_open,
3624 .llseek = seq_lseek,
3625 .release = tracing_single_release_tr,
3626 .write = tracing_trace_options_write,
3629 static const char readme_msg[] =
3630 "tracing mini-HOWTO:\n\n"
3631 "# echo 0 > tracing_on : quick way to disable tracing\n"
3632 "# echo 1 > tracing_on : quick way to re-enable tracing\n\n"
3633 " Important files:\n"
3634 " trace\t\t\t- The static contents of the buffer\n"
3635 "\t\t\t To clear the buffer write into this file: echo > trace\n"
3636 " trace_pipe\t\t- A consuming read to see the contents of the buffer\n"
3637 " current_tracer\t- function and latency tracers\n"
3638 " available_tracers\t- list of configured tracers for current_tracer\n"
3639 " buffer_size_kb\t- view and modify size of per cpu buffer\n"
3640 " buffer_total_size_kb - view total size of all cpu buffers\n\n"
3641 " trace_clock\t\t-change the clock used to order events\n"
3642 " local: Per cpu clock but may not be synced across CPUs\n"
3643 " global: Synced across CPUs but slows tracing down.\n"
3644 " counter: Not a clock, but just an increment\n"
3645 " uptime: Jiffy counter from time of boot\n"
3646 " perf: Same clock that perf events use\n"
3647 #ifdef CONFIG_X86_64
3648 " x86-tsc: TSC cycle counter\n"
3650 "\n trace_marker\t\t- Writes into this file writes into the kernel buffer\n"
3651 " tracing_cpumask\t- Limit which CPUs to trace\n"
3652 " instances\t\t- Make sub-buffers with: mkdir instances/foo\n"
3653 "\t\t\t Remove sub-buffer with rmdir\n"
3654 " trace_options\t\t- Set format or modify how tracing happens\n"
3655 "\t\t\t Disable an option by adding a suffix 'no' to the\n"
3656 "\t\t\t option name\n"
3657 " saved_cmdlines_size\t- echo command number in here to store comm-pid list\n"
3658 #ifdef CONFIG_DYNAMIC_FTRACE
3659 "\n available_filter_functions - list of functions that can be filtered on\n"
3660 " set_ftrace_filter\t- echo function name in here to only trace these\n"
3661 "\t\t\t functions\n"
3662 "\t accepts: func_full_name, *func_end, func_begin*, *func_middle*\n"
3663 "\t modules: Can select a group via module\n"
3664 "\t Format: :mod:<module-name>\n"
3665 "\t example: echo :mod:ext3 > set_ftrace_filter\n"
3666 "\t triggers: a command to perform when function is hit\n"
3667 "\t Format: <function>:<trigger>[:count]\n"
3668 "\t trigger: traceon, traceoff\n"
3669 "\t\t enable_event:<system>:<event>\n"
3670 "\t\t disable_event:<system>:<event>\n"
3671 #ifdef CONFIG_STACKTRACE
3674 #ifdef CONFIG_TRACER_SNAPSHOT
3679 "\t example: echo do_fault:traceoff > set_ftrace_filter\n"
3680 "\t echo do_trap:traceoff:3 > set_ftrace_filter\n"
3681 "\t The first one will disable tracing every time do_fault is hit\n"
3682 "\t The second will disable tracing at most 3 times when do_trap is hit\n"
3683 "\t The first time do trap is hit and it disables tracing, the\n"
3684 "\t counter will decrement to 2. If tracing is already disabled,\n"
3685 "\t the counter will not decrement. It only decrements when the\n"
3686 "\t trigger did work\n"
3687 "\t To remove trigger without count:\n"
3688 "\t echo '!<function>:<trigger> > set_ftrace_filter\n"
3689 "\t To remove trigger with a count:\n"
3690 "\t echo '!<function>:<trigger>:0 > set_ftrace_filter\n"
3691 " set_ftrace_notrace\t- echo function name in here to never trace.\n"
3692 "\t accepts: func_full_name, *func_end, func_begin*, *func_middle*\n"
3693 "\t modules: Can select a group via module command :mod:\n"
3694 "\t Does not accept triggers\n"
3695 #endif /* CONFIG_DYNAMIC_FTRACE */
3696 #ifdef CONFIG_FUNCTION_TRACER
3697 " set_ftrace_pid\t- Write pid(s) to only function trace those pids\n"
3700 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
3701 " set_graph_function\t- Trace the nested calls of a function (function_graph)\n"
3702 " max_graph_depth\t- Trace a limited depth of nested calls (0 is unlimited)\n"
3704 #ifdef CONFIG_TRACER_SNAPSHOT
3705 "\n snapshot\t\t- Like 'trace' but shows the content of the static\n"
3706 "\t\t\t snapshot buffer. Read the contents for more\n"
3707 "\t\t\t information\n"
3709 #ifdef CONFIG_STACK_TRACER
3710 " stack_trace\t\t- Shows the max stack trace when active\n"
3711 " stack_max_size\t- Shows current max stack size that was traced\n"
3712 "\t\t\t Write into this file to reset the max size (trigger a\n"
3713 "\t\t\t new trace)\n"
3714 #ifdef CONFIG_DYNAMIC_FTRACE
3715 " stack_trace_filter\t- Like set_ftrace_filter but limits what stack_trace\n"
3718 #endif /* CONFIG_STACK_TRACER */
3719 " events/\t\t- Directory containing all trace event subsystems:\n"
3720 " enable\t\t- Write 0/1 to enable/disable tracing of all events\n"
3721 " events/<system>/\t- Directory containing all trace events for <system>:\n"
3722 " enable\t\t- Write 0/1 to enable/disable tracing of all <system>\n"
3724 " filter\t\t- If set, only events passing filter are traced\n"
3725 " events/<system>/<event>/\t- Directory containing control files for\n"
3727 " enable\t\t- Write 0/1 to enable/disable tracing of <event>\n"
3728 " filter\t\t- If set, only events passing filter are traced\n"
3729 " trigger\t\t- If set, a command to perform when event is hit\n"
3730 "\t Format: <trigger>[:count][if <filter>]\n"
3731 "\t trigger: traceon, traceoff\n"
3732 "\t enable_event:<system>:<event>\n"
3733 "\t disable_event:<system>:<event>\n"
3734 #ifdef CONFIG_STACKTRACE
3737 #ifdef CONFIG_TRACER_SNAPSHOT
3740 "\t example: echo traceoff > events/block/block_unplug/trigger\n"
3741 "\t echo traceoff:3 > events/block/block_unplug/trigger\n"
3742 "\t echo 'enable_event:kmem:kmalloc:3 if nr_rq > 1' > \\\n"
3743 "\t events/block/block_unplug/trigger\n"
3744 "\t The first disables tracing every time block_unplug is hit.\n"
3745 "\t The second disables tracing the first 3 times block_unplug is hit.\n"
3746 "\t The third enables the kmalloc event the first 3 times block_unplug\n"
3747 "\t is hit and has value of greater than 1 for the 'nr_rq' event field.\n"
3748 "\t Like function triggers, the counter is only decremented if it\n"
3749 "\t enabled or disabled tracing.\n"
3750 "\t To remove a trigger without a count:\n"
3751 "\t echo '!<trigger> > <system>/<event>/trigger\n"
3752 "\t To remove a trigger with a count:\n"
3753 "\t echo '!<trigger>:0 > <system>/<event>/trigger\n"
3754 "\t Filters can be ignored when removing a trigger.\n"
3758 tracing_readme_read(struct file *filp, char __user *ubuf,
3759 size_t cnt, loff_t *ppos)
3761 return simple_read_from_buffer(ubuf, cnt, ppos,
3762 readme_msg, strlen(readme_msg));
3765 static const struct file_operations tracing_readme_fops = {
3766 .open = tracing_open_generic,
3767 .read = tracing_readme_read,
3768 .llseek = generic_file_llseek,
3771 static void *saved_cmdlines_next(struct seq_file *m, void *v, loff_t *pos)
3773 unsigned int *ptr = v;
3775 if (*pos || m->count)
3780 for (; ptr < &savedcmd->map_cmdline_to_pid[savedcmd->cmdline_num];
3782 if (*ptr == -1 || *ptr == NO_CMDLINE_MAP)
3791 static void *saved_cmdlines_start(struct seq_file *m, loff_t *pos)
3797 arch_spin_lock(&trace_cmdline_lock);
3799 v = &savedcmd->map_cmdline_to_pid[0];
3801 v = saved_cmdlines_next(m, v, &l);
3809 static void saved_cmdlines_stop(struct seq_file *m, void *v)
3811 arch_spin_unlock(&trace_cmdline_lock);
3815 static int saved_cmdlines_show(struct seq_file *m, void *v)
3817 char buf[TASK_COMM_LEN];
3818 unsigned int *pid = v;
3820 __trace_find_cmdline(*pid, buf);
3821 seq_printf(m, "%d %s\n", *pid, buf);
3825 static const struct seq_operations tracing_saved_cmdlines_seq_ops = {
3826 .start = saved_cmdlines_start,
3827 .next = saved_cmdlines_next,
3828 .stop = saved_cmdlines_stop,
3829 .show = saved_cmdlines_show,
3832 static int tracing_saved_cmdlines_open(struct inode *inode, struct file *filp)
3834 if (tracing_disabled)
3837 return seq_open(filp, &tracing_saved_cmdlines_seq_ops);
3840 static const struct file_operations tracing_saved_cmdlines_fops = {
3841 .open = tracing_saved_cmdlines_open,
3843 .llseek = seq_lseek,
3844 .release = seq_release,
3848 tracing_saved_cmdlines_size_read(struct file *filp, char __user *ubuf,
3849 size_t cnt, loff_t *ppos)
3854 arch_spin_lock(&trace_cmdline_lock);
3855 r = scnprintf(buf, sizeof(buf), "%u\n", savedcmd->cmdline_num);
3856 arch_spin_unlock(&trace_cmdline_lock);
3858 return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
3861 static void free_saved_cmdlines_buffer(struct saved_cmdlines_buffer *s)
3863 kfree(s->saved_cmdlines);
3864 kfree(s->map_cmdline_to_pid);
3868 static int tracing_resize_saved_cmdlines(unsigned int val)
3870 struct saved_cmdlines_buffer *s, *savedcmd_temp;
3872 s = kmalloc(sizeof(*s), GFP_KERNEL);
3876 if (allocate_cmdlines_buffer(val, s) < 0) {
3881 arch_spin_lock(&trace_cmdline_lock);
3882 savedcmd_temp = savedcmd;
3884 arch_spin_unlock(&trace_cmdline_lock);
3885 free_saved_cmdlines_buffer(savedcmd_temp);
3891 tracing_saved_cmdlines_size_write(struct file *filp, const char __user *ubuf,
3892 size_t cnt, loff_t *ppos)
3897 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
3901 /* must have at least 1 entry or less than PID_MAX_DEFAULT */
3902 if (!val || val > PID_MAX_DEFAULT)
3905 ret = tracing_resize_saved_cmdlines((unsigned int)val);
3914 static const struct file_operations tracing_saved_cmdlines_size_fops = {
3915 .open = tracing_open_generic,
3916 .read = tracing_saved_cmdlines_size_read,
3917 .write = tracing_saved_cmdlines_size_write,
3921 tracing_set_trace_read(struct file *filp, char __user *ubuf,
3922 size_t cnt, loff_t *ppos)
3924 struct trace_array *tr = filp->private_data;
3925 char buf[MAX_TRACER_SIZE+2];
3928 mutex_lock(&trace_types_lock);
3929 r = sprintf(buf, "%s\n", tr->current_trace->name);
3930 mutex_unlock(&trace_types_lock);
3932 return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
3935 int tracer_init(struct tracer *t, struct trace_array *tr)
3937 tracing_reset_online_cpus(&tr->trace_buffer);
3941 static void set_buffer_entries(struct trace_buffer *buf, unsigned long val)
3945 for_each_tracing_cpu(cpu)
3946 per_cpu_ptr(buf->data, cpu)->entries = val;
3949 #ifdef CONFIG_TRACER_MAX_TRACE
3950 /* resize @tr's buffer to the size of @size_tr's entries */
3951 static int resize_buffer_duplicate_size(struct trace_buffer *trace_buf,
3952 struct trace_buffer *size_buf, int cpu_id)
3956 if (cpu_id == RING_BUFFER_ALL_CPUS) {
3957 for_each_tracing_cpu(cpu) {
3958 ret = ring_buffer_resize(trace_buf->buffer,
3959 per_cpu_ptr(size_buf->data, cpu)->entries, cpu);
3962 per_cpu_ptr(trace_buf->data, cpu)->entries =
3963 per_cpu_ptr(size_buf->data, cpu)->entries;
3966 ret = ring_buffer_resize(trace_buf->buffer,
3967 per_cpu_ptr(size_buf->data, cpu_id)->entries, cpu_id);
3969 per_cpu_ptr(trace_buf->data, cpu_id)->entries =
3970 per_cpu_ptr(size_buf->data, cpu_id)->entries;
3975 #endif /* CONFIG_TRACER_MAX_TRACE */
3977 static int __tracing_resize_ring_buffer(struct trace_array *tr,
3978 unsigned long size, int cpu)
3983 * If kernel or user changes the size of the ring buffer
3984 * we use the size that was given, and we can forget about
3985 * expanding it later.
3987 ring_buffer_expanded = true;
3989 /* May be called before buffers are initialized */
3990 if (!tr->trace_buffer.buffer)
3993 ret = ring_buffer_resize(tr->trace_buffer.buffer, size, cpu);
3997 #ifdef CONFIG_TRACER_MAX_TRACE
3998 if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL) ||
3999 !tr->current_trace->use_max_tr)
4002 ret = ring_buffer_resize(tr->max_buffer.buffer, size, cpu);
4004 int r = resize_buffer_duplicate_size(&tr->trace_buffer,
4005 &tr->trace_buffer, cpu);
4008 * AARGH! We are left with different
4009 * size max buffer!!!!
4010 * The max buffer is our "snapshot" buffer.
4011 * When a tracer needs a snapshot (one of the
4012 * latency tracers), it swaps the max buffer
4013 * with the saved snap shot. We succeeded to
4014 * update the size of the main buffer, but failed to
4015 * update the size of the max buffer. But when we tried
4016 * to reset the main buffer to the original size, we
4017 * failed there too. This is very unlikely to
4018 * happen, but if it does, warn and kill all
4022 tracing_disabled = 1;
4027 if (cpu == RING_BUFFER_ALL_CPUS)
4028 set_buffer_entries(&tr->max_buffer, size);
4030 per_cpu_ptr(tr->max_buffer.data, cpu)->entries = size;
4033 #endif /* CONFIG_TRACER_MAX_TRACE */
4035 if (cpu == RING_BUFFER_ALL_CPUS)
4036 set_buffer_entries(&tr->trace_buffer, size);
4038 per_cpu_ptr(tr->trace_buffer.data, cpu)->entries = size;
4043 static ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
4044 unsigned long size, int cpu_id)
4048 mutex_lock(&trace_types_lock);
4050 if (cpu_id != RING_BUFFER_ALL_CPUS) {
4051 /* make sure, this cpu is enabled in the mask */
4052 if (!cpumask_test_cpu(cpu_id, tracing_buffer_mask)) {
4058 ret = __tracing_resize_ring_buffer(tr, size, cpu_id);
4063 mutex_unlock(&trace_types_lock);
4070 * tracing_update_buffers - used by tracing facility to expand ring buffers
4072 * To save on memory when the tracing is never used on a system with it
4073 * configured in. The ring buffers are set to a minimum size. But once
4074 * a user starts to use the tracing facility, then they need to grow
4075 * to their default size.
4077 * This function is to be called when a tracer is about to be used.
4079 int tracing_update_buffers(void)
4083 mutex_lock(&trace_types_lock);
4084 if (!ring_buffer_expanded)
4085 ret = __tracing_resize_ring_buffer(&global_trace, trace_buf_size,
4086 RING_BUFFER_ALL_CPUS);
4087 mutex_unlock(&trace_types_lock);
4092 struct trace_option_dentry;
4094 static struct trace_option_dentry *
4095 create_trace_option_files(struct trace_array *tr, struct tracer *tracer);
4098 destroy_trace_option_files(struct trace_option_dentry *topts);
4101 * Used to clear out the tracer before deletion of an instance.
4102 * Must have trace_types_lock held.
4104 static void tracing_set_nop(struct trace_array *tr)
4106 if (tr->current_trace == &nop_trace)
4109 tr->current_trace->enabled--;
4111 if (tr->current_trace->reset)
4112 tr->current_trace->reset(tr);
4114 tr->current_trace = &nop_trace;
4117 static int tracing_set_tracer(struct trace_array *tr, const char *buf)
4119 static struct trace_option_dentry *topts;
4121 #ifdef CONFIG_TRACER_MAX_TRACE
4126 mutex_lock(&trace_types_lock);
4128 if (!ring_buffer_expanded) {
4129 ret = __tracing_resize_ring_buffer(tr, trace_buf_size,
4130 RING_BUFFER_ALL_CPUS);
4136 for (t = trace_types; t; t = t->next) {
4137 if (strcmp(t->name, buf) == 0)
4144 if (t == tr->current_trace)
4147 /* Some tracers are only allowed for the top level buffer */
4148 if (!trace_ok_for_array(t, tr)) {
4153 trace_branch_disable();
4155 tr->current_trace->enabled--;
4157 if (tr->current_trace->reset)
4158 tr->current_trace->reset(tr);
4160 /* Current trace needs to be nop_trace before synchronize_sched */
4161 tr->current_trace = &nop_trace;
4163 #ifdef CONFIG_TRACER_MAX_TRACE
4164 had_max_tr = tr->allocated_snapshot;
4166 if (had_max_tr && !t->use_max_tr) {
4168 * We need to make sure that the update_max_tr sees that
4169 * current_trace changed to nop_trace to keep it from
4170 * swapping the buffers after we resize it.
4171 * The update_max_tr is called from interrupts disabled
4172 * so a synchronized_sched() is sufficient.
4174 synchronize_sched();
4178 /* Currently, only the top instance has options */
4179 if (tr->flags & TRACE_ARRAY_FL_GLOBAL) {
4180 destroy_trace_option_files(topts);
4181 topts = create_trace_option_files(tr, t);
4184 #ifdef CONFIG_TRACER_MAX_TRACE
4185 if (t->use_max_tr && !had_max_tr) {
4186 ret = alloc_snapshot(tr);
4193 ret = tracer_init(t, tr);
4198 tr->current_trace = t;
4199 tr->current_trace->enabled++;
4200 trace_branch_enable(tr);
4202 mutex_unlock(&trace_types_lock);
4208 tracing_set_trace_write(struct file *filp, const char __user *ubuf,
4209 size_t cnt, loff_t *ppos)
4211 struct trace_array *tr = filp->private_data;
4212 char buf[MAX_TRACER_SIZE+1];
4219 if (cnt > MAX_TRACER_SIZE)
4220 cnt = MAX_TRACER_SIZE;
4222 if (copy_from_user(&buf, ubuf, cnt))
4227 /* strip ending whitespace. */
4228 for (i = cnt - 1; i > 0 && isspace(buf[i]); i--)
4231 err = tracing_set_tracer(tr, buf);
4241 tracing_max_lat_read(struct file *filp, char __user *ubuf,
4242 size_t cnt, loff_t *ppos)
4244 unsigned long *ptr = filp->private_data;
4248 r = snprintf(buf, sizeof(buf), "%ld\n",
4249 *ptr == (unsigned long)-1 ? -1 : nsecs_to_usecs(*ptr));
4250 if (r > sizeof(buf))
4252 return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4256 tracing_max_lat_write(struct file *filp, const char __user *ubuf,
4257 size_t cnt, loff_t *ppos)
4259 unsigned long *ptr = filp->private_data;
4263 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4272 static int tracing_open_pipe(struct inode *inode, struct file *filp)
4274 struct trace_array *tr = inode->i_private;
4275 struct trace_iterator *iter;
4278 if (tracing_disabled)
4281 if (trace_array_get(tr) < 0)
4284 mutex_lock(&trace_types_lock);
4286 /* create a buffer to store the information to pass to userspace */
4287 iter = kzalloc(sizeof(*iter), GFP_KERNEL);
4290 __trace_array_put(tr);
4295 * We make a copy of the current tracer to avoid concurrent
4296 * changes on it while we are reading.
4298 iter->trace = kmalloc(sizeof(*iter->trace), GFP_KERNEL);
4303 *iter->trace = *tr->current_trace;
4305 if (!alloc_cpumask_var(&iter->started, GFP_KERNEL)) {
4310 /* trace pipe does not show start of buffer */
4311 cpumask_setall(iter->started);
4313 if (trace_flags & TRACE_ITER_LATENCY_FMT)
4314 iter->iter_flags |= TRACE_FILE_LAT_FMT;
4316 /* Output in nanoseconds only if we are using a clock in nanoseconds. */
4317 if (trace_clocks[tr->clock_id].in_ns)
4318 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
4321 iter->trace_buffer = &tr->trace_buffer;
4322 iter->cpu_file = tracing_get_cpu(inode);
4323 mutex_init(&iter->mutex);
4324 filp->private_data = iter;
4326 if (iter->trace->pipe_open)
4327 iter->trace->pipe_open(iter);
4329 nonseekable_open(inode, filp);
4331 mutex_unlock(&trace_types_lock);
4337 __trace_array_put(tr);
4338 mutex_unlock(&trace_types_lock);
4342 static int tracing_release_pipe(struct inode *inode, struct file *file)
4344 struct trace_iterator *iter = file->private_data;
4345 struct trace_array *tr = inode->i_private;
4347 mutex_lock(&trace_types_lock);
4349 if (iter->trace->pipe_close)
4350 iter->trace->pipe_close(iter);
4352 mutex_unlock(&trace_types_lock);
4354 free_cpumask_var(iter->started);
4355 mutex_destroy(&iter->mutex);
4359 trace_array_put(tr);
4365 trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_table)
4367 /* Iterators are static, they should be filled or empty */
4368 if (trace_buffer_iter(iter, iter->cpu_file))
4369 return POLLIN | POLLRDNORM;
4371 if (trace_flags & TRACE_ITER_BLOCK)
4373 * Always select as readable when in blocking mode
4375 return POLLIN | POLLRDNORM;
4377 return ring_buffer_poll_wait(iter->trace_buffer->buffer, iter->cpu_file,
4382 tracing_poll_pipe(struct file *filp, poll_table *poll_table)
4384 struct trace_iterator *iter = filp->private_data;
4386 return trace_poll(iter, filp, poll_table);
4389 /* Must be called with trace_types_lock mutex held. */
4390 static int tracing_wait_pipe(struct file *filp)
4392 struct trace_iterator *iter = filp->private_data;
4395 while (trace_empty(iter)) {
4397 if ((filp->f_flags & O_NONBLOCK)) {
4402 * We block until we read something and tracing is disabled.
4403 * We still block if tracing is disabled, but we have never
4404 * read anything. This allows a user to cat this file, and
4405 * then enable tracing. But after we have read something,
4406 * we give an EOF when tracing is again disabled.
4408 * iter->pos will be 0 if we haven't read anything.
4410 if (!tracing_is_on() && iter->pos)
4413 mutex_unlock(&iter->mutex);
4415 ret = wait_on_pipe(iter);
4417 mutex_lock(&iter->mutex);
4422 if (signal_pending(current))
4433 tracing_read_pipe(struct file *filp, char __user *ubuf,
4434 size_t cnt, loff_t *ppos)
4436 struct trace_iterator *iter = filp->private_data;
4437 struct trace_array *tr = iter->tr;
4440 /* return any leftover data */
4441 sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
4445 trace_seq_init(&iter->seq);
4447 /* copy the tracer to avoid using a global lock all around */
4448 mutex_lock(&trace_types_lock);
4449 if (unlikely(iter->trace->name != tr->current_trace->name))
4450 *iter->trace = *tr->current_trace;
4451 mutex_unlock(&trace_types_lock);
4454 * Avoid more than one consumer on a single file descriptor
4455 * This is just a matter of traces coherency, the ring buffer itself
4458 mutex_lock(&iter->mutex);
4459 if (iter->trace->read) {
4460 sret = iter->trace->read(iter, filp, ubuf, cnt, ppos);
4466 sret = tracing_wait_pipe(filp);
4470 /* stop when tracing is finished */
4471 if (trace_empty(iter)) {
4476 if (cnt >= PAGE_SIZE)
4477 cnt = PAGE_SIZE - 1;
4479 /* reset all but tr, trace, and overruns */
4480 memset(&iter->seq, 0,
4481 sizeof(struct trace_iterator) -
4482 offsetof(struct trace_iterator, seq));
4483 cpumask_clear(iter->started);
4486 trace_event_read_lock();
4487 trace_access_lock(iter->cpu_file);
4488 while (trace_find_next_entry_inc(iter) != NULL) {
4489 enum print_line_t ret;
4490 int len = iter->seq.len;
4492 ret = print_trace_line(iter);
4493 if (ret == TRACE_TYPE_PARTIAL_LINE) {
4494 /* don't print partial lines */
4495 iter->seq.len = len;
4498 if (ret != TRACE_TYPE_NO_CONSUME)
4499 trace_consume(iter);
4501 if (iter->seq.len >= cnt)
4505 * Setting the full flag means we reached the trace_seq buffer
4506 * size and we should leave by partial output condition above.
4507 * One of the trace_seq_* functions is not used properly.
4509 WARN_ONCE(iter->seq.full, "full flag set for trace type %d",
4512 trace_access_unlock(iter->cpu_file);
4513 trace_event_read_unlock();
4515 /* Now copy what we have to the user */
4516 sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
4517 if (iter->seq.readpos >= iter->seq.len)
4518 trace_seq_init(&iter->seq);
4521 * If there was nothing to send to user, in spite of consuming trace
4522 * entries, go back to wait for more entries.
4528 mutex_unlock(&iter->mutex);
4533 static void tracing_spd_release_pipe(struct splice_pipe_desc *spd,
4536 __free_page(spd->pages[idx]);
4539 static const struct pipe_buf_operations tracing_pipe_buf_ops = {
4541 .confirm = generic_pipe_buf_confirm,
4542 .release = generic_pipe_buf_release,
4543 .steal = generic_pipe_buf_steal,
4544 .get = generic_pipe_buf_get,
4548 tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
4553 /* Seq buffer is page-sized, exactly what we need. */
4555 count = iter->seq.len;
4556 ret = print_trace_line(iter);
4557 count = iter->seq.len - count;
4560 iter->seq.len -= count;
4563 if (ret == TRACE_TYPE_PARTIAL_LINE) {
4564 iter->seq.len -= count;
4568 if (ret != TRACE_TYPE_NO_CONSUME)
4569 trace_consume(iter);
4571 if (!trace_find_next_entry_inc(iter)) {
4581 static ssize_t tracing_splice_read_pipe(struct file *filp,
4583 struct pipe_inode_info *pipe,
4587 struct page *pages_def[PIPE_DEF_BUFFERS];
4588 struct partial_page partial_def[PIPE_DEF_BUFFERS];
4589 struct trace_iterator *iter = filp->private_data;
4590 struct splice_pipe_desc spd = {
4592 .partial = partial_def,
4593 .nr_pages = 0, /* This gets updated below. */
4594 .nr_pages_max = PIPE_DEF_BUFFERS,
4596 .ops = &tracing_pipe_buf_ops,
4597 .spd_release = tracing_spd_release_pipe,
4599 struct trace_array *tr = iter->tr;
4604 if (splice_grow_spd(pipe, &spd))
4607 /* copy the tracer to avoid using a global lock all around */
4608 mutex_lock(&trace_types_lock);
4609 if (unlikely(iter->trace->name != tr->current_trace->name))
4610 *iter->trace = *tr->current_trace;
4611 mutex_unlock(&trace_types_lock);
4613 mutex_lock(&iter->mutex);
4615 if (iter->trace->splice_read) {
4616 ret = iter->trace->splice_read(iter, filp,
4617 ppos, pipe, len, flags);
4622 ret = tracing_wait_pipe(filp);
4626 if (!iter->ent && !trace_find_next_entry_inc(iter)) {
4631 trace_event_read_lock();
4632 trace_access_lock(iter->cpu_file);
4634 /* Fill as many pages as possible. */
4635 for (i = 0, rem = len; i < spd.nr_pages_max && rem; i++) {
4636 spd.pages[i] = alloc_page(GFP_KERNEL);
4640 rem = tracing_fill_pipe_page(rem, iter);
4642 /* Copy the data into the page, so we can start over. */
4643 ret = trace_seq_to_buffer(&iter->seq,
4644 page_address(spd.pages[i]),
4647 __free_page(spd.pages[i]);
4650 spd.partial[i].offset = 0;
4651 spd.partial[i].len = iter->seq.len;
4653 trace_seq_init(&iter->seq);
4656 trace_access_unlock(iter->cpu_file);
4657 trace_event_read_unlock();
4658 mutex_unlock(&iter->mutex);
4662 ret = splice_to_pipe(pipe, &spd);
4664 splice_shrink_spd(&spd);
4668 mutex_unlock(&iter->mutex);
4673 tracing_entries_read(struct file *filp, char __user *ubuf,
4674 size_t cnt, loff_t *ppos)
4676 struct inode *inode = file_inode(filp);
4677 struct trace_array *tr = inode->i_private;
4678 int cpu = tracing_get_cpu(inode);
4683 mutex_lock(&trace_types_lock);
4685 if (cpu == RING_BUFFER_ALL_CPUS) {
4686 int cpu, buf_size_same;
4691 /* check if all cpu sizes are same */
4692 for_each_tracing_cpu(cpu) {
4693 /* fill in the size from first enabled cpu */
4695 size = per_cpu_ptr(tr->trace_buffer.data, cpu)->entries;
4696 if (size != per_cpu_ptr(tr->trace_buffer.data, cpu)->entries) {
4702 if (buf_size_same) {
4703 if (!ring_buffer_expanded)
4704 r = sprintf(buf, "%lu (expanded: %lu)\n",
4706 trace_buf_size >> 10);
4708 r = sprintf(buf, "%lu\n", size >> 10);
4710 r = sprintf(buf, "X\n");
4712 r = sprintf(buf, "%lu\n", per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10);
4714 mutex_unlock(&trace_types_lock);
4716 ret = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4721 tracing_entries_write(struct file *filp, const char __user *ubuf,
4722 size_t cnt, loff_t *ppos)
4724 struct inode *inode = file_inode(filp);
4725 struct trace_array *tr = inode->i_private;
4729 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4733 /* must have at least 1 entry */
4737 /* value is in KB */
4739 ret = tracing_resize_ring_buffer(tr, val, tracing_get_cpu(inode));
4749 tracing_total_entries_read(struct file *filp, char __user *ubuf,
4750 size_t cnt, loff_t *ppos)
4752 struct trace_array *tr = filp->private_data;
4755 unsigned long size = 0, expanded_size = 0;
4757 mutex_lock(&trace_types_lock);
4758 for_each_tracing_cpu(cpu) {
4759 size += per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10;
4760 if (!ring_buffer_expanded)
4761 expanded_size += trace_buf_size >> 10;
4763 if (ring_buffer_expanded)
4764 r = sprintf(buf, "%lu\n", size);
4766 r = sprintf(buf, "%lu (expanded: %lu)\n", size, expanded_size);
4767 mutex_unlock(&trace_types_lock);
4769 return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4773 tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
4774 size_t cnt, loff_t *ppos)
4777 * There is no need to read what the user has written, this function
4778 * is just to make sure that there is no error when "echo" is used
4787 tracing_free_buffer_release(struct inode *inode, struct file *filp)
4789 struct trace_array *tr = inode->i_private;
4791 /* disable tracing ? */
4792 if (trace_flags & TRACE_ITER_STOP_ON_FREE)
4793 tracer_tracing_off(tr);
4794 /* resize the ring buffer to 0 */
4795 tracing_resize_ring_buffer(tr, 0, RING_BUFFER_ALL_CPUS);
4797 trace_array_put(tr);
4803 tracing_mark_write(struct file *filp, const char __user *ubuf,
4804 size_t cnt, loff_t *fpos)
4806 unsigned long addr = (unsigned long)ubuf;
4807 struct trace_array *tr = filp->private_data;
4808 struct ring_buffer_event *event;
4809 struct ring_buffer *buffer;
4810 struct print_entry *entry;
4811 unsigned long irq_flags;
4812 struct page *pages[2];
4822 if (tracing_disabled)
4825 if (!(trace_flags & TRACE_ITER_MARKERS))
4828 if (cnt > TRACE_BUF_SIZE)
4829 cnt = TRACE_BUF_SIZE;
4832 * Userspace is injecting traces into the kernel trace buffer.
4833 * We want to be as non intrusive as possible.
4834 * To do so, we do not want to allocate any special buffers
4835 * or take any locks, but instead write the userspace data
4836 * straight into the ring buffer.
4838 * First we need to pin the userspace buffer into memory,
4839 * which, most likely it is, because it just referenced it.
4840 * But there's no guarantee that it is. By using get_user_pages_fast()
4841 * and kmap_atomic/kunmap_atomic() we can get access to the
4842 * pages directly. We then write the data directly into the
4845 BUILD_BUG_ON(TRACE_BUF_SIZE >= PAGE_SIZE);
4847 /* check if we cross pages */
4848 if ((addr & PAGE_MASK) != ((addr + cnt) & PAGE_MASK))
4851 offset = addr & (PAGE_SIZE - 1);
4854 ret = get_user_pages_fast(addr, nr_pages, 0, pages);
4855 if (ret < nr_pages) {
4857 put_page(pages[ret]);
4862 for (i = 0; i < nr_pages; i++)
4863 map_page[i] = kmap_atomic(pages[i]);
4865 local_save_flags(irq_flags);
4866 size = sizeof(*entry) + cnt + 2; /* possible \n added */
4867 buffer = tr->trace_buffer.buffer;
4868 event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
4869 irq_flags, preempt_count());
4871 /* Ring buffer disabled, return as if not open for write */
4876 entry = ring_buffer_event_data(event);
4877 entry->ip = _THIS_IP_;
4879 if (nr_pages == 2) {
4880 len = PAGE_SIZE - offset;
4881 memcpy(&entry->buf, map_page[0] + offset, len);
4882 memcpy(&entry->buf[len], map_page[1], cnt - len);
4884 memcpy(&entry->buf, map_page[0] + offset, cnt);
4886 if (entry->buf[cnt - 1] != '\n') {
4887 entry->buf[cnt] = '\n';
4888 entry->buf[cnt + 1] = '\0';
4890 entry->buf[cnt] = '\0';
4892 __buffer_unlock_commit(buffer, event);
4899 for (i = 0; i < nr_pages; i++){
4900 kunmap_atomic(map_page[i]);
4907 static int tracing_clock_show(struct seq_file *m, void *v)
4909 struct trace_array *tr = m->private;
4912 for (i = 0; i < ARRAY_SIZE(trace_clocks); i++)
4914 "%s%s%s%s", i ? " " : "",
4915 i == tr->clock_id ? "[" : "", trace_clocks[i].name,
4916 i == tr->clock_id ? "]" : "");
4922 static int tracing_set_clock(struct trace_array *tr, const char *clockstr)
4926 for (i = 0; i < ARRAY_SIZE(trace_clocks); i++) {
4927 if (strcmp(trace_clocks[i].name, clockstr) == 0)
4930 if (i == ARRAY_SIZE(trace_clocks))
4933 mutex_lock(&trace_types_lock);
4937 ring_buffer_set_clock(tr->trace_buffer.buffer, trace_clocks[i].func);
4940 * New clock may not be consistent with the previous clock.
4941 * Reset the buffer so that it doesn't have incomparable timestamps.
4943 tracing_reset_online_cpus(&tr->trace_buffer);
4945 #ifdef CONFIG_TRACER_MAX_TRACE
4946 if (tr->flags & TRACE_ARRAY_FL_GLOBAL && tr->max_buffer.buffer)
4947 ring_buffer_set_clock(tr->max_buffer.buffer, trace_clocks[i].func);
4948 tracing_reset_online_cpus(&tr->max_buffer);
4951 mutex_unlock(&trace_types_lock);
4956 static ssize_t tracing_clock_write(struct file *filp, const char __user *ubuf,
4957 size_t cnt, loff_t *fpos)
4959 struct seq_file *m = filp->private_data;
4960 struct trace_array *tr = m->private;
4962 const char *clockstr;
4965 if (cnt >= sizeof(buf))
4968 if (copy_from_user(&buf, ubuf, cnt))
4973 clockstr = strstrip(buf);
4975 ret = tracing_set_clock(tr, clockstr);
4984 static int tracing_clock_open(struct inode *inode, struct file *file)
4986 struct trace_array *tr = inode->i_private;
4989 if (tracing_disabled)
4992 if (trace_array_get(tr))
4995 ret = single_open(file, tracing_clock_show, inode->i_private);
4997 trace_array_put(tr);
5002 struct ftrace_buffer_info {
5003 struct trace_iterator iter;
5008 #ifdef CONFIG_TRACER_SNAPSHOT
5009 static int tracing_snapshot_open(struct inode *inode, struct file *file)
5011 struct trace_array *tr = inode->i_private;
5012 struct trace_iterator *iter;
5016 if (trace_array_get(tr) < 0)
5019 if (file->f_mode & FMODE_READ) {
5020 iter = __tracing_open(inode, file, true);
5022 ret = PTR_ERR(iter);
5024 /* Writes still need the seq_file to hold the private data */
5026 m = kzalloc(sizeof(*m), GFP_KERNEL);
5029 iter = kzalloc(sizeof(*iter), GFP_KERNEL);
5037 iter->trace_buffer = &tr->max_buffer;
5038 iter->cpu_file = tracing_get_cpu(inode);
5040 file->private_data = m;
5044 trace_array_put(tr);
5050 tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
5053 struct seq_file *m = filp->private_data;
5054 struct trace_iterator *iter = m->private;
5055 struct trace_array *tr = iter->tr;
5059 ret = tracing_update_buffers();
5063 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5067 mutex_lock(&trace_types_lock);
5069 if (tr->current_trace->use_max_tr) {
5076 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
5080 if (tr->allocated_snapshot)
5084 /* Only allow per-cpu swap if the ring buffer supports it */
5085 #ifndef CONFIG_RING_BUFFER_ALLOW_SWAP
5086 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
5091 if (!tr->allocated_snapshot) {
5092 ret = alloc_snapshot(tr);
5096 local_irq_disable();
5097 /* Now, we're going to swap */
5098 if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
5099 update_max_tr(tr, current, smp_processor_id());
5101 update_max_tr_single(tr, current, iter->cpu_file);
5105 if (tr->allocated_snapshot) {
5106 if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
5107 tracing_reset_online_cpus(&tr->max_buffer);
5109 tracing_reset(&tr->max_buffer, iter->cpu_file);
5119 mutex_unlock(&trace_types_lock);
5123 static int tracing_snapshot_release(struct inode *inode, struct file *file)
5125 struct seq_file *m = file->private_data;
5128 ret = tracing_release(inode, file);
5130 if (file->f_mode & FMODE_READ)
5133 /* If write only, the seq_file is just a stub */
5141 static int tracing_buffers_open(struct inode *inode, struct file *filp);
5142 static ssize_t tracing_buffers_read(struct file *filp, char __user *ubuf,
5143 size_t count, loff_t *ppos);
5144 static int tracing_buffers_release(struct inode *inode, struct file *file);
5145 static ssize_t tracing_buffers_splice_read(struct file *file, loff_t *ppos,
5146 struct pipe_inode_info *pipe, size_t len, unsigned int flags);
5148 static int snapshot_raw_open(struct inode *inode, struct file *filp)
5150 struct ftrace_buffer_info *info;
5153 ret = tracing_buffers_open(inode, filp);
5157 info = filp->private_data;
5159 if (info->iter.trace->use_max_tr) {
5160 tracing_buffers_release(inode, filp);
5164 info->iter.snapshot = true;
5165 info->iter.trace_buffer = &info->iter.tr->max_buffer;
5170 #endif /* CONFIG_TRACER_SNAPSHOT */
5173 static const struct file_operations tracing_max_lat_fops = {
5174 .open = tracing_open_generic,
5175 .read = tracing_max_lat_read,
5176 .write = tracing_max_lat_write,
5177 .llseek = generic_file_llseek,
5180 static const struct file_operations set_tracer_fops = {
5181 .open = tracing_open_generic,
5182 .read = tracing_set_trace_read,
5183 .write = tracing_set_trace_write,
5184 .llseek = generic_file_llseek,
5187 static const struct file_operations tracing_pipe_fops = {
5188 .open = tracing_open_pipe,
5189 .poll = tracing_poll_pipe,
5190 .read = tracing_read_pipe,
5191 .splice_read = tracing_splice_read_pipe,
5192 .release = tracing_release_pipe,
5193 .llseek = no_llseek,
5196 static const struct file_operations tracing_entries_fops = {
5197 .open = tracing_open_generic_tr,
5198 .read = tracing_entries_read,
5199 .write = tracing_entries_write,
5200 .llseek = generic_file_llseek,
5201 .release = tracing_release_generic_tr,
5204 static const struct file_operations tracing_total_entries_fops = {
5205 .open = tracing_open_generic_tr,
5206 .read = tracing_total_entries_read,
5207 .llseek = generic_file_llseek,
5208 .release = tracing_release_generic_tr,
5211 static const struct file_operations tracing_free_buffer_fops = {
5212 .open = tracing_open_generic_tr,
5213 .write = tracing_free_buffer_write,
5214 .release = tracing_free_buffer_release,
5217 static const struct file_operations tracing_mark_fops = {
5218 .open = tracing_open_generic_tr,
5219 .write = tracing_mark_write,
5220 .llseek = generic_file_llseek,
5221 .release = tracing_release_generic_tr,
5224 static const struct file_operations trace_clock_fops = {
5225 .open = tracing_clock_open,
5227 .llseek = seq_lseek,
5228 .release = tracing_single_release_tr,
5229 .write = tracing_clock_write,
5232 #ifdef CONFIG_TRACER_SNAPSHOT
5233 static const struct file_operations snapshot_fops = {
5234 .open = tracing_snapshot_open,
5236 .write = tracing_snapshot_write,
5237 .llseek = tracing_lseek,
5238 .release = tracing_snapshot_release,
5241 static const struct file_operations snapshot_raw_fops = {
5242 .open = snapshot_raw_open,
5243 .read = tracing_buffers_read,
5244 .release = tracing_buffers_release,
5245 .splice_read = tracing_buffers_splice_read,
5246 .llseek = no_llseek,
5249 #endif /* CONFIG_TRACER_SNAPSHOT */
5251 static int tracing_buffers_open(struct inode *inode, struct file *filp)
5253 struct trace_array *tr = inode->i_private;
5254 struct ftrace_buffer_info *info;
5257 if (tracing_disabled)
5260 if (trace_array_get(tr) < 0)
5263 info = kzalloc(sizeof(*info), GFP_KERNEL);
5265 trace_array_put(tr);
5269 mutex_lock(&trace_types_lock);
5272 info->iter.cpu_file = tracing_get_cpu(inode);
5273 info->iter.trace = tr->current_trace;
5274 info->iter.trace_buffer = &tr->trace_buffer;
5276 /* Force reading ring buffer for first read */
5277 info->read = (unsigned int)-1;
5279 filp->private_data = info;
5281 mutex_unlock(&trace_types_lock);
5283 ret = nonseekable_open(inode, filp);
5285 trace_array_put(tr);
5291 tracing_buffers_poll(struct file *filp, poll_table *poll_table)
5293 struct ftrace_buffer_info *info = filp->private_data;
5294 struct trace_iterator *iter = &info->iter;
5296 return trace_poll(iter, filp, poll_table);
5300 tracing_buffers_read(struct file *filp, char __user *ubuf,
5301 size_t count, loff_t *ppos)
5303 struct ftrace_buffer_info *info = filp->private_data;
5304 struct trace_iterator *iter = &info->iter;
5311 mutex_lock(&trace_types_lock);
5313 #ifdef CONFIG_TRACER_MAX_TRACE
5314 if (iter->snapshot && iter->tr->current_trace->use_max_tr) {
5321 info->spare = ring_buffer_alloc_read_page(iter->trace_buffer->buffer,
5327 /* Do we have previous read data to read? */
5328 if (info->read < PAGE_SIZE)
5332 trace_access_lock(iter->cpu_file);
5333 ret = ring_buffer_read_page(iter->trace_buffer->buffer,
5337 trace_access_unlock(iter->cpu_file);
5340 if (trace_empty(iter)) {
5341 if ((filp->f_flags & O_NONBLOCK)) {
5345 mutex_unlock(&trace_types_lock);
5346 ret = wait_on_pipe(iter);
5347 mutex_lock(&trace_types_lock);
5352 if (signal_pending(current)) {
5364 size = PAGE_SIZE - info->read;
5368 ret = copy_to_user(ubuf, info->spare + info->read, size);
5379 mutex_unlock(&trace_types_lock);
5384 static int tracing_buffers_release(struct inode *inode, struct file *file)
5386 struct ftrace_buffer_info *info = file->private_data;
5387 struct trace_iterator *iter = &info->iter;
5389 mutex_lock(&trace_types_lock);
5391 __trace_array_put(iter->tr);
5394 ring_buffer_free_read_page(iter->trace_buffer->buffer, info->spare);
5397 mutex_unlock(&trace_types_lock);
5403 struct ring_buffer *buffer;
5408 static void buffer_pipe_buf_release(struct pipe_inode_info *pipe,
5409 struct pipe_buffer *buf)
5411 struct buffer_ref *ref = (struct buffer_ref *)buf->private;
5416 ring_buffer_free_read_page(ref->buffer, ref->page);
5421 static void buffer_pipe_buf_get(struct pipe_inode_info *pipe,
5422 struct pipe_buffer *buf)
5424 struct buffer_ref *ref = (struct buffer_ref *)buf->private;
5429 /* Pipe buffer operations for a buffer. */
5430 static const struct pipe_buf_operations buffer_pipe_buf_ops = {
5432 .confirm = generic_pipe_buf_confirm,
5433 .release = buffer_pipe_buf_release,
5434 .steal = generic_pipe_buf_steal,
5435 .get = buffer_pipe_buf_get,
5439 * Callback from splice_to_pipe(), if we need to release some pages
5440 * at the end of the spd in case we error'ed out in filling the pipe.
5442 static void buffer_spd_release(struct splice_pipe_desc *spd, unsigned int i)
5444 struct buffer_ref *ref =
5445 (struct buffer_ref *)spd->partial[i].private;
5450 ring_buffer_free_read_page(ref->buffer, ref->page);
5452 spd->partial[i].private = 0;
5456 tracing_buffers_splice_read(struct file *file, loff_t *ppos,
5457 struct pipe_inode_info *pipe, size_t len,
5460 struct ftrace_buffer_info *info = file->private_data;
5461 struct trace_iterator *iter = &info->iter;
5462 struct partial_page partial_def[PIPE_DEF_BUFFERS];
5463 struct page *pages_def[PIPE_DEF_BUFFERS];
5464 struct splice_pipe_desc spd = {
5466 .partial = partial_def,
5467 .nr_pages_max = PIPE_DEF_BUFFERS,
5469 .ops = &buffer_pipe_buf_ops,
5470 .spd_release = buffer_spd_release,
5472 struct buffer_ref *ref;
5473 int entries, size, i;
5476 mutex_lock(&trace_types_lock);
5478 #ifdef CONFIG_TRACER_MAX_TRACE
5479 if (iter->snapshot && iter->tr->current_trace->use_max_tr) {
5485 if (splice_grow_spd(pipe, &spd)) {
5490 if (*ppos & (PAGE_SIZE - 1)) {
5495 if (len & (PAGE_SIZE - 1)) {
5496 if (len < PAGE_SIZE) {
5504 trace_access_lock(iter->cpu_file);
5505 entries = ring_buffer_entries_cpu(iter->trace_buffer->buffer, iter->cpu_file);
5507 for (i = 0; i < spd.nr_pages_max && len && entries; i++, len -= PAGE_SIZE) {
5511 ref = kzalloc(sizeof(*ref), GFP_KERNEL);
5516 ref->buffer = iter->trace_buffer->buffer;
5517 ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file);
5523 r = ring_buffer_read_page(ref->buffer, &ref->page,
5524 len, iter->cpu_file, 1);
5526 ring_buffer_free_read_page(ref->buffer, ref->page);
5532 * zero out any left over data, this is going to
5535 size = ring_buffer_page_len(ref->page);
5536 if (size < PAGE_SIZE)
5537 memset(ref->page + size, 0, PAGE_SIZE - size);
5539 page = virt_to_page(ref->page);
5541 spd.pages[i] = page;
5542 spd.partial[i].len = PAGE_SIZE;
5543 spd.partial[i].offset = 0;
5544 spd.partial[i].private = (unsigned long)ref;
5548 entries = ring_buffer_entries_cpu(iter->trace_buffer->buffer, iter->cpu_file);
5551 trace_access_unlock(iter->cpu_file);
5554 /* did we read anything? */
5555 if (!spd.nr_pages) {
5556 if ((file->f_flags & O_NONBLOCK) || (flags & SPLICE_F_NONBLOCK)) {
5560 mutex_unlock(&trace_types_lock);
5561 ret = wait_on_pipe(iter);
5562 mutex_lock(&trace_types_lock);
5565 if (signal_pending(current)) {
5572 ret = splice_to_pipe(pipe, &spd);
5573 splice_shrink_spd(&spd);
5575 mutex_unlock(&trace_types_lock);
5580 static const struct file_operations tracing_buffers_fops = {
5581 .open = tracing_buffers_open,
5582 .read = tracing_buffers_read,
5583 .poll = tracing_buffers_poll,
5584 .release = tracing_buffers_release,
5585 .splice_read = tracing_buffers_splice_read,
5586 .llseek = no_llseek,
5590 tracing_stats_read(struct file *filp, char __user *ubuf,
5591 size_t count, loff_t *ppos)
5593 struct inode *inode = file_inode(filp);
5594 struct trace_array *tr = inode->i_private;
5595 struct trace_buffer *trace_buf = &tr->trace_buffer;
5596 int cpu = tracing_get_cpu(inode);
5597 struct trace_seq *s;
5599 unsigned long long t;
5600 unsigned long usec_rem;
5602 s = kmalloc(sizeof(*s), GFP_KERNEL);
5608 cnt = ring_buffer_entries_cpu(trace_buf->buffer, cpu);
5609 trace_seq_printf(s, "entries: %ld\n", cnt);
5611 cnt = ring_buffer_overrun_cpu(trace_buf->buffer, cpu);
5612 trace_seq_printf(s, "overrun: %ld\n", cnt);
5614 cnt = ring_buffer_commit_overrun_cpu(trace_buf->buffer, cpu);
5615 trace_seq_printf(s, "commit overrun: %ld\n", cnt);
5617 cnt = ring_buffer_bytes_cpu(trace_buf->buffer, cpu);
5618 trace_seq_printf(s, "bytes: %ld\n", cnt);
5620 if (trace_clocks[tr->clock_id].in_ns) {
5621 /* local or global for trace_clock */
5622 t = ns2usecs(ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
5623 usec_rem = do_div(t, USEC_PER_SEC);
5624 trace_seq_printf(s, "oldest event ts: %5llu.%06lu\n",
5627 t = ns2usecs(ring_buffer_time_stamp(trace_buf->buffer, cpu));
5628 usec_rem = do_div(t, USEC_PER_SEC);
5629 trace_seq_printf(s, "now ts: %5llu.%06lu\n", t, usec_rem);
5631 /* counter or tsc mode for trace_clock */
5632 trace_seq_printf(s, "oldest event ts: %llu\n",
5633 ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
5635 trace_seq_printf(s, "now ts: %llu\n",
5636 ring_buffer_time_stamp(trace_buf->buffer, cpu));
5639 cnt = ring_buffer_dropped_events_cpu(trace_buf->buffer, cpu);
5640 trace_seq_printf(s, "dropped events: %ld\n", cnt);
5642 cnt = ring_buffer_read_events_cpu(trace_buf->buffer, cpu);
5643 trace_seq_printf(s, "read events: %ld\n", cnt);
5645 count = simple_read_from_buffer(ubuf, count, ppos, s->buffer, s->len);
5652 static const struct file_operations tracing_stats_fops = {
5653 .open = tracing_open_generic_tr,
5654 .read = tracing_stats_read,
5655 .llseek = generic_file_llseek,
5656 .release = tracing_release_generic_tr,
5659 #ifdef CONFIG_DYNAMIC_FTRACE
5661 int __weak ftrace_arch_read_dyn_info(char *buf, int size)
5667 tracing_read_dyn_info(struct file *filp, char __user *ubuf,
5668 size_t cnt, loff_t *ppos)
5670 static char ftrace_dyn_info_buffer[1024];
5671 static DEFINE_MUTEX(dyn_info_mutex);
5672 unsigned long *p = filp->private_data;
5673 char *buf = ftrace_dyn_info_buffer;
5674 int size = ARRAY_SIZE(ftrace_dyn_info_buffer);
5677 mutex_lock(&dyn_info_mutex);
5678 r = sprintf(buf, "%ld ", *p);
5680 r += ftrace_arch_read_dyn_info(buf+r, (size-1)-r);
5683 r = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
5685 mutex_unlock(&dyn_info_mutex);
5690 static const struct file_operations tracing_dyn_info_fops = {
5691 .open = tracing_open_generic,
5692 .read = tracing_read_dyn_info,
5693 .llseek = generic_file_llseek,
5695 #endif /* CONFIG_DYNAMIC_FTRACE */
5697 #if defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE)
5699 ftrace_snapshot(unsigned long ip, unsigned long parent_ip, void **data)
5705 ftrace_count_snapshot(unsigned long ip, unsigned long parent_ip, void **data)
5707 unsigned long *count = (long *)data;
5719 ftrace_snapshot_print(struct seq_file *m, unsigned long ip,
5720 struct ftrace_probe_ops *ops, void *data)
5722 long count = (long)data;
5724 seq_printf(m, "%ps:", (void *)ip);
5726 seq_printf(m, "snapshot");
5729 seq_printf(m, ":unlimited\n");
5731 seq_printf(m, ":count=%ld\n", count);
5736 static struct ftrace_probe_ops snapshot_probe_ops = {
5737 .func = ftrace_snapshot,
5738 .print = ftrace_snapshot_print,
5741 static struct ftrace_probe_ops snapshot_count_probe_ops = {
5742 .func = ftrace_count_snapshot,
5743 .print = ftrace_snapshot_print,
5747 ftrace_trace_snapshot_callback(struct ftrace_hash *hash,
5748 char *glob, char *cmd, char *param, int enable)
5750 struct ftrace_probe_ops *ops;
5751 void *count = (void *)-1;
5755 /* hash funcs only work with set_ftrace_filter */
5759 ops = param ? &snapshot_count_probe_ops : &snapshot_probe_ops;
5761 if (glob[0] == '!') {
5762 unregister_ftrace_function_probe_func(glob+1, ops);
5769 number = strsep(¶m, ":");
5771 if (!strlen(number))
5775 * We use the callback data field (which is a pointer)
5778 ret = kstrtoul(number, 0, (unsigned long *)&count);
5783 ret = register_ftrace_function_probe(glob, ops, count);
5786 alloc_snapshot(&global_trace);
5788 return ret < 0 ? ret : 0;
5791 static struct ftrace_func_command ftrace_snapshot_cmd = {
5793 .func = ftrace_trace_snapshot_callback,
5796 static __init int register_snapshot_cmd(void)
5798 return register_ftrace_command(&ftrace_snapshot_cmd);
5801 static inline __init int register_snapshot_cmd(void) { return 0; }
5802 #endif /* defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE) */
5804 struct dentry *tracing_init_dentry_tr(struct trace_array *tr)
5809 if (!debugfs_initialized())
5812 if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
5813 tr->dir = debugfs_create_dir("tracing", NULL);
5816 pr_warn_once("Could not create debugfs directory 'tracing'\n");
5821 struct dentry *tracing_init_dentry(void)
5823 return tracing_init_dentry_tr(&global_trace);
5826 static struct dentry *tracing_dentry_percpu(struct trace_array *tr, int cpu)
5828 struct dentry *d_tracer;
5831 return tr->percpu_dir;
5833 d_tracer = tracing_init_dentry_tr(tr);
5837 tr->percpu_dir = debugfs_create_dir("per_cpu", d_tracer);
5839 WARN_ONCE(!tr->percpu_dir,
5840 "Could not create debugfs directory 'per_cpu/%d'\n", cpu);
5842 return tr->percpu_dir;
5845 static struct dentry *
5846 trace_create_cpu_file(const char *name, umode_t mode, struct dentry *parent,
5847 void *data, long cpu, const struct file_operations *fops)
5849 struct dentry *ret = trace_create_file(name, mode, parent, data, fops);
5851 if (ret) /* See tracing_get_cpu() */
5852 ret->d_inode->i_cdev = (void *)(cpu + 1);
5857 tracing_init_debugfs_percpu(struct trace_array *tr, long cpu)
5859 struct dentry *d_percpu = tracing_dentry_percpu(tr, cpu);
5860 struct dentry *d_cpu;
5861 char cpu_dir[30]; /* 30 characters should be more than enough */
5866 snprintf(cpu_dir, 30, "cpu%ld", cpu);
5867 d_cpu = debugfs_create_dir(cpu_dir, d_percpu);
5869 pr_warning("Could not create debugfs '%s' entry\n", cpu_dir);
5873 /* per cpu trace_pipe */
5874 trace_create_cpu_file("trace_pipe", 0444, d_cpu,
5875 tr, cpu, &tracing_pipe_fops);
5878 trace_create_cpu_file("trace", 0644, d_cpu,
5879 tr, cpu, &tracing_fops);
5881 trace_create_cpu_file("trace_pipe_raw", 0444, d_cpu,
5882 tr, cpu, &tracing_buffers_fops);
5884 trace_create_cpu_file("stats", 0444, d_cpu,
5885 tr, cpu, &tracing_stats_fops);
5887 trace_create_cpu_file("buffer_size_kb", 0444, d_cpu,
5888 tr, cpu, &tracing_entries_fops);
5890 #ifdef CONFIG_TRACER_SNAPSHOT
5891 trace_create_cpu_file("snapshot", 0644, d_cpu,
5892 tr, cpu, &snapshot_fops);
5894 trace_create_cpu_file("snapshot_raw", 0444, d_cpu,
5895 tr, cpu, &snapshot_raw_fops);
5899 #ifdef CONFIG_FTRACE_SELFTEST
5900 /* Let selftest have access to static functions in this file */
5901 #include "trace_selftest.c"
5904 struct trace_option_dentry {
5905 struct tracer_opt *opt;
5906 struct tracer_flags *flags;
5907 struct trace_array *tr;
5908 struct dentry *entry;
5912 trace_options_read(struct file *filp, char __user *ubuf, size_t cnt,
5915 struct trace_option_dentry *topt = filp->private_data;
5918 if (topt->flags->val & topt->opt->bit)
5923 return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
5927 trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
5930 struct trace_option_dentry *topt = filp->private_data;
5934 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5938 if (val != 0 && val != 1)
5941 if (!!(topt->flags->val & topt->opt->bit) != val) {
5942 mutex_lock(&trace_types_lock);
5943 ret = __set_tracer_option(topt->tr, topt->flags,
5945 mutex_unlock(&trace_types_lock);
5956 static const struct file_operations trace_options_fops = {
5957 .open = tracing_open_generic,
5958 .read = trace_options_read,
5959 .write = trace_options_write,
5960 .llseek = generic_file_llseek,
5964 trace_options_core_read(struct file *filp, char __user *ubuf, size_t cnt,
5967 long index = (long)filp->private_data;
5970 if (trace_flags & (1 << index))
5975 return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
5979 trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
5982 struct trace_array *tr = &global_trace;
5983 long index = (long)filp->private_data;
5987 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5991 if (val != 0 && val != 1)
5994 mutex_lock(&trace_types_lock);
5995 ret = set_tracer_flag(tr, 1 << index, val);
5996 mutex_unlock(&trace_types_lock);
6006 static const struct file_operations trace_options_core_fops = {
6007 .open = tracing_open_generic,
6008 .read = trace_options_core_read,
6009 .write = trace_options_core_write,
6010 .llseek = generic_file_llseek,
6013 struct dentry *trace_create_file(const char *name,
6015 struct dentry *parent,
6017 const struct file_operations *fops)
6021 ret = debugfs_create_file(name, mode, parent, data, fops);
6023 pr_warning("Could not create debugfs '%s' entry\n", name);
6029 static struct dentry *trace_options_init_dentry(struct trace_array *tr)
6031 struct dentry *d_tracer;
6036 d_tracer = tracing_init_dentry_tr(tr);
6040 tr->options = debugfs_create_dir("options", d_tracer);
6042 pr_warning("Could not create debugfs directory 'options'\n");
6050 create_trace_option_file(struct trace_array *tr,
6051 struct trace_option_dentry *topt,
6052 struct tracer_flags *flags,
6053 struct tracer_opt *opt)
6055 struct dentry *t_options;
6057 t_options = trace_options_init_dentry(tr);
6061 topt->flags = flags;
6065 topt->entry = trace_create_file(opt->name, 0644, t_options, topt,
6066 &trace_options_fops);
6070 static struct trace_option_dentry *
6071 create_trace_option_files(struct trace_array *tr, struct tracer *tracer)
6073 struct trace_option_dentry *topts;
6074 struct tracer_flags *flags;
6075 struct tracer_opt *opts;
6081 flags = tracer->flags;
6083 if (!flags || !flags->opts)
6088 for (cnt = 0; opts[cnt].name; cnt++)
6091 topts = kcalloc(cnt + 1, sizeof(*topts), GFP_KERNEL);
6095 for (cnt = 0; opts[cnt].name; cnt++)
6096 create_trace_option_file(tr, &topts[cnt], flags,
6103 destroy_trace_option_files(struct trace_option_dentry *topts)
6110 for (cnt = 0; topts[cnt].opt; cnt++) {
6111 if (topts[cnt].entry)
6112 debugfs_remove(topts[cnt].entry);
6118 static struct dentry *
6119 create_trace_option_core_file(struct trace_array *tr,
6120 const char *option, long index)
6122 struct dentry *t_options;
6124 t_options = trace_options_init_dentry(tr);
6128 return trace_create_file(option, 0644, t_options, (void *)index,
6129 &trace_options_core_fops);
6132 static __init void create_trace_options_dir(struct trace_array *tr)
6134 struct dentry *t_options;
6137 t_options = trace_options_init_dentry(tr);
6141 for (i = 0; trace_options[i]; i++)
6142 create_trace_option_core_file(tr, trace_options[i], i);
6146 rb_simple_read(struct file *filp, char __user *ubuf,
6147 size_t cnt, loff_t *ppos)
6149 struct trace_array *tr = filp->private_data;
6153 r = tracer_tracing_is_on(tr);
6154 r = sprintf(buf, "%d\n", r);
6156 return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6160 rb_simple_write(struct file *filp, const char __user *ubuf,
6161 size_t cnt, loff_t *ppos)
6163 struct trace_array *tr = filp->private_data;
6164 struct ring_buffer *buffer = tr->trace_buffer.buffer;
6168 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6173 mutex_lock(&trace_types_lock);
6175 tracer_tracing_on(tr);
6176 if (tr->current_trace->start)
6177 tr->current_trace->start(tr);
6179 tracer_tracing_off(tr);
6180 if (tr->current_trace->stop)
6181 tr->current_trace->stop(tr);
6183 mutex_unlock(&trace_types_lock);
6191 static const struct file_operations rb_simple_fops = {
6192 .open = tracing_open_generic_tr,
6193 .read = rb_simple_read,
6194 .write = rb_simple_write,
6195 .release = tracing_release_generic_tr,
6196 .llseek = default_llseek,
6199 struct dentry *trace_instance_dir;
6202 init_tracer_debugfs(struct trace_array *tr, struct dentry *d_tracer);
6205 allocate_trace_buffer(struct trace_array *tr, struct trace_buffer *buf, int size)
6207 enum ring_buffer_flags rb_flags;
6209 rb_flags = trace_flags & TRACE_ITER_OVERWRITE ? RB_FL_OVERWRITE : 0;
6213 buf->buffer = ring_buffer_alloc(size, rb_flags);
6217 buf->data = alloc_percpu(struct trace_array_cpu);
6219 ring_buffer_free(buf->buffer);
6223 /* Allocate the first page for all buffers */
6224 set_buffer_entries(&tr->trace_buffer,
6225 ring_buffer_size(tr->trace_buffer.buffer, 0));
6230 static int allocate_trace_buffers(struct trace_array *tr, int size)
6234 ret = allocate_trace_buffer(tr, &tr->trace_buffer, size);
6238 #ifdef CONFIG_TRACER_MAX_TRACE
6239 ret = allocate_trace_buffer(tr, &tr->max_buffer,
6240 allocate_snapshot ? size : 1);
6242 ring_buffer_free(tr->trace_buffer.buffer);
6243 free_percpu(tr->trace_buffer.data);
6246 tr->allocated_snapshot = allocate_snapshot;
6249 * Only the top level trace array gets its snapshot allocated
6250 * from the kernel command line.
6252 allocate_snapshot = false;
6257 static void free_trace_buffer(struct trace_buffer *buf)
6260 ring_buffer_free(buf->buffer);
6262 free_percpu(buf->data);
6267 static void free_trace_buffers(struct trace_array *tr)
6272 free_trace_buffer(&tr->trace_buffer);
6274 #ifdef CONFIG_TRACER_MAX_TRACE
6275 free_trace_buffer(&tr->max_buffer);
6279 static int new_instance_create(const char *name)
6281 struct trace_array *tr;
6284 mutex_lock(&trace_types_lock);
6287 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
6288 if (tr->name && strcmp(tr->name, name) == 0)
6293 tr = kzalloc(sizeof(*tr), GFP_KERNEL);
6297 tr->name = kstrdup(name, GFP_KERNEL);
6301 if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL))
6304 cpumask_copy(tr->tracing_cpumask, cpu_all_mask);
6306 raw_spin_lock_init(&tr->start_lock);
6308 tr->max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
6310 tr->current_trace = &nop_trace;
6312 INIT_LIST_HEAD(&tr->systems);
6313 INIT_LIST_HEAD(&tr->events);
6315 if (allocate_trace_buffers(tr, trace_buf_size) < 0)
6318 tr->dir = debugfs_create_dir(name, trace_instance_dir);
6322 ret = event_trace_add_tracer(tr->dir, tr);
6324 debugfs_remove_recursive(tr->dir);
6328 init_tracer_debugfs(tr, tr->dir);
6330 list_add(&tr->list, &ftrace_trace_arrays);
6332 mutex_unlock(&trace_types_lock);
6337 free_trace_buffers(tr);
6338 free_cpumask_var(tr->tracing_cpumask);
6343 mutex_unlock(&trace_types_lock);
6349 static int instance_delete(const char *name)
6351 struct trace_array *tr;
6355 mutex_lock(&trace_types_lock);
6358 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
6359 if (tr->name && strcmp(tr->name, name) == 0) {
6371 list_del(&tr->list);
6373 tracing_set_nop(tr);
6374 event_trace_del_tracer(tr);
6375 ftrace_destroy_function_files(tr);
6376 debugfs_remove_recursive(tr->dir);
6377 free_trace_buffers(tr);
6385 mutex_unlock(&trace_types_lock);
6390 static int instance_mkdir (struct inode *inode, struct dentry *dentry, umode_t mode)
6392 struct dentry *parent;
6395 /* Paranoid: Make sure the parent is the "instances" directory */
6396 parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
6397 if (WARN_ON_ONCE(parent != trace_instance_dir))
6401 * The inode mutex is locked, but debugfs_create_dir() will also
6402 * take the mutex. As the instances directory can not be destroyed
6403 * or changed in any other way, it is safe to unlock it, and
6404 * let the dentry try. If two users try to make the same dir at
6405 * the same time, then the new_instance_create() will determine the
6408 mutex_unlock(&inode->i_mutex);
6410 ret = new_instance_create(dentry->d_iname);
6412 mutex_lock(&inode->i_mutex);
6417 static int instance_rmdir(struct inode *inode, struct dentry *dentry)
6419 struct dentry *parent;
6422 /* Paranoid: Make sure the parent is the "instances" directory */
6423 parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
6424 if (WARN_ON_ONCE(parent != trace_instance_dir))
6427 /* The caller did a dget() on dentry */
6428 mutex_unlock(&dentry->d_inode->i_mutex);
6431 * The inode mutex is locked, but debugfs_create_dir() will also
6432 * take the mutex. As the instances directory can not be destroyed
6433 * or changed in any other way, it is safe to unlock it, and
6434 * let the dentry try. If two users try to make the same dir at
6435 * the same time, then the instance_delete() will determine the
6438 mutex_unlock(&inode->i_mutex);
6440 ret = instance_delete(dentry->d_iname);
6442 mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT);
6443 mutex_lock(&dentry->d_inode->i_mutex);
6448 static const struct inode_operations instance_dir_inode_operations = {
6449 .lookup = simple_lookup,
6450 .mkdir = instance_mkdir,
6451 .rmdir = instance_rmdir,
6454 static __init void create_trace_instances(struct dentry *d_tracer)
6456 trace_instance_dir = debugfs_create_dir("instances", d_tracer);
6457 if (WARN_ON(!trace_instance_dir))
6460 /* Hijack the dir inode operations, to allow mkdir */
6461 trace_instance_dir->d_inode->i_op = &instance_dir_inode_operations;
6465 init_tracer_debugfs(struct trace_array *tr, struct dentry *d_tracer)
6469 trace_create_file("available_tracers", 0444, d_tracer,
6470 tr, &show_traces_fops);
6472 trace_create_file("current_tracer", 0644, d_tracer,
6473 tr, &set_tracer_fops);
6475 trace_create_file("tracing_cpumask", 0644, d_tracer,
6476 tr, &tracing_cpumask_fops);
6478 trace_create_file("trace_options", 0644, d_tracer,
6479 tr, &tracing_iter_fops);
6481 trace_create_file("trace", 0644, d_tracer,
6484 trace_create_file("trace_pipe", 0444, d_tracer,
6485 tr, &tracing_pipe_fops);
6487 trace_create_file("buffer_size_kb", 0644, d_tracer,
6488 tr, &tracing_entries_fops);
6490 trace_create_file("buffer_total_size_kb", 0444, d_tracer,
6491 tr, &tracing_total_entries_fops);
6493 trace_create_file("free_buffer", 0200, d_tracer,
6494 tr, &tracing_free_buffer_fops);
6496 trace_create_file("trace_marker", 0220, d_tracer,
6497 tr, &tracing_mark_fops);
6499 trace_create_file("trace_clock", 0644, d_tracer, tr,
6502 trace_create_file("tracing_on", 0644, d_tracer,
6503 tr, &rb_simple_fops);
6505 #ifdef CONFIG_TRACER_MAX_TRACE
6506 trace_create_file("tracing_max_latency", 0644, d_tracer,
6507 &tr->max_latency, &tracing_max_lat_fops);
6510 if (ftrace_create_function_files(tr, d_tracer))
6511 WARN(1, "Could not allocate function filter files");
6513 #ifdef CONFIG_TRACER_SNAPSHOT
6514 trace_create_file("snapshot", 0644, d_tracer,
6515 tr, &snapshot_fops);
6518 for_each_tracing_cpu(cpu)
6519 tracing_init_debugfs_percpu(tr, cpu);
6523 static __init int tracer_init_debugfs(void)
6525 struct dentry *d_tracer;
6527 trace_access_lock_init();
6529 d_tracer = tracing_init_dentry();
6533 init_tracer_debugfs(&global_trace, d_tracer);
6535 trace_create_file("tracing_thresh", 0644, d_tracer,
6536 &tracing_thresh, &tracing_max_lat_fops);
6538 trace_create_file("README", 0444, d_tracer,
6539 NULL, &tracing_readme_fops);
6541 trace_create_file("saved_cmdlines", 0444, d_tracer,
6542 NULL, &tracing_saved_cmdlines_fops);
6544 trace_create_file("saved_cmdlines_size", 0644, d_tracer,
6545 NULL, &tracing_saved_cmdlines_size_fops);
6547 #ifdef CONFIG_DYNAMIC_FTRACE
6548 trace_create_file("dyn_ftrace_total_info", 0444, d_tracer,
6549 &ftrace_update_tot_cnt, &tracing_dyn_info_fops);
6552 create_trace_instances(d_tracer);
6554 create_trace_options_dir(&global_trace);
6559 static int trace_panic_handler(struct notifier_block *this,
6560 unsigned long event, void *unused)
6562 if (ftrace_dump_on_oops)
6563 ftrace_dump(ftrace_dump_on_oops);
6567 static struct notifier_block trace_panic_notifier = {
6568 .notifier_call = trace_panic_handler,
6570 .priority = 150 /* priority: INT_MAX >= x >= 0 */
6573 static int trace_die_handler(struct notifier_block *self,
6579 if (ftrace_dump_on_oops)
6580 ftrace_dump(ftrace_dump_on_oops);
6588 static struct notifier_block trace_die_notifier = {
6589 .notifier_call = trace_die_handler,
6594 * printk is set to max of 1024, we really don't need it that big.
6595 * Nothing should be printing 1000 characters anyway.
6597 #define TRACE_MAX_PRINT 1000
6600 * Define here KERN_TRACE so that we have one place to modify
6601 * it if we decide to change what log level the ftrace dump
6604 #define KERN_TRACE KERN_EMERG
6607 trace_printk_seq(struct trace_seq *s)
6609 /* Probably should print a warning here. */
6610 if (s->len >= TRACE_MAX_PRINT)
6611 s->len = TRACE_MAX_PRINT;
6613 /* should be zero ended, but we are paranoid. */
6614 s->buffer[s->len] = 0;
6616 printk(KERN_TRACE "%s", s->buffer);
6621 void trace_init_global_iter(struct trace_iterator *iter)
6623 iter->tr = &global_trace;
6624 iter->trace = iter->tr->current_trace;
6625 iter->cpu_file = RING_BUFFER_ALL_CPUS;
6626 iter->trace_buffer = &global_trace.trace_buffer;
6628 if (iter->trace && iter->trace->open)
6629 iter->trace->open(iter);
6631 /* Annotate start of buffers if we had overruns */
6632 if (ring_buffer_overruns(iter->trace_buffer->buffer))
6633 iter->iter_flags |= TRACE_FILE_ANNOTATE;
6635 /* Output in nanoseconds only if we are using a clock in nanoseconds. */
6636 if (trace_clocks[iter->tr->clock_id].in_ns)
6637 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
6640 void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
6642 /* use static because iter can be a bit big for the stack */
6643 static struct trace_iterator iter;
6644 static atomic_t dump_running;
6645 unsigned int old_userobj;
6646 unsigned long flags;
6649 /* Only allow one dump user at a time. */
6650 if (atomic_inc_return(&dump_running) != 1) {
6651 atomic_dec(&dump_running);
6656 * Always turn off tracing when we dump.
6657 * We don't need to show trace output of what happens
6658 * between multiple crashes.
6660 * If the user does a sysrq-z, then they can re-enable
6661 * tracing with echo 1 > tracing_on.
6665 local_irq_save(flags);
6667 /* Simulate the iterator */
6668 trace_init_global_iter(&iter);
6670 for_each_tracing_cpu(cpu) {
6671 atomic_inc(&per_cpu_ptr(iter.tr->trace_buffer.data, cpu)->disabled);
6674 old_userobj = trace_flags & TRACE_ITER_SYM_USEROBJ;
6676 /* don't look at user memory in panic mode */
6677 trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
6679 switch (oops_dump_mode) {
6681 iter.cpu_file = RING_BUFFER_ALL_CPUS;
6684 iter.cpu_file = raw_smp_processor_id();
6689 printk(KERN_TRACE "Bad dumping mode, switching to all CPUs dump\n");
6690 iter.cpu_file = RING_BUFFER_ALL_CPUS;
6693 printk(KERN_TRACE "Dumping ftrace buffer:\n");
6695 /* Did function tracer already get disabled? */
6696 if (ftrace_is_dead()) {
6697 printk("# WARNING: FUNCTION TRACING IS CORRUPTED\n");
6698 printk("# MAY BE MISSING FUNCTION EVENTS\n");
6702 * We need to stop all tracing on all CPUS to read the
6703 * the next buffer. This is a bit expensive, but is
6704 * not done often. We fill all what we can read,
6705 * and then release the locks again.
6708 while (!trace_empty(&iter)) {
6711 printk(KERN_TRACE "---------------------------------\n");
6715 /* reset all but tr, trace, and overruns */
6716 memset(&iter.seq, 0,
6717 sizeof(struct trace_iterator) -
6718 offsetof(struct trace_iterator, seq));
6719 iter.iter_flags |= TRACE_FILE_LAT_FMT;
6722 if (trace_find_next_entry_inc(&iter) != NULL) {
6725 ret = print_trace_line(&iter);
6726 if (ret != TRACE_TYPE_NO_CONSUME)
6727 trace_consume(&iter);
6729 touch_nmi_watchdog();
6731 trace_printk_seq(&iter.seq);
6735 printk(KERN_TRACE " (ftrace buffer empty)\n");
6737 printk(KERN_TRACE "---------------------------------\n");
6740 trace_flags |= old_userobj;
6742 for_each_tracing_cpu(cpu) {
6743 atomic_dec(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
6745 atomic_dec(&dump_running);
6746 local_irq_restore(flags);
6748 EXPORT_SYMBOL_GPL(ftrace_dump);
6750 __init static int tracer_alloc_buffers(void)
6756 if (!alloc_cpumask_var(&tracing_buffer_mask, GFP_KERNEL))
6759 if (!alloc_cpumask_var(&global_trace.tracing_cpumask, GFP_KERNEL))
6760 goto out_free_buffer_mask;
6762 /* Only allocate trace_printk buffers if a trace_printk exists */
6763 if (__stop___trace_bprintk_fmt != __start___trace_bprintk_fmt)
6764 /* Must be called before global_trace.buffer is allocated */
6765 trace_printk_init_buffers();
6767 /* To save memory, keep the ring buffer size to its minimum */
6768 if (ring_buffer_expanded)
6769 ring_buf_size = trace_buf_size;
6773 cpumask_copy(tracing_buffer_mask, cpu_possible_mask);
6774 cpumask_copy(global_trace.tracing_cpumask, cpu_all_mask);
6776 raw_spin_lock_init(&global_trace.start_lock);
6778 /* Used for event triggers */
6779 temp_buffer = ring_buffer_alloc(PAGE_SIZE, RB_FL_OVERWRITE);
6781 goto out_free_cpumask;
6783 if (trace_create_savedcmd() < 0)
6784 goto out_free_temp_buffer;
6786 /* TODO: make the number of buffers hot pluggable with CPUS */
6787 if (allocate_trace_buffers(&global_trace, ring_buf_size) < 0) {
6788 printk(KERN_ERR "tracer: failed to allocate ring buffer!\n");
6790 goto out_free_savedcmd;
6793 if (global_trace.buffer_disabled)
6796 if (trace_boot_clock) {
6797 ret = tracing_set_clock(&global_trace, trace_boot_clock);
6799 pr_warning("Trace clock %s not defined, going back to default\n",
6804 * register_tracer() might reference current_trace, so it
6805 * needs to be set before we register anything. This is
6806 * just a bootstrap of current_trace anyway.
6808 global_trace.current_trace = &nop_trace;
6810 global_trace.max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
6812 ftrace_init_global_array_ops(&global_trace);
6814 register_tracer(&nop_trace);
6816 /* All seems OK, enable tracing */
6817 tracing_disabled = 0;
6819 atomic_notifier_chain_register(&panic_notifier_list,
6820 &trace_panic_notifier);
6822 register_die_notifier(&trace_die_notifier);
6824 global_trace.flags = TRACE_ARRAY_FL_GLOBAL;
6826 INIT_LIST_HEAD(&global_trace.systems);
6827 INIT_LIST_HEAD(&global_trace.events);
6828 list_add(&global_trace.list, &ftrace_trace_arrays);
6830 while (trace_boot_options) {
6833 option = strsep(&trace_boot_options, ",");
6834 trace_set_options(&global_trace, option);
6837 register_snapshot_cmd();
6842 free_saved_cmdlines_buffer(savedcmd);
6843 out_free_temp_buffer:
6844 ring_buffer_free(temp_buffer);
6846 free_cpumask_var(global_trace.tracing_cpumask);
6847 out_free_buffer_mask:
6848 free_cpumask_var(tracing_buffer_mask);
6853 __init static int clear_boot_tracer(void)
6856 * The default tracer at boot buffer is an init section.
6857 * This function is called in lateinit. If we did not
6858 * find the boot tracer, then clear it out, to prevent
6859 * later registration from accessing the buffer that is
6860 * about to be freed.
6862 if (!default_bootup_tracer)
6865 printk(KERN_INFO "ftrace bootup tracer '%s' not registered.\n",
6866 default_bootup_tracer);
6867 default_bootup_tracer = NULL;
6872 early_initcall(tracer_alloc_buffers);
6873 fs_initcall(tracer_init_debugfs);
6874 late_initcall(clear_boot_tracer);