]> git.karo-electronics.de Git - karo-tx-linux.git/blob - kernel/trace/trace.c
tracing: Choose static tp_printk buffer by explicit nesting count
[karo-tx-linux.git] / kernel / trace / trace.c
1 /*
2  * ring buffer based function tracer
3  *
4  * Copyright (C) 2007-2012 Steven Rostedt <srostedt@redhat.com>
5  * Copyright (C) 2008 Ingo Molnar <mingo@redhat.com>
6  *
7  * Originally taken from the RT patch by:
8  *    Arnaldo Carvalho de Melo <acme@redhat.com>
9  *
10  * Based on code from the latency_tracer, that is:
11  *  Copyright (C) 2004-2006 Ingo Molnar
12  *  Copyright (C) 2004 Nadia Yvette Chambers
13  */
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/tracefs.h>
24 #include <linux/pagemap.h>
25 #include <linux/hardirq.h>
26 #include <linux/linkage.h>
27 #include <linux/uaccess.h>
28 #include <linux/vmalloc.h>
29 #include <linux/ftrace.h>
30 #include <linux/module.h>
31 #include <linux/percpu.h>
32 #include <linux/splice.h>
33 #include <linux/kdebug.h>
34 #include <linux/string.h>
35 #include <linux/mount.h>
36 #include <linux/rwsem.h>
37 #include <linux/slab.h>
38 #include <linux/ctype.h>
39 #include <linux/init.h>
40 #include <linux/poll.h>
41 #include <linux/nmi.h>
42 #include <linux/fs.h>
43 #include <linux/sched/rt.h>
44
45 #include "trace.h"
46 #include "trace_output.h"
47
48 /*
49  * On boot up, the ring buffer is set to the minimum size, so that
50  * we do not waste memory on systems that are not using tracing.
51  */
52 bool ring_buffer_expanded;
53
54 /*
55  * We need to change this state when a selftest is running.
56  * A selftest will lurk into the ring-buffer to count the
57  * entries inserted during the selftest although some concurrent
58  * insertions into the ring-buffer such as trace_printk could occurred
59  * at the same time, giving false positive or negative results.
60  */
61 static bool __read_mostly tracing_selftest_running;
62
63 /*
64  * If a tracer is running, we do not want to run SELFTEST.
65  */
66 bool __read_mostly tracing_selftest_disabled;
67
68 /* Pipe tracepoints to printk */
69 struct trace_iterator *tracepoint_print_iter;
70 int tracepoint_printk;
71
72 /* For tracers that don't implement custom flags */
73 static struct tracer_opt dummy_tracer_opt[] = {
74         { }
75 };
76
77 static int
78 dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
79 {
80         return 0;
81 }
82
83 /*
84  * To prevent the comm cache from being overwritten when no
85  * tracing is active, only save the comm when a trace event
86  * occurred.
87  */
88 static DEFINE_PER_CPU(bool, trace_cmdline_save);
89
90 /*
91  * Kill all tracing for good (never come back).
92  * It is initialized to 1 but will turn to zero if the initialization
93  * of the tracer is successful. But that is the only place that sets
94  * this back to zero.
95  */
96 static int tracing_disabled = 1;
97
98 cpumask_var_t __read_mostly     tracing_buffer_mask;
99
100 /*
101  * ftrace_dump_on_oops - variable to dump ftrace buffer on oops
102  *
103  * If there is an oops (or kernel panic) and the ftrace_dump_on_oops
104  * is set, then ftrace_dump is called. This will output the contents
105  * of the ftrace buffers to the console.  This is very useful for
106  * capturing traces that lead to crashes and outputing it to a
107  * serial console.
108  *
109  * It is default off, but you can enable it with either specifying
110  * "ftrace_dump_on_oops" in the kernel command line, or setting
111  * /proc/sys/kernel/ftrace_dump_on_oops
112  * Set 1 if you want to dump buffers of all CPUs
113  * Set 2 if you want to dump the buffer of the CPU that triggered oops
114  */
115
116 enum ftrace_dump_mode ftrace_dump_on_oops;
117
118 /* When set, tracing will stop when a WARN*() is hit */
119 int __disable_trace_on_warning;
120
121 #ifdef CONFIG_TRACE_ENUM_MAP_FILE
122 /* Map of enums to their values, for "enum_map" file */
123 struct trace_enum_map_head {
124         struct module                   *mod;
125         unsigned long                   length;
126 };
127
128 union trace_enum_map_item;
129
130 struct trace_enum_map_tail {
131         /*
132          * "end" is first and points to NULL as it must be different
133          * than "mod" or "enum_string"
134          */
135         union trace_enum_map_item       *next;
136         const char                      *end;   /* points to NULL */
137 };
138
139 static DEFINE_MUTEX(trace_enum_mutex);
140
141 /*
142  * The trace_enum_maps are saved in an array with two extra elements,
143  * one at the beginning, and one at the end. The beginning item contains
144  * the count of the saved maps (head.length), and the module they
145  * belong to if not built in (head.mod). The ending item contains a
146  * pointer to the next array of saved enum_map items.
147  */
148 union trace_enum_map_item {
149         struct trace_enum_map           map;
150         struct trace_enum_map_head      head;
151         struct trace_enum_map_tail      tail;
152 };
153
154 static union trace_enum_map_item *trace_enum_maps;
155 #endif /* CONFIG_TRACE_ENUM_MAP_FILE */
156
157 static int tracing_set_tracer(struct trace_array *tr, const char *buf);
158
159 #define MAX_TRACER_SIZE         100
160 static char bootup_tracer_buf[MAX_TRACER_SIZE] __initdata;
161 static char *default_bootup_tracer;
162
163 static bool allocate_snapshot;
164
165 static int __init set_cmdline_ftrace(char *str)
166 {
167         strlcpy(bootup_tracer_buf, str, MAX_TRACER_SIZE);
168         default_bootup_tracer = bootup_tracer_buf;
169         /* We are using ftrace early, expand it */
170         ring_buffer_expanded = true;
171         return 1;
172 }
173 __setup("ftrace=", set_cmdline_ftrace);
174
175 static int __init set_ftrace_dump_on_oops(char *str)
176 {
177         if (*str++ != '=' || !*str) {
178                 ftrace_dump_on_oops = DUMP_ALL;
179                 return 1;
180         }
181
182         if (!strcmp("orig_cpu", str)) {
183                 ftrace_dump_on_oops = DUMP_ORIG;
184                 return 1;
185         }
186
187         return 0;
188 }
189 __setup("ftrace_dump_on_oops", set_ftrace_dump_on_oops);
190
191 static int __init stop_trace_on_warning(char *str)
192 {
193         if ((strcmp(str, "=0") != 0 && strcmp(str, "=off") != 0))
194                 __disable_trace_on_warning = 1;
195         return 1;
196 }
197 __setup("traceoff_on_warning", stop_trace_on_warning);
198
199 static int __init boot_alloc_snapshot(char *str)
200 {
201         allocate_snapshot = true;
202         /* We also need the main ring buffer expanded */
203         ring_buffer_expanded = true;
204         return 1;
205 }
206 __setup("alloc_snapshot", boot_alloc_snapshot);
207
208
209 static char trace_boot_options_buf[MAX_TRACER_SIZE] __initdata;
210
211 static int __init set_trace_boot_options(char *str)
212 {
213         strlcpy(trace_boot_options_buf, str, MAX_TRACER_SIZE);
214         return 0;
215 }
216 __setup("trace_options=", set_trace_boot_options);
217
218 static char trace_boot_clock_buf[MAX_TRACER_SIZE] __initdata;
219 static char *trace_boot_clock __initdata;
220
221 static int __init set_trace_boot_clock(char *str)
222 {
223         strlcpy(trace_boot_clock_buf, str, MAX_TRACER_SIZE);
224         trace_boot_clock = trace_boot_clock_buf;
225         return 0;
226 }
227 __setup("trace_clock=", set_trace_boot_clock);
228
229 static int __init set_tracepoint_printk(char *str)
230 {
231         if ((strcmp(str, "=0") != 0 && strcmp(str, "=off") != 0))
232                 tracepoint_printk = 1;
233         return 1;
234 }
235 __setup("tp_printk", set_tracepoint_printk);
236
237 unsigned long long ns2usecs(cycle_t nsec)
238 {
239         nsec += 500;
240         do_div(nsec, 1000);
241         return nsec;
242 }
243
244 /* trace_flags holds trace_options default values */
245 #define TRACE_DEFAULT_FLAGS                                             \
246         (FUNCTION_DEFAULT_FLAGS |                                       \
247          TRACE_ITER_PRINT_PARENT | TRACE_ITER_PRINTK |                  \
248          TRACE_ITER_ANNOTATE | TRACE_ITER_CONTEXT_INFO |                \
249          TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE |                 \
250          TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS)
251
252 /* trace_options that are only supported by global_trace */
253 #define TOP_LEVEL_TRACE_FLAGS (TRACE_ITER_PRINTK |                      \
254                TRACE_ITER_PRINTK_MSGONLY | TRACE_ITER_RECORD_CMD)
255
256 /* trace_flags that are default zero for instances */
257 #define ZEROED_TRACE_FLAGS \
258         TRACE_ITER_EVENT_FORK
259
260 /*
261  * The global_trace is the descriptor that holds the tracing
262  * buffers for the live tracing. For each CPU, it contains
263  * a link list of pages that will store trace entries. The
264  * page descriptor of the pages in the memory is used to hold
265  * the link list by linking the lru item in the page descriptor
266  * to each of the pages in the buffer per CPU.
267  *
268  * For each active CPU there is a data field that holds the
269  * pages for the buffer for that CPU. Each CPU has the same number
270  * of pages allocated for its buffer.
271  */
272 static struct trace_array global_trace = {
273         .trace_flags = TRACE_DEFAULT_FLAGS,
274 };
275
276 LIST_HEAD(ftrace_trace_arrays);
277
278 int trace_array_get(struct trace_array *this_tr)
279 {
280         struct trace_array *tr;
281         int ret = -ENODEV;
282
283         mutex_lock(&trace_types_lock);
284         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
285                 if (tr == this_tr) {
286                         tr->ref++;
287                         ret = 0;
288                         break;
289                 }
290         }
291         mutex_unlock(&trace_types_lock);
292
293         return ret;
294 }
295
296 static void __trace_array_put(struct trace_array *this_tr)
297 {
298         WARN_ON(!this_tr->ref);
299         this_tr->ref--;
300 }
301
302 void trace_array_put(struct trace_array *this_tr)
303 {
304         mutex_lock(&trace_types_lock);
305         __trace_array_put(this_tr);
306         mutex_unlock(&trace_types_lock);
307 }
308
309 int call_filter_check_discard(struct trace_event_call *call, void *rec,
310                               struct ring_buffer *buffer,
311                               struct ring_buffer_event *event)
312 {
313         if (unlikely(call->flags & TRACE_EVENT_FL_FILTERED) &&
314             !filter_match_preds(call->filter, rec)) {
315                 __trace_event_discard_commit(buffer, event);
316                 return 1;
317         }
318
319         return 0;
320 }
321
322 void trace_free_pid_list(struct trace_pid_list *pid_list)
323 {
324         vfree(pid_list->pids);
325         kfree(pid_list);
326 }
327
328 /**
329  * trace_find_filtered_pid - check if a pid exists in a filtered_pid list
330  * @filtered_pids: The list of pids to check
331  * @search_pid: The PID to find in @filtered_pids
332  *
333  * Returns true if @search_pid is fonud in @filtered_pids, and false otherwis.
334  */
335 bool
336 trace_find_filtered_pid(struct trace_pid_list *filtered_pids, pid_t search_pid)
337 {
338         /*
339          * If pid_max changed after filtered_pids was created, we
340          * by default ignore all pids greater than the previous pid_max.
341          */
342         if (search_pid >= filtered_pids->pid_max)
343                 return false;
344
345         return test_bit(search_pid, filtered_pids->pids);
346 }
347
348 /**
349  * trace_ignore_this_task - should a task be ignored for tracing
350  * @filtered_pids: The list of pids to check
351  * @task: The task that should be ignored if not filtered
352  *
353  * Checks if @task should be traced or not from @filtered_pids.
354  * Returns true if @task should *NOT* be traced.
355  * Returns false if @task should be traced.
356  */
357 bool
358 trace_ignore_this_task(struct trace_pid_list *filtered_pids, struct task_struct *task)
359 {
360         /*
361          * Return false, because if filtered_pids does not exist,
362          * all pids are good to trace.
363          */
364         if (!filtered_pids)
365                 return false;
366
367         return !trace_find_filtered_pid(filtered_pids, task->pid);
368 }
369
370 /**
371  * trace_pid_filter_add_remove - Add or remove a task from a pid_list
372  * @pid_list: The list to modify
373  * @self: The current task for fork or NULL for exit
374  * @task: The task to add or remove
375  *
376  * If adding a task, if @self is defined, the task is only added if @self
377  * is also included in @pid_list. This happens on fork and tasks should
378  * only be added when the parent is listed. If @self is NULL, then the
379  * @task pid will be removed from the list, which would happen on exit
380  * of a task.
381  */
382 void trace_filter_add_remove_task(struct trace_pid_list *pid_list,
383                                   struct task_struct *self,
384                                   struct task_struct *task)
385 {
386         if (!pid_list)
387                 return;
388
389         /* For forks, we only add if the forking task is listed */
390         if (self) {
391                 if (!trace_find_filtered_pid(pid_list, self->pid))
392                         return;
393         }
394
395         /* Sorry, but we don't support pid_max changing after setting */
396         if (task->pid >= pid_list->pid_max)
397                 return;
398
399         /* "self" is set for forks, and NULL for exits */
400         if (self)
401                 set_bit(task->pid, pid_list->pids);
402         else
403                 clear_bit(task->pid, pid_list->pids);
404 }
405
406 /**
407  * trace_pid_next - Used for seq_file to get to the next pid of a pid_list
408  * @pid_list: The pid list to show
409  * @v: The last pid that was shown (+1 the actual pid to let zero be displayed)
410  * @pos: The position of the file
411  *
412  * This is used by the seq_file "next" operation to iterate the pids
413  * listed in a trace_pid_list structure.
414  *
415  * Returns the pid+1 as we want to display pid of zero, but NULL would
416  * stop the iteration.
417  */
418 void *trace_pid_next(struct trace_pid_list *pid_list, void *v, loff_t *pos)
419 {
420         unsigned long pid = (unsigned long)v;
421
422         (*pos)++;
423
424         /* pid already is +1 of the actual prevous bit */
425         pid = find_next_bit(pid_list->pids, pid_list->pid_max, pid);
426
427         /* Return pid + 1 to allow zero to be represented */
428         if (pid < pid_list->pid_max)
429                 return (void *)(pid + 1);
430
431         return NULL;
432 }
433
434 /**
435  * trace_pid_start - Used for seq_file to start reading pid lists
436  * @pid_list: The pid list to show
437  * @pos: The position of the file
438  *
439  * This is used by seq_file "start" operation to start the iteration
440  * of listing pids.
441  *
442  * Returns the pid+1 as we want to display pid of zero, but NULL would
443  * stop the iteration.
444  */
445 void *trace_pid_start(struct trace_pid_list *pid_list, loff_t *pos)
446 {
447         unsigned long pid;
448         loff_t l = 0;
449
450         pid = find_first_bit(pid_list->pids, pid_list->pid_max);
451         if (pid >= pid_list->pid_max)
452                 return NULL;
453
454         /* Return pid + 1 so that zero can be the exit value */
455         for (pid++; pid && l < *pos;
456              pid = (unsigned long)trace_pid_next(pid_list, (void *)pid, &l))
457                 ;
458         return (void *)pid;
459 }
460
461 /**
462  * trace_pid_show - show the current pid in seq_file processing
463  * @m: The seq_file structure to write into
464  * @v: A void pointer of the pid (+1) value to display
465  *
466  * Can be directly used by seq_file operations to display the current
467  * pid value.
468  */
469 int trace_pid_show(struct seq_file *m, void *v)
470 {
471         unsigned long pid = (unsigned long)v - 1;
472
473         seq_printf(m, "%lu\n", pid);
474         return 0;
475 }
476
477 /* 128 should be much more than enough */
478 #define PID_BUF_SIZE            127
479
480 int trace_pid_write(struct trace_pid_list *filtered_pids,
481                     struct trace_pid_list **new_pid_list,
482                     const char __user *ubuf, size_t cnt)
483 {
484         struct trace_pid_list *pid_list;
485         struct trace_parser parser;
486         unsigned long val;
487         int nr_pids = 0;
488         ssize_t read = 0;
489         ssize_t ret = 0;
490         loff_t pos;
491         pid_t pid;
492
493         if (trace_parser_get_init(&parser, PID_BUF_SIZE + 1))
494                 return -ENOMEM;
495
496         /*
497          * Always recreate a new array. The write is an all or nothing
498          * operation. Always create a new array when adding new pids by
499          * the user. If the operation fails, then the current list is
500          * not modified.
501          */
502         pid_list = kmalloc(sizeof(*pid_list), GFP_KERNEL);
503         if (!pid_list)
504                 return -ENOMEM;
505
506         pid_list->pid_max = READ_ONCE(pid_max);
507
508         /* Only truncating will shrink pid_max */
509         if (filtered_pids && filtered_pids->pid_max > pid_list->pid_max)
510                 pid_list->pid_max = filtered_pids->pid_max;
511
512         pid_list->pids = vzalloc((pid_list->pid_max + 7) >> 3);
513         if (!pid_list->pids) {
514                 kfree(pid_list);
515                 return -ENOMEM;
516         }
517
518         if (filtered_pids) {
519                 /* copy the current bits to the new max */
520                 pid = find_first_bit(filtered_pids->pids,
521                                      filtered_pids->pid_max);
522                 while (pid < filtered_pids->pid_max) {
523                         set_bit(pid, pid_list->pids);
524                         pid = find_next_bit(filtered_pids->pids,
525                                             filtered_pids->pid_max,
526                                             pid + 1);
527                         nr_pids++;
528                 }
529         }
530
531         while (cnt > 0) {
532
533                 pos = 0;
534
535                 ret = trace_get_user(&parser, ubuf, cnt, &pos);
536                 if (ret < 0 || !trace_parser_loaded(&parser))
537                         break;
538
539                 read += ret;
540                 ubuf += ret;
541                 cnt -= ret;
542
543                 parser.buffer[parser.idx] = 0;
544
545                 ret = -EINVAL;
546                 if (kstrtoul(parser.buffer, 0, &val))
547                         break;
548                 if (val >= pid_list->pid_max)
549                         break;
550
551                 pid = (pid_t)val;
552
553                 set_bit(pid, pid_list->pids);
554                 nr_pids++;
555
556                 trace_parser_clear(&parser);
557                 ret = 0;
558         }
559         trace_parser_put(&parser);
560
561         if (ret < 0) {
562                 trace_free_pid_list(pid_list);
563                 return ret;
564         }
565
566         if (!nr_pids) {
567                 /* Cleared the list of pids */
568                 trace_free_pid_list(pid_list);
569                 read = ret;
570                 pid_list = NULL;
571         }
572
573         *new_pid_list = pid_list;
574
575         return read;
576 }
577
578 static cycle_t buffer_ftrace_now(struct trace_buffer *buf, int cpu)
579 {
580         u64 ts;
581
582         /* Early boot up does not have a buffer yet */
583         if (!buf->buffer)
584                 return trace_clock_local();
585
586         ts = ring_buffer_time_stamp(buf->buffer, cpu);
587         ring_buffer_normalize_time_stamp(buf->buffer, cpu, &ts);
588
589         return ts;
590 }
591
592 cycle_t ftrace_now(int cpu)
593 {
594         return buffer_ftrace_now(&global_trace.trace_buffer, cpu);
595 }
596
597 /**
598  * tracing_is_enabled - Show if global_trace has been disabled
599  *
600  * Shows if the global trace has been enabled or not. It uses the
601  * mirror flag "buffer_disabled" to be used in fast paths such as for
602  * the irqsoff tracer. But it may be inaccurate due to races. If you
603  * need to know the accurate state, use tracing_is_on() which is a little
604  * slower, but accurate.
605  */
606 int tracing_is_enabled(void)
607 {
608         /*
609          * For quick access (irqsoff uses this in fast path), just
610          * return the mirror variable of the state of the ring buffer.
611          * It's a little racy, but we don't really care.
612          */
613         smp_rmb();
614         return !global_trace.buffer_disabled;
615 }
616
617 /*
618  * trace_buf_size is the size in bytes that is allocated
619  * for a buffer. Note, the number of bytes is always rounded
620  * to page size.
621  *
622  * This number is purposely set to a low number of 16384.
623  * If the dump on oops happens, it will be much appreciated
624  * to not have to wait for all that output. Anyway this can be
625  * boot time and run time configurable.
626  */
627 #define TRACE_BUF_SIZE_DEFAULT  1441792UL /* 16384 * 88 (sizeof(entry)) */
628
629 static unsigned long            trace_buf_size = TRACE_BUF_SIZE_DEFAULT;
630
631 /* trace_types holds a link list of available tracers. */
632 static struct tracer            *trace_types __read_mostly;
633
634 /*
635  * trace_types_lock is used to protect the trace_types list.
636  */
637 DEFINE_MUTEX(trace_types_lock);
638
639 /*
640  * serialize the access of the ring buffer
641  *
642  * ring buffer serializes readers, but it is low level protection.
643  * The validity of the events (which returns by ring_buffer_peek() ..etc)
644  * are not protected by ring buffer.
645  *
646  * The content of events may become garbage if we allow other process consumes
647  * these events concurrently:
648  *   A) the page of the consumed events may become a normal page
649  *      (not reader page) in ring buffer, and this page will be rewrited
650  *      by events producer.
651  *   B) The page of the consumed events may become a page for splice_read,
652  *      and this page will be returned to system.
653  *
654  * These primitives allow multi process access to different cpu ring buffer
655  * concurrently.
656  *
657  * These primitives don't distinguish read-only and read-consume access.
658  * Multi read-only access are also serialized.
659  */
660
661 #ifdef CONFIG_SMP
662 static DECLARE_RWSEM(all_cpu_access_lock);
663 static DEFINE_PER_CPU(struct mutex, cpu_access_lock);
664
665 static inline void trace_access_lock(int cpu)
666 {
667         if (cpu == RING_BUFFER_ALL_CPUS) {
668                 /* gain it for accessing the whole ring buffer. */
669                 down_write(&all_cpu_access_lock);
670         } else {
671                 /* gain it for accessing a cpu ring buffer. */
672
673                 /* Firstly block other trace_access_lock(RING_BUFFER_ALL_CPUS). */
674                 down_read(&all_cpu_access_lock);
675
676                 /* Secondly block other access to this @cpu ring buffer. */
677                 mutex_lock(&per_cpu(cpu_access_lock, cpu));
678         }
679 }
680
681 static inline void trace_access_unlock(int cpu)
682 {
683         if (cpu == RING_BUFFER_ALL_CPUS) {
684                 up_write(&all_cpu_access_lock);
685         } else {
686                 mutex_unlock(&per_cpu(cpu_access_lock, cpu));
687                 up_read(&all_cpu_access_lock);
688         }
689 }
690
691 static inline void trace_access_lock_init(void)
692 {
693         int cpu;
694
695         for_each_possible_cpu(cpu)
696                 mutex_init(&per_cpu(cpu_access_lock, cpu));
697 }
698
699 #else
700
701 static DEFINE_MUTEX(access_lock);
702
703 static inline void trace_access_lock(int cpu)
704 {
705         (void)cpu;
706         mutex_lock(&access_lock);
707 }
708
709 static inline void trace_access_unlock(int cpu)
710 {
711         (void)cpu;
712         mutex_unlock(&access_lock);
713 }
714
715 static inline void trace_access_lock_init(void)
716 {
717 }
718
719 #endif
720
721 #ifdef CONFIG_STACKTRACE
722 static void __ftrace_trace_stack(struct ring_buffer *buffer,
723                                  unsigned long flags,
724                                  int skip, int pc, struct pt_regs *regs);
725 static inline void ftrace_trace_stack(struct trace_array *tr,
726                                       struct ring_buffer *buffer,
727                                       unsigned long flags,
728                                       int skip, int pc, struct pt_regs *regs);
729
730 #else
731 static inline void __ftrace_trace_stack(struct ring_buffer *buffer,
732                                         unsigned long flags,
733                                         int skip, int pc, struct pt_regs *regs)
734 {
735 }
736 static inline void ftrace_trace_stack(struct trace_array *tr,
737                                       struct ring_buffer *buffer,
738                                       unsigned long flags,
739                                       int skip, int pc, struct pt_regs *regs)
740 {
741 }
742
743 #endif
744
745 static void tracer_tracing_on(struct trace_array *tr)
746 {
747         if (tr->trace_buffer.buffer)
748                 ring_buffer_record_on(tr->trace_buffer.buffer);
749         /*
750          * This flag is looked at when buffers haven't been allocated
751          * yet, or by some tracers (like irqsoff), that just want to
752          * know if the ring buffer has been disabled, but it can handle
753          * races of where it gets disabled but we still do a record.
754          * As the check is in the fast path of the tracers, it is more
755          * important to be fast than accurate.
756          */
757         tr->buffer_disabled = 0;
758         /* Make the flag seen by readers */
759         smp_wmb();
760 }
761
762 /**
763  * tracing_on - enable tracing buffers
764  *
765  * This function enables tracing buffers that may have been
766  * disabled with tracing_off.
767  */
768 void tracing_on(void)
769 {
770         tracer_tracing_on(&global_trace);
771 }
772 EXPORT_SYMBOL_GPL(tracing_on);
773
774 /**
775  * __trace_puts - write a constant string into the trace buffer.
776  * @ip:    The address of the caller
777  * @str:   The constant string to write
778  * @size:  The size of the string.
779  */
780 int __trace_puts(unsigned long ip, const char *str, int size)
781 {
782         struct ring_buffer_event *event;
783         struct ring_buffer *buffer;
784         struct print_entry *entry;
785         unsigned long irq_flags;
786         int alloc;
787         int pc;
788
789         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
790                 return 0;
791
792         pc = preempt_count();
793
794         if (unlikely(tracing_selftest_running || tracing_disabled))
795                 return 0;
796
797         alloc = sizeof(*entry) + size + 2; /* possible \n added */
798
799         local_save_flags(irq_flags);
800         buffer = global_trace.trace_buffer.buffer;
801         event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc, 
802                                           irq_flags, pc);
803         if (!event)
804                 return 0;
805
806         entry = ring_buffer_event_data(event);
807         entry->ip = ip;
808
809         memcpy(&entry->buf, str, size);
810
811         /* Add a newline if necessary */
812         if (entry->buf[size - 1] != '\n') {
813                 entry->buf[size] = '\n';
814                 entry->buf[size + 1] = '\0';
815         } else
816                 entry->buf[size] = '\0';
817
818         __buffer_unlock_commit(buffer, event);
819         ftrace_trace_stack(&global_trace, buffer, irq_flags, 4, pc, NULL);
820
821         return size;
822 }
823 EXPORT_SYMBOL_GPL(__trace_puts);
824
825 /**
826  * __trace_bputs - write the pointer to a constant string into trace buffer
827  * @ip:    The address of the caller
828  * @str:   The constant string to write to the buffer to
829  */
830 int __trace_bputs(unsigned long ip, const char *str)
831 {
832         struct ring_buffer_event *event;
833         struct ring_buffer *buffer;
834         struct bputs_entry *entry;
835         unsigned long irq_flags;
836         int size = sizeof(struct bputs_entry);
837         int pc;
838
839         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
840                 return 0;
841
842         pc = preempt_count();
843
844         if (unlikely(tracing_selftest_running || tracing_disabled))
845                 return 0;
846
847         local_save_flags(irq_flags);
848         buffer = global_trace.trace_buffer.buffer;
849         event = trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size,
850                                           irq_flags, pc);
851         if (!event)
852                 return 0;
853
854         entry = ring_buffer_event_data(event);
855         entry->ip                       = ip;
856         entry->str                      = str;
857
858         __buffer_unlock_commit(buffer, event);
859         ftrace_trace_stack(&global_trace, buffer, irq_flags, 4, pc, NULL);
860
861         return 1;
862 }
863 EXPORT_SYMBOL_GPL(__trace_bputs);
864
865 #ifdef CONFIG_TRACER_SNAPSHOT
866 /**
867  * trace_snapshot - take a snapshot of the current buffer.
868  *
869  * This causes a swap between the snapshot buffer and the current live
870  * tracing buffer. You can use this to take snapshots of the live
871  * trace when some condition is triggered, but continue to trace.
872  *
873  * Note, make sure to allocate the snapshot with either
874  * a tracing_snapshot_alloc(), or by doing it manually
875  * with: echo 1 > /sys/kernel/debug/tracing/snapshot
876  *
877  * If the snapshot buffer is not allocated, it will stop tracing.
878  * Basically making a permanent snapshot.
879  */
880 void tracing_snapshot(void)
881 {
882         struct trace_array *tr = &global_trace;
883         struct tracer *tracer = tr->current_trace;
884         unsigned long flags;
885
886         if (in_nmi()) {
887                 internal_trace_puts("*** SNAPSHOT CALLED FROM NMI CONTEXT ***\n");
888                 internal_trace_puts("*** snapshot is being ignored        ***\n");
889                 return;
890         }
891
892         if (!tr->allocated_snapshot) {
893                 internal_trace_puts("*** SNAPSHOT NOT ALLOCATED ***\n");
894                 internal_trace_puts("*** stopping trace here!   ***\n");
895                 tracing_off();
896                 return;
897         }
898
899         /* Note, snapshot can not be used when the tracer uses it */
900         if (tracer->use_max_tr) {
901                 internal_trace_puts("*** LATENCY TRACER ACTIVE ***\n");
902                 internal_trace_puts("*** Can not use snapshot (sorry) ***\n");
903                 return;
904         }
905
906         local_irq_save(flags);
907         update_max_tr(tr, current, smp_processor_id());
908         local_irq_restore(flags);
909 }
910 EXPORT_SYMBOL_GPL(tracing_snapshot);
911
912 static int resize_buffer_duplicate_size(struct trace_buffer *trace_buf,
913                                         struct trace_buffer *size_buf, int cpu_id);
914 static void set_buffer_entries(struct trace_buffer *buf, unsigned long val);
915
916 static int alloc_snapshot(struct trace_array *tr)
917 {
918         int ret;
919
920         if (!tr->allocated_snapshot) {
921
922                 /* allocate spare buffer */
923                 ret = resize_buffer_duplicate_size(&tr->max_buffer,
924                                    &tr->trace_buffer, RING_BUFFER_ALL_CPUS);
925                 if (ret < 0)
926                         return ret;
927
928                 tr->allocated_snapshot = true;
929         }
930
931         return 0;
932 }
933
934 static void free_snapshot(struct trace_array *tr)
935 {
936         /*
937          * We don't free the ring buffer. instead, resize it because
938          * The max_tr ring buffer has some state (e.g. ring->clock) and
939          * we want preserve it.
940          */
941         ring_buffer_resize(tr->max_buffer.buffer, 1, RING_BUFFER_ALL_CPUS);
942         set_buffer_entries(&tr->max_buffer, 1);
943         tracing_reset_online_cpus(&tr->max_buffer);
944         tr->allocated_snapshot = false;
945 }
946
947 /**
948  * tracing_alloc_snapshot - allocate snapshot buffer.
949  *
950  * This only allocates the snapshot buffer if it isn't already
951  * allocated - it doesn't also take a snapshot.
952  *
953  * This is meant to be used in cases where the snapshot buffer needs
954  * to be set up for events that can't sleep but need to be able to
955  * trigger a snapshot.
956  */
957 int tracing_alloc_snapshot(void)
958 {
959         struct trace_array *tr = &global_trace;
960         int ret;
961
962         ret = alloc_snapshot(tr);
963         WARN_ON(ret < 0);
964
965         return ret;
966 }
967 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
968
969 /**
970  * trace_snapshot_alloc - allocate and take a snapshot of the current buffer.
971  *
972  * This is similar to trace_snapshot(), but it will allocate the
973  * snapshot buffer if it isn't already allocated. Use this only
974  * where it is safe to sleep, as the allocation may sleep.
975  *
976  * This causes a swap between the snapshot buffer and the current live
977  * tracing buffer. You can use this to take snapshots of the live
978  * trace when some condition is triggered, but continue to trace.
979  */
980 void tracing_snapshot_alloc(void)
981 {
982         int ret;
983
984         ret = tracing_alloc_snapshot();
985         if (ret < 0)
986                 return;
987
988         tracing_snapshot();
989 }
990 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
991 #else
992 void tracing_snapshot(void)
993 {
994         WARN_ONCE(1, "Snapshot feature not enabled, but internal snapshot used");
995 }
996 EXPORT_SYMBOL_GPL(tracing_snapshot);
997 int tracing_alloc_snapshot(void)
998 {
999         WARN_ONCE(1, "Snapshot feature not enabled, but snapshot allocation used");
1000         return -ENODEV;
1001 }
1002 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
1003 void tracing_snapshot_alloc(void)
1004 {
1005         /* Give warning */
1006         tracing_snapshot();
1007 }
1008 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
1009 #endif /* CONFIG_TRACER_SNAPSHOT */
1010
1011 static void tracer_tracing_off(struct trace_array *tr)
1012 {
1013         if (tr->trace_buffer.buffer)
1014                 ring_buffer_record_off(tr->trace_buffer.buffer);
1015         /*
1016          * This flag is looked at when buffers haven't been allocated
1017          * yet, or by some tracers (like irqsoff), that just want to
1018          * know if the ring buffer has been disabled, but it can handle
1019          * races of where it gets disabled but we still do a record.
1020          * As the check is in the fast path of the tracers, it is more
1021          * important to be fast than accurate.
1022          */
1023         tr->buffer_disabled = 1;
1024         /* Make the flag seen by readers */
1025         smp_wmb();
1026 }
1027
1028 /**
1029  * tracing_off - turn off tracing buffers
1030  *
1031  * This function stops the tracing buffers from recording data.
1032  * It does not disable any overhead the tracers themselves may
1033  * be causing. This function simply causes all recording to
1034  * the ring buffers to fail.
1035  */
1036 void tracing_off(void)
1037 {
1038         tracer_tracing_off(&global_trace);
1039 }
1040 EXPORT_SYMBOL_GPL(tracing_off);
1041
1042 void disable_trace_on_warning(void)
1043 {
1044         if (__disable_trace_on_warning)
1045                 tracing_off();
1046 }
1047
1048 /**
1049  * tracer_tracing_is_on - show real state of ring buffer enabled
1050  * @tr : the trace array to know if ring buffer is enabled
1051  *
1052  * Shows real state of the ring buffer if it is enabled or not.
1053  */
1054 static int tracer_tracing_is_on(struct trace_array *tr)
1055 {
1056         if (tr->trace_buffer.buffer)
1057                 return ring_buffer_record_is_on(tr->trace_buffer.buffer);
1058         return !tr->buffer_disabled;
1059 }
1060
1061 /**
1062  * tracing_is_on - show state of ring buffers enabled
1063  */
1064 int tracing_is_on(void)
1065 {
1066         return tracer_tracing_is_on(&global_trace);
1067 }
1068 EXPORT_SYMBOL_GPL(tracing_is_on);
1069
1070 static int __init set_buf_size(char *str)
1071 {
1072         unsigned long buf_size;
1073
1074         if (!str)
1075                 return 0;
1076         buf_size = memparse(str, &str);
1077         /* nr_entries can not be zero */
1078         if (buf_size == 0)
1079                 return 0;
1080         trace_buf_size = buf_size;
1081         return 1;
1082 }
1083 __setup("trace_buf_size=", set_buf_size);
1084
1085 static int __init set_tracing_thresh(char *str)
1086 {
1087         unsigned long threshold;
1088         int ret;
1089
1090         if (!str)
1091                 return 0;
1092         ret = kstrtoul(str, 0, &threshold);
1093         if (ret < 0)
1094                 return 0;
1095         tracing_thresh = threshold * 1000;
1096         return 1;
1097 }
1098 __setup("tracing_thresh=", set_tracing_thresh);
1099
1100 unsigned long nsecs_to_usecs(unsigned long nsecs)
1101 {
1102         return nsecs / 1000;
1103 }
1104
1105 /*
1106  * TRACE_FLAGS is defined as a tuple matching bit masks with strings.
1107  * It uses C(a, b) where 'a' is the enum name and 'b' is the string that
1108  * matches it. By defining "C(a, b) b", TRACE_FLAGS becomes a list
1109  * of strings in the order that the enums were defined.
1110  */
1111 #undef C
1112 #define C(a, b) b
1113
1114 /* These must match the bit postions in trace_iterator_flags */
1115 static const char *trace_options[] = {
1116         TRACE_FLAGS
1117         NULL
1118 };
1119
1120 static struct {
1121         u64 (*func)(void);
1122         const char *name;
1123         int in_ns;              /* is this clock in nanoseconds? */
1124 } trace_clocks[] = {
1125         { trace_clock_local,            "local",        1 },
1126         { trace_clock_global,           "global",       1 },
1127         { trace_clock_counter,          "counter",      0 },
1128         { trace_clock_jiffies,          "uptime",       0 },
1129         { trace_clock,                  "perf",         1 },
1130         { ktime_get_mono_fast_ns,       "mono",         1 },
1131         { ktime_get_raw_fast_ns,        "mono_raw",     1 },
1132         ARCH_TRACE_CLOCKS
1133 };
1134
1135 /*
1136  * trace_parser_get_init - gets the buffer for trace parser
1137  */
1138 int trace_parser_get_init(struct trace_parser *parser, int size)
1139 {
1140         memset(parser, 0, sizeof(*parser));
1141
1142         parser->buffer = kmalloc(size, GFP_KERNEL);
1143         if (!parser->buffer)
1144                 return 1;
1145
1146         parser->size = size;
1147         return 0;
1148 }
1149
1150 /*
1151  * trace_parser_put - frees the buffer for trace parser
1152  */
1153 void trace_parser_put(struct trace_parser *parser)
1154 {
1155         kfree(parser->buffer);
1156 }
1157
1158 /*
1159  * trace_get_user - reads the user input string separated by  space
1160  * (matched by isspace(ch))
1161  *
1162  * For each string found the 'struct trace_parser' is updated,
1163  * and the function returns.
1164  *
1165  * Returns number of bytes read.
1166  *
1167  * See kernel/trace/trace.h for 'struct trace_parser' details.
1168  */
1169 int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
1170         size_t cnt, loff_t *ppos)
1171 {
1172         char ch;
1173         size_t read = 0;
1174         ssize_t ret;
1175
1176         if (!*ppos)
1177                 trace_parser_clear(parser);
1178
1179         ret = get_user(ch, ubuf++);
1180         if (ret)
1181                 goto out;
1182
1183         read++;
1184         cnt--;
1185
1186         /*
1187          * The parser is not finished with the last write,
1188          * continue reading the user input without skipping spaces.
1189          */
1190         if (!parser->cont) {
1191                 /* skip white space */
1192                 while (cnt && isspace(ch)) {
1193                         ret = get_user(ch, ubuf++);
1194                         if (ret)
1195                                 goto out;
1196                         read++;
1197                         cnt--;
1198                 }
1199
1200                 /* only spaces were written */
1201                 if (isspace(ch)) {
1202                         *ppos += read;
1203                         ret = read;
1204                         goto out;
1205                 }
1206
1207                 parser->idx = 0;
1208         }
1209
1210         /* read the non-space input */
1211         while (cnt && !isspace(ch)) {
1212                 if (parser->idx < parser->size - 1)
1213                         parser->buffer[parser->idx++] = ch;
1214                 else {
1215                         ret = -EINVAL;
1216                         goto out;
1217                 }
1218                 ret = get_user(ch, ubuf++);
1219                 if (ret)
1220                         goto out;
1221                 read++;
1222                 cnt--;
1223         }
1224
1225         /* We either got finished input or we have to wait for another call. */
1226         if (isspace(ch)) {
1227                 parser->buffer[parser->idx] = 0;
1228                 parser->cont = false;
1229         } else if (parser->idx < parser->size - 1) {
1230                 parser->cont = true;
1231                 parser->buffer[parser->idx++] = ch;
1232         } else {
1233                 ret = -EINVAL;
1234                 goto out;
1235         }
1236
1237         *ppos += read;
1238         ret = read;
1239
1240 out:
1241         return ret;
1242 }
1243
1244 /* TODO add a seq_buf_to_buffer() */
1245 static ssize_t trace_seq_to_buffer(struct trace_seq *s, void *buf, size_t cnt)
1246 {
1247         int len;
1248
1249         if (trace_seq_used(s) <= s->seq.readpos)
1250                 return -EBUSY;
1251
1252         len = trace_seq_used(s) - s->seq.readpos;
1253         if (cnt > len)
1254                 cnt = len;
1255         memcpy(buf, s->buffer + s->seq.readpos, cnt);
1256
1257         s->seq.readpos += cnt;
1258         return cnt;
1259 }
1260
1261 unsigned long __read_mostly     tracing_thresh;
1262
1263 #ifdef CONFIG_TRACER_MAX_TRACE
1264 /*
1265  * Copy the new maximum trace into the separate maximum-trace
1266  * structure. (this way the maximum trace is permanently saved,
1267  * for later retrieval via /sys/kernel/debug/tracing/latency_trace)
1268  */
1269 static void
1270 __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
1271 {
1272         struct trace_buffer *trace_buf = &tr->trace_buffer;
1273         struct trace_buffer *max_buf = &tr->max_buffer;
1274         struct trace_array_cpu *data = per_cpu_ptr(trace_buf->data, cpu);
1275         struct trace_array_cpu *max_data = per_cpu_ptr(max_buf->data, cpu);
1276
1277         max_buf->cpu = cpu;
1278         max_buf->time_start = data->preempt_timestamp;
1279
1280         max_data->saved_latency = tr->max_latency;
1281         max_data->critical_start = data->critical_start;
1282         max_data->critical_end = data->critical_end;
1283
1284         memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN);
1285         max_data->pid = tsk->pid;
1286         /*
1287          * If tsk == current, then use current_uid(), as that does not use
1288          * RCU. The irq tracer can be called out of RCU scope.
1289          */
1290         if (tsk == current)
1291                 max_data->uid = current_uid();
1292         else
1293                 max_data->uid = task_uid(tsk);
1294
1295         max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
1296         max_data->policy = tsk->policy;
1297         max_data->rt_priority = tsk->rt_priority;
1298
1299         /* record this tasks comm */
1300         tracing_record_cmdline(tsk);
1301 }
1302
1303 /**
1304  * update_max_tr - snapshot all trace buffers from global_trace to max_tr
1305  * @tr: tracer
1306  * @tsk: the task with the latency
1307  * @cpu: The cpu that initiated the trace.
1308  *
1309  * Flip the buffers between the @tr and the max_tr and record information
1310  * about which task was the cause of this latency.
1311  */
1312 void
1313 update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
1314 {
1315         struct ring_buffer *buf;
1316
1317         if (tr->stop_count)
1318                 return;
1319
1320         WARN_ON_ONCE(!irqs_disabled());
1321
1322         if (!tr->allocated_snapshot) {
1323                 /* Only the nop tracer should hit this when disabling */
1324                 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1325                 return;
1326         }
1327
1328         arch_spin_lock(&tr->max_lock);
1329
1330         buf = tr->trace_buffer.buffer;
1331         tr->trace_buffer.buffer = tr->max_buffer.buffer;
1332         tr->max_buffer.buffer = buf;
1333
1334         __update_max_tr(tr, tsk, cpu);
1335         arch_spin_unlock(&tr->max_lock);
1336 }
1337
1338 /**
1339  * update_max_tr_single - only copy one trace over, and reset the rest
1340  * @tr - tracer
1341  * @tsk - task with the latency
1342  * @cpu - the cpu of the buffer to copy.
1343  *
1344  * Flip the trace of a single CPU buffer between the @tr and the max_tr.
1345  */
1346 void
1347 update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
1348 {
1349         int ret;
1350
1351         if (tr->stop_count)
1352                 return;
1353
1354         WARN_ON_ONCE(!irqs_disabled());
1355         if (!tr->allocated_snapshot) {
1356                 /* Only the nop tracer should hit this when disabling */
1357                 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1358                 return;
1359         }
1360
1361         arch_spin_lock(&tr->max_lock);
1362
1363         ret = ring_buffer_swap_cpu(tr->max_buffer.buffer, tr->trace_buffer.buffer, cpu);
1364
1365         if (ret == -EBUSY) {
1366                 /*
1367                  * We failed to swap the buffer due to a commit taking
1368                  * place on this CPU. We fail to record, but we reset
1369                  * the max trace buffer (no one writes directly to it)
1370                  * and flag that it failed.
1371                  */
1372                 trace_array_printk_buf(tr->max_buffer.buffer, _THIS_IP_,
1373                         "Failed to swap buffers due to commit in progress\n");
1374         }
1375
1376         WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY);
1377
1378         __update_max_tr(tr, tsk, cpu);
1379         arch_spin_unlock(&tr->max_lock);
1380 }
1381 #endif /* CONFIG_TRACER_MAX_TRACE */
1382
1383 static int wait_on_pipe(struct trace_iterator *iter, bool full)
1384 {
1385         /* Iterators are static, they should be filled or empty */
1386         if (trace_buffer_iter(iter, iter->cpu_file))
1387                 return 0;
1388
1389         return ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file,
1390                                 full);
1391 }
1392
1393 #ifdef CONFIG_FTRACE_STARTUP_TEST
1394 static int run_tracer_selftest(struct tracer *type)
1395 {
1396         struct trace_array *tr = &global_trace;
1397         struct tracer *saved_tracer = tr->current_trace;
1398         int ret;
1399
1400         if (!type->selftest || tracing_selftest_disabled)
1401                 return 0;
1402
1403         /*
1404          * Run a selftest on this tracer.
1405          * Here we reset the trace buffer, and set the current
1406          * tracer to be this tracer. The tracer can then run some
1407          * internal tracing to verify that everything is in order.
1408          * If we fail, we do not register this tracer.
1409          */
1410         tracing_reset_online_cpus(&tr->trace_buffer);
1411
1412         tr->current_trace = type;
1413
1414 #ifdef CONFIG_TRACER_MAX_TRACE
1415         if (type->use_max_tr) {
1416                 /* If we expanded the buffers, make sure the max is expanded too */
1417                 if (ring_buffer_expanded)
1418                         ring_buffer_resize(tr->max_buffer.buffer, trace_buf_size,
1419                                            RING_BUFFER_ALL_CPUS);
1420                 tr->allocated_snapshot = true;
1421         }
1422 #endif
1423
1424         /* the test is responsible for initializing and enabling */
1425         pr_info("Testing tracer %s: ", type->name);
1426         ret = type->selftest(type, tr);
1427         /* the test is responsible for resetting too */
1428         tr->current_trace = saved_tracer;
1429         if (ret) {
1430                 printk(KERN_CONT "FAILED!\n");
1431                 /* Add the warning after printing 'FAILED' */
1432                 WARN_ON(1);
1433                 return -1;
1434         }
1435         /* Only reset on passing, to avoid touching corrupted buffers */
1436         tracing_reset_online_cpus(&tr->trace_buffer);
1437
1438 #ifdef CONFIG_TRACER_MAX_TRACE
1439         if (type->use_max_tr) {
1440                 tr->allocated_snapshot = false;
1441
1442                 /* Shrink the max buffer again */
1443                 if (ring_buffer_expanded)
1444                         ring_buffer_resize(tr->max_buffer.buffer, 1,
1445                                            RING_BUFFER_ALL_CPUS);
1446         }
1447 #endif
1448
1449         printk(KERN_CONT "PASSED\n");
1450         return 0;
1451 }
1452 #else
1453 static inline int run_tracer_selftest(struct tracer *type)
1454 {
1455         return 0;
1456 }
1457 #endif /* CONFIG_FTRACE_STARTUP_TEST */
1458
1459 static void add_tracer_options(struct trace_array *tr, struct tracer *t);
1460
1461 static void __init apply_trace_boot_options(void);
1462
1463 /**
1464  * register_tracer - register a tracer with the ftrace system.
1465  * @type - the plugin for the tracer
1466  *
1467  * Register a new plugin tracer.
1468  */
1469 int __init register_tracer(struct tracer *type)
1470 {
1471         struct tracer *t;
1472         int ret = 0;
1473
1474         if (!type->name) {
1475                 pr_info("Tracer must have a name\n");
1476                 return -1;
1477         }
1478
1479         if (strlen(type->name) >= MAX_TRACER_SIZE) {
1480                 pr_info("Tracer has a name longer than %d\n", MAX_TRACER_SIZE);
1481                 return -1;
1482         }
1483
1484         mutex_lock(&trace_types_lock);
1485
1486         tracing_selftest_running = true;
1487
1488         for (t = trace_types; t; t = t->next) {
1489                 if (strcmp(type->name, t->name) == 0) {
1490                         /* already found */
1491                         pr_info("Tracer %s already registered\n",
1492                                 type->name);
1493                         ret = -1;
1494                         goto out;
1495                 }
1496         }
1497
1498         if (!type->set_flag)
1499                 type->set_flag = &dummy_set_flag;
1500         if (!type->flags) {
1501                 /*allocate a dummy tracer_flags*/
1502                 type->flags = kmalloc(sizeof(*type->flags), GFP_KERNEL);
1503                 if (!type->flags) {
1504                         ret = -ENOMEM;
1505                         goto out;
1506                 }
1507                 type->flags->val = 0;
1508                 type->flags->opts = dummy_tracer_opt;
1509         } else
1510                 if (!type->flags->opts)
1511                         type->flags->opts = dummy_tracer_opt;
1512
1513         /* store the tracer for __set_tracer_option */
1514         type->flags->trace = type;
1515
1516         ret = run_tracer_selftest(type);
1517         if (ret < 0)
1518                 goto out;
1519
1520         type->next = trace_types;
1521         trace_types = type;
1522         add_tracer_options(&global_trace, type);
1523
1524  out:
1525         tracing_selftest_running = false;
1526         mutex_unlock(&trace_types_lock);
1527
1528         if (ret || !default_bootup_tracer)
1529                 goto out_unlock;
1530
1531         if (strncmp(default_bootup_tracer, type->name, MAX_TRACER_SIZE))
1532                 goto out_unlock;
1533
1534         printk(KERN_INFO "Starting tracer '%s'\n", type->name);
1535         /* Do we want this tracer to start on bootup? */
1536         tracing_set_tracer(&global_trace, type->name);
1537         default_bootup_tracer = NULL;
1538
1539         apply_trace_boot_options();
1540
1541         /* disable other selftests, since this will break it. */
1542         tracing_selftest_disabled = true;
1543 #ifdef CONFIG_FTRACE_STARTUP_TEST
1544         printk(KERN_INFO "Disabling FTRACE selftests due to running tracer '%s'\n",
1545                type->name);
1546 #endif
1547
1548  out_unlock:
1549         return ret;
1550 }
1551
1552 void tracing_reset(struct trace_buffer *buf, int cpu)
1553 {
1554         struct ring_buffer *buffer = buf->buffer;
1555
1556         if (!buffer)
1557                 return;
1558
1559         ring_buffer_record_disable(buffer);
1560
1561         /* Make sure all commits have finished */
1562         synchronize_sched();
1563         ring_buffer_reset_cpu(buffer, cpu);
1564
1565         ring_buffer_record_enable(buffer);
1566 }
1567
1568 void tracing_reset_online_cpus(struct trace_buffer *buf)
1569 {
1570         struct ring_buffer *buffer = buf->buffer;
1571         int cpu;
1572
1573         if (!buffer)
1574                 return;
1575
1576         ring_buffer_record_disable(buffer);
1577
1578         /* Make sure all commits have finished */
1579         synchronize_sched();
1580
1581         buf->time_start = buffer_ftrace_now(buf, buf->cpu);
1582
1583         for_each_online_cpu(cpu)
1584                 ring_buffer_reset_cpu(buffer, cpu);
1585
1586         ring_buffer_record_enable(buffer);
1587 }
1588
1589 /* Must have trace_types_lock held */
1590 void tracing_reset_all_online_cpus(void)
1591 {
1592         struct trace_array *tr;
1593
1594         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
1595                 tracing_reset_online_cpus(&tr->trace_buffer);
1596 #ifdef CONFIG_TRACER_MAX_TRACE
1597                 tracing_reset_online_cpus(&tr->max_buffer);
1598 #endif
1599         }
1600 }
1601
1602 #define SAVED_CMDLINES_DEFAULT 128
1603 #define NO_CMDLINE_MAP UINT_MAX
1604 static arch_spinlock_t trace_cmdline_lock = __ARCH_SPIN_LOCK_UNLOCKED;
1605 struct saved_cmdlines_buffer {
1606         unsigned map_pid_to_cmdline[PID_MAX_DEFAULT+1];
1607         unsigned *map_cmdline_to_pid;
1608         unsigned cmdline_num;
1609         int cmdline_idx;
1610         char *saved_cmdlines;
1611 };
1612 static struct saved_cmdlines_buffer *savedcmd;
1613
1614 /* temporary disable recording */
1615 static atomic_t trace_record_cmdline_disabled __read_mostly;
1616
1617 static inline char *get_saved_cmdlines(int idx)
1618 {
1619         return &savedcmd->saved_cmdlines[idx * TASK_COMM_LEN];
1620 }
1621
1622 static inline void set_cmdline(int idx, const char *cmdline)
1623 {
1624         memcpy(get_saved_cmdlines(idx), cmdline, TASK_COMM_LEN);
1625 }
1626
1627 static int allocate_cmdlines_buffer(unsigned int val,
1628                                     struct saved_cmdlines_buffer *s)
1629 {
1630         s->map_cmdline_to_pid = kmalloc(val * sizeof(*s->map_cmdline_to_pid),
1631                                         GFP_KERNEL);
1632         if (!s->map_cmdline_to_pid)
1633                 return -ENOMEM;
1634
1635         s->saved_cmdlines = kmalloc(val * TASK_COMM_LEN, GFP_KERNEL);
1636         if (!s->saved_cmdlines) {
1637                 kfree(s->map_cmdline_to_pid);
1638                 return -ENOMEM;
1639         }
1640
1641         s->cmdline_idx = 0;
1642         s->cmdline_num = val;
1643         memset(&s->map_pid_to_cmdline, NO_CMDLINE_MAP,
1644                sizeof(s->map_pid_to_cmdline));
1645         memset(s->map_cmdline_to_pid, NO_CMDLINE_MAP,
1646                val * sizeof(*s->map_cmdline_to_pid));
1647
1648         return 0;
1649 }
1650
1651 static int trace_create_savedcmd(void)
1652 {
1653         int ret;
1654
1655         savedcmd = kmalloc(sizeof(*savedcmd), GFP_KERNEL);
1656         if (!savedcmd)
1657                 return -ENOMEM;
1658
1659         ret = allocate_cmdlines_buffer(SAVED_CMDLINES_DEFAULT, savedcmd);
1660         if (ret < 0) {
1661                 kfree(savedcmd);
1662                 savedcmd = NULL;
1663                 return -ENOMEM;
1664         }
1665
1666         return 0;
1667 }
1668
1669 int is_tracing_stopped(void)
1670 {
1671         return global_trace.stop_count;
1672 }
1673
1674 /**
1675  * tracing_start - quick start of the tracer
1676  *
1677  * If tracing is enabled but was stopped by tracing_stop,
1678  * this will start the tracer back up.
1679  */
1680 void tracing_start(void)
1681 {
1682         struct ring_buffer *buffer;
1683         unsigned long flags;
1684
1685         if (tracing_disabled)
1686                 return;
1687
1688         raw_spin_lock_irqsave(&global_trace.start_lock, flags);
1689         if (--global_trace.stop_count) {
1690                 if (global_trace.stop_count < 0) {
1691                         /* Someone screwed up their debugging */
1692                         WARN_ON_ONCE(1);
1693                         global_trace.stop_count = 0;
1694                 }
1695                 goto out;
1696         }
1697
1698         /* Prevent the buffers from switching */
1699         arch_spin_lock(&global_trace.max_lock);
1700
1701         buffer = global_trace.trace_buffer.buffer;
1702         if (buffer)
1703                 ring_buffer_record_enable(buffer);
1704
1705 #ifdef CONFIG_TRACER_MAX_TRACE
1706         buffer = global_trace.max_buffer.buffer;
1707         if (buffer)
1708                 ring_buffer_record_enable(buffer);
1709 #endif
1710
1711         arch_spin_unlock(&global_trace.max_lock);
1712
1713  out:
1714         raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
1715 }
1716
1717 static void tracing_start_tr(struct trace_array *tr)
1718 {
1719         struct ring_buffer *buffer;
1720         unsigned long flags;
1721
1722         if (tracing_disabled)
1723                 return;
1724
1725         /* If global, we need to also start the max tracer */
1726         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
1727                 return tracing_start();
1728
1729         raw_spin_lock_irqsave(&tr->start_lock, flags);
1730
1731         if (--tr->stop_count) {
1732                 if (tr->stop_count < 0) {
1733                         /* Someone screwed up their debugging */
1734                         WARN_ON_ONCE(1);
1735                         tr->stop_count = 0;
1736                 }
1737                 goto out;
1738         }
1739
1740         buffer = tr->trace_buffer.buffer;
1741         if (buffer)
1742                 ring_buffer_record_enable(buffer);
1743
1744  out:
1745         raw_spin_unlock_irqrestore(&tr->start_lock, flags);
1746 }
1747
1748 /**
1749  * tracing_stop - quick stop of the tracer
1750  *
1751  * Light weight way to stop tracing. Use in conjunction with
1752  * tracing_start.
1753  */
1754 void tracing_stop(void)
1755 {
1756         struct ring_buffer *buffer;
1757         unsigned long flags;
1758
1759         raw_spin_lock_irqsave(&global_trace.start_lock, flags);
1760         if (global_trace.stop_count++)
1761                 goto out;
1762
1763         /* Prevent the buffers from switching */
1764         arch_spin_lock(&global_trace.max_lock);
1765
1766         buffer = global_trace.trace_buffer.buffer;
1767         if (buffer)
1768                 ring_buffer_record_disable(buffer);
1769
1770 #ifdef CONFIG_TRACER_MAX_TRACE
1771         buffer = global_trace.max_buffer.buffer;
1772         if (buffer)
1773                 ring_buffer_record_disable(buffer);
1774 #endif
1775
1776         arch_spin_unlock(&global_trace.max_lock);
1777
1778  out:
1779         raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
1780 }
1781
1782 static void tracing_stop_tr(struct trace_array *tr)
1783 {
1784         struct ring_buffer *buffer;
1785         unsigned long flags;
1786
1787         /* If global, we need to also stop the max tracer */
1788         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
1789                 return tracing_stop();
1790
1791         raw_spin_lock_irqsave(&tr->start_lock, flags);
1792         if (tr->stop_count++)
1793                 goto out;
1794
1795         buffer = tr->trace_buffer.buffer;
1796         if (buffer)
1797                 ring_buffer_record_disable(buffer);
1798
1799  out:
1800         raw_spin_unlock_irqrestore(&tr->start_lock, flags);
1801 }
1802
1803 void trace_stop_cmdline_recording(void);
1804
1805 static int trace_save_cmdline(struct task_struct *tsk)
1806 {
1807         unsigned pid, idx;
1808
1809         if (!tsk->pid || unlikely(tsk->pid > PID_MAX_DEFAULT))
1810                 return 0;
1811
1812         /*
1813          * It's not the end of the world if we don't get
1814          * the lock, but we also don't want to spin
1815          * nor do we want to disable interrupts,
1816          * so if we miss here, then better luck next time.
1817          */
1818         if (!arch_spin_trylock(&trace_cmdline_lock))
1819                 return 0;
1820
1821         idx = savedcmd->map_pid_to_cmdline[tsk->pid];
1822         if (idx == NO_CMDLINE_MAP) {
1823                 idx = (savedcmd->cmdline_idx + 1) % savedcmd->cmdline_num;
1824
1825                 /*
1826                  * Check whether the cmdline buffer at idx has a pid
1827                  * mapped. We are going to overwrite that entry so we
1828                  * need to clear the map_pid_to_cmdline. Otherwise we
1829                  * would read the new comm for the old pid.
1830                  */
1831                 pid = savedcmd->map_cmdline_to_pid[idx];
1832                 if (pid != NO_CMDLINE_MAP)
1833                         savedcmd->map_pid_to_cmdline[pid] = NO_CMDLINE_MAP;
1834
1835                 savedcmd->map_cmdline_to_pid[idx] = tsk->pid;
1836                 savedcmd->map_pid_to_cmdline[tsk->pid] = idx;
1837
1838                 savedcmd->cmdline_idx = idx;
1839         }
1840
1841         set_cmdline(idx, tsk->comm);
1842
1843         arch_spin_unlock(&trace_cmdline_lock);
1844
1845         return 1;
1846 }
1847
1848 static void __trace_find_cmdline(int pid, char comm[])
1849 {
1850         unsigned map;
1851
1852         if (!pid) {
1853                 strcpy(comm, "<idle>");
1854                 return;
1855         }
1856
1857         if (WARN_ON_ONCE(pid < 0)) {
1858                 strcpy(comm, "<XXX>");
1859                 return;
1860         }
1861
1862         if (pid > PID_MAX_DEFAULT) {
1863                 strcpy(comm, "<...>");
1864                 return;
1865         }
1866
1867         map = savedcmd->map_pid_to_cmdline[pid];
1868         if (map != NO_CMDLINE_MAP)
1869                 strcpy(comm, get_saved_cmdlines(map));
1870         else
1871                 strcpy(comm, "<...>");
1872 }
1873
1874 void trace_find_cmdline(int pid, char comm[])
1875 {
1876         preempt_disable();
1877         arch_spin_lock(&trace_cmdline_lock);
1878
1879         __trace_find_cmdline(pid, comm);
1880
1881         arch_spin_unlock(&trace_cmdline_lock);
1882         preempt_enable();
1883 }
1884
1885 void tracing_record_cmdline(struct task_struct *tsk)
1886 {
1887         if (atomic_read(&trace_record_cmdline_disabled) || !tracing_is_on())
1888                 return;
1889
1890         if (!__this_cpu_read(trace_cmdline_save))
1891                 return;
1892
1893         if (trace_save_cmdline(tsk))
1894                 __this_cpu_write(trace_cmdline_save, false);
1895 }
1896
1897 void
1898 tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags,
1899                              int pc)
1900 {
1901         struct task_struct *tsk = current;
1902
1903         entry->preempt_count            = pc & 0xff;
1904         entry->pid                      = (tsk) ? tsk->pid : 0;
1905         entry->flags =
1906 #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
1907                 (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) |
1908 #else
1909                 TRACE_FLAG_IRQS_NOSUPPORT |
1910 #endif
1911                 ((pc & NMI_MASK    ) ? TRACE_FLAG_NMI     : 0) |
1912                 ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
1913                 ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
1914                 (tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) |
1915                 (test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0);
1916 }
1917 EXPORT_SYMBOL_GPL(tracing_generic_entry_update);
1918
1919 static __always_inline void
1920 trace_event_setup(struct ring_buffer_event *event,
1921                   int type, unsigned long flags, int pc)
1922 {
1923         struct trace_entry *ent = ring_buffer_event_data(event);
1924
1925         tracing_generic_entry_update(ent, flags, pc);
1926         ent->type = type;
1927 }
1928
1929 struct ring_buffer_event *
1930 trace_buffer_lock_reserve(struct ring_buffer *buffer,
1931                           int type,
1932                           unsigned long len,
1933                           unsigned long flags, int pc)
1934 {
1935         struct ring_buffer_event *event;
1936
1937         event = ring_buffer_lock_reserve(buffer, len);
1938         if (event != NULL)
1939                 trace_event_setup(event, type, flags, pc);
1940
1941         return event;
1942 }
1943
1944 DEFINE_PER_CPU(struct ring_buffer_event *, trace_buffered_event);
1945 DEFINE_PER_CPU(int, trace_buffered_event_cnt);
1946 static int trace_buffered_event_ref;
1947
1948 /**
1949  * trace_buffered_event_enable - enable buffering events
1950  *
1951  * When events are being filtered, it is quicker to use a temporary
1952  * buffer to write the event data into if there's a likely chance
1953  * that it will not be committed. The discard of the ring buffer
1954  * is not as fast as committing, and is much slower than copying
1955  * a commit.
1956  *
1957  * When an event is to be filtered, allocate per cpu buffers to
1958  * write the event data into, and if the event is filtered and discarded
1959  * it is simply dropped, otherwise, the entire data is to be committed
1960  * in one shot.
1961  */
1962 void trace_buffered_event_enable(void)
1963 {
1964         struct ring_buffer_event *event;
1965         struct page *page;
1966         int cpu;
1967
1968         WARN_ON_ONCE(!mutex_is_locked(&event_mutex));
1969
1970         if (trace_buffered_event_ref++)
1971                 return;
1972
1973         for_each_tracing_cpu(cpu) {
1974                 page = alloc_pages_node(cpu_to_node(cpu),
1975                                         GFP_KERNEL | __GFP_NORETRY, 0);
1976                 if (!page)
1977                         goto failed;
1978
1979                 event = page_address(page);
1980                 memset(event, 0, sizeof(*event));
1981
1982                 per_cpu(trace_buffered_event, cpu) = event;
1983
1984                 preempt_disable();
1985                 if (cpu == smp_processor_id() &&
1986                     this_cpu_read(trace_buffered_event) !=
1987                     per_cpu(trace_buffered_event, cpu))
1988                         WARN_ON_ONCE(1);
1989                 preempt_enable();
1990         }
1991
1992         return;
1993  failed:
1994         trace_buffered_event_disable();
1995 }
1996
1997 static void enable_trace_buffered_event(void *data)
1998 {
1999         /* Probably not needed, but do it anyway */
2000         smp_rmb();
2001         this_cpu_dec(trace_buffered_event_cnt);
2002 }
2003
2004 static void disable_trace_buffered_event(void *data)
2005 {
2006         this_cpu_inc(trace_buffered_event_cnt);
2007 }
2008
2009 /**
2010  * trace_buffered_event_disable - disable buffering events
2011  *
2012  * When a filter is removed, it is faster to not use the buffered
2013  * events, and to commit directly into the ring buffer. Free up
2014  * the temp buffers when there are no more users. This requires
2015  * special synchronization with current events.
2016  */
2017 void trace_buffered_event_disable(void)
2018 {
2019         int cpu;
2020
2021         WARN_ON_ONCE(!mutex_is_locked(&event_mutex));
2022
2023         if (WARN_ON_ONCE(!trace_buffered_event_ref))
2024                 return;
2025
2026         if (--trace_buffered_event_ref)
2027                 return;
2028
2029         preempt_disable();
2030         /* For each CPU, set the buffer as used. */
2031         smp_call_function_many(tracing_buffer_mask,
2032                                disable_trace_buffered_event, NULL, 1);
2033         preempt_enable();
2034
2035         /* Wait for all current users to finish */
2036         synchronize_sched();
2037
2038         for_each_tracing_cpu(cpu) {
2039                 free_page((unsigned long)per_cpu(trace_buffered_event, cpu));
2040                 per_cpu(trace_buffered_event, cpu) = NULL;
2041         }
2042         /*
2043          * Make sure trace_buffered_event is NULL before clearing
2044          * trace_buffered_event_cnt.
2045          */
2046         smp_wmb();
2047
2048         preempt_disable();
2049         /* Do the work on each cpu */
2050         smp_call_function_many(tracing_buffer_mask,
2051                                enable_trace_buffered_event, NULL, 1);
2052         preempt_enable();
2053 }
2054
2055 void
2056 __buffer_unlock_commit(struct ring_buffer *buffer, struct ring_buffer_event *event)
2057 {
2058         __this_cpu_write(trace_cmdline_save, true);
2059
2060         /* If this is the temp buffer, we need to commit fully */
2061         if (this_cpu_read(trace_buffered_event) == event) {
2062                 /* Length is in event->array[0] */
2063                 ring_buffer_write(buffer, event->array[0], &event->array[1]);
2064                 /* Release the temp buffer */
2065                 this_cpu_dec(trace_buffered_event_cnt);
2066         } else
2067                 ring_buffer_unlock_commit(buffer, event);
2068 }
2069
2070 static struct ring_buffer *temp_buffer;
2071
2072 struct ring_buffer_event *
2073 trace_event_buffer_lock_reserve(struct ring_buffer **current_rb,
2074                           struct trace_event_file *trace_file,
2075                           int type, unsigned long len,
2076                           unsigned long flags, int pc)
2077 {
2078         struct ring_buffer_event *entry;
2079         int val;
2080
2081         *current_rb = trace_file->tr->trace_buffer.buffer;
2082
2083         if ((trace_file->flags &
2084              (EVENT_FILE_FL_SOFT_DISABLED | EVENT_FILE_FL_FILTERED)) &&
2085             (entry = this_cpu_read(trace_buffered_event))) {
2086                 /* Try to use the per cpu buffer first */
2087                 val = this_cpu_inc_return(trace_buffered_event_cnt);
2088                 if (val == 1) {
2089                         trace_event_setup(entry, type, flags, pc);
2090                         entry->array[0] = len;
2091                         return entry;
2092                 }
2093                 this_cpu_dec(trace_buffered_event_cnt);
2094         }
2095
2096         entry = trace_buffer_lock_reserve(*current_rb,
2097                                          type, len, flags, pc);
2098         /*
2099          * If tracing is off, but we have triggers enabled
2100          * we still need to look at the event data. Use the temp_buffer
2101          * to store the trace event for the tigger to use. It's recusive
2102          * safe and will not be recorded anywhere.
2103          */
2104         if (!entry && trace_file->flags & EVENT_FILE_FL_TRIGGER_COND) {
2105                 *current_rb = temp_buffer;
2106                 entry = trace_buffer_lock_reserve(*current_rb,
2107                                                   type, len, flags, pc);
2108         }
2109         return entry;
2110 }
2111 EXPORT_SYMBOL_GPL(trace_event_buffer_lock_reserve);
2112
2113 void trace_buffer_unlock_commit_regs(struct trace_array *tr,
2114                                      struct ring_buffer *buffer,
2115                                      struct ring_buffer_event *event,
2116                                      unsigned long flags, int pc,
2117                                      struct pt_regs *regs)
2118 {
2119         __buffer_unlock_commit(buffer, event);
2120
2121         ftrace_trace_stack(tr, buffer, flags, 0, pc, regs);
2122         ftrace_trace_userstack(buffer, flags, pc);
2123 }
2124
2125 void
2126 trace_function(struct trace_array *tr,
2127                unsigned long ip, unsigned long parent_ip, unsigned long flags,
2128                int pc)
2129 {
2130         struct trace_event_call *call = &event_function;
2131         struct ring_buffer *buffer = tr->trace_buffer.buffer;
2132         struct ring_buffer_event *event;
2133         struct ftrace_entry *entry;
2134
2135         event = trace_buffer_lock_reserve(buffer, TRACE_FN, sizeof(*entry),
2136                                           flags, pc);
2137         if (!event)
2138                 return;
2139         entry   = ring_buffer_event_data(event);
2140         entry->ip                       = ip;
2141         entry->parent_ip                = parent_ip;
2142
2143         if (!call_filter_check_discard(call, entry, buffer, event))
2144                 __buffer_unlock_commit(buffer, event);
2145 }
2146
2147 #ifdef CONFIG_STACKTRACE
2148
2149 #define FTRACE_STACK_MAX_ENTRIES (PAGE_SIZE / sizeof(unsigned long))
2150 struct ftrace_stack {
2151         unsigned long           calls[FTRACE_STACK_MAX_ENTRIES];
2152 };
2153
2154 static DEFINE_PER_CPU(struct ftrace_stack, ftrace_stack);
2155 static DEFINE_PER_CPU(int, ftrace_stack_reserve);
2156
2157 static void __ftrace_trace_stack(struct ring_buffer *buffer,
2158                                  unsigned long flags,
2159                                  int skip, int pc, struct pt_regs *regs)
2160 {
2161         struct trace_event_call *call = &event_kernel_stack;
2162         struct ring_buffer_event *event;
2163         struct stack_entry *entry;
2164         struct stack_trace trace;
2165         int use_stack;
2166         int size = FTRACE_STACK_ENTRIES;
2167
2168         trace.nr_entries        = 0;
2169         trace.skip              = skip;
2170
2171         /*
2172          * Since events can happen in NMIs there's no safe way to
2173          * use the per cpu ftrace_stacks. We reserve it and if an interrupt
2174          * or NMI comes in, it will just have to use the default
2175          * FTRACE_STACK_SIZE.
2176          */
2177         preempt_disable_notrace();
2178
2179         use_stack = __this_cpu_inc_return(ftrace_stack_reserve);
2180         /*
2181          * We don't need any atomic variables, just a barrier.
2182          * If an interrupt comes in, we don't care, because it would
2183          * have exited and put the counter back to what we want.
2184          * We just need a barrier to keep gcc from moving things
2185          * around.
2186          */
2187         barrier();
2188         if (use_stack == 1) {
2189                 trace.entries           = this_cpu_ptr(ftrace_stack.calls);
2190                 trace.max_entries       = FTRACE_STACK_MAX_ENTRIES;
2191
2192                 if (regs)
2193                         save_stack_trace_regs(regs, &trace);
2194                 else
2195                         save_stack_trace(&trace);
2196
2197                 if (trace.nr_entries > size)
2198                         size = trace.nr_entries;
2199         } else
2200                 /* From now on, use_stack is a boolean */
2201                 use_stack = 0;
2202
2203         size *= sizeof(unsigned long);
2204
2205         event = trace_buffer_lock_reserve(buffer, TRACE_STACK,
2206                                           sizeof(*entry) + size, flags, pc);
2207         if (!event)
2208                 goto out;
2209         entry = ring_buffer_event_data(event);
2210
2211         memset(&entry->caller, 0, size);
2212
2213         if (use_stack)
2214                 memcpy(&entry->caller, trace.entries,
2215                        trace.nr_entries * sizeof(unsigned long));
2216         else {
2217                 trace.max_entries       = FTRACE_STACK_ENTRIES;
2218                 trace.entries           = entry->caller;
2219                 if (regs)
2220                         save_stack_trace_regs(regs, &trace);
2221                 else
2222                         save_stack_trace(&trace);
2223         }
2224
2225         entry->size = trace.nr_entries;
2226
2227         if (!call_filter_check_discard(call, entry, buffer, event))
2228                 __buffer_unlock_commit(buffer, event);
2229
2230  out:
2231         /* Again, don't let gcc optimize things here */
2232         barrier();
2233         __this_cpu_dec(ftrace_stack_reserve);
2234         preempt_enable_notrace();
2235
2236 }
2237
2238 static inline void ftrace_trace_stack(struct trace_array *tr,
2239                                       struct ring_buffer *buffer,
2240                                       unsigned long flags,
2241                                       int skip, int pc, struct pt_regs *regs)
2242 {
2243         if (!(tr->trace_flags & TRACE_ITER_STACKTRACE))
2244                 return;
2245
2246         __ftrace_trace_stack(buffer, flags, skip, pc, regs);
2247 }
2248
2249 void __trace_stack(struct trace_array *tr, unsigned long flags, int skip,
2250                    int pc)
2251 {
2252         __ftrace_trace_stack(tr->trace_buffer.buffer, flags, skip, pc, NULL);
2253 }
2254
2255 /**
2256  * trace_dump_stack - record a stack back trace in the trace buffer
2257  * @skip: Number of functions to skip (helper handlers)
2258  */
2259 void trace_dump_stack(int skip)
2260 {
2261         unsigned long flags;
2262
2263         if (tracing_disabled || tracing_selftest_running)
2264                 return;
2265
2266         local_save_flags(flags);
2267
2268         /*
2269          * Skip 3 more, seems to get us at the caller of
2270          * this function.
2271          */
2272         skip += 3;
2273         __ftrace_trace_stack(global_trace.trace_buffer.buffer,
2274                              flags, skip, preempt_count(), NULL);
2275 }
2276
2277 static DEFINE_PER_CPU(int, user_stack_count);
2278
2279 void
2280 ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc)
2281 {
2282         struct trace_event_call *call = &event_user_stack;
2283         struct ring_buffer_event *event;
2284         struct userstack_entry *entry;
2285         struct stack_trace trace;
2286
2287         if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE))
2288                 return;
2289
2290         /*
2291          * NMIs can not handle page faults, even with fix ups.
2292          * The save user stack can (and often does) fault.
2293          */
2294         if (unlikely(in_nmi()))
2295                 return;
2296
2297         /*
2298          * prevent recursion, since the user stack tracing may
2299          * trigger other kernel events.
2300          */
2301         preempt_disable();
2302         if (__this_cpu_read(user_stack_count))
2303                 goto out;
2304
2305         __this_cpu_inc(user_stack_count);
2306
2307         event = trace_buffer_lock_reserve(buffer, TRACE_USER_STACK,
2308                                           sizeof(*entry), flags, pc);
2309         if (!event)
2310                 goto out_drop_count;
2311         entry   = ring_buffer_event_data(event);
2312
2313         entry->tgid             = current->tgid;
2314         memset(&entry->caller, 0, sizeof(entry->caller));
2315
2316         trace.nr_entries        = 0;
2317         trace.max_entries       = FTRACE_STACK_ENTRIES;
2318         trace.skip              = 0;
2319         trace.entries           = entry->caller;
2320
2321         save_stack_trace_user(&trace);
2322         if (!call_filter_check_discard(call, entry, buffer, event))
2323                 __buffer_unlock_commit(buffer, event);
2324
2325  out_drop_count:
2326         __this_cpu_dec(user_stack_count);
2327  out:
2328         preempt_enable();
2329 }
2330
2331 #ifdef UNUSED
2332 static void __trace_userstack(struct trace_array *tr, unsigned long flags)
2333 {
2334         ftrace_trace_userstack(tr, flags, preempt_count());
2335 }
2336 #endif /* UNUSED */
2337
2338 #endif /* CONFIG_STACKTRACE */
2339
2340 /* created for use with alloc_percpu */
2341 struct trace_buffer_struct {
2342         int nesting;
2343         char buffer[4][TRACE_BUF_SIZE];
2344 };
2345
2346 static struct trace_buffer_struct *trace_percpu_buffer;
2347
2348 /*
2349  * Thise allows for lockless recording.  If we're nested too deeply, then
2350  * this returns NULL.
2351  */
2352 static char *get_trace_buf(void)
2353 {
2354         struct trace_buffer_struct *buffer = this_cpu_ptr(trace_percpu_buffer);
2355
2356         if (!buffer || buffer->nesting >= 4)
2357                 return NULL;
2358
2359         return &buffer->buffer[buffer->nesting++][0];
2360 }
2361
2362 static void put_trace_buf(void)
2363 {
2364         this_cpu_dec(trace_percpu_buffer->nesting);
2365 }
2366
2367 static int alloc_percpu_trace_buffer(void)
2368 {
2369         struct trace_buffer_struct *buffers;
2370
2371         buffers = alloc_percpu(struct trace_buffer_struct);
2372         if (WARN(!buffers, "Could not allocate percpu trace_printk buffer"))
2373                 return -ENOMEM;
2374
2375         trace_percpu_buffer = buffers;
2376         return 0;
2377 }
2378
2379 static int buffers_allocated;
2380
2381 void trace_printk_init_buffers(void)
2382 {
2383         if (buffers_allocated)
2384                 return;
2385
2386         if (alloc_percpu_trace_buffer())
2387                 return;
2388
2389         /* trace_printk() is for debug use only. Don't use it in production. */
2390
2391         pr_warn("\n");
2392         pr_warn("**********************************************************\n");
2393         pr_warn("**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **\n");
2394         pr_warn("**                                                      **\n");
2395         pr_warn("** trace_printk() being used. Allocating extra memory.  **\n");
2396         pr_warn("**                                                      **\n");
2397         pr_warn("** This means that this is a DEBUG kernel and it is     **\n");
2398         pr_warn("** unsafe for production use.                           **\n");
2399         pr_warn("**                                                      **\n");
2400         pr_warn("** If you see this message and you are not debugging    **\n");
2401         pr_warn("** the kernel, report this immediately to your vendor!  **\n");
2402         pr_warn("**                                                      **\n");
2403         pr_warn("**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **\n");
2404         pr_warn("**********************************************************\n");
2405
2406         /* Expand the buffers to set size */
2407         tracing_update_buffers();
2408
2409         buffers_allocated = 1;
2410
2411         /*
2412          * trace_printk_init_buffers() can be called by modules.
2413          * If that happens, then we need to start cmdline recording
2414          * directly here. If the global_trace.buffer is already
2415          * allocated here, then this was called by module code.
2416          */
2417         if (global_trace.trace_buffer.buffer)
2418                 tracing_start_cmdline_record();
2419 }
2420
2421 void trace_printk_start_comm(void)
2422 {
2423         /* Start tracing comms if trace printk is set */
2424         if (!buffers_allocated)
2425                 return;
2426         tracing_start_cmdline_record();
2427 }
2428
2429 static void trace_printk_start_stop_comm(int enabled)
2430 {
2431         if (!buffers_allocated)
2432                 return;
2433
2434         if (enabled)
2435                 tracing_start_cmdline_record();
2436         else
2437                 tracing_stop_cmdline_record();
2438 }
2439
2440 /**
2441  * trace_vbprintk - write binary msg to tracing buffer
2442  *
2443  */
2444 int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
2445 {
2446         struct trace_event_call *call = &event_bprint;
2447         struct ring_buffer_event *event;
2448         struct ring_buffer *buffer;
2449         struct trace_array *tr = &global_trace;
2450         struct bprint_entry *entry;
2451         unsigned long flags;
2452         char *tbuffer;
2453         int len = 0, size, pc;
2454
2455         if (unlikely(tracing_selftest_running || tracing_disabled))
2456                 return 0;
2457
2458         /* Don't pollute graph traces with trace_vprintk internals */
2459         pause_graph_tracing();
2460
2461         pc = preempt_count();
2462         preempt_disable_notrace();
2463
2464         tbuffer = get_trace_buf();
2465         if (!tbuffer) {
2466                 len = 0;
2467                 goto out_nobuffer;
2468         }
2469
2470         len = vbin_printf((u32 *)tbuffer, TRACE_BUF_SIZE/sizeof(int), fmt, args);
2471
2472         if (len > TRACE_BUF_SIZE/sizeof(int) || len < 0)
2473                 goto out;
2474
2475         local_save_flags(flags);
2476         size = sizeof(*entry) + sizeof(u32) * len;
2477         buffer = tr->trace_buffer.buffer;
2478         event = trace_buffer_lock_reserve(buffer, TRACE_BPRINT, size,
2479                                           flags, pc);
2480         if (!event)
2481                 goto out;
2482         entry = ring_buffer_event_data(event);
2483         entry->ip                       = ip;
2484         entry->fmt                      = fmt;
2485
2486         memcpy(entry->buf, tbuffer, sizeof(u32) * len);
2487         if (!call_filter_check_discard(call, entry, buffer, event)) {
2488                 __buffer_unlock_commit(buffer, event);
2489                 ftrace_trace_stack(tr, buffer, flags, 6, pc, NULL);
2490         }
2491
2492 out:
2493         put_trace_buf();
2494
2495 out_nobuffer:
2496         preempt_enable_notrace();
2497         unpause_graph_tracing();
2498
2499         return len;
2500 }
2501 EXPORT_SYMBOL_GPL(trace_vbprintk);
2502
2503 static int
2504 __trace_array_vprintk(struct ring_buffer *buffer,
2505                       unsigned long ip, const char *fmt, va_list args)
2506 {
2507         struct trace_event_call *call = &event_print;
2508         struct ring_buffer_event *event;
2509         int len = 0, size, pc;
2510         struct print_entry *entry;
2511         unsigned long flags;
2512         char *tbuffer;
2513
2514         if (tracing_disabled || tracing_selftest_running)
2515                 return 0;
2516
2517         /* Don't pollute graph traces with trace_vprintk internals */
2518         pause_graph_tracing();
2519
2520         pc = preempt_count();
2521         preempt_disable_notrace();
2522
2523
2524         tbuffer = get_trace_buf();
2525         if (!tbuffer) {
2526                 len = 0;
2527                 goto out_nobuffer;
2528         }
2529
2530         len = vscnprintf(tbuffer, TRACE_BUF_SIZE, fmt, args);
2531
2532         local_save_flags(flags);
2533         size = sizeof(*entry) + len + 1;
2534         event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
2535                                           flags, pc);
2536         if (!event)
2537                 goto out;
2538         entry = ring_buffer_event_data(event);
2539         entry->ip = ip;
2540
2541         memcpy(&entry->buf, tbuffer, len + 1);
2542         if (!call_filter_check_discard(call, entry, buffer, event)) {
2543                 __buffer_unlock_commit(buffer, event);
2544                 ftrace_trace_stack(&global_trace, buffer, flags, 6, pc, NULL);
2545         }
2546
2547 out:
2548         put_trace_buf();
2549
2550 out_nobuffer:
2551         preempt_enable_notrace();
2552         unpause_graph_tracing();
2553
2554         return len;
2555 }
2556
2557 int trace_array_vprintk(struct trace_array *tr,
2558                         unsigned long ip, const char *fmt, va_list args)
2559 {
2560         return __trace_array_vprintk(tr->trace_buffer.buffer, ip, fmt, args);
2561 }
2562
2563 int trace_array_printk(struct trace_array *tr,
2564                        unsigned long ip, const char *fmt, ...)
2565 {
2566         int ret;
2567         va_list ap;
2568
2569         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
2570                 return 0;
2571
2572         va_start(ap, fmt);
2573         ret = trace_array_vprintk(tr, ip, fmt, ap);
2574         va_end(ap);
2575         return ret;
2576 }
2577
2578 int trace_array_printk_buf(struct ring_buffer *buffer,
2579                            unsigned long ip, const char *fmt, ...)
2580 {
2581         int ret;
2582         va_list ap;
2583
2584         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
2585                 return 0;
2586
2587         va_start(ap, fmt);
2588         ret = __trace_array_vprintk(buffer, ip, fmt, ap);
2589         va_end(ap);
2590         return ret;
2591 }
2592
2593 int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
2594 {
2595         return trace_array_vprintk(&global_trace, ip, fmt, args);
2596 }
2597 EXPORT_SYMBOL_GPL(trace_vprintk);
2598
2599 static void trace_iterator_increment(struct trace_iterator *iter)
2600 {
2601         struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, iter->cpu);
2602
2603         iter->idx++;
2604         if (buf_iter)
2605                 ring_buffer_read(buf_iter, NULL);
2606 }
2607
2608 static struct trace_entry *
2609 peek_next_entry(struct trace_iterator *iter, int cpu, u64 *ts,
2610                 unsigned long *lost_events)
2611 {
2612         struct ring_buffer_event *event;
2613         struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, cpu);
2614
2615         if (buf_iter)
2616                 event = ring_buffer_iter_peek(buf_iter, ts);
2617         else
2618                 event = ring_buffer_peek(iter->trace_buffer->buffer, cpu, ts,
2619                                          lost_events);
2620
2621         if (event) {
2622                 iter->ent_size = ring_buffer_event_length(event);
2623                 return ring_buffer_event_data(event);
2624         }
2625         iter->ent_size = 0;
2626         return NULL;
2627 }
2628
2629 static struct trace_entry *
2630 __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
2631                   unsigned long *missing_events, u64 *ent_ts)
2632 {
2633         struct ring_buffer *buffer = iter->trace_buffer->buffer;
2634         struct trace_entry *ent, *next = NULL;
2635         unsigned long lost_events = 0, next_lost = 0;
2636         int cpu_file = iter->cpu_file;
2637         u64 next_ts = 0, ts;
2638         int next_cpu = -1;
2639         int next_size = 0;
2640         int cpu;
2641
2642         /*
2643          * If we are in a per_cpu trace file, don't bother by iterating over
2644          * all cpu and peek directly.
2645          */
2646         if (cpu_file > RING_BUFFER_ALL_CPUS) {
2647                 if (ring_buffer_empty_cpu(buffer, cpu_file))
2648                         return NULL;
2649                 ent = peek_next_entry(iter, cpu_file, ent_ts, missing_events);
2650                 if (ent_cpu)
2651                         *ent_cpu = cpu_file;
2652
2653                 return ent;
2654         }
2655
2656         for_each_tracing_cpu(cpu) {
2657
2658                 if (ring_buffer_empty_cpu(buffer, cpu))
2659                         continue;
2660
2661                 ent = peek_next_entry(iter, cpu, &ts, &lost_events);
2662
2663                 /*
2664                  * Pick the entry with the smallest timestamp:
2665                  */
2666                 if (ent && (!next || ts < next_ts)) {
2667                         next = ent;
2668                         next_cpu = cpu;
2669                         next_ts = ts;
2670                         next_lost = lost_events;
2671                         next_size = iter->ent_size;
2672                 }
2673         }
2674
2675         iter->ent_size = next_size;
2676
2677         if (ent_cpu)
2678                 *ent_cpu = next_cpu;
2679
2680         if (ent_ts)
2681                 *ent_ts = next_ts;
2682
2683         if (missing_events)
2684                 *missing_events = next_lost;
2685
2686         return next;
2687 }
2688
2689 /* Find the next real entry, without updating the iterator itself */
2690 struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,
2691                                           int *ent_cpu, u64 *ent_ts)
2692 {
2693         return __find_next_entry(iter, ent_cpu, NULL, ent_ts);
2694 }
2695
2696 /* Find the next real entry, and increment the iterator to the next entry */
2697 void *trace_find_next_entry_inc(struct trace_iterator *iter)
2698 {
2699         iter->ent = __find_next_entry(iter, &iter->cpu,
2700                                       &iter->lost_events, &iter->ts);
2701
2702         if (iter->ent)
2703                 trace_iterator_increment(iter);
2704
2705         return iter->ent ? iter : NULL;
2706 }
2707
2708 static void trace_consume(struct trace_iterator *iter)
2709 {
2710         ring_buffer_consume(iter->trace_buffer->buffer, iter->cpu, &iter->ts,
2711                             &iter->lost_events);
2712 }
2713
2714 static void *s_next(struct seq_file *m, void *v, loff_t *pos)
2715 {
2716         struct trace_iterator *iter = m->private;
2717         int i = (int)*pos;
2718         void *ent;
2719
2720         WARN_ON_ONCE(iter->leftover);
2721
2722         (*pos)++;
2723
2724         /* can't go backwards */
2725         if (iter->idx > i)
2726                 return NULL;
2727
2728         if (iter->idx < 0)
2729                 ent = trace_find_next_entry_inc(iter);
2730         else
2731                 ent = iter;
2732
2733         while (ent && iter->idx < i)
2734                 ent = trace_find_next_entry_inc(iter);
2735
2736         iter->pos = *pos;
2737
2738         return ent;
2739 }
2740
2741 void tracing_iter_reset(struct trace_iterator *iter, int cpu)
2742 {
2743         struct ring_buffer_event *event;
2744         struct ring_buffer_iter *buf_iter;
2745         unsigned long entries = 0;
2746         u64 ts;
2747
2748         per_cpu_ptr(iter->trace_buffer->data, cpu)->skipped_entries = 0;
2749
2750         buf_iter = trace_buffer_iter(iter, cpu);
2751         if (!buf_iter)
2752                 return;
2753
2754         ring_buffer_iter_reset(buf_iter);
2755
2756         /*
2757          * We could have the case with the max latency tracers
2758          * that a reset never took place on a cpu. This is evident
2759          * by the timestamp being before the start of the buffer.
2760          */
2761         while ((event = ring_buffer_iter_peek(buf_iter, &ts))) {
2762                 if (ts >= iter->trace_buffer->time_start)
2763                         break;
2764                 entries++;
2765                 ring_buffer_read(buf_iter, NULL);
2766         }
2767
2768         per_cpu_ptr(iter->trace_buffer->data, cpu)->skipped_entries = entries;
2769 }
2770
2771 /*
2772  * The current tracer is copied to avoid a global locking
2773  * all around.
2774  */
2775 static void *s_start(struct seq_file *m, loff_t *pos)
2776 {
2777         struct trace_iterator *iter = m->private;
2778         struct trace_array *tr = iter->tr;
2779         int cpu_file = iter->cpu_file;
2780         void *p = NULL;
2781         loff_t l = 0;
2782         int cpu;
2783
2784         /*
2785          * copy the tracer to avoid using a global lock all around.
2786          * iter->trace is a copy of current_trace, the pointer to the
2787          * name may be used instead of a strcmp(), as iter->trace->name
2788          * will point to the same string as current_trace->name.
2789          */
2790         mutex_lock(&trace_types_lock);
2791         if (unlikely(tr->current_trace && iter->trace->name != tr->current_trace->name))
2792                 *iter->trace = *tr->current_trace;
2793         mutex_unlock(&trace_types_lock);
2794
2795 #ifdef CONFIG_TRACER_MAX_TRACE
2796         if (iter->snapshot && iter->trace->use_max_tr)
2797                 return ERR_PTR(-EBUSY);
2798 #endif
2799
2800         if (!iter->snapshot)
2801                 atomic_inc(&trace_record_cmdline_disabled);
2802
2803         if (*pos != iter->pos) {
2804                 iter->ent = NULL;
2805                 iter->cpu = 0;
2806                 iter->idx = -1;
2807
2808                 if (cpu_file == RING_BUFFER_ALL_CPUS) {
2809                         for_each_tracing_cpu(cpu)
2810                                 tracing_iter_reset(iter, cpu);
2811                 } else
2812                         tracing_iter_reset(iter, cpu_file);
2813
2814                 iter->leftover = 0;
2815                 for (p = iter; p && l < *pos; p = s_next(m, p, &l))
2816                         ;
2817
2818         } else {
2819                 /*
2820                  * If we overflowed the seq_file before, then we want
2821                  * to just reuse the trace_seq buffer again.
2822                  */
2823                 if (iter->leftover)
2824                         p = iter;
2825                 else {
2826                         l = *pos - 1;
2827                         p = s_next(m, p, &l);
2828                 }
2829         }
2830
2831         trace_event_read_lock();
2832         trace_access_lock(cpu_file);
2833         return p;
2834 }
2835
2836 static void s_stop(struct seq_file *m, void *p)
2837 {
2838         struct trace_iterator *iter = m->private;
2839
2840 #ifdef CONFIG_TRACER_MAX_TRACE
2841         if (iter->snapshot && iter->trace->use_max_tr)
2842                 return;
2843 #endif
2844
2845         if (!iter->snapshot)
2846                 atomic_dec(&trace_record_cmdline_disabled);
2847
2848         trace_access_unlock(iter->cpu_file);
2849         trace_event_read_unlock();
2850 }
2851
2852 static void
2853 get_total_entries(struct trace_buffer *buf,
2854                   unsigned long *total, unsigned long *entries)
2855 {
2856         unsigned long count;
2857         int cpu;
2858
2859         *total = 0;
2860         *entries = 0;
2861
2862         for_each_tracing_cpu(cpu) {
2863                 count = ring_buffer_entries_cpu(buf->buffer, cpu);
2864                 /*
2865                  * If this buffer has skipped entries, then we hold all
2866                  * entries for the trace and we need to ignore the
2867                  * ones before the time stamp.
2868                  */
2869                 if (per_cpu_ptr(buf->data, cpu)->skipped_entries) {
2870                         count -= per_cpu_ptr(buf->data, cpu)->skipped_entries;
2871                         /* total is the same as the entries */
2872                         *total += count;
2873                 } else
2874                         *total += count +
2875                                 ring_buffer_overrun_cpu(buf->buffer, cpu);
2876                 *entries += count;
2877         }
2878 }
2879
2880 static void print_lat_help_header(struct seq_file *m)
2881 {
2882         seq_puts(m, "#                  _------=> CPU#            \n"
2883                     "#                 / _-----=> irqs-off        \n"
2884                     "#                | / _----=> need-resched    \n"
2885                     "#                || / _---=> hardirq/softirq \n"
2886                     "#                ||| / _--=> preempt-depth   \n"
2887                     "#                |||| /     delay            \n"
2888                     "#  cmd     pid   ||||| time  |   caller      \n"
2889                     "#     \\   /      |||||  \\    |   /         \n");
2890 }
2891
2892 static void print_event_info(struct trace_buffer *buf, struct seq_file *m)
2893 {
2894         unsigned long total;
2895         unsigned long entries;
2896
2897         get_total_entries(buf, &total, &entries);
2898         seq_printf(m, "# entries-in-buffer/entries-written: %lu/%lu   #P:%d\n",
2899                    entries, total, num_online_cpus());
2900         seq_puts(m, "#\n");
2901 }
2902
2903 static void print_func_help_header(struct trace_buffer *buf, struct seq_file *m)
2904 {
2905         print_event_info(buf, m);
2906         seq_puts(m, "#           TASK-PID   CPU#      TIMESTAMP  FUNCTION\n"
2907                     "#              | |       |          |         |\n");
2908 }
2909
2910 static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file *m)
2911 {
2912         print_event_info(buf, m);
2913         seq_puts(m, "#                              _-----=> irqs-off\n"
2914                     "#                             / _----=> need-resched\n"
2915                     "#                            | / _---=> hardirq/softirq\n"
2916                     "#                            || / _--=> preempt-depth\n"
2917                     "#                            ||| /     delay\n"
2918                     "#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION\n"
2919                     "#              | |       |   ||||       |         |\n");
2920 }
2921
2922 void
2923 print_trace_header(struct seq_file *m, struct trace_iterator *iter)
2924 {
2925         unsigned long sym_flags = (global_trace.trace_flags & TRACE_ITER_SYM_MASK);
2926         struct trace_buffer *buf = iter->trace_buffer;
2927         struct trace_array_cpu *data = per_cpu_ptr(buf->data, buf->cpu);
2928         struct tracer *type = iter->trace;
2929         unsigned long entries;
2930         unsigned long total;
2931         const char *name = "preemption";
2932
2933         name = type->name;
2934
2935         get_total_entries(buf, &total, &entries);
2936
2937         seq_printf(m, "# %s latency trace v1.1.5 on %s\n",
2938                    name, UTS_RELEASE);
2939         seq_puts(m, "# -----------------------------------"
2940                  "---------------------------------\n");
2941         seq_printf(m, "# latency: %lu us, #%lu/%lu, CPU#%d |"
2942                    " (M:%s VP:%d, KP:%d, SP:%d HP:%d",
2943                    nsecs_to_usecs(data->saved_latency),
2944                    entries,
2945                    total,
2946                    buf->cpu,
2947 #if defined(CONFIG_PREEMPT_NONE)
2948                    "server",
2949 #elif defined(CONFIG_PREEMPT_VOLUNTARY)
2950                    "desktop",
2951 #elif defined(CONFIG_PREEMPT)
2952                    "preempt",
2953 #else
2954                    "unknown",
2955 #endif
2956                    /* These are reserved for later use */
2957                    0, 0, 0, 0);
2958 #ifdef CONFIG_SMP
2959         seq_printf(m, " #P:%d)\n", num_online_cpus());
2960 #else
2961         seq_puts(m, ")\n");
2962 #endif
2963         seq_puts(m, "#    -----------------\n");
2964         seq_printf(m, "#    | task: %.16s-%d "
2965                    "(uid:%d nice:%ld policy:%ld rt_prio:%ld)\n",
2966                    data->comm, data->pid,
2967                    from_kuid_munged(seq_user_ns(m), data->uid), data->nice,
2968                    data->policy, data->rt_priority);
2969         seq_puts(m, "#    -----------------\n");
2970
2971         if (data->critical_start) {
2972                 seq_puts(m, "#  => started at: ");
2973                 seq_print_ip_sym(&iter->seq, data->critical_start, sym_flags);
2974                 trace_print_seq(m, &iter->seq);
2975                 seq_puts(m, "\n#  => ended at:   ");
2976                 seq_print_ip_sym(&iter->seq, data->critical_end, sym_flags);
2977                 trace_print_seq(m, &iter->seq);
2978                 seq_puts(m, "\n#\n");
2979         }
2980
2981         seq_puts(m, "#\n");
2982 }
2983
2984 static void test_cpu_buff_start(struct trace_iterator *iter)
2985 {
2986         struct trace_seq *s = &iter->seq;
2987         struct trace_array *tr = iter->tr;
2988
2989         if (!(tr->trace_flags & TRACE_ITER_ANNOTATE))
2990                 return;
2991
2992         if (!(iter->iter_flags & TRACE_FILE_ANNOTATE))
2993                 return;
2994
2995         if (iter->started && cpumask_test_cpu(iter->cpu, iter->started))
2996                 return;
2997
2998         if (per_cpu_ptr(iter->trace_buffer->data, iter->cpu)->skipped_entries)
2999                 return;
3000
3001         if (iter->started)
3002                 cpumask_set_cpu(iter->cpu, iter->started);
3003
3004         /* Don't print started cpu buffer for the first entry of the trace */
3005         if (iter->idx > 1)
3006                 trace_seq_printf(s, "##### CPU %u buffer started ####\n",
3007                                 iter->cpu);
3008 }
3009
3010 static enum print_line_t print_trace_fmt(struct trace_iterator *iter)
3011 {
3012         struct trace_array *tr = iter->tr;
3013         struct trace_seq *s = &iter->seq;
3014         unsigned long sym_flags = (tr->trace_flags & TRACE_ITER_SYM_MASK);
3015         struct trace_entry *entry;
3016         struct trace_event *event;
3017
3018         entry = iter->ent;
3019
3020         test_cpu_buff_start(iter);
3021
3022         event = ftrace_find_event(entry->type);
3023
3024         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
3025                 if (iter->iter_flags & TRACE_FILE_LAT_FMT)
3026                         trace_print_lat_context(iter);
3027                 else
3028                         trace_print_context(iter);
3029         }
3030
3031         if (trace_seq_has_overflowed(s))
3032                 return TRACE_TYPE_PARTIAL_LINE;
3033
3034         if (event)
3035                 return event->funcs->trace(iter, sym_flags, event);
3036
3037         trace_seq_printf(s, "Unknown type %d\n", entry->type);
3038
3039         return trace_handle_return(s);
3040 }
3041
3042 static enum print_line_t print_raw_fmt(struct trace_iterator *iter)
3043 {
3044         struct trace_array *tr = iter->tr;
3045         struct trace_seq *s = &iter->seq;
3046         struct trace_entry *entry;
3047         struct trace_event *event;
3048
3049         entry = iter->ent;
3050
3051         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO)
3052                 trace_seq_printf(s, "%d %d %llu ",
3053                                  entry->pid, iter->cpu, iter->ts);
3054
3055         if (trace_seq_has_overflowed(s))
3056                 return TRACE_TYPE_PARTIAL_LINE;
3057
3058         event = ftrace_find_event(entry->type);
3059         if (event)
3060                 return event->funcs->raw(iter, 0, event);
3061
3062         trace_seq_printf(s, "%d ?\n", entry->type);
3063
3064         return trace_handle_return(s);
3065 }
3066
3067 static enum print_line_t print_hex_fmt(struct trace_iterator *iter)
3068 {
3069         struct trace_array *tr = iter->tr;
3070         struct trace_seq *s = &iter->seq;
3071         unsigned char newline = '\n';
3072         struct trace_entry *entry;
3073         struct trace_event *event;
3074
3075         entry = iter->ent;
3076
3077         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
3078                 SEQ_PUT_HEX_FIELD(s, entry->pid);
3079                 SEQ_PUT_HEX_FIELD(s, iter->cpu);
3080                 SEQ_PUT_HEX_FIELD(s, iter->ts);
3081                 if (trace_seq_has_overflowed(s))
3082                         return TRACE_TYPE_PARTIAL_LINE;
3083         }
3084
3085         event = ftrace_find_event(entry->type);
3086         if (event) {
3087                 enum print_line_t ret = event->funcs->hex(iter, 0, event);
3088                 if (ret != TRACE_TYPE_HANDLED)
3089                         return ret;
3090         }
3091
3092         SEQ_PUT_FIELD(s, newline);
3093
3094         return trace_handle_return(s);
3095 }
3096
3097 static enum print_line_t print_bin_fmt(struct trace_iterator *iter)
3098 {
3099         struct trace_array *tr = iter->tr;
3100         struct trace_seq *s = &iter->seq;
3101         struct trace_entry *entry;
3102         struct trace_event *event;
3103
3104         entry = iter->ent;
3105
3106         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
3107                 SEQ_PUT_FIELD(s, entry->pid);
3108                 SEQ_PUT_FIELD(s, iter->cpu);
3109                 SEQ_PUT_FIELD(s, iter->ts);
3110                 if (trace_seq_has_overflowed(s))
3111                         return TRACE_TYPE_PARTIAL_LINE;
3112         }
3113
3114         event = ftrace_find_event(entry->type);
3115         return event ? event->funcs->binary(iter, 0, event) :
3116                 TRACE_TYPE_HANDLED;
3117 }
3118
3119 int trace_empty(struct trace_iterator *iter)
3120 {
3121         struct ring_buffer_iter *buf_iter;
3122         int cpu;
3123
3124         /* If we are looking at one CPU buffer, only check that one */
3125         if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
3126                 cpu = iter->cpu_file;
3127                 buf_iter = trace_buffer_iter(iter, cpu);
3128                 if (buf_iter) {
3129                         if (!ring_buffer_iter_empty(buf_iter))
3130                                 return 0;
3131                 } else {
3132                         if (!ring_buffer_empty_cpu(iter->trace_buffer->buffer, cpu))
3133                                 return 0;
3134                 }
3135                 return 1;
3136         }
3137
3138         for_each_tracing_cpu(cpu) {
3139                 buf_iter = trace_buffer_iter(iter, cpu);
3140                 if (buf_iter) {
3141                         if (!ring_buffer_iter_empty(buf_iter))
3142                                 return 0;
3143                 } else {
3144                         if (!ring_buffer_empty_cpu(iter->trace_buffer->buffer, cpu))
3145                                 return 0;
3146                 }
3147         }
3148
3149         return 1;
3150 }
3151
3152 /*  Called with trace_event_read_lock() held. */
3153 enum print_line_t print_trace_line(struct trace_iterator *iter)
3154 {
3155         struct trace_array *tr = iter->tr;
3156         unsigned long trace_flags = tr->trace_flags;
3157         enum print_line_t ret;
3158
3159         if (iter->lost_events) {
3160                 trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
3161                                  iter->cpu, iter->lost_events);
3162                 if (trace_seq_has_overflowed(&iter->seq))
3163                         return TRACE_TYPE_PARTIAL_LINE;
3164         }
3165
3166         if (iter->trace && iter->trace->print_line) {
3167                 ret = iter->trace->print_line(iter);
3168                 if (ret != TRACE_TYPE_UNHANDLED)
3169                         return ret;
3170         }
3171
3172         if (iter->ent->type == TRACE_BPUTS &&
3173                         trace_flags & TRACE_ITER_PRINTK &&
3174                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
3175                 return trace_print_bputs_msg_only(iter);
3176
3177         if (iter->ent->type == TRACE_BPRINT &&
3178                         trace_flags & TRACE_ITER_PRINTK &&
3179                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
3180                 return trace_print_bprintk_msg_only(iter);
3181
3182         if (iter->ent->type == TRACE_PRINT &&
3183                         trace_flags & TRACE_ITER_PRINTK &&
3184                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
3185                 return trace_print_printk_msg_only(iter);
3186
3187         if (trace_flags & TRACE_ITER_BIN)
3188                 return print_bin_fmt(iter);
3189
3190         if (trace_flags & TRACE_ITER_HEX)
3191                 return print_hex_fmt(iter);
3192
3193         if (trace_flags & TRACE_ITER_RAW)
3194                 return print_raw_fmt(iter);
3195
3196         return print_trace_fmt(iter);
3197 }
3198
3199 void trace_latency_header(struct seq_file *m)
3200 {
3201         struct trace_iterator *iter = m->private;
3202         struct trace_array *tr = iter->tr;
3203
3204         /* print nothing if the buffers are empty */
3205         if (trace_empty(iter))
3206                 return;
3207
3208         if (iter->iter_flags & TRACE_FILE_LAT_FMT)
3209                 print_trace_header(m, iter);
3210
3211         if (!(tr->trace_flags & TRACE_ITER_VERBOSE))
3212                 print_lat_help_header(m);
3213 }
3214
3215 void trace_default_header(struct seq_file *m)
3216 {
3217         struct trace_iterator *iter = m->private;
3218         struct trace_array *tr = iter->tr;
3219         unsigned long trace_flags = tr->trace_flags;
3220
3221         if (!(trace_flags & TRACE_ITER_CONTEXT_INFO))
3222                 return;
3223
3224         if (iter->iter_flags & TRACE_FILE_LAT_FMT) {
3225                 /* print nothing if the buffers are empty */
3226                 if (trace_empty(iter))
3227                         return;
3228                 print_trace_header(m, iter);
3229                 if (!(trace_flags & TRACE_ITER_VERBOSE))
3230                         print_lat_help_header(m);
3231         } else {
3232                 if (!(trace_flags & TRACE_ITER_VERBOSE)) {
3233                         if (trace_flags & TRACE_ITER_IRQ_INFO)
3234                                 print_func_help_header_irq(iter->trace_buffer, m);
3235                         else
3236                                 print_func_help_header(iter->trace_buffer, m);
3237                 }
3238         }
3239 }
3240
3241 static void test_ftrace_alive(struct seq_file *m)
3242 {
3243         if (!ftrace_is_dead())
3244                 return;
3245         seq_puts(m, "# WARNING: FUNCTION TRACING IS CORRUPTED\n"
3246                     "#          MAY BE MISSING FUNCTION EVENTS\n");
3247 }
3248
3249 #ifdef CONFIG_TRACER_MAX_TRACE
3250 static void show_snapshot_main_help(struct seq_file *m)
3251 {
3252         seq_puts(m, "# echo 0 > snapshot : Clears and frees snapshot buffer\n"
3253                     "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n"
3254                     "#                      Takes a snapshot of the main buffer.\n"
3255                     "# echo 2 > snapshot : Clears snapshot buffer (but does not allocate or free)\n"
3256                     "#                      (Doesn't have to be '2' works with any number that\n"
3257                     "#                       is not a '0' or '1')\n");
3258 }
3259
3260 static void show_snapshot_percpu_help(struct seq_file *m)
3261 {
3262         seq_puts(m, "# echo 0 > snapshot : Invalid for per_cpu snapshot file.\n");
3263 #ifdef CONFIG_RING_BUFFER_ALLOW_SWAP
3264         seq_puts(m, "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n"
3265                     "#                      Takes a snapshot of the main buffer for this cpu.\n");
3266 #else
3267         seq_puts(m, "# echo 1 > snapshot : Not supported with this kernel.\n"
3268                     "#                     Must use main snapshot file to allocate.\n");
3269 #endif
3270         seq_puts(m, "# echo 2 > snapshot : Clears this cpu's snapshot buffer (but does not allocate)\n"
3271                     "#                      (Doesn't have to be '2' works with any number that\n"
3272                     "#                       is not a '0' or '1')\n");
3273 }
3274
3275 static void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter)
3276 {
3277         if (iter->tr->allocated_snapshot)
3278                 seq_puts(m, "#\n# * Snapshot is allocated *\n#\n");
3279         else
3280                 seq_puts(m, "#\n# * Snapshot is freed *\n#\n");
3281
3282         seq_puts(m, "# Snapshot commands:\n");
3283         if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
3284                 show_snapshot_main_help(m);
3285         else
3286                 show_snapshot_percpu_help(m);
3287 }
3288 #else
3289 /* Should never be called */
3290 static inline void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter) { }
3291 #endif
3292
3293 static int s_show(struct seq_file *m, void *v)
3294 {
3295         struct trace_iterator *iter = v;
3296         int ret;
3297
3298         if (iter->ent == NULL) {
3299                 if (iter->tr) {
3300                         seq_printf(m, "# tracer: %s\n", iter->trace->name);
3301                         seq_puts(m, "#\n");
3302                         test_ftrace_alive(m);
3303                 }
3304                 if (iter->snapshot && trace_empty(iter))
3305                         print_snapshot_help(m, iter);
3306                 else if (iter->trace && iter->trace->print_header)
3307                         iter->trace->print_header(m);
3308                 else
3309                         trace_default_header(m);
3310
3311         } else if (iter->leftover) {
3312                 /*
3313                  * If we filled the seq_file buffer earlier, we
3314                  * want to just show it now.
3315                  */
3316                 ret = trace_print_seq(m, &iter->seq);
3317
3318                 /* ret should this time be zero, but you never know */
3319                 iter->leftover = ret;
3320
3321         } else {
3322                 print_trace_line(iter);
3323                 ret = trace_print_seq(m, &iter->seq);
3324                 /*
3325                  * If we overflow the seq_file buffer, then it will
3326                  * ask us for this data again at start up.
3327                  * Use that instead.
3328                  *  ret is 0 if seq_file write succeeded.
3329                  *        -1 otherwise.
3330                  */
3331                 iter->leftover = ret;
3332         }
3333
3334         return 0;
3335 }
3336
3337 /*
3338  * Should be used after trace_array_get(), trace_types_lock
3339  * ensures that i_cdev was already initialized.
3340  */
3341 static inline int tracing_get_cpu(struct inode *inode)
3342 {
3343         if (inode->i_cdev) /* See trace_create_cpu_file() */
3344                 return (long)inode->i_cdev - 1;
3345         return RING_BUFFER_ALL_CPUS;
3346 }
3347
3348 static const struct seq_operations tracer_seq_ops = {
3349         .start          = s_start,
3350         .next           = s_next,
3351         .stop           = s_stop,
3352         .show           = s_show,
3353 };
3354
3355 static struct trace_iterator *
3356 __tracing_open(struct inode *inode, struct file *file, bool snapshot)
3357 {
3358         struct trace_array *tr = inode->i_private;
3359         struct trace_iterator *iter;
3360         int cpu;
3361
3362         if (tracing_disabled)
3363                 return ERR_PTR(-ENODEV);
3364
3365         iter = __seq_open_private(file, &tracer_seq_ops, sizeof(*iter));
3366         if (!iter)
3367                 return ERR_PTR(-ENOMEM);
3368
3369         iter->buffer_iter = kcalloc(nr_cpu_ids, sizeof(*iter->buffer_iter),
3370                                     GFP_KERNEL);
3371         if (!iter->buffer_iter)
3372                 goto release;
3373
3374         /*
3375          * We make a copy of the current tracer to avoid concurrent
3376          * changes on it while we are reading.
3377          */
3378         mutex_lock(&trace_types_lock);
3379         iter->trace = kzalloc(sizeof(*iter->trace), GFP_KERNEL);
3380         if (!iter->trace)
3381                 goto fail;
3382
3383         *iter->trace = *tr->current_trace;
3384
3385         if (!zalloc_cpumask_var(&iter->started, GFP_KERNEL))
3386                 goto fail;
3387
3388         iter->tr = tr;
3389
3390 #ifdef CONFIG_TRACER_MAX_TRACE
3391         /* Currently only the top directory has a snapshot */
3392         if (tr->current_trace->print_max || snapshot)
3393                 iter->trace_buffer = &tr->max_buffer;
3394         else
3395 #endif
3396                 iter->trace_buffer = &tr->trace_buffer;
3397         iter->snapshot = snapshot;
3398         iter->pos = -1;
3399         iter->cpu_file = tracing_get_cpu(inode);
3400         mutex_init(&iter->mutex);
3401
3402         /* Notify the tracer early; before we stop tracing. */
3403         if (iter->trace && iter->trace->open)
3404                 iter->trace->open(iter);
3405
3406         /* Annotate start of buffers if we had overruns */
3407         if (ring_buffer_overruns(iter->trace_buffer->buffer))
3408                 iter->iter_flags |= TRACE_FILE_ANNOTATE;
3409
3410         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
3411         if (trace_clocks[tr->clock_id].in_ns)
3412                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
3413
3414         /* stop the trace while dumping if we are not opening "snapshot" */
3415         if (!iter->snapshot)
3416                 tracing_stop_tr(tr);
3417
3418         if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
3419                 for_each_tracing_cpu(cpu) {
3420                         iter->buffer_iter[cpu] =
3421                                 ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
3422                 }
3423                 ring_buffer_read_prepare_sync();
3424                 for_each_tracing_cpu(cpu) {
3425                         ring_buffer_read_start(iter->buffer_iter[cpu]);
3426                         tracing_iter_reset(iter, cpu);
3427                 }
3428         } else {
3429                 cpu = iter->cpu_file;
3430                 iter->buffer_iter[cpu] =
3431                         ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
3432                 ring_buffer_read_prepare_sync();
3433                 ring_buffer_read_start(iter->buffer_iter[cpu]);
3434                 tracing_iter_reset(iter, cpu);
3435         }
3436
3437         mutex_unlock(&trace_types_lock);
3438
3439         return iter;
3440
3441  fail:
3442         mutex_unlock(&trace_types_lock);
3443         kfree(iter->trace);
3444         kfree(iter->buffer_iter);
3445 release:
3446         seq_release_private(inode, file);
3447         return ERR_PTR(-ENOMEM);
3448 }
3449
3450 int tracing_open_generic(struct inode *inode, struct file *filp)
3451 {
3452         if (tracing_disabled)
3453                 return -ENODEV;
3454
3455         filp->private_data = inode->i_private;
3456         return 0;
3457 }
3458
3459 bool tracing_is_disabled(void)
3460 {
3461         return (tracing_disabled) ? true: false;
3462 }
3463
3464 /*
3465  * Open and update trace_array ref count.
3466  * Must have the current trace_array passed to it.
3467  */
3468 static int tracing_open_generic_tr(struct inode *inode, struct file *filp)
3469 {
3470         struct trace_array *tr = inode->i_private;
3471
3472         if (tracing_disabled)
3473                 return -ENODEV;
3474
3475         if (trace_array_get(tr) < 0)
3476                 return -ENODEV;
3477
3478         filp->private_data = inode->i_private;
3479
3480         return 0;
3481 }
3482
3483 static int tracing_release(struct inode *inode, struct file *file)
3484 {
3485         struct trace_array *tr = inode->i_private;
3486         struct seq_file *m = file->private_data;
3487         struct trace_iterator *iter;
3488         int cpu;
3489
3490         if (!(file->f_mode & FMODE_READ)) {
3491                 trace_array_put(tr);
3492                 return 0;
3493         }
3494
3495         /* Writes do not use seq_file */
3496         iter = m->private;
3497         mutex_lock(&trace_types_lock);
3498
3499         for_each_tracing_cpu(cpu) {
3500                 if (iter->buffer_iter[cpu])
3501                         ring_buffer_read_finish(iter->buffer_iter[cpu]);
3502         }
3503
3504         if (iter->trace && iter->trace->close)
3505                 iter->trace->close(iter);
3506
3507         if (!iter->snapshot)
3508                 /* reenable tracing if it was previously enabled */
3509                 tracing_start_tr(tr);
3510
3511         __trace_array_put(tr);
3512
3513         mutex_unlock(&trace_types_lock);
3514
3515         mutex_destroy(&iter->mutex);
3516         free_cpumask_var(iter->started);
3517         kfree(iter->trace);
3518         kfree(iter->buffer_iter);
3519         seq_release_private(inode, file);
3520
3521         return 0;
3522 }
3523
3524 static int tracing_release_generic_tr(struct inode *inode, struct file *file)
3525 {
3526         struct trace_array *tr = inode->i_private;
3527
3528         trace_array_put(tr);
3529         return 0;
3530 }
3531
3532 static int tracing_single_release_tr(struct inode *inode, struct file *file)
3533 {
3534         struct trace_array *tr = inode->i_private;
3535
3536         trace_array_put(tr);
3537
3538         return single_release(inode, file);
3539 }
3540
3541 static int tracing_open(struct inode *inode, struct file *file)
3542 {
3543         struct trace_array *tr = inode->i_private;
3544         struct trace_iterator *iter;
3545         int ret = 0;
3546
3547         if (trace_array_get(tr) < 0)
3548                 return -ENODEV;
3549
3550         /* If this file was open for write, then erase contents */
3551         if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_TRUNC)) {
3552                 int cpu = tracing_get_cpu(inode);
3553
3554                 if (cpu == RING_BUFFER_ALL_CPUS)
3555                         tracing_reset_online_cpus(&tr->trace_buffer);
3556                 else
3557                         tracing_reset(&tr->trace_buffer, cpu);
3558         }
3559
3560         if (file->f_mode & FMODE_READ) {
3561                 iter = __tracing_open(inode, file, false);
3562                 if (IS_ERR(iter))
3563                         ret = PTR_ERR(iter);
3564                 else if (tr->trace_flags & TRACE_ITER_LATENCY_FMT)
3565                         iter->iter_flags |= TRACE_FILE_LAT_FMT;
3566         }
3567
3568         if (ret < 0)
3569                 trace_array_put(tr);
3570
3571         return ret;
3572 }
3573
3574 /*
3575  * Some tracers are not suitable for instance buffers.
3576  * A tracer is always available for the global array (toplevel)
3577  * or if it explicitly states that it is.
3578  */
3579 static bool
3580 trace_ok_for_array(struct tracer *t, struct trace_array *tr)
3581 {
3582         return (tr->flags & TRACE_ARRAY_FL_GLOBAL) || t->allow_instances;
3583 }
3584
3585 /* Find the next tracer that this trace array may use */
3586 static struct tracer *
3587 get_tracer_for_array(struct trace_array *tr, struct tracer *t)
3588 {
3589         while (t && !trace_ok_for_array(t, tr))
3590                 t = t->next;
3591
3592         return t;
3593 }
3594
3595 static void *
3596 t_next(struct seq_file *m, void *v, loff_t *pos)
3597 {
3598         struct trace_array *tr = m->private;
3599         struct tracer *t = v;
3600
3601         (*pos)++;
3602
3603         if (t)
3604                 t = get_tracer_for_array(tr, t->next);
3605
3606         return t;
3607 }
3608
3609 static void *t_start(struct seq_file *m, loff_t *pos)
3610 {
3611         struct trace_array *tr = m->private;
3612         struct tracer *t;
3613         loff_t l = 0;
3614
3615         mutex_lock(&trace_types_lock);
3616
3617         t = get_tracer_for_array(tr, trace_types);
3618         for (; t && l < *pos; t = t_next(m, t, &l))
3619                         ;
3620
3621         return t;
3622 }
3623
3624 static void t_stop(struct seq_file *m, void *p)
3625 {
3626         mutex_unlock(&trace_types_lock);
3627 }
3628
3629 static int t_show(struct seq_file *m, void *v)
3630 {
3631         struct tracer *t = v;
3632
3633         if (!t)
3634                 return 0;
3635
3636         seq_puts(m, t->name);
3637         if (t->next)
3638                 seq_putc(m, ' ');
3639         else
3640                 seq_putc(m, '\n');
3641
3642         return 0;
3643 }
3644
3645 static const struct seq_operations show_traces_seq_ops = {
3646         .start          = t_start,
3647         .next           = t_next,
3648         .stop           = t_stop,
3649         .show           = t_show,
3650 };
3651
3652 static int show_traces_open(struct inode *inode, struct file *file)
3653 {
3654         struct trace_array *tr = inode->i_private;
3655         struct seq_file *m;
3656         int ret;
3657
3658         if (tracing_disabled)
3659                 return -ENODEV;
3660
3661         ret = seq_open(file, &show_traces_seq_ops);
3662         if (ret)
3663                 return ret;
3664
3665         m = file->private_data;
3666         m->private = tr;
3667
3668         return 0;
3669 }
3670
3671 static ssize_t
3672 tracing_write_stub(struct file *filp, const char __user *ubuf,
3673                    size_t count, loff_t *ppos)
3674 {
3675         return count;
3676 }
3677
3678 loff_t tracing_lseek(struct file *file, loff_t offset, int whence)
3679 {
3680         int ret;
3681
3682         if (file->f_mode & FMODE_READ)
3683                 ret = seq_lseek(file, offset, whence);
3684         else
3685                 file->f_pos = ret = 0;
3686
3687         return ret;
3688 }
3689
3690 static const struct file_operations tracing_fops = {
3691         .open           = tracing_open,
3692         .read           = seq_read,
3693         .write          = tracing_write_stub,
3694         .llseek         = tracing_lseek,
3695         .release        = tracing_release,
3696 };
3697
3698 static const struct file_operations show_traces_fops = {
3699         .open           = show_traces_open,
3700         .read           = seq_read,
3701         .release        = seq_release,
3702         .llseek         = seq_lseek,
3703 };
3704
3705 /*
3706  * The tracer itself will not take this lock, but still we want
3707  * to provide a consistent cpumask to user-space:
3708  */
3709 static DEFINE_MUTEX(tracing_cpumask_update_lock);
3710
3711 /*
3712  * Temporary storage for the character representation of the
3713  * CPU bitmask (and one more byte for the newline):
3714  */
3715 static char mask_str[NR_CPUS + 1];
3716
3717 static ssize_t
3718 tracing_cpumask_read(struct file *filp, char __user *ubuf,
3719                      size_t count, loff_t *ppos)
3720 {
3721         struct trace_array *tr = file_inode(filp)->i_private;
3722         int len;
3723
3724         mutex_lock(&tracing_cpumask_update_lock);
3725
3726         len = snprintf(mask_str, count, "%*pb\n",
3727                        cpumask_pr_args(tr->tracing_cpumask));
3728         if (len >= count) {
3729                 count = -EINVAL;
3730                 goto out_err;
3731         }
3732         count = simple_read_from_buffer(ubuf, count, ppos, mask_str, NR_CPUS+1);
3733
3734 out_err:
3735         mutex_unlock(&tracing_cpumask_update_lock);
3736
3737         return count;
3738 }
3739
3740 static ssize_t
3741 tracing_cpumask_write(struct file *filp, const char __user *ubuf,
3742                       size_t count, loff_t *ppos)
3743 {
3744         struct trace_array *tr = file_inode(filp)->i_private;
3745         cpumask_var_t tracing_cpumask_new;
3746         int err, cpu;
3747
3748         if (!alloc_cpumask_var(&tracing_cpumask_new, GFP_KERNEL))
3749                 return -ENOMEM;
3750
3751         err = cpumask_parse_user(ubuf, count, tracing_cpumask_new);
3752         if (err)
3753                 goto err_unlock;
3754
3755         mutex_lock(&tracing_cpumask_update_lock);
3756
3757         local_irq_disable();
3758         arch_spin_lock(&tr->max_lock);
3759         for_each_tracing_cpu(cpu) {
3760                 /*
3761                  * Increase/decrease the disabled counter if we are
3762                  * about to flip a bit in the cpumask:
3763                  */
3764                 if (cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
3765                                 !cpumask_test_cpu(cpu, tracing_cpumask_new)) {
3766                         atomic_inc(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled);
3767                         ring_buffer_record_disable_cpu(tr->trace_buffer.buffer, cpu);
3768                 }
3769                 if (!cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
3770                                 cpumask_test_cpu(cpu, tracing_cpumask_new)) {
3771                         atomic_dec(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled);
3772                         ring_buffer_record_enable_cpu(tr->trace_buffer.buffer, cpu);
3773                 }
3774         }
3775         arch_spin_unlock(&tr->max_lock);
3776         local_irq_enable();
3777
3778         cpumask_copy(tr->tracing_cpumask, tracing_cpumask_new);
3779
3780         mutex_unlock(&tracing_cpumask_update_lock);
3781         free_cpumask_var(tracing_cpumask_new);
3782
3783         return count;
3784
3785 err_unlock:
3786         free_cpumask_var(tracing_cpumask_new);
3787
3788         return err;
3789 }
3790
3791 static const struct file_operations tracing_cpumask_fops = {
3792         .open           = tracing_open_generic_tr,
3793         .read           = tracing_cpumask_read,
3794         .write          = tracing_cpumask_write,
3795         .release        = tracing_release_generic_tr,
3796         .llseek         = generic_file_llseek,
3797 };
3798
3799 static int tracing_trace_options_show(struct seq_file *m, void *v)
3800 {
3801         struct tracer_opt *trace_opts;
3802         struct trace_array *tr = m->private;
3803         u32 tracer_flags;
3804         int i;
3805
3806         mutex_lock(&trace_types_lock);
3807         tracer_flags = tr->current_trace->flags->val;
3808         trace_opts = tr->current_trace->flags->opts;
3809
3810         for (i = 0; trace_options[i]; i++) {
3811                 if (tr->trace_flags & (1 << i))
3812                         seq_printf(m, "%s\n", trace_options[i]);
3813                 else
3814                         seq_printf(m, "no%s\n", trace_options[i]);
3815         }
3816
3817         for (i = 0; trace_opts[i].name; i++) {
3818                 if (tracer_flags & trace_opts[i].bit)
3819                         seq_printf(m, "%s\n", trace_opts[i].name);
3820                 else
3821                         seq_printf(m, "no%s\n", trace_opts[i].name);
3822         }
3823         mutex_unlock(&trace_types_lock);
3824
3825         return 0;
3826 }
3827
3828 static int __set_tracer_option(struct trace_array *tr,
3829                                struct tracer_flags *tracer_flags,
3830                                struct tracer_opt *opts, int neg)
3831 {
3832         struct tracer *trace = tracer_flags->trace;
3833         int ret;
3834
3835         ret = trace->set_flag(tr, tracer_flags->val, opts->bit, !neg);
3836         if (ret)
3837                 return ret;
3838
3839         if (neg)
3840                 tracer_flags->val &= ~opts->bit;
3841         else
3842                 tracer_flags->val |= opts->bit;
3843         return 0;
3844 }
3845
3846 /* Try to assign a tracer specific option */
3847 static int set_tracer_option(struct trace_array *tr, char *cmp, int neg)
3848 {
3849         struct tracer *trace = tr->current_trace;
3850         struct tracer_flags *tracer_flags = trace->flags;
3851         struct tracer_opt *opts = NULL;
3852         int i;
3853
3854         for (i = 0; tracer_flags->opts[i].name; i++) {
3855                 opts = &tracer_flags->opts[i];
3856
3857                 if (strcmp(cmp, opts->name) == 0)
3858                         return __set_tracer_option(tr, trace->flags, opts, neg);
3859         }
3860
3861         return -EINVAL;
3862 }
3863
3864 /* Some tracers require overwrite to stay enabled */
3865 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
3866 {
3867         if (tracer->enabled && (mask & TRACE_ITER_OVERWRITE) && !set)
3868                 return -1;
3869
3870         return 0;
3871 }
3872
3873 int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled)
3874 {
3875         /* do nothing if flag is already set */
3876         if (!!(tr->trace_flags & mask) == !!enabled)
3877                 return 0;
3878
3879         /* Give the tracer a chance to approve the change */
3880         if (tr->current_trace->flag_changed)
3881                 if (tr->current_trace->flag_changed(tr, mask, !!enabled))
3882                         return -EINVAL;
3883
3884         if (enabled)
3885                 tr->trace_flags |= mask;
3886         else
3887                 tr->trace_flags &= ~mask;
3888
3889         if (mask == TRACE_ITER_RECORD_CMD)
3890                 trace_event_enable_cmd_record(enabled);
3891
3892         if (mask == TRACE_ITER_EVENT_FORK)
3893                 trace_event_follow_fork(tr, enabled);
3894
3895         if (mask == TRACE_ITER_OVERWRITE) {
3896                 ring_buffer_change_overwrite(tr->trace_buffer.buffer, enabled);
3897 #ifdef CONFIG_TRACER_MAX_TRACE
3898                 ring_buffer_change_overwrite(tr->max_buffer.buffer, enabled);
3899 #endif
3900         }
3901
3902         if (mask == TRACE_ITER_PRINTK) {
3903                 trace_printk_start_stop_comm(enabled);
3904                 trace_printk_control(enabled);
3905         }
3906
3907         return 0;
3908 }
3909
3910 static int trace_set_options(struct trace_array *tr, char *option)
3911 {
3912         char *cmp;
3913         int neg = 0;
3914         int ret = -ENODEV;
3915         int i;
3916         size_t orig_len = strlen(option);
3917
3918         cmp = strstrip(option);
3919
3920         if (strncmp(cmp, "no", 2) == 0) {
3921                 neg = 1;
3922                 cmp += 2;
3923         }
3924
3925         mutex_lock(&trace_types_lock);
3926
3927         for (i = 0; trace_options[i]; i++) {
3928                 if (strcmp(cmp, trace_options[i]) == 0) {
3929                         ret = set_tracer_flag(tr, 1 << i, !neg);
3930                         break;
3931                 }
3932         }
3933
3934         /* If no option could be set, test the specific tracer options */
3935         if (!trace_options[i])
3936                 ret = set_tracer_option(tr, cmp, neg);
3937
3938         mutex_unlock(&trace_types_lock);
3939
3940         /*
3941          * If the first trailing whitespace is replaced with '\0' by strstrip,
3942          * turn it back into a space.
3943          */
3944         if (orig_len > strlen(option))
3945                 option[strlen(option)] = ' ';
3946
3947         return ret;
3948 }
3949
3950 static void __init apply_trace_boot_options(void)
3951 {
3952         char *buf = trace_boot_options_buf;
3953         char *option;
3954
3955         while (true) {
3956                 option = strsep(&buf, ",");
3957
3958                 if (!option)
3959                         break;
3960
3961                 if (*option)
3962                         trace_set_options(&global_trace, option);
3963
3964                 /* Put back the comma to allow this to be called again */
3965                 if (buf)
3966                         *(buf - 1) = ',';
3967         }
3968 }
3969
3970 static ssize_t
3971 tracing_trace_options_write(struct file *filp, const char __user *ubuf,
3972                         size_t cnt, loff_t *ppos)
3973 {
3974         struct seq_file *m = filp->private_data;
3975         struct trace_array *tr = m->private;
3976         char buf[64];
3977         int ret;
3978
3979         if (cnt >= sizeof(buf))
3980                 return -EINVAL;
3981
3982         if (copy_from_user(buf, ubuf, cnt))
3983                 return -EFAULT;
3984
3985         buf[cnt] = 0;
3986
3987         ret = trace_set_options(tr, buf);
3988         if (ret < 0)
3989                 return ret;
3990
3991         *ppos += cnt;
3992
3993         return cnt;
3994 }
3995
3996 static int tracing_trace_options_open(struct inode *inode, struct file *file)
3997 {
3998         struct trace_array *tr = inode->i_private;
3999         int ret;
4000
4001         if (tracing_disabled)
4002                 return -ENODEV;
4003
4004         if (trace_array_get(tr) < 0)
4005                 return -ENODEV;
4006
4007         ret = single_open(file, tracing_trace_options_show, inode->i_private);
4008         if (ret < 0)
4009                 trace_array_put(tr);
4010
4011         return ret;
4012 }
4013
4014 static const struct file_operations tracing_iter_fops = {
4015         .open           = tracing_trace_options_open,
4016         .read           = seq_read,
4017         .llseek         = seq_lseek,
4018         .release        = tracing_single_release_tr,
4019         .write          = tracing_trace_options_write,
4020 };
4021
4022 static const char readme_msg[] =
4023         "tracing mini-HOWTO:\n\n"
4024         "# echo 0 > tracing_on : quick way to disable tracing\n"
4025         "# echo 1 > tracing_on : quick way to re-enable tracing\n\n"
4026         " Important files:\n"
4027         "  trace\t\t\t- The static contents of the buffer\n"
4028         "\t\t\t  To clear the buffer write into this file: echo > trace\n"
4029         "  trace_pipe\t\t- A consuming read to see the contents of the buffer\n"
4030         "  current_tracer\t- function and latency tracers\n"
4031         "  available_tracers\t- list of configured tracers for current_tracer\n"
4032         "  buffer_size_kb\t- view and modify size of per cpu buffer\n"
4033         "  buffer_total_size_kb  - view total size of all cpu buffers\n\n"
4034         "  trace_clock\t\t-change the clock used to order events\n"
4035         "       local:   Per cpu clock but may not be synced across CPUs\n"
4036         "      global:   Synced across CPUs but slows tracing down.\n"
4037         "     counter:   Not a clock, but just an increment\n"
4038         "      uptime:   Jiffy counter from time of boot\n"
4039         "        perf:   Same clock that perf events use\n"
4040 #ifdef CONFIG_X86_64
4041         "     x86-tsc:   TSC cycle counter\n"
4042 #endif
4043         "\n  trace_marker\t\t- Writes into this file writes into the kernel buffer\n"
4044         "  tracing_cpumask\t- Limit which CPUs to trace\n"
4045         "  instances\t\t- Make sub-buffers with: mkdir instances/foo\n"
4046         "\t\t\t  Remove sub-buffer with rmdir\n"
4047         "  trace_options\t\t- Set format or modify how tracing happens\n"
4048         "\t\t\t  Disable an option by adding a suffix 'no' to the\n"
4049         "\t\t\t  option name\n"
4050         "  saved_cmdlines_size\t- echo command number in here to store comm-pid list\n"
4051 #ifdef CONFIG_DYNAMIC_FTRACE
4052         "\n  available_filter_functions - list of functions that can be filtered on\n"
4053         "  set_ftrace_filter\t- echo function name in here to only trace these\n"
4054         "\t\t\t  functions\n"
4055         "\t     accepts: func_full_name, *func_end, func_begin*, *func_middle*\n"
4056         "\t     modules: Can select a group via module\n"
4057         "\t      Format: :mod:<module-name>\n"
4058         "\t     example: echo :mod:ext3 > set_ftrace_filter\n"
4059         "\t    triggers: a command to perform when function is hit\n"
4060         "\t      Format: <function>:<trigger>[:count]\n"
4061         "\t     trigger: traceon, traceoff\n"
4062         "\t\t      enable_event:<system>:<event>\n"
4063         "\t\t      disable_event:<system>:<event>\n"
4064 #ifdef CONFIG_STACKTRACE
4065         "\t\t      stacktrace\n"
4066 #endif
4067 #ifdef CONFIG_TRACER_SNAPSHOT
4068         "\t\t      snapshot\n"
4069 #endif
4070         "\t\t      dump\n"
4071         "\t\t      cpudump\n"
4072         "\t     example: echo do_fault:traceoff > set_ftrace_filter\n"
4073         "\t              echo do_trap:traceoff:3 > set_ftrace_filter\n"
4074         "\t     The first one will disable tracing every time do_fault is hit\n"
4075         "\t     The second will disable tracing at most 3 times when do_trap is hit\n"
4076         "\t       The first time do trap is hit and it disables tracing, the\n"
4077         "\t       counter will decrement to 2. If tracing is already disabled,\n"
4078         "\t       the counter will not decrement. It only decrements when the\n"
4079         "\t       trigger did work\n"
4080         "\t     To remove trigger without count:\n"
4081         "\t       echo '!<function>:<trigger> > set_ftrace_filter\n"
4082         "\t     To remove trigger with a count:\n"
4083         "\t       echo '!<function>:<trigger>:0 > set_ftrace_filter\n"
4084         "  set_ftrace_notrace\t- echo function name in here to never trace.\n"
4085         "\t    accepts: func_full_name, *func_end, func_begin*, *func_middle*\n"
4086         "\t    modules: Can select a group via module command :mod:\n"
4087         "\t    Does not accept triggers\n"
4088 #endif /* CONFIG_DYNAMIC_FTRACE */
4089 #ifdef CONFIG_FUNCTION_TRACER
4090         "  set_ftrace_pid\t- Write pid(s) to only function trace those pids\n"
4091         "\t\t    (function)\n"
4092 #endif
4093 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
4094         "  set_graph_function\t- Trace the nested calls of a function (function_graph)\n"
4095         "  set_graph_notrace\t- Do not trace the nested calls of a function (function_graph)\n"
4096         "  max_graph_depth\t- Trace a limited depth of nested calls (0 is unlimited)\n"
4097 #endif
4098 #ifdef CONFIG_TRACER_SNAPSHOT
4099         "\n  snapshot\t\t- Like 'trace' but shows the content of the static\n"
4100         "\t\t\t  snapshot buffer. Read the contents for more\n"
4101         "\t\t\t  information\n"
4102 #endif
4103 #ifdef CONFIG_STACK_TRACER
4104         "  stack_trace\t\t- Shows the max stack trace when active\n"
4105         "  stack_max_size\t- Shows current max stack size that was traced\n"
4106         "\t\t\t  Write into this file to reset the max size (trigger a\n"
4107         "\t\t\t  new trace)\n"
4108 #ifdef CONFIG_DYNAMIC_FTRACE
4109         "  stack_trace_filter\t- Like set_ftrace_filter but limits what stack_trace\n"
4110         "\t\t\t  traces\n"
4111 #endif
4112 #endif /* CONFIG_STACK_TRACER */
4113         "  events/\t\t- Directory containing all trace event subsystems:\n"
4114         "      enable\t\t- Write 0/1 to enable/disable tracing of all events\n"
4115         "  events/<system>/\t- Directory containing all trace events for <system>:\n"
4116         "      enable\t\t- Write 0/1 to enable/disable tracing of all <system>\n"
4117         "\t\t\t  events\n"
4118         "      filter\t\t- If set, only events passing filter are traced\n"
4119         "  events/<system>/<event>/\t- Directory containing control files for\n"
4120         "\t\t\t  <event>:\n"
4121         "      enable\t\t- Write 0/1 to enable/disable tracing of <event>\n"
4122         "      filter\t\t- If set, only events passing filter are traced\n"
4123         "      trigger\t\t- If set, a command to perform when event is hit\n"
4124         "\t    Format: <trigger>[:count][if <filter>]\n"
4125         "\t   trigger: traceon, traceoff\n"
4126         "\t            enable_event:<system>:<event>\n"
4127         "\t            disable_event:<system>:<event>\n"
4128 #ifdef CONFIG_HIST_TRIGGERS
4129         "\t            enable_hist:<system>:<event>\n"
4130         "\t            disable_hist:<system>:<event>\n"
4131 #endif
4132 #ifdef CONFIG_STACKTRACE
4133         "\t\t    stacktrace\n"
4134 #endif
4135 #ifdef CONFIG_TRACER_SNAPSHOT
4136         "\t\t    snapshot\n"
4137 #endif
4138 #ifdef CONFIG_HIST_TRIGGERS
4139         "\t\t    hist (see below)\n"
4140 #endif
4141         "\t   example: echo traceoff > events/block/block_unplug/trigger\n"
4142         "\t            echo traceoff:3 > events/block/block_unplug/trigger\n"
4143         "\t            echo 'enable_event:kmem:kmalloc:3 if nr_rq > 1' > \\\n"
4144         "\t                  events/block/block_unplug/trigger\n"
4145         "\t   The first disables tracing every time block_unplug is hit.\n"
4146         "\t   The second disables tracing the first 3 times block_unplug is hit.\n"
4147         "\t   The third enables the kmalloc event the first 3 times block_unplug\n"
4148         "\t     is hit and has value of greater than 1 for the 'nr_rq' event field.\n"
4149         "\t   Like function triggers, the counter is only decremented if it\n"
4150         "\t    enabled or disabled tracing.\n"
4151         "\t   To remove a trigger without a count:\n"
4152         "\t     echo '!<trigger> > <system>/<event>/trigger\n"
4153         "\t   To remove a trigger with a count:\n"
4154         "\t     echo '!<trigger>:0 > <system>/<event>/trigger\n"
4155         "\t   Filters can be ignored when removing a trigger.\n"
4156 #ifdef CONFIG_HIST_TRIGGERS
4157         "      hist trigger\t- If set, event hits are aggregated into a hash table\n"
4158         "\t    Format: hist:keys=<field1[,field2,...]>\n"
4159         "\t            [:values=<field1[,field2,...]>]\n"
4160         "\t            [:sort=<field1[,field2,...]>]\n"
4161         "\t            [:size=#entries]\n"
4162         "\t            [:pause][:continue][:clear]\n"
4163         "\t            [:name=histname1]\n"
4164         "\t            [if <filter>]\n\n"
4165         "\t    When a matching event is hit, an entry is added to a hash\n"
4166         "\t    table using the key(s) and value(s) named, and the value of a\n"
4167         "\t    sum called 'hitcount' is incremented.  Keys and values\n"
4168         "\t    correspond to fields in the event's format description.  Keys\n"
4169         "\t    can be any field, or the special string 'stacktrace'.\n"
4170         "\t    Compound keys consisting of up to two fields can be specified\n"
4171         "\t    by the 'keys' keyword.  Values must correspond to numeric\n"
4172         "\t    fields.  Sort keys consisting of up to two fields can be\n"
4173         "\t    specified using the 'sort' keyword.  The sort direction can\n"
4174         "\t    be modified by appending '.descending' or '.ascending' to a\n"
4175         "\t    sort field.  The 'size' parameter can be used to specify more\n"
4176         "\t    or fewer than the default 2048 entries for the hashtable size.\n"
4177         "\t    If a hist trigger is given a name using the 'name' parameter,\n"
4178         "\t    its histogram data will be shared with other triggers of the\n"
4179         "\t    same name, and trigger hits will update this common data.\n\n"
4180         "\t    Reading the 'hist' file for the event will dump the hash\n"
4181         "\t    table in its entirety to stdout.  If there are multiple hist\n"
4182         "\t    triggers attached to an event, there will be a table for each\n"
4183         "\t    trigger in the output.  The table displayed for a named\n"
4184         "\t    trigger will be the same as any other instance having the\n"
4185         "\t    same name.  The default format used to display a given field\n"
4186         "\t    can be modified by appending any of the following modifiers\n"
4187         "\t    to the field name, as applicable:\n\n"
4188         "\t            .hex        display a number as a hex value\n"
4189         "\t            .sym        display an address as a symbol\n"
4190         "\t            .sym-offset display an address as a symbol and offset\n"
4191         "\t            .execname   display a common_pid as a program name\n"
4192         "\t            .syscall    display a syscall id as a syscall name\n\n"
4193         "\t            .log2       display log2 value rather than raw number\n\n"
4194         "\t    The 'pause' parameter can be used to pause an existing hist\n"
4195         "\t    trigger or to start a hist trigger but not log any events\n"
4196         "\t    until told to do so.  'continue' can be used to start or\n"
4197         "\t    restart a paused hist trigger.\n\n"
4198         "\t    The 'clear' parameter will clear the contents of a running\n"
4199         "\t    hist trigger and leave its current paused/active state\n"
4200         "\t    unchanged.\n\n"
4201         "\t    The enable_hist and disable_hist triggers can be used to\n"
4202         "\t    have one event conditionally start and stop another event's\n"
4203         "\t    already-attached hist trigger.  The syntax is analagous to\n"
4204         "\t    the enable_event and disable_event triggers.\n"
4205 #endif
4206 ;
4207
4208 static ssize_t
4209 tracing_readme_read(struct file *filp, char __user *ubuf,
4210                        size_t cnt, loff_t *ppos)
4211 {
4212         return simple_read_from_buffer(ubuf, cnt, ppos,
4213                                         readme_msg, strlen(readme_msg));
4214 }
4215
4216 static const struct file_operations tracing_readme_fops = {
4217         .open           = tracing_open_generic,
4218         .read           = tracing_readme_read,
4219         .llseek         = generic_file_llseek,
4220 };
4221
4222 static void *saved_cmdlines_next(struct seq_file *m, void *v, loff_t *pos)
4223 {
4224         unsigned int *ptr = v;
4225
4226         if (*pos || m->count)
4227                 ptr++;
4228
4229         (*pos)++;
4230
4231         for (; ptr < &savedcmd->map_cmdline_to_pid[savedcmd->cmdline_num];
4232              ptr++) {
4233                 if (*ptr == -1 || *ptr == NO_CMDLINE_MAP)
4234                         continue;
4235
4236                 return ptr;
4237         }
4238
4239         return NULL;
4240 }
4241
4242 static void *saved_cmdlines_start(struct seq_file *m, loff_t *pos)
4243 {
4244         void *v;
4245         loff_t l = 0;
4246
4247         preempt_disable();
4248         arch_spin_lock(&trace_cmdline_lock);
4249
4250         v = &savedcmd->map_cmdline_to_pid[0];
4251         while (l <= *pos) {
4252                 v = saved_cmdlines_next(m, v, &l);
4253                 if (!v)
4254                         return NULL;
4255         }
4256
4257         return v;
4258 }
4259
4260 static void saved_cmdlines_stop(struct seq_file *m, void *v)
4261 {
4262         arch_spin_unlock(&trace_cmdline_lock);
4263         preempt_enable();
4264 }
4265
4266 static int saved_cmdlines_show(struct seq_file *m, void *v)
4267 {
4268         char buf[TASK_COMM_LEN];
4269         unsigned int *pid = v;
4270
4271         __trace_find_cmdline(*pid, buf);
4272         seq_printf(m, "%d %s\n", *pid, buf);
4273         return 0;
4274 }
4275
4276 static const struct seq_operations tracing_saved_cmdlines_seq_ops = {
4277         .start          = saved_cmdlines_start,
4278         .next           = saved_cmdlines_next,
4279         .stop           = saved_cmdlines_stop,
4280         .show           = saved_cmdlines_show,
4281 };
4282
4283 static int tracing_saved_cmdlines_open(struct inode *inode, struct file *filp)
4284 {
4285         if (tracing_disabled)
4286                 return -ENODEV;
4287
4288         return seq_open(filp, &tracing_saved_cmdlines_seq_ops);
4289 }
4290
4291 static const struct file_operations tracing_saved_cmdlines_fops = {
4292         .open           = tracing_saved_cmdlines_open,
4293         .read           = seq_read,
4294         .llseek         = seq_lseek,
4295         .release        = seq_release,
4296 };
4297
4298 static ssize_t
4299 tracing_saved_cmdlines_size_read(struct file *filp, char __user *ubuf,
4300                                  size_t cnt, loff_t *ppos)
4301 {
4302         char buf[64];
4303         int r;
4304
4305         arch_spin_lock(&trace_cmdline_lock);
4306         r = scnprintf(buf, sizeof(buf), "%u\n", savedcmd->cmdline_num);
4307         arch_spin_unlock(&trace_cmdline_lock);
4308
4309         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4310 }
4311
4312 static void free_saved_cmdlines_buffer(struct saved_cmdlines_buffer *s)
4313 {
4314         kfree(s->saved_cmdlines);
4315         kfree(s->map_cmdline_to_pid);
4316         kfree(s);
4317 }
4318
4319 static int tracing_resize_saved_cmdlines(unsigned int val)
4320 {
4321         struct saved_cmdlines_buffer *s, *savedcmd_temp;
4322
4323         s = kmalloc(sizeof(*s), GFP_KERNEL);
4324         if (!s)
4325                 return -ENOMEM;
4326
4327         if (allocate_cmdlines_buffer(val, s) < 0) {
4328                 kfree(s);
4329                 return -ENOMEM;
4330         }
4331
4332         arch_spin_lock(&trace_cmdline_lock);
4333         savedcmd_temp = savedcmd;
4334         savedcmd = s;
4335         arch_spin_unlock(&trace_cmdline_lock);
4336         free_saved_cmdlines_buffer(savedcmd_temp);
4337
4338         return 0;
4339 }
4340
4341 static ssize_t
4342 tracing_saved_cmdlines_size_write(struct file *filp, const char __user *ubuf,
4343                                   size_t cnt, loff_t *ppos)
4344 {
4345         unsigned long val;
4346         int ret;
4347
4348         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4349         if (ret)
4350                 return ret;
4351
4352         /* must have at least 1 entry or less than PID_MAX_DEFAULT */
4353         if (!val || val > PID_MAX_DEFAULT)
4354                 return -EINVAL;
4355
4356         ret = tracing_resize_saved_cmdlines((unsigned int)val);
4357         if (ret < 0)
4358                 return ret;
4359
4360         *ppos += cnt;
4361
4362         return cnt;
4363 }
4364
4365 static const struct file_operations tracing_saved_cmdlines_size_fops = {
4366         .open           = tracing_open_generic,
4367         .read           = tracing_saved_cmdlines_size_read,
4368         .write          = tracing_saved_cmdlines_size_write,
4369 };
4370
4371 #ifdef CONFIG_TRACE_ENUM_MAP_FILE
4372 static union trace_enum_map_item *
4373 update_enum_map(union trace_enum_map_item *ptr)
4374 {
4375         if (!ptr->map.enum_string) {
4376                 if (ptr->tail.next) {
4377                         ptr = ptr->tail.next;
4378                         /* Set ptr to the next real item (skip head) */
4379                         ptr++;
4380                 } else
4381                         return NULL;
4382         }
4383         return ptr;
4384 }
4385
4386 static void *enum_map_next(struct seq_file *m, void *v, loff_t *pos)
4387 {
4388         union trace_enum_map_item *ptr = v;
4389
4390         /*
4391          * Paranoid! If ptr points to end, we don't want to increment past it.
4392          * This really should never happen.
4393          */
4394         ptr = update_enum_map(ptr);
4395         if (WARN_ON_ONCE(!ptr))
4396                 return NULL;
4397
4398         ptr++;
4399
4400         (*pos)++;
4401
4402         ptr = update_enum_map(ptr);
4403
4404         return ptr;
4405 }
4406
4407 static void *enum_map_start(struct seq_file *m, loff_t *pos)
4408 {
4409         union trace_enum_map_item *v;
4410         loff_t l = 0;
4411
4412         mutex_lock(&trace_enum_mutex);
4413
4414         v = trace_enum_maps;
4415         if (v)
4416                 v++;
4417
4418         while (v && l < *pos) {
4419                 v = enum_map_next(m, v, &l);
4420         }
4421
4422         return v;
4423 }
4424
4425 static void enum_map_stop(struct seq_file *m, void *v)
4426 {
4427         mutex_unlock(&trace_enum_mutex);
4428 }
4429
4430 static int enum_map_show(struct seq_file *m, void *v)
4431 {
4432         union trace_enum_map_item *ptr = v;
4433
4434         seq_printf(m, "%s %ld (%s)\n",
4435                    ptr->map.enum_string, ptr->map.enum_value,
4436                    ptr->map.system);
4437
4438         return 0;
4439 }
4440
4441 static const struct seq_operations tracing_enum_map_seq_ops = {
4442         .start          = enum_map_start,
4443         .next           = enum_map_next,
4444         .stop           = enum_map_stop,
4445         .show           = enum_map_show,
4446 };
4447
4448 static int tracing_enum_map_open(struct inode *inode, struct file *filp)
4449 {
4450         if (tracing_disabled)
4451                 return -ENODEV;
4452
4453         return seq_open(filp, &tracing_enum_map_seq_ops);
4454 }
4455
4456 static const struct file_operations tracing_enum_map_fops = {
4457         .open           = tracing_enum_map_open,
4458         .read           = seq_read,
4459         .llseek         = seq_lseek,
4460         .release        = seq_release,
4461 };
4462
4463 static inline union trace_enum_map_item *
4464 trace_enum_jmp_to_tail(union trace_enum_map_item *ptr)
4465 {
4466         /* Return tail of array given the head */
4467         return ptr + ptr->head.length + 1;
4468 }
4469
4470 static void
4471 trace_insert_enum_map_file(struct module *mod, struct trace_enum_map **start,
4472                            int len)
4473 {
4474         struct trace_enum_map **stop;
4475         struct trace_enum_map **map;
4476         union trace_enum_map_item *map_array;
4477         union trace_enum_map_item *ptr;
4478
4479         stop = start + len;
4480
4481         /*
4482          * The trace_enum_maps contains the map plus a head and tail item,
4483          * where the head holds the module and length of array, and the
4484          * tail holds a pointer to the next list.
4485          */
4486         map_array = kmalloc(sizeof(*map_array) * (len + 2), GFP_KERNEL);
4487         if (!map_array) {
4488                 pr_warn("Unable to allocate trace enum mapping\n");
4489                 return;
4490         }
4491
4492         mutex_lock(&trace_enum_mutex);
4493
4494         if (!trace_enum_maps)
4495                 trace_enum_maps = map_array;
4496         else {
4497                 ptr = trace_enum_maps;
4498                 for (;;) {
4499                         ptr = trace_enum_jmp_to_tail(ptr);
4500                         if (!ptr->tail.next)
4501                                 break;
4502                         ptr = ptr->tail.next;
4503
4504                 }
4505                 ptr->tail.next = map_array;
4506         }
4507         map_array->head.mod = mod;
4508         map_array->head.length = len;
4509         map_array++;
4510
4511         for (map = start; (unsigned long)map < (unsigned long)stop; map++) {
4512                 map_array->map = **map;
4513                 map_array++;
4514         }
4515         memset(map_array, 0, sizeof(*map_array));
4516
4517         mutex_unlock(&trace_enum_mutex);
4518 }
4519
4520 static void trace_create_enum_file(struct dentry *d_tracer)
4521 {
4522         trace_create_file("enum_map", 0444, d_tracer,
4523                           NULL, &tracing_enum_map_fops);
4524 }
4525
4526 #else /* CONFIG_TRACE_ENUM_MAP_FILE */
4527 static inline void trace_create_enum_file(struct dentry *d_tracer) { }
4528 static inline void trace_insert_enum_map_file(struct module *mod,
4529                               struct trace_enum_map **start, int len) { }
4530 #endif /* !CONFIG_TRACE_ENUM_MAP_FILE */
4531
4532 static void trace_insert_enum_map(struct module *mod,
4533                                   struct trace_enum_map **start, int len)
4534 {
4535         struct trace_enum_map **map;
4536
4537         if (len <= 0)
4538                 return;
4539
4540         map = start;
4541
4542         trace_event_enum_update(map, len);
4543
4544         trace_insert_enum_map_file(mod, start, len);
4545 }
4546
4547 static ssize_t
4548 tracing_set_trace_read(struct file *filp, char __user *ubuf,
4549                        size_t cnt, loff_t *ppos)
4550 {
4551         struct trace_array *tr = filp->private_data;
4552         char buf[MAX_TRACER_SIZE+2];
4553         int r;
4554
4555         mutex_lock(&trace_types_lock);
4556         r = sprintf(buf, "%s\n", tr->current_trace->name);
4557         mutex_unlock(&trace_types_lock);
4558
4559         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4560 }
4561
4562 int tracer_init(struct tracer *t, struct trace_array *tr)
4563 {
4564         tracing_reset_online_cpus(&tr->trace_buffer);
4565         return t->init(tr);
4566 }
4567
4568 static void set_buffer_entries(struct trace_buffer *buf, unsigned long val)
4569 {
4570         int cpu;
4571
4572         for_each_tracing_cpu(cpu)
4573                 per_cpu_ptr(buf->data, cpu)->entries = val;
4574 }
4575
4576 #ifdef CONFIG_TRACER_MAX_TRACE
4577 /* resize @tr's buffer to the size of @size_tr's entries */
4578 static int resize_buffer_duplicate_size(struct trace_buffer *trace_buf,
4579                                         struct trace_buffer *size_buf, int cpu_id)
4580 {
4581         int cpu, ret = 0;
4582
4583         if (cpu_id == RING_BUFFER_ALL_CPUS) {
4584                 for_each_tracing_cpu(cpu) {
4585                         ret = ring_buffer_resize(trace_buf->buffer,
4586                                  per_cpu_ptr(size_buf->data, cpu)->entries, cpu);
4587                         if (ret < 0)
4588                                 break;
4589                         per_cpu_ptr(trace_buf->data, cpu)->entries =
4590                                 per_cpu_ptr(size_buf->data, cpu)->entries;
4591                 }
4592         } else {
4593                 ret = ring_buffer_resize(trace_buf->buffer,
4594                                  per_cpu_ptr(size_buf->data, cpu_id)->entries, cpu_id);
4595                 if (ret == 0)
4596                         per_cpu_ptr(trace_buf->data, cpu_id)->entries =
4597                                 per_cpu_ptr(size_buf->data, cpu_id)->entries;
4598         }
4599
4600         return ret;
4601 }
4602 #endif /* CONFIG_TRACER_MAX_TRACE */
4603
4604 static int __tracing_resize_ring_buffer(struct trace_array *tr,
4605                                         unsigned long size, int cpu)
4606 {
4607         int ret;
4608
4609         /*
4610          * If kernel or user changes the size of the ring buffer
4611          * we use the size that was given, and we can forget about
4612          * expanding it later.
4613          */
4614         ring_buffer_expanded = true;
4615
4616         /* May be called before buffers are initialized */
4617         if (!tr->trace_buffer.buffer)
4618                 return 0;
4619
4620         ret = ring_buffer_resize(tr->trace_buffer.buffer, size, cpu);
4621         if (ret < 0)
4622                 return ret;
4623
4624 #ifdef CONFIG_TRACER_MAX_TRACE
4625         if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL) ||
4626             !tr->current_trace->use_max_tr)
4627                 goto out;
4628
4629         ret = ring_buffer_resize(tr->max_buffer.buffer, size, cpu);
4630         if (ret < 0) {
4631                 int r = resize_buffer_duplicate_size(&tr->trace_buffer,
4632                                                      &tr->trace_buffer, cpu);
4633                 if (r < 0) {
4634                         /*
4635                          * AARGH! We are left with different
4636                          * size max buffer!!!!
4637                          * The max buffer is our "snapshot" buffer.
4638                          * When a tracer needs a snapshot (one of the
4639                          * latency tracers), it swaps the max buffer
4640                          * with the saved snap shot. We succeeded to
4641                          * update the size of the main buffer, but failed to
4642                          * update the size of the max buffer. But when we tried
4643                          * to reset the main buffer to the original size, we
4644                          * failed there too. This is very unlikely to
4645                          * happen, but if it does, warn and kill all
4646                          * tracing.
4647                          */
4648                         WARN_ON(1);
4649                         tracing_disabled = 1;
4650                 }
4651                 return ret;
4652         }
4653
4654         if (cpu == RING_BUFFER_ALL_CPUS)
4655                 set_buffer_entries(&tr->max_buffer, size);
4656         else
4657                 per_cpu_ptr(tr->max_buffer.data, cpu)->entries = size;
4658
4659  out:
4660 #endif /* CONFIG_TRACER_MAX_TRACE */
4661
4662         if (cpu == RING_BUFFER_ALL_CPUS)
4663                 set_buffer_entries(&tr->trace_buffer, size);
4664         else
4665                 per_cpu_ptr(tr->trace_buffer.data, cpu)->entries = size;
4666
4667         return ret;
4668 }
4669
4670 static ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
4671                                           unsigned long size, int cpu_id)
4672 {
4673         int ret = size;
4674
4675         mutex_lock(&trace_types_lock);
4676
4677         if (cpu_id != RING_BUFFER_ALL_CPUS) {
4678                 /* make sure, this cpu is enabled in the mask */
4679                 if (!cpumask_test_cpu(cpu_id, tracing_buffer_mask)) {
4680                         ret = -EINVAL;
4681                         goto out;
4682                 }
4683         }
4684
4685         ret = __tracing_resize_ring_buffer(tr, size, cpu_id);
4686         if (ret < 0)
4687                 ret = -ENOMEM;
4688
4689 out:
4690         mutex_unlock(&trace_types_lock);
4691
4692         return ret;
4693 }
4694
4695
4696 /**
4697  * tracing_update_buffers - used by tracing facility to expand ring buffers
4698  *
4699  * To save on memory when the tracing is never used on a system with it
4700  * configured in. The ring buffers are set to a minimum size. But once
4701  * a user starts to use the tracing facility, then they need to grow
4702  * to their default size.
4703  *
4704  * This function is to be called when a tracer is about to be used.
4705  */
4706 int tracing_update_buffers(void)
4707 {
4708         int ret = 0;
4709
4710         mutex_lock(&trace_types_lock);
4711         if (!ring_buffer_expanded)
4712                 ret = __tracing_resize_ring_buffer(&global_trace, trace_buf_size,
4713                                                 RING_BUFFER_ALL_CPUS);
4714         mutex_unlock(&trace_types_lock);
4715
4716         return ret;
4717 }
4718
4719 struct trace_option_dentry;
4720
4721 static void
4722 create_trace_option_files(struct trace_array *tr, struct tracer *tracer);
4723
4724 /*
4725  * Used to clear out the tracer before deletion of an instance.
4726  * Must have trace_types_lock held.
4727  */
4728 static void tracing_set_nop(struct trace_array *tr)
4729 {
4730         if (tr->current_trace == &nop_trace)
4731                 return;
4732         
4733         tr->current_trace->enabled--;
4734
4735         if (tr->current_trace->reset)
4736                 tr->current_trace->reset(tr);
4737
4738         tr->current_trace = &nop_trace;
4739 }
4740
4741 static void add_tracer_options(struct trace_array *tr, struct tracer *t)
4742 {
4743         /* Only enable if the directory has been created already. */
4744         if (!tr->dir)
4745                 return;
4746
4747         create_trace_option_files(tr, t);
4748 }
4749
4750 static int tracing_set_tracer(struct trace_array *tr, const char *buf)
4751 {
4752         struct tracer *t;
4753 #ifdef CONFIG_TRACER_MAX_TRACE
4754         bool had_max_tr;
4755 #endif
4756         int ret = 0;
4757
4758         mutex_lock(&trace_types_lock);
4759
4760         if (!ring_buffer_expanded) {
4761                 ret = __tracing_resize_ring_buffer(tr, trace_buf_size,
4762                                                 RING_BUFFER_ALL_CPUS);
4763                 if (ret < 0)
4764                         goto out;
4765                 ret = 0;
4766         }
4767
4768         for (t = trace_types; t; t = t->next) {
4769                 if (strcmp(t->name, buf) == 0)
4770                         break;
4771         }
4772         if (!t) {
4773                 ret = -EINVAL;
4774                 goto out;
4775         }
4776         if (t == tr->current_trace)
4777                 goto out;
4778
4779         /* Some tracers are only allowed for the top level buffer */
4780         if (!trace_ok_for_array(t, tr)) {
4781                 ret = -EINVAL;
4782                 goto out;
4783         }
4784
4785         /* If trace pipe files are being read, we can't change the tracer */
4786         if (tr->current_trace->ref) {
4787                 ret = -EBUSY;
4788                 goto out;
4789         }
4790
4791         trace_branch_disable();
4792
4793         tr->current_trace->enabled--;
4794
4795         if (tr->current_trace->reset)
4796                 tr->current_trace->reset(tr);
4797
4798         /* Current trace needs to be nop_trace before synchronize_sched */
4799         tr->current_trace = &nop_trace;
4800
4801 #ifdef CONFIG_TRACER_MAX_TRACE
4802         had_max_tr = tr->allocated_snapshot;
4803
4804         if (had_max_tr && !t->use_max_tr) {
4805                 /*
4806                  * We need to make sure that the update_max_tr sees that
4807                  * current_trace changed to nop_trace to keep it from
4808                  * swapping the buffers after we resize it.
4809                  * The update_max_tr is called from interrupts disabled
4810                  * so a synchronized_sched() is sufficient.
4811                  */
4812                 synchronize_sched();
4813                 free_snapshot(tr);
4814         }
4815 #endif
4816
4817 #ifdef CONFIG_TRACER_MAX_TRACE
4818         if (t->use_max_tr && !had_max_tr) {
4819                 ret = alloc_snapshot(tr);
4820                 if (ret < 0)
4821                         goto out;
4822         }
4823 #endif
4824
4825         if (t->init) {
4826                 ret = tracer_init(t, tr);
4827                 if (ret)
4828                         goto out;
4829         }
4830
4831         tr->current_trace = t;
4832         tr->current_trace->enabled++;
4833         trace_branch_enable(tr);
4834  out:
4835         mutex_unlock(&trace_types_lock);
4836
4837         return ret;
4838 }
4839
4840 static ssize_t
4841 tracing_set_trace_write(struct file *filp, const char __user *ubuf,
4842                         size_t cnt, loff_t *ppos)
4843 {
4844         struct trace_array *tr = filp->private_data;
4845         char buf[MAX_TRACER_SIZE+1];
4846         int i;
4847         size_t ret;
4848         int err;
4849
4850         ret = cnt;
4851
4852         if (cnt > MAX_TRACER_SIZE)
4853                 cnt = MAX_TRACER_SIZE;
4854
4855         if (copy_from_user(buf, ubuf, cnt))
4856                 return -EFAULT;
4857
4858         buf[cnt] = 0;
4859
4860         /* strip ending whitespace. */
4861         for (i = cnt - 1; i > 0 && isspace(buf[i]); i--)
4862                 buf[i] = 0;
4863
4864         err = tracing_set_tracer(tr, buf);
4865         if (err)
4866                 return err;
4867
4868         *ppos += ret;
4869
4870         return ret;
4871 }
4872
4873 static ssize_t
4874 tracing_nsecs_read(unsigned long *ptr, char __user *ubuf,
4875                    size_t cnt, loff_t *ppos)
4876 {
4877         char buf[64];
4878         int r;
4879
4880         r = snprintf(buf, sizeof(buf), "%ld\n",
4881                      *ptr == (unsigned long)-1 ? -1 : nsecs_to_usecs(*ptr));
4882         if (r > sizeof(buf))
4883                 r = sizeof(buf);
4884         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
4885 }
4886
4887 static ssize_t
4888 tracing_nsecs_write(unsigned long *ptr, const char __user *ubuf,
4889                     size_t cnt, loff_t *ppos)
4890 {
4891         unsigned long val;
4892         int ret;
4893
4894         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4895         if (ret)
4896                 return ret;
4897
4898         *ptr = val * 1000;
4899
4900         return cnt;
4901 }
4902
4903 static ssize_t
4904 tracing_thresh_read(struct file *filp, char __user *ubuf,
4905                     size_t cnt, loff_t *ppos)
4906 {
4907         return tracing_nsecs_read(&tracing_thresh, ubuf, cnt, ppos);
4908 }
4909
4910 static ssize_t
4911 tracing_thresh_write(struct file *filp, const char __user *ubuf,
4912                      size_t cnt, loff_t *ppos)
4913 {
4914         struct trace_array *tr = filp->private_data;
4915         int ret;
4916
4917         mutex_lock(&trace_types_lock);
4918         ret = tracing_nsecs_write(&tracing_thresh, ubuf, cnt, ppos);
4919         if (ret < 0)
4920                 goto out;
4921
4922         if (tr->current_trace->update_thresh) {
4923                 ret = tr->current_trace->update_thresh(tr);
4924                 if (ret < 0)
4925                         goto out;
4926         }
4927
4928         ret = cnt;
4929 out:
4930         mutex_unlock(&trace_types_lock);
4931
4932         return ret;
4933 }
4934
4935 #ifdef CONFIG_TRACER_MAX_TRACE
4936
4937 static ssize_t
4938 tracing_max_lat_read(struct file *filp, char __user *ubuf,
4939                      size_t cnt, loff_t *ppos)
4940 {
4941         return tracing_nsecs_read(filp->private_data, ubuf, cnt, ppos);
4942 }
4943
4944 static ssize_t
4945 tracing_max_lat_write(struct file *filp, const char __user *ubuf,
4946                       size_t cnt, loff_t *ppos)
4947 {
4948         return tracing_nsecs_write(filp->private_data, ubuf, cnt, ppos);
4949 }
4950
4951 #endif
4952
4953 static int tracing_open_pipe(struct inode *inode, struct file *filp)
4954 {
4955         struct trace_array *tr = inode->i_private;
4956         struct trace_iterator *iter;
4957         int ret = 0;
4958
4959         if (tracing_disabled)
4960                 return -ENODEV;
4961
4962         if (trace_array_get(tr) < 0)
4963                 return -ENODEV;
4964
4965         mutex_lock(&trace_types_lock);
4966
4967         /* create a buffer to store the information to pass to userspace */
4968         iter = kzalloc(sizeof(*iter), GFP_KERNEL);
4969         if (!iter) {
4970                 ret = -ENOMEM;
4971                 __trace_array_put(tr);
4972                 goto out;
4973         }
4974
4975         trace_seq_init(&iter->seq);
4976         iter->trace = tr->current_trace;
4977
4978         if (!alloc_cpumask_var(&iter->started, GFP_KERNEL)) {
4979                 ret = -ENOMEM;
4980                 goto fail;
4981         }
4982
4983         /* trace pipe does not show start of buffer */
4984         cpumask_setall(iter->started);
4985
4986         if (tr->trace_flags & TRACE_ITER_LATENCY_FMT)
4987                 iter->iter_flags |= TRACE_FILE_LAT_FMT;
4988
4989         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
4990         if (trace_clocks[tr->clock_id].in_ns)
4991                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
4992
4993         iter->tr = tr;
4994         iter->trace_buffer = &tr->trace_buffer;
4995         iter->cpu_file = tracing_get_cpu(inode);
4996         mutex_init(&iter->mutex);
4997         filp->private_data = iter;
4998
4999         if (iter->trace->pipe_open)
5000                 iter->trace->pipe_open(iter);
5001
5002         nonseekable_open(inode, filp);
5003
5004         tr->current_trace->ref++;
5005 out:
5006         mutex_unlock(&trace_types_lock);
5007         return ret;
5008
5009 fail:
5010         kfree(iter->trace);
5011         kfree(iter);
5012         __trace_array_put(tr);
5013         mutex_unlock(&trace_types_lock);
5014         return ret;
5015 }
5016
5017 static int tracing_release_pipe(struct inode *inode, struct file *file)
5018 {
5019         struct trace_iterator *iter = file->private_data;
5020         struct trace_array *tr = inode->i_private;
5021
5022         mutex_lock(&trace_types_lock);
5023
5024         tr->current_trace->ref--;
5025
5026         if (iter->trace->pipe_close)
5027                 iter->trace->pipe_close(iter);
5028
5029         mutex_unlock(&trace_types_lock);
5030
5031         free_cpumask_var(iter->started);
5032         mutex_destroy(&iter->mutex);
5033         kfree(iter);
5034
5035         trace_array_put(tr);
5036
5037         return 0;
5038 }
5039
5040 static unsigned int
5041 trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_table)
5042 {
5043         struct trace_array *tr = iter->tr;
5044
5045         /* Iterators are static, they should be filled or empty */
5046         if (trace_buffer_iter(iter, iter->cpu_file))
5047                 return POLLIN | POLLRDNORM;
5048
5049         if (tr->trace_flags & TRACE_ITER_BLOCK)
5050                 /*
5051                  * Always select as readable when in blocking mode
5052                  */
5053                 return POLLIN | POLLRDNORM;
5054         else
5055                 return ring_buffer_poll_wait(iter->trace_buffer->buffer, iter->cpu_file,
5056                                              filp, poll_table);
5057 }
5058
5059 static unsigned int
5060 tracing_poll_pipe(struct file *filp, poll_table *poll_table)
5061 {
5062         struct trace_iterator *iter = filp->private_data;
5063
5064         return trace_poll(iter, filp, poll_table);
5065 }
5066
5067 /* Must be called with iter->mutex held. */
5068 static int tracing_wait_pipe(struct file *filp)
5069 {
5070         struct trace_iterator *iter = filp->private_data;
5071         int ret;
5072
5073         while (trace_empty(iter)) {
5074
5075                 if ((filp->f_flags & O_NONBLOCK)) {
5076                         return -EAGAIN;
5077                 }
5078
5079                 /*
5080                  * We block until we read something and tracing is disabled.
5081                  * We still block if tracing is disabled, but we have never
5082                  * read anything. This allows a user to cat this file, and
5083                  * then enable tracing. But after we have read something,
5084                  * we give an EOF when tracing is again disabled.
5085                  *
5086                  * iter->pos will be 0 if we haven't read anything.
5087                  */
5088                 if (!tracing_is_on() && iter->pos)
5089                         break;
5090
5091                 mutex_unlock(&iter->mutex);
5092
5093                 ret = wait_on_pipe(iter, false);
5094
5095                 mutex_lock(&iter->mutex);
5096
5097                 if (ret)
5098                         return ret;
5099         }
5100
5101         return 1;
5102 }
5103
5104 /*
5105  * Consumer reader.
5106  */
5107 static ssize_t
5108 tracing_read_pipe(struct file *filp, char __user *ubuf,
5109                   size_t cnt, loff_t *ppos)
5110 {
5111         struct trace_iterator *iter = filp->private_data;
5112         ssize_t sret;
5113
5114         /* return any leftover data */
5115         sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
5116         if (sret != -EBUSY)
5117                 return sret;
5118
5119         trace_seq_init(&iter->seq);
5120
5121         /*
5122          * Avoid more than one consumer on a single file descriptor
5123          * This is just a matter of traces coherency, the ring buffer itself
5124          * is protected.
5125          */
5126         mutex_lock(&iter->mutex);
5127         if (iter->trace->read) {
5128                 sret = iter->trace->read(iter, filp, ubuf, cnt, ppos);
5129                 if (sret)
5130                         goto out;
5131         }
5132
5133 waitagain:
5134         sret = tracing_wait_pipe(filp);
5135         if (sret <= 0)
5136                 goto out;
5137
5138         /* stop when tracing is finished */
5139         if (trace_empty(iter)) {
5140                 sret = 0;
5141                 goto out;
5142         }
5143
5144         if (cnt >= PAGE_SIZE)
5145                 cnt = PAGE_SIZE - 1;
5146
5147         /* reset all but tr, trace, and overruns */
5148         memset(&iter->seq, 0,
5149                sizeof(struct trace_iterator) -
5150                offsetof(struct trace_iterator, seq));
5151         cpumask_clear(iter->started);
5152         iter->pos = -1;
5153
5154         trace_event_read_lock();
5155         trace_access_lock(iter->cpu_file);
5156         while (trace_find_next_entry_inc(iter) != NULL) {
5157                 enum print_line_t ret;
5158                 int save_len = iter->seq.seq.len;
5159
5160                 ret = print_trace_line(iter);
5161                 if (ret == TRACE_TYPE_PARTIAL_LINE) {
5162                         /* don't print partial lines */
5163                         iter->seq.seq.len = save_len;
5164                         break;
5165                 }
5166                 if (ret != TRACE_TYPE_NO_CONSUME)
5167                         trace_consume(iter);
5168
5169                 if (trace_seq_used(&iter->seq) >= cnt)
5170                         break;
5171
5172                 /*
5173                  * Setting the full flag means we reached the trace_seq buffer
5174                  * size and we should leave by partial output condition above.
5175                  * One of the trace_seq_* functions is not used properly.
5176                  */
5177                 WARN_ONCE(iter->seq.full, "full flag set for trace type %d",
5178                           iter->ent->type);
5179         }
5180         trace_access_unlock(iter->cpu_file);
5181         trace_event_read_unlock();
5182
5183         /* Now copy what we have to the user */
5184         sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
5185         if (iter->seq.seq.readpos >= trace_seq_used(&iter->seq))
5186                 trace_seq_init(&iter->seq);
5187
5188         /*
5189          * If there was nothing to send to user, in spite of consuming trace
5190          * entries, go back to wait for more entries.
5191          */
5192         if (sret == -EBUSY)
5193                 goto waitagain;
5194
5195 out:
5196         mutex_unlock(&iter->mutex);
5197
5198         return sret;
5199 }
5200
5201 static void tracing_spd_release_pipe(struct splice_pipe_desc *spd,
5202                                      unsigned int idx)
5203 {
5204         __free_page(spd->pages[idx]);
5205 }
5206
5207 static const struct pipe_buf_operations tracing_pipe_buf_ops = {
5208         .can_merge              = 0,
5209         .confirm                = generic_pipe_buf_confirm,
5210         .release                = generic_pipe_buf_release,
5211         .steal                  = generic_pipe_buf_steal,
5212         .get                    = generic_pipe_buf_get,
5213 };
5214
5215 static size_t
5216 tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
5217 {
5218         size_t count;
5219         int save_len;
5220         int ret;
5221
5222         /* Seq buffer is page-sized, exactly what we need. */
5223         for (;;) {
5224                 save_len = iter->seq.seq.len;
5225                 ret = print_trace_line(iter);
5226
5227                 if (trace_seq_has_overflowed(&iter->seq)) {
5228                         iter->seq.seq.len = save_len;
5229                         break;
5230                 }
5231
5232                 /*
5233                  * This should not be hit, because it should only
5234                  * be set if the iter->seq overflowed. But check it
5235                  * anyway to be safe.
5236                  */
5237                 if (ret == TRACE_TYPE_PARTIAL_LINE) {
5238                         iter->seq.seq.len = save_len;
5239                         break;
5240                 }
5241
5242                 count = trace_seq_used(&iter->seq) - save_len;
5243                 if (rem < count) {
5244                         rem = 0;
5245                         iter->seq.seq.len = save_len;
5246                         break;
5247                 }
5248
5249                 if (ret != TRACE_TYPE_NO_CONSUME)
5250                         trace_consume(iter);
5251                 rem -= count;
5252                 if (!trace_find_next_entry_inc(iter))   {
5253                         rem = 0;
5254                         iter->ent = NULL;
5255                         break;
5256                 }
5257         }
5258
5259         return rem;
5260 }
5261
5262 static ssize_t tracing_splice_read_pipe(struct file *filp,
5263                                         loff_t *ppos,
5264                                         struct pipe_inode_info *pipe,
5265                                         size_t len,
5266                                         unsigned int flags)
5267 {
5268         struct page *pages_def[PIPE_DEF_BUFFERS];
5269         struct partial_page partial_def[PIPE_DEF_BUFFERS];
5270         struct trace_iterator *iter = filp->private_data;
5271         struct splice_pipe_desc spd = {
5272                 .pages          = pages_def,
5273                 .partial        = partial_def,
5274                 .nr_pages       = 0, /* This gets updated below. */
5275                 .nr_pages_max   = PIPE_DEF_BUFFERS,
5276                 .flags          = flags,
5277                 .ops            = &tracing_pipe_buf_ops,
5278                 .spd_release    = tracing_spd_release_pipe,
5279         };
5280         ssize_t ret;
5281         size_t rem;
5282         unsigned int i;
5283
5284         if (splice_grow_spd(pipe, &spd))
5285                 return -ENOMEM;
5286
5287         mutex_lock(&iter->mutex);
5288
5289         if (iter->trace->splice_read) {
5290                 ret = iter->trace->splice_read(iter, filp,
5291                                                ppos, pipe, len, flags);
5292                 if (ret)
5293                         goto out_err;
5294         }
5295
5296         ret = tracing_wait_pipe(filp);
5297         if (ret <= 0)
5298                 goto out_err;
5299
5300         if (!iter->ent && !trace_find_next_entry_inc(iter)) {
5301                 ret = -EFAULT;
5302                 goto out_err;
5303         }
5304
5305         trace_event_read_lock();
5306         trace_access_lock(iter->cpu_file);
5307
5308         /* Fill as many pages as possible. */
5309         for (i = 0, rem = len; i < spd.nr_pages_max && rem; i++) {
5310                 spd.pages[i] = alloc_page(GFP_KERNEL);
5311                 if (!spd.pages[i])
5312                         break;
5313
5314                 rem = tracing_fill_pipe_page(rem, iter);
5315
5316                 /* Copy the data into the page, so we can start over. */
5317                 ret = trace_seq_to_buffer(&iter->seq,
5318                                           page_address(spd.pages[i]),
5319                                           trace_seq_used(&iter->seq));
5320                 if (ret < 0) {
5321                         __free_page(spd.pages[i]);
5322                         break;
5323                 }
5324                 spd.partial[i].offset = 0;
5325                 spd.partial[i].len = trace_seq_used(&iter->seq);
5326
5327                 trace_seq_init(&iter->seq);
5328         }
5329
5330         trace_access_unlock(iter->cpu_file);
5331         trace_event_read_unlock();
5332         mutex_unlock(&iter->mutex);
5333
5334         spd.nr_pages = i;
5335
5336         if (i)
5337                 ret = splice_to_pipe(pipe, &spd);
5338         else
5339                 ret = 0;
5340 out:
5341         splice_shrink_spd(&spd);
5342         return ret;
5343
5344 out_err:
5345         mutex_unlock(&iter->mutex);
5346         goto out;
5347 }
5348
5349 static ssize_t
5350 tracing_entries_read(struct file *filp, char __user *ubuf,
5351                      size_t cnt, loff_t *ppos)
5352 {
5353         struct inode *inode = file_inode(filp);
5354         struct trace_array *tr = inode->i_private;
5355         int cpu = tracing_get_cpu(inode);
5356         char buf[64];
5357         int r = 0;
5358         ssize_t ret;
5359
5360         mutex_lock(&trace_types_lock);
5361
5362         if (cpu == RING_BUFFER_ALL_CPUS) {
5363                 int cpu, buf_size_same;
5364                 unsigned long size;
5365
5366                 size = 0;
5367                 buf_size_same = 1;
5368                 /* check if all cpu sizes are same */
5369                 for_each_tracing_cpu(cpu) {
5370                         /* fill in the size from first enabled cpu */
5371                         if (size == 0)
5372                                 size = per_cpu_ptr(tr->trace_buffer.data, cpu)->entries;
5373                         if (size != per_cpu_ptr(tr->trace_buffer.data, cpu)->entries) {
5374                                 buf_size_same = 0;
5375                                 break;
5376                         }
5377                 }
5378
5379                 if (buf_size_same) {
5380                         if (!ring_buffer_expanded)
5381                                 r = sprintf(buf, "%lu (expanded: %lu)\n",
5382                                             size >> 10,
5383                                             trace_buf_size >> 10);
5384                         else
5385                                 r = sprintf(buf, "%lu\n", size >> 10);
5386                 } else
5387                         r = sprintf(buf, "X\n");
5388         } else
5389                 r = sprintf(buf, "%lu\n", per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10);
5390
5391         mutex_unlock(&trace_types_lock);
5392
5393         ret = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
5394         return ret;
5395 }
5396
5397 static ssize_t
5398 tracing_entries_write(struct file *filp, const char __user *ubuf,
5399                       size_t cnt, loff_t *ppos)
5400 {
5401         struct inode *inode = file_inode(filp);
5402         struct trace_array *tr = inode->i_private;
5403         unsigned long val;
5404         int ret;
5405
5406         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5407         if (ret)
5408                 return ret;
5409
5410         /* must have at least 1 entry */
5411         if (!val)
5412                 return -EINVAL;
5413
5414         /* value is in KB */
5415         val <<= 10;
5416         ret = tracing_resize_ring_buffer(tr, val, tracing_get_cpu(inode));
5417         if (ret < 0)
5418                 return ret;
5419
5420         *ppos += cnt;
5421
5422         return cnt;
5423 }
5424
5425 static ssize_t
5426 tracing_total_entries_read(struct file *filp, char __user *ubuf,
5427                                 size_t cnt, loff_t *ppos)
5428 {
5429         struct trace_array *tr = filp->private_data;
5430         char buf[64];
5431         int r, cpu;
5432         unsigned long size = 0, expanded_size = 0;
5433
5434         mutex_lock(&trace_types_lock);
5435         for_each_tracing_cpu(cpu) {
5436                 size += per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10;
5437                 if (!ring_buffer_expanded)
5438                         expanded_size += trace_buf_size >> 10;
5439         }
5440         if (ring_buffer_expanded)
5441                 r = sprintf(buf, "%lu\n", size);
5442         else
5443                 r = sprintf(buf, "%lu (expanded: %lu)\n", size, expanded_size);
5444         mutex_unlock(&trace_types_lock);
5445
5446         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
5447 }
5448
5449 static ssize_t
5450 tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
5451                           size_t cnt, loff_t *ppos)
5452 {
5453         /*
5454          * There is no need to read what the user has written, this function
5455          * is just to make sure that there is no error when "echo" is used
5456          */
5457
5458         *ppos += cnt;
5459
5460         return cnt;
5461 }
5462
5463 static int
5464 tracing_free_buffer_release(struct inode *inode, struct file *filp)
5465 {
5466         struct trace_array *tr = inode->i_private;
5467
5468         /* disable tracing ? */
5469         if (tr->trace_flags & TRACE_ITER_STOP_ON_FREE)
5470                 tracer_tracing_off(tr);
5471         /* resize the ring buffer to 0 */
5472         tracing_resize_ring_buffer(tr, 0, RING_BUFFER_ALL_CPUS);
5473
5474         trace_array_put(tr);
5475
5476         return 0;
5477 }
5478
5479 static ssize_t
5480 tracing_mark_write(struct file *filp, const char __user *ubuf,
5481                                         size_t cnt, loff_t *fpos)
5482 {
5483         unsigned long addr = (unsigned long)ubuf;
5484         struct trace_array *tr = filp->private_data;
5485         struct ring_buffer_event *event;
5486         struct ring_buffer *buffer;
5487         struct print_entry *entry;
5488         unsigned long irq_flags;
5489         struct page *pages[2];
5490         void *map_page[2];
5491         int nr_pages = 1;
5492         ssize_t written;
5493         int offset;
5494         int size;
5495         int len;
5496         int ret;
5497         int i;
5498
5499         if (tracing_disabled)
5500                 return -EINVAL;
5501
5502         if (!(tr->trace_flags & TRACE_ITER_MARKERS))
5503                 return -EINVAL;
5504
5505         if (cnt > TRACE_BUF_SIZE)
5506                 cnt = TRACE_BUF_SIZE;
5507
5508         /*
5509          * Userspace is injecting traces into the kernel trace buffer.
5510          * We want to be as non intrusive as possible.
5511          * To do so, we do not want to allocate any special buffers
5512          * or take any locks, but instead write the userspace data
5513          * straight into the ring buffer.
5514          *
5515          * First we need to pin the userspace buffer into memory,
5516          * which, most likely it is, because it just referenced it.
5517          * But there's no guarantee that it is. By using get_user_pages_fast()
5518          * and kmap_atomic/kunmap_atomic() we can get access to the
5519          * pages directly. We then write the data directly into the
5520          * ring buffer.
5521          */
5522         BUILD_BUG_ON(TRACE_BUF_SIZE >= PAGE_SIZE);
5523
5524         /* check if we cross pages */
5525         if ((addr & PAGE_MASK) != ((addr + cnt) & PAGE_MASK))
5526                 nr_pages = 2;
5527
5528         offset = addr & (PAGE_SIZE - 1);
5529         addr &= PAGE_MASK;
5530
5531         ret = get_user_pages_fast(addr, nr_pages, 0, pages);
5532         if (ret < nr_pages) {
5533                 while (--ret >= 0)
5534                         put_page(pages[ret]);
5535                 written = -EFAULT;
5536                 goto out;
5537         }
5538
5539         for (i = 0; i < nr_pages; i++)
5540                 map_page[i] = kmap_atomic(pages[i]);
5541
5542         local_save_flags(irq_flags);
5543         size = sizeof(*entry) + cnt + 2; /* possible \n added */
5544         buffer = tr->trace_buffer.buffer;
5545         event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
5546                                           irq_flags, preempt_count());
5547         if (!event) {
5548                 /* Ring buffer disabled, return as if not open for write */
5549                 written = -EBADF;
5550                 goto out_unlock;
5551         }
5552
5553         entry = ring_buffer_event_data(event);
5554         entry->ip = _THIS_IP_;
5555
5556         if (nr_pages == 2) {
5557                 len = PAGE_SIZE - offset;
5558                 memcpy(&entry->buf, map_page[0] + offset, len);
5559                 memcpy(&entry->buf[len], map_page[1], cnt - len);
5560         } else
5561                 memcpy(&entry->buf, map_page[0] + offset, cnt);
5562
5563         if (entry->buf[cnt - 1] != '\n') {
5564                 entry->buf[cnt] = '\n';
5565                 entry->buf[cnt + 1] = '\0';
5566         } else
5567                 entry->buf[cnt] = '\0';
5568
5569         __buffer_unlock_commit(buffer, event);
5570
5571         written = cnt;
5572
5573         *fpos += written;
5574
5575  out_unlock:
5576         for (i = nr_pages - 1; i >= 0; i--) {
5577                 kunmap_atomic(map_page[i]);
5578                 put_page(pages[i]);
5579         }
5580  out:
5581         return written;
5582 }
5583
5584 static int tracing_clock_show(struct seq_file *m, void *v)
5585 {
5586         struct trace_array *tr = m->private;
5587         int i;
5588
5589         for (i = 0; i < ARRAY_SIZE(trace_clocks); i++)
5590                 seq_printf(m,
5591                         "%s%s%s%s", i ? " " : "",
5592                         i == tr->clock_id ? "[" : "", trace_clocks[i].name,
5593                         i == tr->clock_id ? "]" : "");
5594         seq_putc(m, '\n');
5595
5596         return 0;
5597 }
5598
5599 static int tracing_set_clock(struct trace_array *tr, const char *clockstr)
5600 {
5601         int i;
5602
5603         for (i = 0; i < ARRAY_SIZE(trace_clocks); i++) {
5604                 if (strcmp(trace_clocks[i].name, clockstr) == 0)
5605                         break;
5606         }
5607         if (i == ARRAY_SIZE(trace_clocks))
5608                 return -EINVAL;
5609
5610         mutex_lock(&trace_types_lock);
5611
5612         tr->clock_id = i;
5613
5614         ring_buffer_set_clock(tr->trace_buffer.buffer, trace_clocks[i].func);
5615
5616         /*
5617          * New clock may not be consistent with the previous clock.
5618          * Reset the buffer so that it doesn't have incomparable timestamps.
5619          */
5620         tracing_reset_online_cpus(&tr->trace_buffer);
5621
5622 #ifdef CONFIG_TRACER_MAX_TRACE
5623         if (tr->flags & TRACE_ARRAY_FL_GLOBAL && tr->max_buffer.buffer)
5624                 ring_buffer_set_clock(tr->max_buffer.buffer, trace_clocks[i].func);
5625         tracing_reset_online_cpus(&tr->max_buffer);
5626 #endif
5627
5628         mutex_unlock(&trace_types_lock);
5629
5630         return 0;
5631 }
5632
5633 static ssize_t tracing_clock_write(struct file *filp, const char __user *ubuf,
5634                                    size_t cnt, loff_t *fpos)
5635 {
5636         struct seq_file *m = filp->private_data;
5637         struct trace_array *tr = m->private;
5638         char buf[64];
5639         const char *clockstr;
5640         int ret;
5641
5642         if (cnt >= sizeof(buf))
5643                 return -EINVAL;
5644
5645         if (copy_from_user(buf, ubuf, cnt))
5646                 return -EFAULT;
5647
5648         buf[cnt] = 0;
5649
5650         clockstr = strstrip(buf);
5651
5652         ret = tracing_set_clock(tr, clockstr);
5653         if (ret)
5654                 return ret;
5655
5656         *fpos += cnt;
5657
5658         return cnt;
5659 }
5660
5661 static int tracing_clock_open(struct inode *inode, struct file *file)
5662 {
5663         struct trace_array *tr = inode->i_private;
5664         int ret;
5665
5666         if (tracing_disabled)
5667                 return -ENODEV;
5668
5669         if (trace_array_get(tr))
5670                 return -ENODEV;
5671
5672         ret = single_open(file, tracing_clock_show, inode->i_private);
5673         if (ret < 0)
5674                 trace_array_put(tr);
5675
5676         return ret;
5677 }
5678
5679 struct ftrace_buffer_info {
5680         struct trace_iterator   iter;
5681         void                    *spare;
5682         unsigned int            read;
5683 };
5684
5685 #ifdef CONFIG_TRACER_SNAPSHOT
5686 static int tracing_snapshot_open(struct inode *inode, struct file *file)
5687 {
5688         struct trace_array *tr = inode->i_private;
5689         struct trace_iterator *iter;
5690         struct seq_file *m;
5691         int ret = 0;
5692
5693         if (trace_array_get(tr) < 0)
5694                 return -ENODEV;
5695
5696         if (file->f_mode & FMODE_READ) {
5697                 iter = __tracing_open(inode, file, true);
5698                 if (IS_ERR(iter))
5699                         ret = PTR_ERR(iter);
5700         } else {
5701                 /* Writes still need the seq_file to hold the private data */
5702                 ret = -ENOMEM;
5703                 m = kzalloc(sizeof(*m), GFP_KERNEL);
5704                 if (!m)
5705                         goto out;
5706                 iter = kzalloc(sizeof(*iter), GFP_KERNEL);
5707                 if (!iter) {
5708                         kfree(m);
5709                         goto out;
5710                 }
5711                 ret = 0;
5712
5713                 iter->tr = tr;
5714                 iter->trace_buffer = &tr->max_buffer;
5715                 iter->cpu_file = tracing_get_cpu(inode);
5716                 m->private = iter;
5717                 file->private_data = m;
5718         }
5719 out:
5720         if (ret < 0)
5721                 trace_array_put(tr);
5722
5723         return ret;
5724 }
5725
5726 static ssize_t
5727 tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
5728                        loff_t *ppos)
5729 {
5730         struct seq_file *m = filp->private_data;
5731         struct trace_iterator *iter = m->private;
5732         struct trace_array *tr = iter->tr;
5733         unsigned long val;
5734         int ret;
5735
5736         ret = tracing_update_buffers();
5737         if (ret < 0)
5738                 return ret;
5739
5740         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5741         if (ret)
5742                 return ret;
5743
5744         mutex_lock(&trace_types_lock);
5745
5746         if (tr->current_trace->use_max_tr) {
5747                 ret = -EBUSY;
5748                 goto out;
5749         }
5750
5751         switch (val) {
5752         case 0:
5753                 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
5754                         ret = -EINVAL;
5755                         break;
5756                 }
5757                 if (tr->allocated_snapshot)
5758                         free_snapshot(tr);
5759                 break;
5760         case 1:
5761 /* Only allow per-cpu swap if the ring buffer supports it */
5762 #ifndef CONFIG_RING_BUFFER_ALLOW_SWAP
5763                 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
5764                         ret = -EINVAL;
5765                         break;
5766                 }
5767 #endif
5768                 if (!tr->allocated_snapshot) {
5769                         ret = alloc_snapshot(tr);
5770                         if (ret < 0)
5771                                 break;
5772                 }
5773                 local_irq_disable();
5774                 /* Now, we're going to swap */
5775                 if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
5776                         update_max_tr(tr, current, smp_processor_id());
5777                 else
5778                         update_max_tr_single(tr, current, iter->cpu_file);
5779                 local_irq_enable();
5780                 break;
5781         default:
5782                 if (tr->allocated_snapshot) {
5783                         if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
5784                                 tracing_reset_online_cpus(&tr->max_buffer);
5785                         else
5786                                 tracing_reset(&tr->max_buffer, iter->cpu_file);
5787                 }
5788                 break;
5789         }
5790
5791         if (ret >= 0) {
5792                 *ppos += cnt;
5793                 ret = cnt;
5794         }
5795 out:
5796         mutex_unlock(&trace_types_lock);
5797         return ret;
5798 }
5799
5800 static int tracing_snapshot_release(struct inode *inode, struct file *file)
5801 {
5802         struct seq_file *m = file->private_data;
5803         int ret;
5804
5805         ret = tracing_release(inode, file);
5806
5807         if (file->f_mode & FMODE_READ)
5808                 return ret;
5809
5810         /* If write only, the seq_file is just a stub */
5811         if (m)
5812                 kfree(m->private);
5813         kfree(m);
5814
5815         return 0;
5816 }
5817
5818 static int tracing_buffers_open(struct inode *inode, struct file *filp);
5819 static ssize_t tracing_buffers_read(struct file *filp, char __user *ubuf,
5820                                     size_t count, loff_t *ppos);
5821 static int tracing_buffers_release(struct inode *inode, struct file *file);
5822 static ssize_t tracing_buffers_splice_read(struct file *file, loff_t *ppos,
5823                    struct pipe_inode_info *pipe, size_t len, unsigned int flags);
5824
5825 static int snapshot_raw_open(struct inode *inode, struct file *filp)
5826 {
5827         struct ftrace_buffer_info *info;
5828         int ret;
5829
5830         ret = tracing_buffers_open(inode, filp);
5831         if (ret < 0)
5832                 return ret;
5833
5834         info = filp->private_data;
5835
5836         if (info->iter.trace->use_max_tr) {
5837                 tracing_buffers_release(inode, filp);
5838                 return -EBUSY;
5839         }
5840
5841         info->iter.snapshot = true;
5842         info->iter.trace_buffer = &info->iter.tr->max_buffer;
5843
5844         return ret;
5845 }
5846
5847 #endif /* CONFIG_TRACER_SNAPSHOT */
5848
5849
5850 static const struct file_operations tracing_thresh_fops = {
5851         .open           = tracing_open_generic,
5852         .read           = tracing_thresh_read,
5853         .write          = tracing_thresh_write,
5854         .llseek         = generic_file_llseek,
5855 };
5856
5857 #ifdef CONFIG_TRACER_MAX_TRACE
5858 static const struct file_operations tracing_max_lat_fops = {
5859         .open           = tracing_open_generic,
5860         .read           = tracing_max_lat_read,
5861         .write          = tracing_max_lat_write,
5862         .llseek         = generic_file_llseek,
5863 };
5864 #endif
5865
5866 static const struct file_operations set_tracer_fops = {
5867         .open           = tracing_open_generic,
5868         .read           = tracing_set_trace_read,
5869         .write          = tracing_set_trace_write,
5870         .llseek         = generic_file_llseek,
5871 };
5872
5873 static const struct file_operations tracing_pipe_fops = {
5874         .open           = tracing_open_pipe,
5875         .poll           = tracing_poll_pipe,
5876         .read           = tracing_read_pipe,
5877         .splice_read    = tracing_splice_read_pipe,
5878         .release        = tracing_release_pipe,
5879         .llseek         = no_llseek,
5880 };
5881
5882 static const struct file_operations tracing_entries_fops = {
5883         .open           = tracing_open_generic_tr,
5884         .read           = tracing_entries_read,
5885         .write          = tracing_entries_write,
5886         .llseek         = generic_file_llseek,
5887         .release        = tracing_release_generic_tr,
5888 };
5889
5890 static const struct file_operations tracing_total_entries_fops = {
5891         .open           = tracing_open_generic_tr,
5892         .read           = tracing_total_entries_read,
5893         .llseek         = generic_file_llseek,
5894         .release        = tracing_release_generic_tr,
5895 };
5896
5897 static const struct file_operations tracing_free_buffer_fops = {
5898         .open           = tracing_open_generic_tr,
5899         .write          = tracing_free_buffer_write,
5900         .release        = tracing_free_buffer_release,
5901 };
5902
5903 static const struct file_operations tracing_mark_fops = {
5904         .open           = tracing_open_generic_tr,
5905         .write          = tracing_mark_write,
5906         .llseek         = generic_file_llseek,
5907         .release        = tracing_release_generic_tr,
5908 };
5909
5910 static const struct file_operations trace_clock_fops = {
5911         .open           = tracing_clock_open,
5912         .read           = seq_read,
5913         .llseek         = seq_lseek,
5914         .release        = tracing_single_release_tr,
5915         .write          = tracing_clock_write,
5916 };
5917
5918 #ifdef CONFIG_TRACER_SNAPSHOT
5919 static const struct file_operations snapshot_fops = {
5920         .open           = tracing_snapshot_open,
5921         .read           = seq_read,
5922         .write          = tracing_snapshot_write,
5923         .llseek         = tracing_lseek,
5924         .release        = tracing_snapshot_release,
5925 };
5926
5927 static const struct file_operations snapshot_raw_fops = {
5928         .open           = snapshot_raw_open,
5929         .read           = tracing_buffers_read,
5930         .release        = tracing_buffers_release,
5931         .splice_read    = tracing_buffers_splice_read,
5932         .llseek         = no_llseek,
5933 };
5934
5935 #endif /* CONFIG_TRACER_SNAPSHOT */
5936
5937 static int tracing_buffers_open(struct inode *inode, struct file *filp)
5938 {
5939         struct trace_array *tr = inode->i_private;
5940         struct ftrace_buffer_info *info;
5941         int ret;
5942
5943         if (tracing_disabled)
5944                 return -ENODEV;
5945
5946         if (trace_array_get(tr) < 0)
5947                 return -ENODEV;
5948
5949         info = kzalloc(sizeof(*info), GFP_KERNEL);
5950         if (!info) {
5951                 trace_array_put(tr);
5952                 return -ENOMEM;
5953         }
5954
5955         mutex_lock(&trace_types_lock);
5956
5957         info->iter.tr           = tr;
5958         info->iter.cpu_file     = tracing_get_cpu(inode);
5959         info->iter.trace        = tr->current_trace;
5960         info->iter.trace_buffer = &tr->trace_buffer;
5961         info->spare             = NULL;
5962         /* Force reading ring buffer for first read */
5963         info->read              = (unsigned int)-1;
5964
5965         filp->private_data = info;
5966
5967         tr->current_trace->ref++;
5968
5969         mutex_unlock(&trace_types_lock);
5970
5971         ret = nonseekable_open(inode, filp);
5972         if (ret < 0)
5973                 trace_array_put(tr);
5974
5975         return ret;
5976 }
5977
5978 static unsigned int
5979 tracing_buffers_poll(struct file *filp, poll_table *poll_table)
5980 {
5981         struct ftrace_buffer_info *info = filp->private_data;
5982         struct trace_iterator *iter = &info->iter;
5983
5984         return trace_poll(iter, filp, poll_table);
5985 }
5986
5987 static ssize_t
5988 tracing_buffers_read(struct file *filp, char __user *ubuf,
5989                      size_t count, loff_t *ppos)
5990 {
5991         struct ftrace_buffer_info *info = filp->private_data;
5992         struct trace_iterator *iter = &info->iter;
5993         ssize_t ret;
5994         ssize_t size;
5995
5996         if (!count)
5997                 return 0;
5998
5999 #ifdef CONFIG_TRACER_MAX_TRACE
6000         if (iter->snapshot && iter->tr->current_trace->use_max_tr)
6001                 return -EBUSY;
6002 #endif
6003
6004         if (!info->spare)
6005                 info->spare = ring_buffer_alloc_read_page(iter->trace_buffer->buffer,
6006                                                           iter->cpu_file);
6007         if (!info->spare)
6008                 return -ENOMEM;
6009
6010         /* Do we have previous read data to read? */
6011         if (info->read < PAGE_SIZE)
6012                 goto read;
6013
6014  again:
6015         trace_access_lock(iter->cpu_file);
6016         ret = ring_buffer_read_page(iter->trace_buffer->buffer,
6017                                     &info->spare,
6018                                     count,
6019                                     iter->cpu_file, 0);
6020         trace_access_unlock(iter->cpu_file);
6021
6022         if (ret < 0) {
6023                 if (trace_empty(iter)) {
6024                         if ((filp->f_flags & O_NONBLOCK))
6025                                 return -EAGAIN;
6026
6027                         ret = wait_on_pipe(iter, false);
6028                         if (ret)
6029                                 return ret;
6030
6031                         goto again;
6032                 }
6033                 return 0;
6034         }
6035
6036         info->read = 0;
6037  read:
6038         size = PAGE_SIZE - info->read;
6039         if (size > count)
6040                 size = count;
6041
6042         ret = copy_to_user(ubuf, info->spare + info->read, size);
6043         if (ret == size)
6044                 return -EFAULT;
6045
6046         size -= ret;
6047
6048         *ppos += size;
6049         info->read += size;
6050
6051         return size;
6052 }
6053
6054 static int tracing_buffers_release(struct inode *inode, struct file *file)
6055 {
6056         struct ftrace_buffer_info *info = file->private_data;
6057         struct trace_iterator *iter = &info->iter;
6058
6059         mutex_lock(&trace_types_lock);
6060
6061         iter->tr->current_trace->ref--;
6062
6063         __trace_array_put(iter->tr);
6064
6065         if (info->spare)
6066                 ring_buffer_free_read_page(iter->trace_buffer->buffer, info->spare);
6067         kfree(info);
6068
6069         mutex_unlock(&trace_types_lock);
6070
6071         return 0;
6072 }
6073
6074 struct buffer_ref {
6075         struct ring_buffer      *buffer;
6076         void                    *page;
6077         int                     ref;
6078 };
6079
6080 static void buffer_pipe_buf_release(struct pipe_inode_info *pipe,
6081                                     struct pipe_buffer *buf)
6082 {
6083         struct buffer_ref *ref = (struct buffer_ref *)buf->private;
6084
6085         if (--ref->ref)
6086                 return;
6087
6088         ring_buffer_free_read_page(ref->buffer, ref->page);
6089         kfree(ref);
6090         buf->private = 0;
6091 }
6092
6093 static void buffer_pipe_buf_get(struct pipe_inode_info *pipe,
6094                                 struct pipe_buffer *buf)
6095 {
6096         struct buffer_ref *ref = (struct buffer_ref *)buf->private;
6097
6098         ref->ref++;
6099 }
6100
6101 /* Pipe buffer operations for a buffer. */
6102 static const struct pipe_buf_operations buffer_pipe_buf_ops = {
6103         .can_merge              = 0,
6104         .confirm                = generic_pipe_buf_confirm,
6105         .release                = buffer_pipe_buf_release,
6106         .steal                  = generic_pipe_buf_steal,
6107         .get                    = buffer_pipe_buf_get,
6108 };
6109
6110 /*
6111  * Callback from splice_to_pipe(), if we need to release some pages
6112  * at the end of the spd in case we error'ed out in filling the pipe.
6113  */
6114 static void buffer_spd_release(struct splice_pipe_desc *spd, unsigned int i)
6115 {
6116         struct buffer_ref *ref =
6117                 (struct buffer_ref *)spd->partial[i].private;
6118
6119         if (--ref->ref)
6120                 return;
6121
6122         ring_buffer_free_read_page(ref->buffer, ref->page);
6123         kfree(ref);
6124         spd->partial[i].private = 0;
6125 }
6126
6127 static ssize_t
6128 tracing_buffers_splice_read(struct file *file, loff_t *ppos,
6129                             struct pipe_inode_info *pipe, size_t len,
6130                             unsigned int flags)
6131 {
6132         struct ftrace_buffer_info *info = file->private_data;
6133         struct trace_iterator *iter = &info->iter;
6134         struct partial_page partial_def[PIPE_DEF_BUFFERS];
6135         struct page *pages_def[PIPE_DEF_BUFFERS];
6136         struct splice_pipe_desc spd = {
6137                 .pages          = pages_def,
6138                 .partial        = partial_def,
6139                 .nr_pages_max   = PIPE_DEF_BUFFERS,
6140                 .flags          = flags,
6141                 .ops            = &buffer_pipe_buf_ops,
6142                 .spd_release    = buffer_spd_release,
6143         };
6144         struct buffer_ref *ref;
6145         int entries, size, i;
6146         ssize_t ret = 0;
6147
6148 #ifdef CONFIG_TRACER_MAX_TRACE
6149         if (iter->snapshot && iter->tr->current_trace->use_max_tr)
6150                 return -EBUSY;
6151 #endif
6152
6153         if (splice_grow_spd(pipe, &spd))
6154                 return -ENOMEM;
6155
6156         if (*ppos & (PAGE_SIZE - 1))
6157                 return -EINVAL;
6158
6159         if (len & (PAGE_SIZE - 1)) {
6160                 if (len < PAGE_SIZE)
6161                         return -EINVAL;
6162                 len &= PAGE_MASK;
6163         }
6164
6165  again:
6166         trace_access_lock(iter->cpu_file);
6167         entries = ring_buffer_entries_cpu(iter->trace_buffer->buffer, iter->cpu_file);
6168
6169         for (i = 0; i < spd.nr_pages_max && len && entries; i++, len -= PAGE_SIZE) {
6170                 struct page *page;
6171                 int r;
6172
6173                 ref = kzalloc(sizeof(*ref), GFP_KERNEL);
6174                 if (!ref) {
6175                         ret = -ENOMEM;
6176                         break;
6177                 }
6178
6179                 ref->ref = 1;
6180                 ref->buffer = iter->trace_buffer->buffer;
6181                 ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file);
6182                 if (!ref->page) {
6183                         ret = -ENOMEM;
6184                         kfree(ref);
6185                         break;
6186                 }
6187
6188                 r = ring_buffer_read_page(ref->buffer, &ref->page,
6189                                           len, iter->cpu_file, 1);
6190                 if (r < 0) {
6191                         ring_buffer_free_read_page(ref->buffer, ref->page);
6192                         kfree(ref);
6193                         break;
6194                 }
6195
6196                 /*
6197                  * zero out any left over data, this is going to
6198                  * user land.
6199                  */
6200                 size = ring_buffer_page_len(ref->page);
6201                 if (size < PAGE_SIZE)
6202                         memset(ref->page + size, 0, PAGE_SIZE - size);
6203
6204                 page = virt_to_page(ref->page);
6205
6206                 spd.pages[i] = page;
6207                 spd.partial[i].len = PAGE_SIZE;
6208                 spd.partial[i].offset = 0;
6209                 spd.partial[i].private = (unsigned long)ref;
6210                 spd.nr_pages++;
6211                 *ppos += PAGE_SIZE;
6212
6213                 entries = ring_buffer_entries_cpu(iter->trace_buffer->buffer, iter->cpu_file);
6214         }
6215
6216         trace_access_unlock(iter->cpu_file);
6217         spd.nr_pages = i;
6218
6219         /* did we read anything? */
6220         if (!spd.nr_pages) {
6221                 if (ret)
6222                         return ret;
6223
6224                 if ((file->f_flags & O_NONBLOCK) || (flags & SPLICE_F_NONBLOCK))
6225                         return -EAGAIN;
6226
6227                 ret = wait_on_pipe(iter, true);
6228                 if (ret)
6229                         return ret;
6230
6231                 goto again;
6232         }
6233
6234         ret = splice_to_pipe(pipe, &spd);
6235         splice_shrink_spd(&spd);
6236
6237         return ret;
6238 }
6239
6240 static const struct file_operations tracing_buffers_fops = {
6241         .open           = tracing_buffers_open,
6242         .read           = tracing_buffers_read,
6243         .poll           = tracing_buffers_poll,
6244         .release        = tracing_buffers_release,
6245         .splice_read    = tracing_buffers_splice_read,
6246         .llseek         = no_llseek,
6247 };
6248
6249 static ssize_t
6250 tracing_stats_read(struct file *filp, char __user *ubuf,
6251                    size_t count, loff_t *ppos)
6252 {
6253         struct inode *inode = file_inode(filp);
6254         struct trace_array *tr = inode->i_private;
6255         struct trace_buffer *trace_buf = &tr->trace_buffer;
6256         int cpu = tracing_get_cpu(inode);
6257         struct trace_seq *s;
6258         unsigned long cnt;
6259         unsigned long long t;
6260         unsigned long usec_rem;
6261
6262         s = kmalloc(sizeof(*s), GFP_KERNEL);
6263         if (!s)
6264                 return -ENOMEM;
6265
6266         trace_seq_init(s);
6267
6268         cnt = ring_buffer_entries_cpu(trace_buf->buffer, cpu);
6269         trace_seq_printf(s, "entries: %ld\n", cnt);
6270
6271         cnt = ring_buffer_overrun_cpu(trace_buf->buffer, cpu);
6272         trace_seq_printf(s, "overrun: %ld\n", cnt);
6273
6274         cnt = ring_buffer_commit_overrun_cpu(trace_buf->buffer, cpu);
6275         trace_seq_printf(s, "commit overrun: %ld\n", cnt);
6276
6277         cnt = ring_buffer_bytes_cpu(trace_buf->buffer, cpu);
6278         trace_seq_printf(s, "bytes: %ld\n", cnt);
6279
6280         if (trace_clocks[tr->clock_id].in_ns) {
6281                 /* local or global for trace_clock */
6282                 t = ns2usecs(ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
6283                 usec_rem = do_div(t, USEC_PER_SEC);
6284                 trace_seq_printf(s, "oldest event ts: %5llu.%06lu\n",
6285                                                                 t, usec_rem);
6286
6287                 t = ns2usecs(ring_buffer_time_stamp(trace_buf->buffer, cpu));
6288                 usec_rem = do_div(t, USEC_PER_SEC);
6289                 trace_seq_printf(s, "now ts: %5llu.%06lu\n", t, usec_rem);
6290         } else {
6291                 /* counter or tsc mode for trace_clock */
6292                 trace_seq_printf(s, "oldest event ts: %llu\n",
6293                                 ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
6294
6295                 trace_seq_printf(s, "now ts: %llu\n",
6296                                 ring_buffer_time_stamp(trace_buf->buffer, cpu));
6297         }
6298
6299         cnt = ring_buffer_dropped_events_cpu(trace_buf->buffer, cpu);
6300         trace_seq_printf(s, "dropped events: %ld\n", cnt);
6301
6302         cnt = ring_buffer_read_events_cpu(trace_buf->buffer, cpu);
6303         trace_seq_printf(s, "read events: %ld\n", cnt);
6304
6305         count = simple_read_from_buffer(ubuf, count, ppos,
6306                                         s->buffer, trace_seq_used(s));
6307
6308         kfree(s);
6309
6310         return count;
6311 }
6312
6313 static const struct file_operations tracing_stats_fops = {
6314         .open           = tracing_open_generic_tr,
6315         .read           = tracing_stats_read,
6316         .llseek         = generic_file_llseek,
6317         .release        = tracing_release_generic_tr,
6318 };
6319
6320 #ifdef CONFIG_DYNAMIC_FTRACE
6321
6322 int __weak ftrace_arch_read_dyn_info(char *buf, int size)
6323 {
6324         return 0;
6325 }
6326
6327 static ssize_t
6328 tracing_read_dyn_info(struct file *filp, char __user *ubuf,
6329                   size_t cnt, loff_t *ppos)
6330 {
6331         static char ftrace_dyn_info_buffer[1024];
6332         static DEFINE_MUTEX(dyn_info_mutex);
6333         unsigned long *p = filp->private_data;
6334         char *buf = ftrace_dyn_info_buffer;
6335         int size = ARRAY_SIZE(ftrace_dyn_info_buffer);
6336         int r;
6337
6338         mutex_lock(&dyn_info_mutex);
6339         r = sprintf(buf, "%ld ", *p);
6340
6341         r += ftrace_arch_read_dyn_info(buf+r, (size-1)-r);
6342         buf[r++] = '\n';
6343
6344         r = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6345
6346         mutex_unlock(&dyn_info_mutex);
6347
6348         return r;
6349 }
6350
6351 static const struct file_operations tracing_dyn_info_fops = {
6352         .open           = tracing_open_generic,
6353         .read           = tracing_read_dyn_info,
6354         .llseek         = generic_file_llseek,
6355 };
6356 #endif /* CONFIG_DYNAMIC_FTRACE */
6357
6358 #if defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE)
6359 static void
6360 ftrace_snapshot(unsigned long ip, unsigned long parent_ip, void **data)
6361 {
6362         tracing_snapshot();
6363 }
6364
6365 static void
6366 ftrace_count_snapshot(unsigned long ip, unsigned long parent_ip, void **data)
6367 {
6368         unsigned long *count = (long *)data;
6369
6370         if (!*count)
6371                 return;
6372
6373         if (*count != -1)
6374                 (*count)--;
6375
6376         tracing_snapshot();
6377 }
6378
6379 static int
6380 ftrace_snapshot_print(struct seq_file *m, unsigned long ip,
6381                       struct ftrace_probe_ops *ops, void *data)
6382 {
6383         long count = (long)data;
6384
6385         seq_printf(m, "%ps:", (void *)ip);
6386
6387         seq_puts(m, "snapshot");
6388
6389         if (count == -1)
6390                 seq_puts(m, ":unlimited\n");
6391         else
6392                 seq_printf(m, ":count=%ld\n", count);
6393
6394         return 0;
6395 }
6396
6397 static struct ftrace_probe_ops snapshot_probe_ops = {
6398         .func                   = ftrace_snapshot,
6399         .print                  = ftrace_snapshot_print,
6400 };
6401
6402 static struct ftrace_probe_ops snapshot_count_probe_ops = {
6403         .func                   = ftrace_count_snapshot,
6404         .print                  = ftrace_snapshot_print,
6405 };
6406
6407 static int
6408 ftrace_trace_snapshot_callback(struct ftrace_hash *hash,
6409                                char *glob, char *cmd, char *param, int enable)
6410 {
6411         struct ftrace_probe_ops *ops;
6412         void *count = (void *)-1;
6413         char *number;
6414         int ret;
6415
6416         /* hash funcs only work with set_ftrace_filter */
6417         if (!enable)
6418                 return -EINVAL;
6419
6420         ops = param ? &snapshot_count_probe_ops :  &snapshot_probe_ops;
6421
6422         if (glob[0] == '!') {
6423                 unregister_ftrace_function_probe_func(glob+1, ops);
6424                 return 0;
6425         }
6426
6427         if (!param)
6428                 goto out_reg;
6429
6430         number = strsep(&param, ":");
6431
6432         if (!strlen(number))
6433                 goto out_reg;
6434
6435         /*
6436          * We use the callback data field (which is a pointer)
6437          * as our counter.
6438          */
6439         ret = kstrtoul(number, 0, (unsigned long *)&count);
6440         if (ret)
6441                 return ret;
6442
6443  out_reg:
6444         ret = register_ftrace_function_probe(glob, ops, count);
6445
6446         if (ret >= 0)
6447                 alloc_snapshot(&global_trace);
6448
6449         return ret < 0 ? ret : 0;
6450 }
6451
6452 static struct ftrace_func_command ftrace_snapshot_cmd = {
6453         .name                   = "snapshot",
6454         .func                   = ftrace_trace_snapshot_callback,
6455 };
6456
6457 static __init int register_snapshot_cmd(void)
6458 {
6459         return register_ftrace_command(&ftrace_snapshot_cmd);
6460 }
6461 #else
6462 static inline __init int register_snapshot_cmd(void) { return 0; }
6463 #endif /* defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE) */
6464
6465 static struct dentry *tracing_get_dentry(struct trace_array *tr)
6466 {
6467         if (WARN_ON(!tr->dir))
6468                 return ERR_PTR(-ENODEV);
6469
6470         /* Top directory uses NULL as the parent */
6471         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
6472                 return NULL;
6473
6474         /* All sub buffers have a descriptor */
6475         return tr->dir;
6476 }
6477
6478 static struct dentry *tracing_dentry_percpu(struct trace_array *tr, int cpu)
6479 {
6480         struct dentry *d_tracer;
6481
6482         if (tr->percpu_dir)
6483                 return tr->percpu_dir;
6484
6485         d_tracer = tracing_get_dentry(tr);
6486         if (IS_ERR(d_tracer))
6487                 return NULL;
6488
6489         tr->percpu_dir = tracefs_create_dir("per_cpu", d_tracer);
6490
6491         WARN_ONCE(!tr->percpu_dir,
6492                   "Could not create tracefs directory 'per_cpu/%d'\n", cpu);
6493
6494         return tr->percpu_dir;
6495 }
6496
6497 static struct dentry *
6498 trace_create_cpu_file(const char *name, umode_t mode, struct dentry *parent,
6499                       void *data, long cpu, const struct file_operations *fops)
6500 {
6501         struct dentry *ret = trace_create_file(name, mode, parent, data, fops);
6502
6503         if (ret) /* See tracing_get_cpu() */
6504                 d_inode(ret)->i_cdev = (void *)(cpu + 1);
6505         return ret;
6506 }
6507
6508 static void
6509 tracing_init_tracefs_percpu(struct trace_array *tr, long cpu)
6510 {
6511         struct dentry *d_percpu = tracing_dentry_percpu(tr, cpu);
6512         struct dentry *d_cpu;
6513         char cpu_dir[30]; /* 30 characters should be more than enough */
6514
6515         if (!d_percpu)
6516                 return;
6517
6518         snprintf(cpu_dir, 30, "cpu%ld", cpu);
6519         d_cpu = tracefs_create_dir(cpu_dir, d_percpu);
6520         if (!d_cpu) {
6521                 pr_warn("Could not create tracefs '%s' entry\n", cpu_dir);
6522                 return;
6523         }
6524
6525         /* per cpu trace_pipe */
6526         trace_create_cpu_file("trace_pipe", 0444, d_cpu,
6527                                 tr, cpu, &tracing_pipe_fops);
6528
6529         /* per cpu trace */
6530         trace_create_cpu_file("trace", 0644, d_cpu,
6531                                 tr, cpu, &tracing_fops);
6532
6533         trace_create_cpu_file("trace_pipe_raw", 0444, d_cpu,
6534                                 tr, cpu, &tracing_buffers_fops);
6535
6536         trace_create_cpu_file("stats", 0444, d_cpu,
6537                                 tr, cpu, &tracing_stats_fops);
6538
6539         trace_create_cpu_file("buffer_size_kb", 0444, d_cpu,
6540                                 tr, cpu, &tracing_entries_fops);
6541
6542 #ifdef CONFIG_TRACER_SNAPSHOT
6543         trace_create_cpu_file("snapshot", 0644, d_cpu,
6544                                 tr, cpu, &snapshot_fops);
6545
6546         trace_create_cpu_file("snapshot_raw", 0444, d_cpu,
6547                                 tr, cpu, &snapshot_raw_fops);
6548 #endif
6549 }
6550
6551 #ifdef CONFIG_FTRACE_SELFTEST
6552 /* Let selftest have access to static functions in this file */
6553 #include "trace_selftest.c"
6554 #endif
6555
6556 static ssize_t
6557 trace_options_read(struct file *filp, char __user *ubuf, size_t cnt,
6558                         loff_t *ppos)
6559 {
6560         struct trace_option_dentry *topt = filp->private_data;
6561         char *buf;
6562
6563         if (topt->flags->val & topt->opt->bit)
6564                 buf = "1\n";
6565         else
6566                 buf = "0\n";
6567
6568         return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
6569 }
6570
6571 static ssize_t
6572 trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
6573                          loff_t *ppos)
6574 {
6575         struct trace_option_dentry *topt = filp->private_data;
6576         unsigned long val;
6577         int ret;
6578
6579         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6580         if (ret)
6581                 return ret;
6582
6583         if (val != 0 && val != 1)
6584                 return -EINVAL;
6585
6586         if (!!(topt->flags->val & topt->opt->bit) != val) {
6587                 mutex_lock(&trace_types_lock);
6588                 ret = __set_tracer_option(topt->tr, topt->flags,
6589                                           topt->opt, !val);
6590                 mutex_unlock(&trace_types_lock);
6591                 if (ret)
6592                         return ret;
6593         }
6594
6595         *ppos += cnt;
6596
6597         return cnt;
6598 }
6599
6600
6601 static const struct file_operations trace_options_fops = {
6602         .open = tracing_open_generic,
6603         .read = trace_options_read,
6604         .write = trace_options_write,
6605         .llseek = generic_file_llseek,
6606 };
6607
6608 /*
6609  * In order to pass in both the trace_array descriptor as well as the index
6610  * to the flag that the trace option file represents, the trace_array
6611  * has a character array of trace_flags_index[], which holds the index
6612  * of the bit for the flag it represents. index[0] == 0, index[1] == 1, etc.
6613  * The address of this character array is passed to the flag option file
6614  * read/write callbacks.
6615  *
6616  * In order to extract both the index and the trace_array descriptor,
6617  * get_tr_index() uses the following algorithm.
6618  *
6619  *   idx = *ptr;
6620  *
6621  * As the pointer itself contains the address of the index (remember
6622  * index[1] == 1).
6623  *
6624  * Then to get the trace_array descriptor, by subtracting that index
6625  * from the ptr, we get to the start of the index itself.
6626  *
6627  *   ptr - idx == &index[0]
6628  *
6629  * Then a simple container_of() from that pointer gets us to the
6630  * trace_array descriptor.
6631  */
6632 static void get_tr_index(void *data, struct trace_array **ptr,
6633                          unsigned int *pindex)
6634 {
6635         *pindex = *(unsigned char *)data;
6636
6637         *ptr = container_of(data - *pindex, struct trace_array,
6638                             trace_flags_index);
6639 }
6640
6641 static ssize_t
6642 trace_options_core_read(struct file *filp, char __user *ubuf, size_t cnt,
6643                         loff_t *ppos)
6644 {
6645         void *tr_index = filp->private_data;
6646         struct trace_array *tr;
6647         unsigned int index;
6648         char *buf;
6649
6650         get_tr_index(tr_index, &tr, &index);
6651
6652         if (tr->trace_flags & (1 << index))
6653                 buf = "1\n";
6654         else
6655                 buf = "0\n";
6656
6657         return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
6658 }
6659
6660 static ssize_t
6661 trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
6662                          loff_t *ppos)
6663 {
6664         void *tr_index = filp->private_data;
6665         struct trace_array *tr;
6666         unsigned int index;
6667         unsigned long val;
6668         int ret;
6669
6670         get_tr_index(tr_index, &tr, &index);
6671
6672         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6673         if (ret)
6674                 return ret;
6675
6676         if (val != 0 && val != 1)
6677                 return -EINVAL;
6678
6679         mutex_lock(&trace_types_lock);
6680         ret = set_tracer_flag(tr, 1 << index, val);
6681         mutex_unlock(&trace_types_lock);
6682
6683         if (ret < 0)
6684                 return ret;
6685
6686         *ppos += cnt;
6687
6688         return cnt;
6689 }
6690
6691 static const struct file_operations trace_options_core_fops = {
6692         .open = tracing_open_generic,
6693         .read = trace_options_core_read,
6694         .write = trace_options_core_write,
6695         .llseek = generic_file_llseek,
6696 };
6697
6698 struct dentry *trace_create_file(const char *name,
6699                                  umode_t mode,
6700                                  struct dentry *parent,
6701                                  void *data,
6702                                  const struct file_operations *fops)
6703 {
6704         struct dentry *ret;
6705
6706         ret = tracefs_create_file(name, mode, parent, data, fops);
6707         if (!ret)
6708                 pr_warn("Could not create tracefs '%s' entry\n", name);
6709
6710         return ret;
6711 }
6712
6713
6714 static struct dentry *trace_options_init_dentry(struct trace_array *tr)
6715 {
6716         struct dentry *d_tracer;
6717
6718         if (tr->options)
6719                 return tr->options;
6720
6721         d_tracer = tracing_get_dentry(tr);
6722         if (IS_ERR(d_tracer))
6723                 return NULL;
6724
6725         tr->options = tracefs_create_dir("options", d_tracer);
6726         if (!tr->options) {
6727                 pr_warn("Could not create tracefs directory 'options'\n");
6728                 return NULL;
6729         }
6730
6731         return tr->options;
6732 }
6733
6734 static void
6735 create_trace_option_file(struct trace_array *tr,
6736                          struct trace_option_dentry *topt,
6737                          struct tracer_flags *flags,
6738                          struct tracer_opt *opt)
6739 {
6740         struct dentry *t_options;
6741
6742         t_options = trace_options_init_dentry(tr);
6743         if (!t_options)
6744                 return;
6745
6746         topt->flags = flags;
6747         topt->opt = opt;
6748         topt->tr = tr;
6749
6750         topt->entry = trace_create_file(opt->name, 0644, t_options, topt,
6751                                     &trace_options_fops);
6752
6753 }
6754
6755 static void
6756 create_trace_option_files(struct trace_array *tr, struct tracer *tracer)
6757 {
6758         struct trace_option_dentry *topts;
6759         struct trace_options *tr_topts;
6760         struct tracer_flags *flags;
6761         struct tracer_opt *opts;
6762         int cnt;
6763         int i;
6764
6765         if (!tracer)
6766                 return;
6767
6768         flags = tracer->flags;
6769
6770         if (!flags || !flags->opts)
6771                 return;
6772
6773         /*
6774          * If this is an instance, only create flags for tracers
6775          * the instance may have.
6776          */
6777         if (!trace_ok_for_array(tracer, tr))
6778                 return;
6779
6780         for (i = 0; i < tr->nr_topts; i++) {
6781                 /* Make sure there's no duplicate flags. */
6782                 if (WARN_ON_ONCE(tr->topts[i].tracer->flags == tracer->flags))
6783                         return;
6784         }
6785
6786         opts = flags->opts;
6787
6788         for (cnt = 0; opts[cnt].name; cnt++)
6789                 ;
6790
6791         topts = kcalloc(cnt + 1, sizeof(*topts), GFP_KERNEL);
6792         if (!topts)
6793                 return;
6794
6795         tr_topts = krealloc(tr->topts, sizeof(*tr->topts) * (tr->nr_topts + 1),
6796                             GFP_KERNEL);
6797         if (!tr_topts) {
6798                 kfree(topts);
6799                 return;
6800         }
6801
6802         tr->topts = tr_topts;
6803         tr->topts[tr->nr_topts].tracer = tracer;
6804         tr->topts[tr->nr_topts].topts = topts;
6805         tr->nr_topts++;
6806
6807         for (cnt = 0; opts[cnt].name; cnt++) {
6808                 create_trace_option_file(tr, &topts[cnt], flags,
6809                                          &opts[cnt]);
6810                 WARN_ONCE(topts[cnt].entry == NULL,
6811                           "Failed to create trace option: %s",
6812                           opts[cnt].name);
6813         }
6814 }
6815
6816 static struct dentry *
6817 create_trace_option_core_file(struct trace_array *tr,
6818                               const char *option, long index)
6819 {
6820         struct dentry *t_options;
6821
6822         t_options = trace_options_init_dentry(tr);
6823         if (!t_options)
6824                 return NULL;
6825
6826         return trace_create_file(option, 0644, t_options,
6827                                  (void *)&tr->trace_flags_index[index],
6828                                  &trace_options_core_fops);
6829 }
6830
6831 static void create_trace_options_dir(struct trace_array *tr)
6832 {
6833         struct dentry *t_options;
6834         bool top_level = tr == &global_trace;
6835         int i;
6836
6837         t_options = trace_options_init_dentry(tr);
6838         if (!t_options)
6839                 return;
6840
6841         for (i = 0; trace_options[i]; i++) {
6842                 if (top_level ||
6843                     !((1 << i) & TOP_LEVEL_TRACE_FLAGS))
6844                         create_trace_option_core_file(tr, trace_options[i], i);
6845         }
6846 }
6847
6848 static ssize_t
6849 rb_simple_read(struct file *filp, char __user *ubuf,
6850                size_t cnt, loff_t *ppos)
6851 {
6852         struct trace_array *tr = filp->private_data;
6853         char buf[64];
6854         int r;
6855
6856         r = tracer_tracing_is_on(tr);
6857         r = sprintf(buf, "%d\n", r);
6858
6859         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6860 }
6861
6862 static ssize_t
6863 rb_simple_write(struct file *filp, const char __user *ubuf,
6864                 size_t cnt, loff_t *ppos)
6865 {
6866         struct trace_array *tr = filp->private_data;
6867         struct ring_buffer *buffer = tr->trace_buffer.buffer;
6868         unsigned long val;
6869         int ret;
6870
6871         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6872         if (ret)
6873                 return ret;
6874
6875         if (buffer) {
6876                 mutex_lock(&trace_types_lock);
6877                 if (val) {
6878                         tracer_tracing_on(tr);
6879                         if (tr->current_trace->start)
6880                                 tr->current_trace->start(tr);
6881                 } else {
6882                         tracer_tracing_off(tr);
6883                         if (tr->current_trace->stop)
6884                                 tr->current_trace->stop(tr);
6885                 }
6886                 mutex_unlock(&trace_types_lock);
6887         }
6888
6889         (*ppos)++;
6890
6891         return cnt;
6892 }
6893
6894 static const struct file_operations rb_simple_fops = {
6895         .open           = tracing_open_generic_tr,
6896         .read           = rb_simple_read,
6897         .write          = rb_simple_write,
6898         .release        = tracing_release_generic_tr,
6899         .llseek         = default_llseek,
6900 };
6901
6902 struct dentry *trace_instance_dir;
6903
6904 static void
6905 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer);
6906
6907 static int
6908 allocate_trace_buffer(struct trace_array *tr, struct trace_buffer *buf, int size)
6909 {
6910         enum ring_buffer_flags rb_flags;
6911
6912         rb_flags = tr->trace_flags & TRACE_ITER_OVERWRITE ? RB_FL_OVERWRITE : 0;
6913
6914         buf->tr = tr;
6915
6916         buf->buffer = ring_buffer_alloc(size, rb_flags);
6917         if (!buf->buffer)
6918                 return -ENOMEM;
6919
6920         buf->data = alloc_percpu(struct trace_array_cpu);
6921         if (!buf->data) {
6922                 ring_buffer_free(buf->buffer);
6923                 return -ENOMEM;
6924         }
6925
6926         /* Allocate the first page for all buffers */
6927         set_buffer_entries(&tr->trace_buffer,
6928                            ring_buffer_size(tr->trace_buffer.buffer, 0));
6929
6930         return 0;
6931 }
6932
6933 static int allocate_trace_buffers(struct trace_array *tr, int size)
6934 {
6935         int ret;
6936
6937         ret = allocate_trace_buffer(tr, &tr->trace_buffer, size);
6938         if (ret)
6939                 return ret;
6940
6941 #ifdef CONFIG_TRACER_MAX_TRACE
6942         ret = allocate_trace_buffer(tr, &tr->max_buffer,
6943                                     allocate_snapshot ? size : 1);
6944         if (WARN_ON(ret)) {
6945                 ring_buffer_free(tr->trace_buffer.buffer);
6946                 free_percpu(tr->trace_buffer.data);
6947                 return -ENOMEM;
6948         }
6949         tr->allocated_snapshot = allocate_snapshot;
6950
6951         /*
6952          * Only the top level trace array gets its snapshot allocated
6953          * from the kernel command line.
6954          */
6955         allocate_snapshot = false;
6956 #endif
6957         return 0;
6958 }
6959
6960 static void free_trace_buffer(struct trace_buffer *buf)
6961 {
6962         if (buf->buffer) {
6963                 ring_buffer_free(buf->buffer);
6964                 buf->buffer = NULL;
6965                 free_percpu(buf->data);
6966                 buf->data = NULL;
6967         }
6968 }
6969
6970 static void free_trace_buffers(struct trace_array *tr)
6971 {
6972         if (!tr)
6973                 return;
6974
6975         free_trace_buffer(&tr->trace_buffer);
6976
6977 #ifdef CONFIG_TRACER_MAX_TRACE
6978         free_trace_buffer(&tr->max_buffer);
6979 #endif
6980 }
6981
6982 static void init_trace_flags_index(struct trace_array *tr)
6983 {
6984         int i;
6985
6986         /* Used by the trace options files */
6987         for (i = 0; i < TRACE_FLAGS_MAX_SIZE; i++)
6988                 tr->trace_flags_index[i] = i;
6989 }
6990
6991 static void __update_tracer_options(struct trace_array *tr)
6992 {
6993         struct tracer *t;
6994
6995         for (t = trace_types; t; t = t->next)
6996                 add_tracer_options(tr, t);
6997 }
6998
6999 static void update_tracer_options(struct trace_array *tr)
7000 {
7001         mutex_lock(&trace_types_lock);
7002         __update_tracer_options(tr);
7003         mutex_unlock(&trace_types_lock);
7004 }
7005
7006 static int instance_mkdir(const char *name)
7007 {
7008         struct trace_array *tr;
7009         int ret;
7010
7011         mutex_lock(&trace_types_lock);
7012
7013         ret = -EEXIST;
7014         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
7015                 if (tr->name && strcmp(tr->name, name) == 0)
7016                         goto out_unlock;
7017         }
7018
7019         ret = -ENOMEM;
7020         tr = kzalloc(sizeof(*tr), GFP_KERNEL);
7021         if (!tr)
7022                 goto out_unlock;
7023
7024         tr->name = kstrdup(name, GFP_KERNEL);
7025         if (!tr->name)
7026                 goto out_free_tr;
7027
7028         if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL))
7029                 goto out_free_tr;
7030
7031         tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS;
7032
7033         cpumask_copy(tr->tracing_cpumask, cpu_all_mask);
7034
7035         raw_spin_lock_init(&tr->start_lock);
7036
7037         tr->max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
7038
7039         tr->current_trace = &nop_trace;
7040
7041         INIT_LIST_HEAD(&tr->systems);
7042         INIT_LIST_HEAD(&tr->events);
7043
7044         if (allocate_trace_buffers(tr, trace_buf_size) < 0)
7045                 goto out_free_tr;
7046
7047         tr->dir = tracefs_create_dir(name, trace_instance_dir);
7048         if (!tr->dir)
7049                 goto out_free_tr;
7050
7051         ret = event_trace_add_tracer(tr->dir, tr);
7052         if (ret) {
7053                 tracefs_remove_recursive(tr->dir);
7054                 goto out_free_tr;
7055         }
7056
7057         init_tracer_tracefs(tr, tr->dir);
7058         init_trace_flags_index(tr);
7059         __update_tracer_options(tr);
7060
7061         list_add(&tr->list, &ftrace_trace_arrays);
7062
7063         mutex_unlock(&trace_types_lock);
7064
7065         return 0;
7066
7067  out_free_tr:
7068         free_trace_buffers(tr);
7069         free_cpumask_var(tr->tracing_cpumask);
7070         kfree(tr->name);
7071         kfree(tr);
7072
7073  out_unlock:
7074         mutex_unlock(&trace_types_lock);
7075
7076         return ret;
7077
7078 }
7079
7080 static int instance_rmdir(const char *name)
7081 {
7082         struct trace_array *tr;
7083         int found = 0;
7084         int ret;
7085         int i;
7086
7087         mutex_lock(&trace_types_lock);
7088
7089         ret = -ENODEV;
7090         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
7091                 if (tr->name && strcmp(tr->name, name) == 0) {
7092                         found = 1;
7093                         break;
7094                 }
7095         }
7096         if (!found)
7097                 goto out_unlock;
7098
7099         ret = -EBUSY;
7100         if (tr->ref || (tr->current_trace && tr->current_trace->ref))
7101                 goto out_unlock;
7102
7103         list_del(&tr->list);
7104
7105         /* Disable all the flags that were enabled coming in */
7106         for (i = 0; i < TRACE_FLAGS_MAX_SIZE; i++) {
7107                 if ((1 << i) & ZEROED_TRACE_FLAGS)
7108                         set_tracer_flag(tr, 1 << i, 0);
7109         }
7110
7111         tracing_set_nop(tr);
7112         event_trace_del_tracer(tr);
7113         ftrace_destroy_function_files(tr);
7114         tracefs_remove_recursive(tr->dir);
7115         free_trace_buffers(tr);
7116
7117         for (i = 0; i < tr->nr_topts; i++) {
7118                 kfree(tr->topts[i].topts);
7119         }
7120         kfree(tr->topts);
7121
7122         kfree(tr->name);
7123         kfree(tr);
7124
7125         ret = 0;
7126
7127  out_unlock:
7128         mutex_unlock(&trace_types_lock);
7129
7130         return ret;
7131 }
7132
7133 static __init void create_trace_instances(struct dentry *d_tracer)
7134 {
7135         trace_instance_dir = tracefs_create_instance_dir("instances", d_tracer,
7136                                                          instance_mkdir,
7137                                                          instance_rmdir);
7138         if (WARN_ON(!trace_instance_dir))
7139                 return;
7140 }
7141
7142 static void
7143 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer)
7144 {
7145         int cpu;
7146
7147         trace_create_file("available_tracers", 0444, d_tracer,
7148                         tr, &show_traces_fops);
7149
7150         trace_create_file("current_tracer", 0644, d_tracer,
7151                         tr, &set_tracer_fops);
7152
7153         trace_create_file("tracing_cpumask", 0644, d_tracer,
7154                           tr, &tracing_cpumask_fops);
7155
7156         trace_create_file("trace_options", 0644, d_tracer,
7157                           tr, &tracing_iter_fops);
7158
7159         trace_create_file("trace", 0644, d_tracer,
7160                           tr, &tracing_fops);
7161
7162         trace_create_file("trace_pipe", 0444, d_tracer,
7163                           tr, &tracing_pipe_fops);
7164
7165         trace_create_file("buffer_size_kb", 0644, d_tracer,
7166                           tr, &tracing_entries_fops);
7167
7168         trace_create_file("buffer_total_size_kb", 0444, d_tracer,
7169                           tr, &tracing_total_entries_fops);
7170
7171         trace_create_file("free_buffer", 0200, d_tracer,
7172                           tr, &tracing_free_buffer_fops);
7173
7174         trace_create_file("trace_marker", 0220, d_tracer,
7175                           tr, &tracing_mark_fops);
7176
7177         trace_create_file("trace_clock", 0644, d_tracer, tr,
7178                           &trace_clock_fops);
7179
7180         trace_create_file("tracing_on", 0644, d_tracer,
7181                           tr, &rb_simple_fops);
7182
7183         create_trace_options_dir(tr);
7184
7185 #ifdef CONFIG_TRACER_MAX_TRACE
7186         trace_create_file("tracing_max_latency", 0644, d_tracer,
7187                         &tr->max_latency, &tracing_max_lat_fops);
7188 #endif
7189
7190         if (ftrace_create_function_files(tr, d_tracer))
7191                 WARN(1, "Could not allocate function filter files");
7192
7193 #ifdef CONFIG_TRACER_SNAPSHOT
7194         trace_create_file("snapshot", 0644, d_tracer,
7195                           tr, &snapshot_fops);
7196 #endif
7197
7198         for_each_tracing_cpu(cpu)
7199                 tracing_init_tracefs_percpu(tr, cpu);
7200
7201         ftrace_init_tracefs(tr, d_tracer);
7202 }
7203
7204 static struct vfsmount *trace_automount(void *ingore)
7205 {
7206         struct vfsmount *mnt;
7207         struct file_system_type *type;
7208
7209         /*
7210          * To maintain backward compatibility for tools that mount
7211          * debugfs to get to the tracing facility, tracefs is automatically
7212          * mounted to the debugfs/tracing directory.
7213          */
7214         type = get_fs_type("tracefs");
7215         if (!type)
7216                 return NULL;
7217         mnt = vfs_kern_mount(type, 0, "tracefs", NULL);
7218         put_filesystem(type);
7219         if (IS_ERR(mnt))
7220                 return NULL;
7221         mntget(mnt);
7222
7223         return mnt;
7224 }
7225
7226 /**
7227  * tracing_init_dentry - initialize top level trace array
7228  *
7229  * This is called when creating files or directories in the tracing
7230  * directory. It is called via fs_initcall() by any of the boot up code
7231  * and expects to return the dentry of the top level tracing directory.
7232  */
7233 struct dentry *tracing_init_dentry(void)
7234 {
7235         struct trace_array *tr = &global_trace;
7236
7237         /* The top level trace array uses  NULL as parent */
7238         if (tr->dir)
7239                 return NULL;
7240
7241         if (WARN_ON(!tracefs_initialized()) ||
7242                 (IS_ENABLED(CONFIG_DEBUG_FS) &&
7243                  WARN_ON(!debugfs_initialized())))
7244                 return ERR_PTR(-ENODEV);
7245
7246         /*
7247          * As there may still be users that expect the tracing
7248          * files to exist in debugfs/tracing, we must automount
7249          * the tracefs file system there, so older tools still
7250          * work with the newer kerenl.
7251          */
7252         tr->dir = debugfs_create_automount("tracing", NULL,
7253                                            trace_automount, NULL);
7254         if (!tr->dir) {
7255                 pr_warn_once("Could not create debugfs directory 'tracing'\n");
7256                 return ERR_PTR(-ENOMEM);
7257         }
7258
7259         return NULL;
7260 }
7261
7262 extern struct trace_enum_map *__start_ftrace_enum_maps[];
7263 extern struct trace_enum_map *__stop_ftrace_enum_maps[];
7264
7265 static void __init trace_enum_init(void)
7266 {
7267         int len;
7268
7269         len = __stop_ftrace_enum_maps - __start_ftrace_enum_maps;
7270         trace_insert_enum_map(NULL, __start_ftrace_enum_maps, len);
7271 }
7272
7273 #ifdef CONFIG_MODULES
7274 static void trace_module_add_enums(struct module *mod)
7275 {
7276         if (!mod->num_trace_enums)
7277                 return;
7278
7279         /*
7280          * Modules with bad taint do not have events created, do
7281          * not bother with enums either.
7282          */
7283         if (trace_module_has_bad_taint(mod))
7284                 return;
7285
7286         trace_insert_enum_map(mod, mod->trace_enums, mod->num_trace_enums);
7287 }
7288
7289 #ifdef CONFIG_TRACE_ENUM_MAP_FILE
7290 static void trace_module_remove_enums(struct module *mod)
7291 {
7292         union trace_enum_map_item *map;
7293         union trace_enum_map_item **last = &trace_enum_maps;
7294
7295         if (!mod->num_trace_enums)
7296                 return;
7297
7298         mutex_lock(&trace_enum_mutex);
7299
7300         map = trace_enum_maps;
7301
7302         while (map) {
7303                 if (map->head.mod == mod)
7304                         break;
7305                 map = trace_enum_jmp_to_tail(map);
7306                 last = &map->tail.next;
7307                 map = map->tail.next;
7308         }
7309         if (!map)
7310                 goto out;
7311
7312         *last = trace_enum_jmp_to_tail(map)->tail.next;
7313         kfree(map);
7314  out:
7315         mutex_unlock(&trace_enum_mutex);
7316 }
7317 #else
7318 static inline void trace_module_remove_enums(struct module *mod) { }
7319 #endif /* CONFIG_TRACE_ENUM_MAP_FILE */
7320
7321 static int trace_module_notify(struct notifier_block *self,
7322                                unsigned long val, void *data)
7323 {
7324         struct module *mod = data;
7325
7326         switch (val) {
7327         case MODULE_STATE_COMING:
7328                 trace_module_add_enums(mod);
7329                 break;
7330         case MODULE_STATE_GOING:
7331                 trace_module_remove_enums(mod);
7332                 break;
7333         }
7334
7335         return 0;
7336 }
7337
7338 static struct notifier_block trace_module_nb = {
7339         .notifier_call = trace_module_notify,
7340         .priority = 0,
7341 };
7342 #endif /* CONFIG_MODULES */
7343
7344 static __init int tracer_init_tracefs(void)
7345 {
7346         struct dentry *d_tracer;
7347
7348         trace_access_lock_init();
7349
7350         d_tracer = tracing_init_dentry();
7351         if (IS_ERR(d_tracer))
7352                 return 0;
7353
7354         init_tracer_tracefs(&global_trace, d_tracer);
7355
7356         trace_create_file("tracing_thresh", 0644, d_tracer,
7357                         &global_trace, &tracing_thresh_fops);
7358
7359         trace_create_file("README", 0444, d_tracer,
7360                         NULL, &tracing_readme_fops);
7361
7362         trace_create_file("saved_cmdlines", 0444, d_tracer,
7363                         NULL, &tracing_saved_cmdlines_fops);
7364
7365         trace_create_file("saved_cmdlines_size", 0644, d_tracer,
7366                           NULL, &tracing_saved_cmdlines_size_fops);
7367
7368         trace_enum_init();
7369
7370         trace_create_enum_file(d_tracer);
7371
7372 #ifdef CONFIG_MODULES
7373         register_module_notifier(&trace_module_nb);
7374 #endif
7375
7376 #ifdef CONFIG_DYNAMIC_FTRACE
7377         trace_create_file("dyn_ftrace_total_info", 0444, d_tracer,
7378                         &ftrace_update_tot_cnt, &tracing_dyn_info_fops);
7379 #endif
7380
7381         create_trace_instances(d_tracer);
7382
7383         update_tracer_options(&global_trace);
7384
7385         return 0;
7386 }
7387
7388 static int trace_panic_handler(struct notifier_block *this,
7389                                unsigned long event, void *unused)
7390 {
7391         if (ftrace_dump_on_oops)
7392                 ftrace_dump(ftrace_dump_on_oops);
7393         return NOTIFY_OK;
7394 }
7395
7396 static struct notifier_block trace_panic_notifier = {
7397         .notifier_call  = trace_panic_handler,
7398         .next           = NULL,
7399         .priority       = 150   /* priority: INT_MAX >= x >= 0 */
7400 };
7401
7402 static int trace_die_handler(struct notifier_block *self,
7403                              unsigned long val,
7404                              void *data)
7405 {
7406         switch (val) {
7407         case DIE_OOPS:
7408                 if (ftrace_dump_on_oops)
7409                         ftrace_dump(ftrace_dump_on_oops);
7410                 break;
7411         default:
7412                 break;
7413         }
7414         return NOTIFY_OK;
7415 }
7416
7417 static struct notifier_block trace_die_notifier = {
7418         .notifier_call = trace_die_handler,
7419         .priority = 200
7420 };
7421
7422 /*
7423  * printk is set to max of 1024, we really don't need it that big.
7424  * Nothing should be printing 1000 characters anyway.
7425  */
7426 #define TRACE_MAX_PRINT         1000
7427
7428 /*
7429  * Define here KERN_TRACE so that we have one place to modify
7430  * it if we decide to change what log level the ftrace dump
7431  * should be at.
7432  */
7433 #define KERN_TRACE              KERN_EMERG
7434
7435 void
7436 trace_printk_seq(struct trace_seq *s)
7437 {
7438         /* Probably should print a warning here. */
7439         if (s->seq.len >= TRACE_MAX_PRINT)
7440                 s->seq.len = TRACE_MAX_PRINT;
7441
7442         /*
7443          * More paranoid code. Although the buffer size is set to
7444          * PAGE_SIZE, and TRACE_MAX_PRINT is 1000, this is just
7445          * an extra layer of protection.
7446          */
7447         if (WARN_ON_ONCE(s->seq.len >= s->seq.size))
7448                 s->seq.len = s->seq.size - 1;
7449
7450         /* should be zero ended, but we are paranoid. */
7451         s->buffer[s->seq.len] = 0;
7452
7453         printk(KERN_TRACE "%s", s->buffer);
7454
7455         trace_seq_init(s);
7456 }
7457
7458 void trace_init_global_iter(struct trace_iterator *iter)
7459 {
7460         iter->tr = &global_trace;
7461         iter->trace = iter->tr->current_trace;
7462         iter->cpu_file = RING_BUFFER_ALL_CPUS;
7463         iter->trace_buffer = &global_trace.trace_buffer;
7464
7465         if (iter->trace && iter->trace->open)
7466                 iter->trace->open(iter);
7467
7468         /* Annotate start of buffers if we had overruns */
7469         if (ring_buffer_overruns(iter->trace_buffer->buffer))
7470                 iter->iter_flags |= TRACE_FILE_ANNOTATE;
7471
7472         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
7473         if (trace_clocks[iter->tr->clock_id].in_ns)
7474                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
7475 }
7476
7477 void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
7478 {
7479         /* use static because iter can be a bit big for the stack */
7480         static struct trace_iterator iter;
7481         static atomic_t dump_running;
7482         struct trace_array *tr = &global_trace;
7483         unsigned int old_userobj;
7484         unsigned long flags;
7485         int cnt = 0, cpu;
7486
7487         /* Only allow one dump user at a time. */
7488         if (atomic_inc_return(&dump_running) != 1) {
7489                 atomic_dec(&dump_running);
7490                 return;
7491         }
7492
7493         /*
7494          * Always turn off tracing when we dump.
7495          * We don't need to show trace output of what happens
7496          * between multiple crashes.
7497          *
7498          * If the user does a sysrq-z, then they can re-enable
7499          * tracing with echo 1 > tracing_on.
7500          */
7501         tracing_off();
7502
7503         local_irq_save(flags);
7504
7505         /* Simulate the iterator */
7506         trace_init_global_iter(&iter);
7507
7508         for_each_tracing_cpu(cpu) {
7509                 atomic_inc(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
7510         }
7511
7512         old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ;
7513
7514         /* don't look at user memory in panic mode */
7515         tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
7516
7517         switch (oops_dump_mode) {
7518         case DUMP_ALL:
7519                 iter.cpu_file = RING_BUFFER_ALL_CPUS;
7520                 break;
7521         case DUMP_ORIG:
7522                 iter.cpu_file = raw_smp_processor_id();
7523                 break;
7524         case DUMP_NONE:
7525                 goto out_enable;
7526         default:
7527                 printk(KERN_TRACE "Bad dumping mode, switching to all CPUs dump\n");
7528                 iter.cpu_file = RING_BUFFER_ALL_CPUS;
7529         }
7530
7531         printk(KERN_TRACE "Dumping ftrace buffer:\n");
7532
7533         /* Did function tracer already get disabled? */
7534         if (ftrace_is_dead()) {
7535                 printk("# WARNING: FUNCTION TRACING IS CORRUPTED\n");
7536                 printk("#          MAY BE MISSING FUNCTION EVENTS\n");
7537         }
7538
7539         /*
7540          * We need to stop all tracing on all CPUS to read the
7541          * the next buffer. This is a bit expensive, but is
7542          * not done often. We fill all what we can read,
7543          * and then release the locks again.
7544          */
7545
7546         while (!trace_empty(&iter)) {
7547
7548                 if (!cnt)
7549                         printk(KERN_TRACE "---------------------------------\n");
7550
7551                 cnt++;
7552
7553                 /* reset all but tr, trace, and overruns */
7554                 memset(&iter.seq, 0,
7555                        sizeof(struct trace_iterator) -
7556                        offsetof(struct trace_iterator, seq));
7557                 iter.iter_flags |= TRACE_FILE_LAT_FMT;
7558                 iter.pos = -1;
7559
7560                 if (trace_find_next_entry_inc(&iter) != NULL) {
7561                         int ret;
7562
7563                         ret = print_trace_line(&iter);
7564                         if (ret != TRACE_TYPE_NO_CONSUME)
7565                                 trace_consume(&iter);
7566                 }
7567                 touch_nmi_watchdog();
7568
7569                 trace_printk_seq(&iter.seq);
7570         }
7571
7572         if (!cnt)
7573                 printk(KERN_TRACE "   (ftrace buffer empty)\n");
7574         else
7575                 printk(KERN_TRACE "---------------------------------\n");
7576
7577  out_enable:
7578         tr->trace_flags |= old_userobj;
7579
7580         for_each_tracing_cpu(cpu) {
7581                 atomic_dec(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
7582         }
7583         atomic_dec(&dump_running);
7584         local_irq_restore(flags);
7585 }
7586 EXPORT_SYMBOL_GPL(ftrace_dump);
7587
7588 __init static int tracer_alloc_buffers(void)
7589 {
7590         int ring_buf_size;
7591         int ret = -ENOMEM;
7592
7593         /*
7594          * Make sure we don't accidently add more trace options
7595          * than we have bits for.
7596          */
7597         BUILD_BUG_ON(TRACE_ITER_LAST_BIT > TRACE_FLAGS_MAX_SIZE);
7598
7599         if (!alloc_cpumask_var(&tracing_buffer_mask, GFP_KERNEL))
7600                 goto out;
7601
7602         if (!alloc_cpumask_var(&global_trace.tracing_cpumask, GFP_KERNEL))
7603                 goto out_free_buffer_mask;
7604
7605         /* Only allocate trace_printk buffers if a trace_printk exists */
7606         if (__stop___trace_bprintk_fmt != __start___trace_bprintk_fmt)
7607                 /* Must be called before global_trace.buffer is allocated */
7608                 trace_printk_init_buffers();
7609
7610         /* To save memory, keep the ring buffer size to its minimum */
7611         if (ring_buffer_expanded)
7612                 ring_buf_size = trace_buf_size;
7613         else
7614                 ring_buf_size = 1;
7615
7616         cpumask_copy(tracing_buffer_mask, cpu_possible_mask);
7617         cpumask_copy(global_trace.tracing_cpumask, cpu_all_mask);
7618
7619         raw_spin_lock_init(&global_trace.start_lock);
7620
7621         /* Used for event triggers */
7622         temp_buffer = ring_buffer_alloc(PAGE_SIZE, RB_FL_OVERWRITE);
7623         if (!temp_buffer)
7624                 goto out_free_cpumask;
7625
7626         if (trace_create_savedcmd() < 0)
7627                 goto out_free_temp_buffer;
7628
7629         /* TODO: make the number of buffers hot pluggable with CPUS */
7630         if (allocate_trace_buffers(&global_trace, ring_buf_size) < 0) {
7631                 printk(KERN_ERR "tracer: failed to allocate ring buffer!\n");
7632                 WARN_ON(1);
7633                 goto out_free_savedcmd;
7634         }
7635
7636         if (global_trace.buffer_disabled)
7637                 tracing_off();
7638
7639         if (trace_boot_clock) {
7640                 ret = tracing_set_clock(&global_trace, trace_boot_clock);
7641                 if (ret < 0)
7642                         pr_warn("Trace clock %s not defined, going back to default\n",
7643                                 trace_boot_clock);
7644         }
7645
7646         /*
7647          * register_tracer() might reference current_trace, so it
7648          * needs to be set before we register anything. This is
7649          * just a bootstrap of current_trace anyway.
7650          */
7651         global_trace.current_trace = &nop_trace;
7652
7653         global_trace.max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
7654
7655         ftrace_init_global_array_ops(&global_trace);
7656
7657         init_trace_flags_index(&global_trace);
7658
7659         register_tracer(&nop_trace);
7660
7661         /* All seems OK, enable tracing */
7662         tracing_disabled = 0;
7663
7664         atomic_notifier_chain_register(&panic_notifier_list,
7665                                        &trace_panic_notifier);
7666
7667         register_die_notifier(&trace_die_notifier);
7668
7669         global_trace.flags = TRACE_ARRAY_FL_GLOBAL;
7670
7671         INIT_LIST_HEAD(&global_trace.systems);
7672         INIT_LIST_HEAD(&global_trace.events);
7673         list_add(&global_trace.list, &ftrace_trace_arrays);
7674
7675         apply_trace_boot_options();
7676
7677         register_snapshot_cmd();
7678
7679         return 0;
7680
7681 out_free_savedcmd:
7682         free_saved_cmdlines_buffer(savedcmd);
7683 out_free_temp_buffer:
7684         ring_buffer_free(temp_buffer);
7685 out_free_cpumask:
7686         free_cpumask_var(global_trace.tracing_cpumask);
7687 out_free_buffer_mask:
7688         free_cpumask_var(tracing_buffer_mask);
7689 out:
7690         return ret;
7691 }
7692
7693 void __init trace_init(void)
7694 {
7695         if (tracepoint_printk) {
7696                 tracepoint_print_iter =
7697                         kmalloc(sizeof(*tracepoint_print_iter), GFP_KERNEL);
7698                 if (WARN_ON(!tracepoint_print_iter))
7699                         tracepoint_printk = 0;
7700         }
7701         tracer_alloc_buffers();
7702         trace_event_init();
7703 }
7704
7705 __init static int clear_boot_tracer(void)
7706 {
7707         /*
7708          * The default tracer at boot buffer is an init section.
7709          * This function is called in lateinit. If we did not
7710          * find the boot tracer, then clear it out, to prevent
7711          * later registration from accessing the buffer that is
7712          * about to be freed.
7713          */
7714         if (!default_bootup_tracer)
7715                 return 0;
7716
7717         printk(KERN_INFO "ftrace bootup tracer '%s' not registered.\n",
7718                default_bootup_tracer);
7719         default_bootup_tracer = NULL;
7720
7721         return 0;
7722 }
7723
7724 fs_initcall(tracer_init_tracefs);
7725 late_initcall(clear_boot_tracer);