eccb4e1187cc788e2f4f60b15bd7b4c00bd2884b
[sfrench/cifs-2.6.git] / kernel / trace / trace.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * ring buffer based function tracer
4  *
5  * Copyright (C) 2007-2012 Steven Rostedt <srostedt@redhat.com>
6  * Copyright (C) 2008 Ingo Molnar <mingo@redhat.com>
7  *
8  * Originally taken from the RT patch by:
9  *    Arnaldo Carvalho de Melo <acme@redhat.com>
10  *
11  * Based on code from the latency_tracer, that is:
12  *  Copyright (C) 2004-2006 Ingo Molnar
13  *  Copyright (C) 2004 Nadia Yvette Chambers
14  */
15 #include <linux/ring_buffer.h>
16 #include <generated/utsrelease.h>
17 #include <linux/stacktrace.h>
18 #include <linux/writeback.h>
19 #include <linux/kallsyms.h>
20 #include <linux/security.h>
21 #include <linux/seq_file.h>
22 #include <linux/notifier.h>
23 #include <linux/irqflags.h>
24 #include <linux/debugfs.h>
25 #include <linux/tracefs.h>
26 #include <linux/pagemap.h>
27 #include <linux/hardirq.h>
28 #include <linux/linkage.h>
29 #include <linux/uaccess.h>
30 #include <linux/vmalloc.h>
31 #include <linux/ftrace.h>
32 #include <linux/module.h>
33 #include <linux/percpu.h>
34 #include <linux/splice.h>
35 #include <linux/kdebug.h>
36 #include <linux/string.h>
37 #include <linux/mount.h>
38 #include <linux/rwsem.h>
39 #include <linux/slab.h>
40 #include <linux/ctype.h>
41 #include <linux/init.h>
42 #include <linux/poll.h>
43 #include <linux/nmi.h>
44 #include <linux/fs.h>
45 #include <linux/trace.h>
46 #include <linux/sched/clock.h>
47 #include <linux/sched/rt.h>
48 #include <linux/fsnotify.h>
49 #include <linux/irq_work.h>
50 #include <linux/workqueue.h>
51
52 #include "trace.h"
53 #include "trace_output.h"
54
55 /*
56  * On boot up, the ring buffer is set to the minimum size, so that
57  * we do not waste memory on systems that are not using tracing.
58  */
59 bool ring_buffer_expanded;
60
61 /*
62  * We need to change this state when a selftest is running.
63  * A selftest will lurk into the ring-buffer to count the
64  * entries inserted during the selftest although some concurrent
65  * insertions into the ring-buffer such as trace_printk could occurred
66  * at the same time, giving false positive or negative results.
67  */
68 static bool __read_mostly tracing_selftest_running;
69
70 /*
71  * If boot-time tracing including tracers/events via kernel cmdline
72  * is running, we do not want to run SELFTEST.
73  */
74 bool __read_mostly tracing_selftest_disabled;
75
76 #ifdef CONFIG_FTRACE_STARTUP_TEST
77 void __init disable_tracing_selftest(const char *reason)
78 {
79         if (!tracing_selftest_disabled) {
80                 tracing_selftest_disabled = true;
81                 pr_info("Ftrace startup test is disabled due to %s\n", reason);
82         }
83 }
84 #endif
85
86 /* Pipe tracepoints to printk */
87 struct trace_iterator *tracepoint_print_iter;
88 int tracepoint_printk;
89 static DEFINE_STATIC_KEY_FALSE(tracepoint_printk_key);
90
91 /* For tracers that don't implement custom flags */
92 static struct tracer_opt dummy_tracer_opt[] = {
93         { }
94 };
95
96 static int
97 dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
98 {
99         return 0;
100 }
101
102 /*
103  * To prevent the comm cache from being overwritten when no
104  * tracing is active, only save the comm when a trace event
105  * occurred.
106  */
107 static DEFINE_PER_CPU(bool, trace_taskinfo_save);
108
109 /*
110  * Kill all tracing for good (never come back).
111  * It is initialized to 1 but will turn to zero if the initialization
112  * of the tracer is successful. But that is the only place that sets
113  * this back to zero.
114  */
115 static int tracing_disabled = 1;
116
117 cpumask_var_t __read_mostly     tracing_buffer_mask;
118
119 /*
120  * ftrace_dump_on_oops - variable to dump ftrace buffer on oops
121  *
122  * If there is an oops (or kernel panic) and the ftrace_dump_on_oops
123  * is set, then ftrace_dump is called. This will output the contents
124  * of the ftrace buffers to the console.  This is very useful for
125  * capturing traces that lead to crashes and outputing it to a
126  * serial console.
127  *
128  * It is default off, but you can enable it with either specifying
129  * "ftrace_dump_on_oops" in the kernel command line, or setting
130  * /proc/sys/kernel/ftrace_dump_on_oops
131  * Set 1 if you want to dump buffers of all CPUs
132  * Set 2 if you want to dump the buffer of the CPU that triggered oops
133  */
134
135 enum ftrace_dump_mode ftrace_dump_on_oops;
136
137 /* When set, tracing will stop when a WARN*() is hit */
138 int __disable_trace_on_warning;
139
140 #ifdef CONFIG_TRACE_EVAL_MAP_FILE
141 /* Map of enums to their values, for "eval_map" file */
142 struct trace_eval_map_head {
143         struct module                   *mod;
144         unsigned long                   length;
145 };
146
147 union trace_eval_map_item;
148
149 struct trace_eval_map_tail {
150         /*
151          * "end" is first and points to NULL as it must be different
152          * than "mod" or "eval_string"
153          */
154         union trace_eval_map_item       *next;
155         const char                      *end;   /* points to NULL */
156 };
157
158 static DEFINE_MUTEX(trace_eval_mutex);
159
160 /*
161  * The trace_eval_maps are saved in an array with two extra elements,
162  * one at the beginning, and one at the end. The beginning item contains
163  * the count of the saved maps (head.length), and the module they
164  * belong to if not built in (head.mod). The ending item contains a
165  * pointer to the next array of saved eval_map items.
166  */
167 union trace_eval_map_item {
168         struct trace_eval_map           map;
169         struct trace_eval_map_head      head;
170         struct trace_eval_map_tail      tail;
171 };
172
173 static union trace_eval_map_item *trace_eval_maps;
174 #endif /* CONFIG_TRACE_EVAL_MAP_FILE */
175
176 int tracing_set_tracer(struct trace_array *tr, const char *buf);
177 static void ftrace_trace_userstack(struct trace_array *tr,
178                                    struct trace_buffer *buffer,
179                                    unsigned int trace_ctx);
180
181 #define MAX_TRACER_SIZE         100
182 static char bootup_tracer_buf[MAX_TRACER_SIZE] __initdata;
183 static char *default_bootup_tracer;
184
185 static bool allocate_snapshot;
186
187 static int __init set_cmdline_ftrace(char *str)
188 {
189         strlcpy(bootup_tracer_buf, str, MAX_TRACER_SIZE);
190         default_bootup_tracer = bootup_tracer_buf;
191         /* We are using ftrace early, expand it */
192         ring_buffer_expanded = true;
193         return 1;
194 }
195 __setup("ftrace=", set_cmdline_ftrace);
196
197 static int __init set_ftrace_dump_on_oops(char *str)
198 {
199         if (*str++ != '=' || !*str) {
200                 ftrace_dump_on_oops = DUMP_ALL;
201                 return 1;
202         }
203
204         if (!strcmp("orig_cpu", str)) {
205                 ftrace_dump_on_oops = DUMP_ORIG;
206                 return 1;
207         }
208
209         return 0;
210 }
211 __setup("ftrace_dump_on_oops", set_ftrace_dump_on_oops);
212
213 static int __init stop_trace_on_warning(char *str)
214 {
215         if ((strcmp(str, "=0") != 0 && strcmp(str, "=off") != 0))
216                 __disable_trace_on_warning = 1;
217         return 1;
218 }
219 __setup("traceoff_on_warning", stop_trace_on_warning);
220
221 static int __init boot_alloc_snapshot(char *str)
222 {
223         allocate_snapshot = true;
224         /* We also need the main ring buffer expanded */
225         ring_buffer_expanded = true;
226         return 1;
227 }
228 __setup("alloc_snapshot", boot_alloc_snapshot);
229
230
231 static char trace_boot_options_buf[MAX_TRACER_SIZE] __initdata;
232
233 static int __init set_trace_boot_options(char *str)
234 {
235         strlcpy(trace_boot_options_buf, str, MAX_TRACER_SIZE);
236         return 0;
237 }
238 __setup("trace_options=", set_trace_boot_options);
239
240 static char trace_boot_clock_buf[MAX_TRACER_SIZE] __initdata;
241 static char *trace_boot_clock __initdata;
242
243 static int __init set_trace_boot_clock(char *str)
244 {
245         strlcpy(trace_boot_clock_buf, str, MAX_TRACER_SIZE);
246         trace_boot_clock = trace_boot_clock_buf;
247         return 0;
248 }
249 __setup("trace_clock=", set_trace_boot_clock);
250
251 static int __init set_tracepoint_printk(char *str)
252 {
253         if ((strcmp(str, "=0") != 0 && strcmp(str, "=off") != 0))
254                 tracepoint_printk = 1;
255         return 1;
256 }
257 __setup("tp_printk", set_tracepoint_printk);
258
259 unsigned long long ns2usecs(u64 nsec)
260 {
261         nsec += 500;
262         do_div(nsec, 1000);
263         return nsec;
264 }
265
266 static void
267 trace_process_export(struct trace_export *export,
268                struct ring_buffer_event *event, int flag)
269 {
270         struct trace_entry *entry;
271         unsigned int size = 0;
272
273         if (export->flags & flag) {
274                 entry = ring_buffer_event_data(event);
275                 size = ring_buffer_event_length(event);
276                 export->write(export, entry, size);
277         }
278 }
279
280 static DEFINE_MUTEX(ftrace_export_lock);
281
282 static struct trace_export __rcu *ftrace_exports_list __read_mostly;
283
284 static DEFINE_STATIC_KEY_FALSE(trace_function_exports_enabled);
285 static DEFINE_STATIC_KEY_FALSE(trace_event_exports_enabled);
286 static DEFINE_STATIC_KEY_FALSE(trace_marker_exports_enabled);
287
288 static inline void ftrace_exports_enable(struct trace_export *export)
289 {
290         if (export->flags & TRACE_EXPORT_FUNCTION)
291                 static_branch_inc(&trace_function_exports_enabled);
292
293         if (export->flags & TRACE_EXPORT_EVENT)
294                 static_branch_inc(&trace_event_exports_enabled);
295
296         if (export->flags & TRACE_EXPORT_MARKER)
297                 static_branch_inc(&trace_marker_exports_enabled);
298 }
299
300 static inline void ftrace_exports_disable(struct trace_export *export)
301 {
302         if (export->flags & TRACE_EXPORT_FUNCTION)
303                 static_branch_dec(&trace_function_exports_enabled);
304
305         if (export->flags & TRACE_EXPORT_EVENT)
306                 static_branch_dec(&trace_event_exports_enabled);
307
308         if (export->flags & TRACE_EXPORT_MARKER)
309                 static_branch_dec(&trace_marker_exports_enabled);
310 }
311
312 static void ftrace_exports(struct ring_buffer_event *event, int flag)
313 {
314         struct trace_export *export;
315
316         preempt_disable_notrace();
317
318         export = rcu_dereference_raw_check(ftrace_exports_list);
319         while (export) {
320                 trace_process_export(export, event, flag);
321                 export = rcu_dereference_raw_check(export->next);
322         }
323
324         preempt_enable_notrace();
325 }
326
327 static inline void
328 add_trace_export(struct trace_export **list, struct trace_export *export)
329 {
330         rcu_assign_pointer(export->next, *list);
331         /*
332          * We are entering export into the list but another
333          * CPU might be walking that list. We need to make sure
334          * the export->next pointer is valid before another CPU sees
335          * the export pointer included into the list.
336          */
337         rcu_assign_pointer(*list, export);
338 }
339
340 static inline int
341 rm_trace_export(struct trace_export **list, struct trace_export *export)
342 {
343         struct trace_export **p;
344
345         for (p = list; *p != NULL; p = &(*p)->next)
346                 if (*p == export)
347                         break;
348
349         if (*p != export)
350                 return -1;
351
352         rcu_assign_pointer(*p, (*p)->next);
353
354         return 0;
355 }
356
357 static inline void
358 add_ftrace_export(struct trace_export **list, struct trace_export *export)
359 {
360         ftrace_exports_enable(export);
361
362         add_trace_export(list, export);
363 }
364
365 static inline int
366 rm_ftrace_export(struct trace_export **list, struct trace_export *export)
367 {
368         int ret;
369
370         ret = rm_trace_export(list, export);
371         ftrace_exports_disable(export);
372
373         return ret;
374 }
375
376 int register_ftrace_export(struct trace_export *export)
377 {
378         if (WARN_ON_ONCE(!export->write))
379                 return -1;
380
381         mutex_lock(&ftrace_export_lock);
382
383         add_ftrace_export(&ftrace_exports_list, export);
384
385         mutex_unlock(&ftrace_export_lock);
386
387         return 0;
388 }
389 EXPORT_SYMBOL_GPL(register_ftrace_export);
390
391 int unregister_ftrace_export(struct trace_export *export)
392 {
393         int ret;
394
395         mutex_lock(&ftrace_export_lock);
396
397         ret = rm_ftrace_export(&ftrace_exports_list, export);
398
399         mutex_unlock(&ftrace_export_lock);
400
401         return ret;
402 }
403 EXPORT_SYMBOL_GPL(unregister_ftrace_export);
404
405 /* trace_flags holds trace_options default values */
406 #define TRACE_DEFAULT_FLAGS                                             \
407         (FUNCTION_DEFAULT_FLAGS |                                       \
408          TRACE_ITER_PRINT_PARENT | TRACE_ITER_PRINTK |                  \
409          TRACE_ITER_ANNOTATE | TRACE_ITER_CONTEXT_INFO |                \
410          TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE |                 \
411          TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS |                     \
412          TRACE_ITER_HASH_PTR)
413
414 /* trace_options that are only supported by global_trace */
415 #define TOP_LEVEL_TRACE_FLAGS (TRACE_ITER_PRINTK |                      \
416                TRACE_ITER_PRINTK_MSGONLY | TRACE_ITER_RECORD_CMD)
417
418 /* trace_flags that are default zero for instances */
419 #define ZEROED_TRACE_FLAGS \
420         (TRACE_ITER_EVENT_FORK | TRACE_ITER_FUNC_FORK)
421
422 /*
423  * The global_trace is the descriptor that holds the top-level tracing
424  * buffers for the live tracing.
425  */
426 static struct trace_array global_trace = {
427         .trace_flags = TRACE_DEFAULT_FLAGS,
428 };
429
430 LIST_HEAD(ftrace_trace_arrays);
431
432 int trace_array_get(struct trace_array *this_tr)
433 {
434         struct trace_array *tr;
435         int ret = -ENODEV;
436
437         mutex_lock(&trace_types_lock);
438         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
439                 if (tr == this_tr) {
440                         tr->ref++;
441                         ret = 0;
442                         break;
443                 }
444         }
445         mutex_unlock(&trace_types_lock);
446
447         return ret;
448 }
449
450 static void __trace_array_put(struct trace_array *this_tr)
451 {
452         WARN_ON(!this_tr->ref);
453         this_tr->ref--;
454 }
455
456 /**
457  * trace_array_put - Decrement the reference counter for this trace array.
458  * @this_tr : pointer to the trace array
459  *
460  * NOTE: Use this when we no longer need the trace array returned by
461  * trace_array_get_by_name(). This ensures the trace array can be later
462  * destroyed.
463  *
464  */
465 void trace_array_put(struct trace_array *this_tr)
466 {
467         if (!this_tr)
468                 return;
469
470         mutex_lock(&trace_types_lock);
471         __trace_array_put(this_tr);
472         mutex_unlock(&trace_types_lock);
473 }
474 EXPORT_SYMBOL_GPL(trace_array_put);
475
476 int tracing_check_open_get_tr(struct trace_array *tr)
477 {
478         int ret;
479
480         ret = security_locked_down(LOCKDOWN_TRACEFS);
481         if (ret)
482                 return ret;
483
484         if (tracing_disabled)
485                 return -ENODEV;
486
487         if (tr && trace_array_get(tr) < 0)
488                 return -ENODEV;
489
490         return 0;
491 }
492
493 int call_filter_check_discard(struct trace_event_call *call, void *rec,
494                               struct trace_buffer *buffer,
495                               struct ring_buffer_event *event)
496 {
497         if (unlikely(call->flags & TRACE_EVENT_FL_FILTERED) &&
498             !filter_match_preds(call->filter, rec)) {
499                 __trace_event_discard_commit(buffer, event);
500                 return 1;
501         }
502
503         return 0;
504 }
505
506 void trace_free_pid_list(struct trace_pid_list *pid_list)
507 {
508         vfree(pid_list->pids);
509         kfree(pid_list);
510 }
511
512 /**
513  * trace_find_filtered_pid - check if a pid exists in a filtered_pid list
514  * @filtered_pids: The list of pids to check
515  * @search_pid: The PID to find in @filtered_pids
516  *
517  * Returns true if @search_pid is fonud in @filtered_pids, and false otherwis.
518  */
519 bool
520 trace_find_filtered_pid(struct trace_pid_list *filtered_pids, pid_t search_pid)
521 {
522         /*
523          * If pid_max changed after filtered_pids was created, we
524          * by default ignore all pids greater than the previous pid_max.
525          */
526         if (search_pid >= filtered_pids->pid_max)
527                 return false;
528
529         return test_bit(search_pid, filtered_pids->pids);
530 }
531
532 /**
533  * trace_ignore_this_task - should a task be ignored for tracing
534  * @filtered_pids: The list of pids to check
535  * @filtered_no_pids: The list of pids not to be traced
536  * @task: The task that should be ignored if not filtered
537  *
538  * Checks if @task should be traced or not from @filtered_pids.
539  * Returns true if @task should *NOT* be traced.
540  * Returns false if @task should be traced.
541  */
542 bool
543 trace_ignore_this_task(struct trace_pid_list *filtered_pids,
544                        struct trace_pid_list *filtered_no_pids,
545                        struct task_struct *task)
546 {
547         /*
548          * If filterd_no_pids is not empty, and the task's pid is listed
549          * in filtered_no_pids, then return true.
550          * Otherwise, if filtered_pids is empty, that means we can
551          * trace all tasks. If it has content, then only trace pids
552          * within filtered_pids.
553          */
554
555         return (filtered_pids &&
556                 !trace_find_filtered_pid(filtered_pids, task->pid)) ||
557                 (filtered_no_pids &&
558                  trace_find_filtered_pid(filtered_no_pids, task->pid));
559 }
560
561 /**
562  * trace_filter_add_remove_task - Add or remove a task from a pid_list
563  * @pid_list: The list to modify
564  * @self: The current task for fork or NULL for exit
565  * @task: The task to add or remove
566  *
567  * If adding a task, if @self is defined, the task is only added if @self
568  * is also included in @pid_list. This happens on fork and tasks should
569  * only be added when the parent is listed. If @self is NULL, then the
570  * @task pid will be removed from the list, which would happen on exit
571  * of a task.
572  */
573 void trace_filter_add_remove_task(struct trace_pid_list *pid_list,
574                                   struct task_struct *self,
575                                   struct task_struct *task)
576 {
577         if (!pid_list)
578                 return;
579
580         /* For forks, we only add if the forking task is listed */
581         if (self) {
582                 if (!trace_find_filtered_pid(pid_list, self->pid))
583                         return;
584         }
585
586         /* Sorry, but we don't support pid_max changing after setting */
587         if (task->pid >= pid_list->pid_max)
588                 return;
589
590         /* "self" is set for forks, and NULL for exits */
591         if (self)
592                 set_bit(task->pid, pid_list->pids);
593         else
594                 clear_bit(task->pid, pid_list->pids);
595 }
596
597 /**
598  * trace_pid_next - Used for seq_file to get to the next pid of a pid_list
599  * @pid_list: The pid list to show
600  * @v: The last pid that was shown (+1 the actual pid to let zero be displayed)
601  * @pos: The position of the file
602  *
603  * This is used by the seq_file "next" operation to iterate the pids
604  * listed in a trace_pid_list structure.
605  *
606  * Returns the pid+1 as we want to display pid of zero, but NULL would
607  * stop the iteration.
608  */
609 void *trace_pid_next(struct trace_pid_list *pid_list, void *v, loff_t *pos)
610 {
611         unsigned long pid = (unsigned long)v;
612
613         (*pos)++;
614
615         /* pid already is +1 of the actual prevous bit */
616         pid = find_next_bit(pid_list->pids, pid_list->pid_max, pid);
617
618         /* Return pid + 1 to allow zero to be represented */
619         if (pid < pid_list->pid_max)
620                 return (void *)(pid + 1);
621
622         return NULL;
623 }
624
625 /**
626  * trace_pid_start - Used for seq_file to start reading pid lists
627  * @pid_list: The pid list to show
628  * @pos: The position of the file
629  *
630  * This is used by seq_file "start" operation to start the iteration
631  * of listing pids.
632  *
633  * Returns the pid+1 as we want to display pid of zero, but NULL would
634  * stop the iteration.
635  */
636 void *trace_pid_start(struct trace_pid_list *pid_list, loff_t *pos)
637 {
638         unsigned long pid;
639         loff_t l = 0;
640
641         pid = find_first_bit(pid_list->pids, pid_list->pid_max);
642         if (pid >= pid_list->pid_max)
643                 return NULL;
644
645         /* Return pid + 1 so that zero can be the exit value */
646         for (pid++; pid && l < *pos;
647              pid = (unsigned long)trace_pid_next(pid_list, (void *)pid, &l))
648                 ;
649         return (void *)pid;
650 }
651
652 /**
653  * trace_pid_show - show the current pid in seq_file processing
654  * @m: The seq_file structure to write into
655  * @v: A void pointer of the pid (+1) value to display
656  *
657  * Can be directly used by seq_file operations to display the current
658  * pid value.
659  */
660 int trace_pid_show(struct seq_file *m, void *v)
661 {
662         unsigned long pid = (unsigned long)v - 1;
663
664         seq_printf(m, "%lu\n", pid);
665         return 0;
666 }
667
668 /* 128 should be much more than enough */
669 #define PID_BUF_SIZE            127
670
671 int trace_pid_write(struct trace_pid_list *filtered_pids,
672                     struct trace_pid_list **new_pid_list,
673                     const char __user *ubuf, size_t cnt)
674 {
675         struct trace_pid_list *pid_list;
676         struct trace_parser parser;
677         unsigned long val;
678         int nr_pids = 0;
679         ssize_t read = 0;
680         ssize_t ret = 0;
681         loff_t pos;
682         pid_t pid;
683
684         if (trace_parser_get_init(&parser, PID_BUF_SIZE + 1))
685                 return -ENOMEM;
686
687         /*
688          * Always recreate a new array. The write is an all or nothing
689          * operation. Always create a new array when adding new pids by
690          * the user. If the operation fails, then the current list is
691          * not modified.
692          */
693         pid_list = kmalloc(sizeof(*pid_list), GFP_KERNEL);
694         if (!pid_list) {
695                 trace_parser_put(&parser);
696                 return -ENOMEM;
697         }
698
699         pid_list->pid_max = READ_ONCE(pid_max);
700
701         /* Only truncating will shrink pid_max */
702         if (filtered_pids && filtered_pids->pid_max > pid_list->pid_max)
703                 pid_list->pid_max = filtered_pids->pid_max;
704
705         pid_list->pids = vzalloc((pid_list->pid_max + 7) >> 3);
706         if (!pid_list->pids) {
707                 trace_parser_put(&parser);
708                 kfree(pid_list);
709                 return -ENOMEM;
710         }
711
712         if (filtered_pids) {
713                 /* copy the current bits to the new max */
714                 for_each_set_bit(pid, filtered_pids->pids,
715                                  filtered_pids->pid_max) {
716                         set_bit(pid, pid_list->pids);
717                         nr_pids++;
718                 }
719         }
720
721         while (cnt > 0) {
722
723                 pos = 0;
724
725                 ret = trace_get_user(&parser, ubuf, cnt, &pos);
726                 if (ret < 0 || !trace_parser_loaded(&parser))
727                         break;
728
729                 read += ret;
730                 ubuf += ret;
731                 cnt -= ret;
732
733                 ret = -EINVAL;
734                 if (kstrtoul(parser.buffer, 0, &val))
735                         break;
736                 if (val >= pid_list->pid_max)
737                         break;
738
739                 pid = (pid_t)val;
740
741                 set_bit(pid, pid_list->pids);
742                 nr_pids++;
743
744                 trace_parser_clear(&parser);
745                 ret = 0;
746         }
747         trace_parser_put(&parser);
748
749         if (ret < 0) {
750                 trace_free_pid_list(pid_list);
751                 return ret;
752         }
753
754         if (!nr_pids) {
755                 /* Cleared the list of pids */
756                 trace_free_pid_list(pid_list);
757                 read = ret;
758                 pid_list = NULL;
759         }
760
761         *new_pid_list = pid_list;
762
763         return read;
764 }
765
766 static u64 buffer_ftrace_now(struct array_buffer *buf, int cpu)
767 {
768         u64 ts;
769
770         /* Early boot up does not have a buffer yet */
771         if (!buf->buffer)
772                 return trace_clock_local();
773
774         ts = ring_buffer_time_stamp(buf->buffer, cpu);
775         ring_buffer_normalize_time_stamp(buf->buffer, cpu, &ts);
776
777         return ts;
778 }
779
780 u64 ftrace_now(int cpu)
781 {
782         return buffer_ftrace_now(&global_trace.array_buffer, cpu);
783 }
784
785 /**
786  * tracing_is_enabled - Show if global_trace has been enabled
787  *
788  * Shows if the global trace has been enabled or not. It uses the
789  * mirror flag "buffer_disabled" to be used in fast paths such as for
790  * the irqsoff tracer. But it may be inaccurate due to races. If you
791  * need to know the accurate state, use tracing_is_on() which is a little
792  * slower, but accurate.
793  */
794 int tracing_is_enabled(void)
795 {
796         /*
797          * For quick access (irqsoff uses this in fast path), just
798          * return the mirror variable of the state of the ring buffer.
799          * It's a little racy, but we don't really care.
800          */
801         smp_rmb();
802         return !global_trace.buffer_disabled;
803 }
804
805 /*
806  * trace_buf_size is the size in bytes that is allocated
807  * for a buffer. Note, the number of bytes is always rounded
808  * to page size.
809  *
810  * This number is purposely set to a low number of 16384.
811  * If the dump on oops happens, it will be much appreciated
812  * to not have to wait for all that output. Anyway this can be
813  * boot time and run time configurable.
814  */
815 #define TRACE_BUF_SIZE_DEFAULT  1441792UL /* 16384 * 88 (sizeof(entry)) */
816
817 static unsigned long            trace_buf_size = TRACE_BUF_SIZE_DEFAULT;
818
819 /* trace_types holds a link list of available tracers. */
820 static struct tracer            *trace_types __read_mostly;
821
822 /*
823  * trace_types_lock is used to protect the trace_types list.
824  */
825 DEFINE_MUTEX(trace_types_lock);
826
827 /*
828  * serialize the access of the ring buffer
829  *
830  * ring buffer serializes readers, but it is low level protection.
831  * The validity of the events (which returns by ring_buffer_peek() ..etc)
832  * are not protected by ring buffer.
833  *
834  * The content of events may become garbage if we allow other process consumes
835  * these events concurrently:
836  *   A) the page of the consumed events may become a normal page
837  *      (not reader page) in ring buffer, and this page will be rewrited
838  *      by events producer.
839  *   B) The page of the consumed events may become a page for splice_read,
840  *      and this page will be returned to system.
841  *
842  * These primitives allow multi process access to different cpu ring buffer
843  * concurrently.
844  *
845  * These primitives don't distinguish read-only and read-consume access.
846  * Multi read-only access are also serialized.
847  */
848
849 #ifdef CONFIG_SMP
850 static DECLARE_RWSEM(all_cpu_access_lock);
851 static DEFINE_PER_CPU(struct mutex, cpu_access_lock);
852
853 static inline void trace_access_lock(int cpu)
854 {
855         if (cpu == RING_BUFFER_ALL_CPUS) {
856                 /* gain it for accessing the whole ring buffer. */
857                 down_write(&all_cpu_access_lock);
858         } else {
859                 /* gain it for accessing a cpu ring buffer. */
860
861                 /* Firstly block other trace_access_lock(RING_BUFFER_ALL_CPUS). */
862                 down_read(&all_cpu_access_lock);
863
864                 /* Secondly block other access to this @cpu ring buffer. */
865                 mutex_lock(&per_cpu(cpu_access_lock, cpu));
866         }
867 }
868
869 static inline void trace_access_unlock(int cpu)
870 {
871         if (cpu == RING_BUFFER_ALL_CPUS) {
872                 up_write(&all_cpu_access_lock);
873         } else {
874                 mutex_unlock(&per_cpu(cpu_access_lock, cpu));
875                 up_read(&all_cpu_access_lock);
876         }
877 }
878
879 static inline void trace_access_lock_init(void)
880 {
881         int cpu;
882
883         for_each_possible_cpu(cpu)
884                 mutex_init(&per_cpu(cpu_access_lock, cpu));
885 }
886
887 #else
888
889 static DEFINE_MUTEX(access_lock);
890
891 static inline void trace_access_lock(int cpu)
892 {
893         (void)cpu;
894         mutex_lock(&access_lock);
895 }
896
897 static inline void trace_access_unlock(int cpu)
898 {
899         (void)cpu;
900         mutex_unlock(&access_lock);
901 }
902
903 static inline void trace_access_lock_init(void)
904 {
905 }
906
907 #endif
908
909 #ifdef CONFIG_STACKTRACE
910 static void __ftrace_trace_stack(struct trace_buffer *buffer,
911                                  unsigned int trace_ctx,
912                                  int skip, struct pt_regs *regs);
913 static inline void ftrace_trace_stack(struct trace_array *tr,
914                                       struct trace_buffer *buffer,
915                                       unsigned int trace_ctx,
916                                       int skip, struct pt_regs *regs);
917
918 #else
919 static inline void __ftrace_trace_stack(struct trace_buffer *buffer,
920                                         unsigned int trace_ctx,
921                                         int skip, struct pt_regs *regs)
922 {
923 }
924 static inline void ftrace_trace_stack(struct trace_array *tr,
925                                       struct trace_buffer *buffer,
926                                       unsigned long trace_ctx,
927                                       int skip, struct pt_regs *regs)
928 {
929 }
930
931 #endif
932
933 static __always_inline void
934 trace_event_setup(struct ring_buffer_event *event,
935                   int type, unsigned int trace_ctx)
936 {
937         struct trace_entry *ent = ring_buffer_event_data(event);
938
939         tracing_generic_entry_update(ent, type, trace_ctx);
940 }
941
942 static __always_inline struct ring_buffer_event *
943 __trace_buffer_lock_reserve(struct trace_buffer *buffer,
944                           int type,
945                           unsigned long len,
946                           unsigned int trace_ctx)
947 {
948         struct ring_buffer_event *event;
949
950         event = ring_buffer_lock_reserve(buffer, len);
951         if (event != NULL)
952                 trace_event_setup(event, type, trace_ctx);
953
954         return event;
955 }
956
957 void tracer_tracing_on(struct trace_array *tr)
958 {
959         if (tr->array_buffer.buffer)
960                 ring_buffer_record_on(tr->array_buffer.buffer);
961         /*
962          * This flag is looked at when buffers haven't been allocated
963          * yet, or by some tracers (like irqsoff), that just want to
964          * know if the ring buffer has been disabled, but it can handle
965          * races of where it gets disabled but we still do a record.
966          * As the check is in the fast path of the tracers, it is more
967          * important to be fast than accurate.
968          */
969         tr->buffer_disabled = 0;
970         /* Make the flag seen by readers */
971         smp_wmb();
972 }
973
974 /**
975  * tracing_on - enable tracing buffers
976  *
977  * This function enables tracing buffers that may have been
978  * disabled with tracing_off.
979  */
980 void tracing_on(void)
981 {
982         tracer_tracing_on(&global_trace);
983 }
984 EXPORT_SYMBOL_GPL(tracing_on);
985
986
987 static __always_inline void
988 __buffer_unlock_commit(struct trace_buffer *buffer, struct ring_buffer_event *event)
989 {
990         __this_cpu_write(trace_taskinfo_save, true);
991
992         /* If this is the temp buffer, we need to commit fully */
993         if (this_cpu_read(trace_buffered_event) == event) {
994                 /* Length is in event->array[0] */
995                 ring_buffer_write(buffer, event->array[0], &event->array[1]);
996                 /* Release the temp buffer */
997                 this_cpu_dec(trace_buffered_event_cnt);
998         } else
999                 ring_buffer_unlock_commit(buffer, event);
1000 }
1001
1002 /**
1003  * __trace_puts - write a constant string into the trace buffer.
1004  * @ip:    The address of the caller
1005  * @str:   The constant string to write
1006  * @size:  The size of the string.
1007  */
1008 int __trace_puts(unsigned long ip, const char *str, int size)
1009 {
1010         struct ring_buffer_event *event;
1011         struct trace_buffer *buffer;
1012         struct print_entry *entry;
1013         unsigned int trace_ctx;
1014         int alloc;
1015
1016         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
1017                 return 0;
1018
1019         if (unlikely(tracing_selftest_running || tracing_disabled))
1020                 return 0;
1021
1022         alloc = sizeof(*entry) + size + 2; /* possible \n added */
1023
1024         trace_ctx = tracing_gen_ctx();
1025         buffer = global_trace.array_buffer.buffer;
1026         ring_buffer_nest_start(buffer);
1027         event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc,
1028                                             trace_ctx);
1029         if (!event) {
1030                 size = 0;
1031                 goto out;
1032         }
1033
1034         entry = ring_buffer_event_data(event);
1035         entry->ip = ip;
1036
1037         memcpy(&entry->buf, str, size);
1038
1039         /* Add a newline if necessary */
1040         if (entry->buf[size - 1] != '\n') {
1041                 entry->buf[size] = '\n';
1042                 entry->buf[size + 1] = '\0';
1043         } else
1044                 entry->buf[size] = '\0';
1045
1046         __buffer_unlock_commit(buffer, event);
1047         ftrace_trace_stack(&global_trace, buffer, trace_ctx, 4, NULL);
1048  out:
1049         ring_buffer_nest_end(buffer);
1050         return size;
1051 }
1052 EXPORT_SYMBOL_GPL(__trace_puts);
1053
1054 /**
1055  * __trace_bputs - write the pointer to a constant string into trace buffer
1056  * @ip:    The address of the caller
1057  * @str:   The constant string to write to the buffer to
1058  */
1059 int __trace_bputs(unsigned long ip, const char *str)
1060 {
1061         struct ring_buffer_event *event;
1062         struct trace_buffer *buffer;
1063         struct bputs_entry *entry;
1064         unsigned int trace_ctx;
1065         int size = sizeof(struct bputs_entry);
1066         int ret = 0;
1067
1068         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
1069                 return 0;
1070
1071         if (unlikely(tracing_selftest_running || tracing_disabled))
1072                 return 0;
1073
1074         trace_ctx = tracing_gen_ctx();
1075         buffer = global_trace.array_buffer.buffer;
1076
1077         ring_buffer_nest_start(buffer);
1078         event = __trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size,
1079                                             trace_ctx);
1080         if (!event)
1081                 goto out;
1082
1083         entry = ring_buffer_event_data(event);
1084         entry->ip                       = ip;
1085         entry->str                      = str;
1086
1087         __buffer_unlock_commit(buffer, event);
1088         ftrace_trace_stack(&global_trace, buffer, trace_ctx, 4, NULL);
1089
1090         ret = 1;
1091  out:
1092         ring_buffer_nest_end(buffer);
1093         return ret;
1094 }
1095 EXPORT_SYMBOL_GPL(__trace_bputs);
1096
1097 #ifdef CONFIG_TRACER_SNAPSHOT
1098 static void tracing_snapshot_instance_cond(struct trace_array *tr,
1099                                            void *cond_data)
1100 {
1101         struct tracer *tracer = tr->current_trace;
1102         unsigned long flags;
1103
1104         if (in_nmi()) {
1105                 internal_trace_puts("*** SNAPSHOT CALLED FROM NMI CONTEXT ***\n");
1106                 internal_trace_puts("*** snapshot is being ignored        ***\n");
1107                 return;
1108         }
1109
1110         if (!tr->allocated_snapshot) {
1111                 internal_trace_puts("*** SNAPSHOT NOT ALLOCATED ***\n");
1112                 internal_trace_puts("*** stopping trace here!   ***\n");
1113                 tracing_off();
1114                 return;
1115         }
1116
1117         /* Note, snapshot can not be used when the tracer uses it */
1118         if (tracer->use_max_tr) {
1119                 internal_trace_puts("*** LATENCY TRACER ACTIVE ***\n");
1120                 internal_trace_puts("*** Can not use snapshot (sorry) ***\n");
1121                 return;
1122         }
1123
1124         local_irq_save(flags);
1125         update_max_tr(tr, current, smp_processor_id(), cond_data);
1126         local_irq_restore(flags);
1127 }
1128
1129 void tracing_snapshot_instance(struct trace_array *tr)
1130 {
1131         tracing_snapshot_instance_cond(tr, NULL);
1132 }
1133
1134 /**
1135  * tracing_snapshot - take a snapshot of the current buffer.
1136  *
1137  * This causes a swap between the snapshot buffer and the current live
1138  * tracing buffer. You can use this to take snapshots of the live
1139  * trace when some condition is triggered, but continue to trace.
1140  *
1141  * Note, make sure to allocate the snapshot with either
1142  * a tracing_snapshot_alloc(), or by doing it manually
1143  * with: echo 1 > /sys/kernel/debug/tracing/snapshot
1144  *
1145  * If the snapshot buffer is not allocated, it will stop tracing.
1146  * Basically making a permanent snapshot.
1147  */
1148 void tracing_snapshot(void)
1149 {
1150         struct trace_array *tr = &global_trace;
1151
1152         tracing_snapshot_instance(tr);
1153 }
1154 EXPORT_SYMBOL_GPL(tracing_snapshot);
1155
1156 /**
1157  * tracing_snapshot_cond - conditionally take a snapshot of the current buffer.
1158  * @tr:         The tracing instance to snapshot
1159  * @cond_data:  The data to be tested conditionally, and possibly saved
1160  *
1161  * This is the same as tracing_snapshot() except that the snapshot is
1162  * conditional - the snapshot will only happen if the
1163  * cond_snapshot.update() implementation receiving the cond_data
1164  * returns true, which means that the trace array's cond_snapshot
1165  * update() operation used the cond_data to determine whether the
1166  * snapshot should be taken, and if it was, presumably saved it along
1167  * with the snapshot.
1168  */
1169 void tracing_snapshot_cond(struct trace_array *tr, void *cond_data)
1170 {
1171         tracing_snapshot_instance_cond(tr, cond_data);
1172 }
1173 EXPORT_SYMBOL_GPL(tracing_snapshot_cond);
1174
1175 /**
1176  * tracing_snapshot_cond_data - get the user data associated with a snapshot
1177  * @tr:         The tracing instance
1178  *
1179  * When the user enables a conditional snapshot using
1180  * tracing_snapshot_cond_enable(), the user-defined cond_data is saved
1181  * with the snapshot.  This accessor is used to retrieve it.
1182  *
1183  * Should not be called from cond_snapshot.update(), since it takes
1184  * the tr->max_lock lock, which the code calling
1185  * cond_snapshot.update() has already done.
1186  *
1187  * Returns the cond_data associated with the trace array's snapshot.
1188  */
1189 void *tracing_cond_snapshot_data(struct trace_array *tr)
1190 {
1191         void *cond_data = NULL;
1192
1193         arch_spin_lock(&tr->max_lock);
1194
1195         if (tr->cond_snapshot)
1196                 cond_data = tr->cond_snapshot->cond_data;
1197
1198         arch_spin_unlock(&tr->max_lock);
1199
1200         return cond_data;
1201 }
1202 EXPORT_SYMBOL_GPL(tracing_cond_snapshot_data);
1203
1204 static int resize_buffer_duplicate_size(struct array_buffer *trace_buf,
1205                                         struct array_buffer *size_buf, int cpu_id);
1206 static void set_buffer_entries(struct array_buffer *buf, unsigned long val);
1207
1208 int tracing_alloc_snapshot_instance(struct trace_array *tr)
1209 {
1210         int ret;
1211
1212         if (!tr->allocated_snapshot) {
1213
1214                 /* allocate spare buffer */
1215                 ret = resize_buffer_duplicate_size(&tr->max_buffer,
1216                                    &tr->array_buffer, RING_BUFFER_ALL_CPUS);
1217                 if (ret < 0)
1218                         return ret;
1219
1220                 tr->allocated_snapshot = true;
1221         }
1222
1223         return 0;
1224 }
1225
1226 static void free_snapshot(struct trace_array *tr)
1227 {
1228         /*
1229          * We don't free the ring buffer. instead, resize it because
1230          * The max_tr ring buffer has some state (e.g. ring->clock) and
1231          * we want preserve it.
1232          */
1233         ring_buffer_resize(tr->max_buffer.buffer, 1, RING_BUFFER_ALL_CPUS);
1234         set_buffer_entries(&tr->max_buffer, 1);
1235         tracing_reset_online_cpus(&tr->max_buffer);
1236         tr->allocated_snapshot = false;
1237 }
1238
1239 /**
1240  * tracing_alloc_snapshot - allocate snapshot buffer.
1241  *
1242  * This only allocates the snapshot buffer if it isn't already
1243  * allocated - it doesn't also take a snapshot.
1244  *
1245  * This is meant to be used in cases where the snapshot buffer needs
1246  * to be set up for events that can't sleep but need to be able to
1247  * trigger a snapshot.
1248  */
1249 int tracing_alloc_snapshot(void)
1250 {
1251         struct trace_array *tr = &global_trace;
1252         int ret;
1253
1254         ret = tracing_alloc_snapshot_instance(tr);
1255         WARN_ON(ret < 0);
1256
1257         return ret;
1258 }
1259 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
1260
1261 /**
1262  * tracing_snapshot_alloc - allocate and take a snapshot of the current buffer.
1263  *
1264  * This is similar to tracing_snapshot(), but it will allocate the
1265  * snapshot buffer if it isn't already allocated. Use this only
1266  * where it is safe to sleep, as the allocation may sleep.
1267  *
1268  * This causes a swap between the snapshot buffer and the current live
1269  * tracing buffer. You can use this to take snapshots of the live
1270  * trace when some condition is triggered, but continue to trace.
1271  */
1272 void tracing_snapshot_alloc(void)
1273 {
1274         int ret;
1275
1276         ret = tracing_alloc_snapshot();
1277         if (ret < 0)
1278                 return;
1279
1280         tracing_snapshot();
1281 }
1282 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
1283
1284 /**
1285  * tracing_snapshot_cond_enable - enable conditional snapshot for an instance
1286  * @tr:         The tracing instance
1287  * @cond_data:  User data to associate with the snapshot
1288  * @update:     Implementation of the cond_snapshot update function
1289  *
1290  * Check whether the conditional snapshot for the given instance has
1291  * already been enabled, or if the current tracer is already using a
1292  * snapshot; if so, return -EBUSY, else create a cond_snapshot and
1293  * save the cond_data and update function inside.
1294  *
1295  * Returns 0 if successful, error otherwise.
1296  */
1297 int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data,
1298                                  cond_update_fn_t update)
1299 {
1300         struct cond_snapshot *cond_snapshot;
1301         int ret = 0;
1302
1303         cond_snapshot = kzalloc(sizeof(*cond_snapshot), GFP_KERNEL);
1304         if (!cond_snapshot)
1305                 return -ENOMEM;
1306
1307         cond_snapshot->cond_data = cond_data;
1308         cond_snapshot->update = update;
1309
1310         mutex_lock(&trace_types_lock);
1311
1312         ret = tracing_alloc_snapshot_instance(tr);
1313         if (ret)
1314                 goto fail_unlock;
1315
1316         if (tr->current_trace->use_max_tr) {
1317                 ret = -EBUSY;
1318                 goto fail_unlock;
1319         }
1320
1321         /*
1322          * The cond_snapshot can only change to NULL without the
1323          * trace_types_lock. We don't care if we race with it going
1324          * to NULL, but we want to make sure that it's not set to
1325          * something other than NULL when we get here, which we can
1326          * do safely with only holding the trace_types_lock and not
1327          * having to take the max_lock.
1328          */
1329         if (tr->cond_snapshot) {
1330                 ret = -EBUSY;
1331                 goto fail_unlock;
1332         }
1333
1334         arch_spin_lock(&tr->max_lock);
1335         tr->cond_snapshot = cond_snapshot;
1336         arch_spin_unlock(&tr->max_lock);
1337
1338         mutex_unlock(&trace_types_lock);
1339
1340         return ret;
1341
1342  fail_unlock:
1343         mutex_unlock(&trace_types_lock);
1344         kfree(cond_snapshot);
1345         return ret;
1346 }
1347 EXPORT_SYMBOL_GPL(tracing_snapshot_cond_enable);
1348
1349 /**
1350  * tracing_snapshot_cond_disable - disable conditional snapshot for an instance
1351  * @tr:         The tracing instance
1352  *
1353  * Check whether the conditional snapshot for the given instance is
1354  * enabled; if so, free the cond_snapshot associated with it,
1355  * otherwise return -EINVAL.
1356  *
1357  * Returns 0 if successful, error otherwise.
1358  */
1359 int tracing_snapshot_cond_disable(struct trace_array *tr)
1360 {
1361         int ret = 0;
1362
1363         arch_spin_lock(&tr->max_lock);
1364
1365         if (!tr->cond_snapshot)
1366                 ret = -EINVAL;
1367         else {
1368                 kfree(tr->cond_snapshot);
1369                 tr->cond_snapshot = NULL;
1370         }
1371
1372         arch_spin_unlock(&tr->max_lock);
1373
1374         return ret;
1375 }
1376 EXPORT_SYMBOL_GPL(tracing_snapshot_cond_disable);
1377 #else
1378 void tracing_snapshot(void)
1379 {
1380         WARN_ONCE(1, "Snapshot feature not enabled, but internal snapshot used");
1381 }
1382 EXPORT_SYMBOL_GPL(tracing_snapshot);
1383 void tracing_snapshot_cond(struct trace_array *tr, void *cond_data)
1384 {
1385         WARN_ONCE(1, "Snapshot feature not enabled, but internal conditional snapshot used");
1386 }
1387 EXPORT_SYMBOL_GPL(tracing_snapshot_cond);
1388 int tracing_alloc_snapshot(void)
1389 {
1390         WARN_ONCE(1, "Snapshot feature not enabled, but snapshot allocation used");
1391         return -ENODEV;
1392 }
1393 EXPORT_SYMBOL_GPL(tracing_alloc_snapshot);
1394 void tracing_snapshot_alloc(void)
1395 {
1396         /* Give warning */
1397         tracing_snapshot();
1398 }
1399 EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
1400 void *tracing_cond_snapshot_data(struct trace_array *tr)
1401 {
1402         return NULL;
1403 }
1404 EXPORT_SYMBOL_GPL(tracing_cond_snapshot_data);
1405 int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data, cond_update_fn_t update)
1406 {
1407         return -ENODEV;
1408 }
1409 EXPORT_SYMBOL_GPL(tracing_snapshot_cond_enable);
1410 int tracing_snapshot_cond_disable(struct trace_array *tr)
1411 {
1412         return false;
1413 }
1414 EXPORT_SYMBOL_GPL(tracing_snapshot_cond_disable);
1415 #endif /* CONFIG_TRACER_SNAPSHOT */
1416
1417 void tracer_tracing_off(struct trace_array *tr)
1418 {
1419         if (tr->array_buffer.buffer)
1420                 ring_buffer_record_off(tr->array_buffer.buffer);
1421         /*
1422          * This flag is looked at when buffers haven't been allocated
1423          * yet, or by some tracers (like irqsoff), that just want to
1424          * know if the ring buffer has been disabled, but it can handle
1425          * races of where it gets disabled but we still do a record.
1426          * As the check is in the fast path of the tracers, it is more
1427          * important to be fast than accurate.
1428          */
1429         tr->buffer_disabled = 1;
1430         /* Make the flag seen by readers */
1431         smp_wmb();
1432 }
1433
1434 /**
1435  * tracing_off - turn off tracing buffers
1436  *
1437  * This function stops the tracing buffers from recording data.
1438  * It does not disable any overhead the tracers themselves may
1439  * be causing. This function simply causes all recording to
1440  * the ring buffers to fail.
1441  */
1442 void tracing_off(void)
1443 {
1444         tracer_tracing_off(&global_trace);
1445 }
1446 EXPORT_SYMBOL_GPL(tracing_off);
1447
1448 void disable_trace_on_warning(void)
1449 {
1450         if (__disable_trace_on_warning) {
1451                 trace_array_printk_buf(global_trace.array_buffer.buffer, _THIS_IP_,
1452                         "Disabling tracing due to warning\n");
1453                 tracing_off();
1454         }
1455 }
1456
1457 /**
1458  * tracer_tracing_is_on - show real state of ring buffer enabled
1459  * @tr : the trace array to know if ring buffer is enabled
1460  *
1461  * Shows real state of the ring buffer if it is enabled or not.
1462  */
1463 bool tracer_tracing_is_on(struct trace_array *tr)
1464 {
1465         if (tr->array_buffer.buffer)
1466                 return ring_buffer_record_is_on(tr->array_buffer.buffer);
1467         return !tr->buffer_disabled;
1468 }
1469
1470 /**
1471  * tracing_is_on - show state of ring buffers enabled
1472  */
1473 int tracing_is_on(void)
1474 {
1475         return tracer_tracing_is_on(&global_trace);
1476 }
1477 EXPORT_SYMBOL_GPL(tracing_is_on);
1478
1479 static int __init set_buf_size(char *str)
1480 {
1481         unsigned long buf_size;
1482
1483         if (!str)
1484                 return 0;
1485         buf_size = memparse(str, &str);
1486         /* nr_entries can not be zero */
1487         if (buf_size == 0)
1488                 return 0;
1489         trace_buf_size = buf_size;
1490         return 1;
1491 }
1492 __setup("trace_buf_size=", set_buf_size);
1493
1494 static int __init set_tracing_thresh(char *str)
1495 {
1496         unsigned long threshold;
1497         int ret;
1498
1499         if (!str)
1500                 return 0;
1501         ret = kstrtoul(str, 0, &threshold);
1502         if (ret < 0)
1503                 return 0;
1504         tracing_thresh = threshold * 1000;
1505         return 1;
1506 }
1507 __setup("tracing_thresh=", set_tracing_thresh);
1508
1509 unsigned long nsecs_to_usecs(unsigned long nsecs)
1510 {
1511         return nsecs / 1000;
1512 }
1513
1514 /*
1515  * TRACE_FLAGS is defined as a tuple matching bit masks with strings.
1516  * It uses C(a, b) where 'a' is the eval (enum) name and 'b' is the string that
1517  * matches it. By defining "C(a, b) b", TRACE_FLAGS becomes a list
1518  * of strings in the order that the evals (enum) were defined.
1519  */
1520 #undef C
1521 #define C(a, b) b
1522
1523 /* These must match the bit postions in trace_iterator_flags */
1524 static const char *trace_options[] = {
1525         TRACE_FLAGS
1526         NULL
1527 };
1528
1529 static struct {
1530         u64 (*func)(void);
1531         const char *name;
1532         int in_ns;              /* is this clock in nanoseconds? */
1533 } trace_clocks[] = {
1534         { trace_clock_local,            "local",        1 },
1535         { trace_clock_global,           "global",       1 },
1536         { trace_clock_counter,          "counter",      0 },
1537         { trace_clock_jiffies,          "uptime",       0 },
1538         { trace_clock,                  "perf",         1 },
1539         { ktime_get_mono_fast_ns,       "mono",         1 },
1540         { ktime_get_raw_fast_ns,        "mono_raw",     1 },
1541         { ktime_get_boot_fast_ns,       "boot",         1 },
1542         ARCH_TRACE_CLOCKS
1543 };
1544
1545 bool trace_clock_in_ns(struct trace_array *tr)
1546 {
1547         if (trace_clocks[tr->clock_id].in_ns)
1548                 return true;
1549
1550         return false;
1551 }
1552
1553 /*
1554  * trace_parser_get_init - gets the buffer for trace parser
1555  */
1556 int trace_parser_get_init(struct trace_parser *parser, int size)
1557 {
1558         memset(parser, 0, sizeof(*parser));
1559
1560         parser->buffer = kmalloc(size, GFP_KERNEL);
1561         if (!parser->buffer)
1562                 return 1;
1563
1564         parser->size = size;
1565         return 0;
1566 }
1567
1568 /*
1569  * trace_parser_put - frees the buffer for trace parser
1570  */
1571 void trace_parser_put(struct trace_parser *parser)
1572 {
1573         kfree(parser->buffer);
1574         parser->buffer = NULL;
1575 }
1576
1577 /*
1578  * trace_get_user - reads the user input string separated by  space
1579  * (matched by isspace(ch))
1580  *
1581  * For each string found the 'struct trace_parser' is updated,
1582  * and the function returns.
1583  *
1584  * Returns number of bytes read.
1585  *
1586  * See kernel/trace/trace.h for 'struct trace_parser' details.
1587  */
1588 int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
1589         size_t cnt, loff_t *ppos)
1590 {
1591         char ch;
1592         size_t read = 0;
1593         ssize_t ret;
1594
1595         if (!*ppos)
1596                 trace_parser_clear(parser);
1597
1598         ret = get_user(ch, ubuf++);
1599         if (ret)
1600                 goto out;
1601
1602         read++;
1603         cnt--;
1604
1605         /*
1606          * The parser is not finished with the last write,
1607          * continue reading the user input without skipping spaces.
1608          */
1609         if (!parser->cont) {
1610                 /* skip white space */
1611                 while (cnt && isspace(ch)) {
1612                         ret = get_user(ch, ubuf++);
1613                         if (ret)
1614                                 goto out;
1615                         read++;
1616                         cnt--;
1617                 }
1618
1619                 parser->idx = 0;
1620
1621                 /* only spaces were written */
1622                 if (isspace(ch) || !ch) {
1623                         *ppos += read;
1624                         ret = read;
1625                         goto out;
1626                 }
1627         }
1628
1629         /* read the non-space input */
1630         while (cnt && !isspace(ch) && ch) {
1631                 if (parser->idx < parser->size - 1)
1632                         parser->buffer[parser->idx++] = ch;
1633                 else {
1634                         ret = -EINVAL;
1635                         goto out;
1636                 }
1637                 ret = get_user(ch, ubuf++);
1638                 if (ret)
1639                         goto out;
1640                 read++;
1641                 cnt--;
1642         }
1643
1644         /* We either got finished input or we have to wait for another call. */
1645         if (isspace(ch) || !ch) {
1646                 parser->buffer[parser->idx] = 0;
1647                 parser->cont = false;
1648         } else if (parser->idx < parser->size - 1) {
1649                 parser->cont = true;
1650                 parser->buffer[parser->idx++] = ch;
1651                 /* Make sure the parsed string always terminates with '\0'. */
1652                 parser->buffer[parser->idx] = 0;
1653         } else {
1654                 ret = -EINVAL;
1655                 goto out;
1656         }
1657
1658         *ppos += read;
1659         ret = read;
1660
1661 out:
1662         return ret;
1663 }
1664
1665 /* TODO add a seq_buf_to_buffer() */
1666 static ssize_t trace_seq_to_buffer(struct trace_seq *s, void *buf, size_t cnt)
1667 {
1668         int len;
1669
1670         if (trace_seq_used(s) <= s->seq.readpos)
1671                 return -EBUSY;
1672
1673         len = trace_seq_used(s) - s->seq.readpos;
1674         if (cnt > len)
1675                 cnt = len;
1676         memcpy(buf, s->buffer + s->seq.readpos, cnt);
1677
1678         s->seq.readpos += cnt;
1679         return cnt;
1680 }
1681
1682 unsigned long __read_mostly     tracing_thresh;
1683 static const struct file_operations tracing_max_lat_fops;
1684
1685 #if (defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)) && \
1686         defined(CONFIG_FSNOTIFY)
1687
1688 static struct workqueue_struct *fsnotify_wq;
1689
1690 static void latency_fsnotify_workfn(struct work_struct *work)
1691 {
1692         struct trace_array *tr = container_of(work, struct trace_array,
1693                                               fsnotify_work);
1694         fsnotify_inode(tr->d_max_latency->d_inode, FS_MODIFY);
1695 }
1696
1697 static void latency_fsnotify_workfn_irq(struct irq_work *iwork)
1698 {
1699         struct trace_array *tr = container_of(iwork, struct trace_array,
1700                                               fsnotify_irqwork);
1701         queue_work(fsnotify_wq, &tr->fsnotify_work);
1702 }
1703
1704 static void trace_create_maxlat_file(struct trace_array *tr,
1705                                      struct dentry *d_tracer)
1706 {
1707         INIT_WORK(&tr->fsnotify_work, latency_fsnotify_workfn);
1708         init_irq_work(&tr->fsnotify_irqwork, latency_fsnotify_workfn_irq);
1709         tr->d_max_latency = trace_create_file("tracing_max_latency", 0644,
1710                                               d_tracer, &tr->max_latency,
1711                                               &tracing_max_lat_fops);
1712 }
1713
1714 __init static int latency_fsnotify_init(void)
1715 {
1716         fsnotify_wq = alloc_workqueue("tr_max_lat_wq",
1717                                       WQ_UNBOUND | WQ_HIGHPRI, 0);
1718         if (!fsnotify_wq) {
1719                 pr_err("Unable to allocate tr_max_lat_wq\n");
1720                 return -ENOMEM;
1721         }
1722         return 0;
1723 }
1724
1725 late_initcall_sync(latency_fsnotify_init);
1726
1727 void latency_fsnotify(struct trace_array *tr)
1728 {
1729         if (!fsnotify_wq)
1730                 return;
1731         /*
1732          * We cannot call queue_work(&tr->fsnotify_work) from here because it's
1733          * possible that we are called from __schedule() or do_idle(), which
1734          * could cause a deadlock.
1735          */
1736         irq_work_queue(&tr->fsnotify_irqwork);
1737 }
1738
1739 /*
1740  * (defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)) && \
1741  *  defined(CONFIG_FSNOTIFY)
1742  */
1743 #else
1744
1745 #define trace_create_maxlat_file(tr, d_tracer)                          \
1746         trace_create_file("tracing_max_latency", 0644, d_tracer,        \
1747                           &tr->max_latency, &tracing_max_lat_fops)
1748
1749 #endif
1750
1751 #ifdef CONFIG_TRACER_MAX_TRACE
1752 /*
1753  * Copy the new maximum trace into the separate maximum-trace
1754  * structure. (this way the maximum trace is permanently saved,
1755  * for later retrieval via /sys/kernel/tracing/tracing_max_latency)
1756  */
1757 static void
1758 __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
1759 {
1760         struct array_buffer *trace_buf = &tr->array_buffer;
1761         struct array_buffer *max_buf = &tr->max_buffer;
1762         struct trace_array_cpu *data = per_cpu_ptr(trace_buf->data, cpu);
1763         struct trace_array_cpu *max_data = per_cpu_ptr(max_buf->data, cpu);
1764
1765         max_buf->cpu = cpu;
1766         max_buf->time_start = data->preempt_timestamp;
1767
1768         max_data->saved_latency = tr->max_latency;
1769         max_data->critical_start = data->critical_start;
1770         max_data->critical_end = data->critical_end;
1771
1772         strncpy(max_data->comm, tsk->comm, TASK_COMM_LEN);
1773         max_data->pid = tsk->pid;
1774         /*
1775          * If tsk == current, then use current_uid(), as that does not use
1776          * RCU. The irq tracer can be called out of RCU scope.
1777          */
1778         if (tsk == current)
1779                 max_data->uid = current_uid();
1780         else
1781                 max_data->uid = task_uid(tsk);
1782
1783         max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
1784         max_data->policy = tsk->policy;
1785         max_data->rt_priority = tsk->rt_priority;
1786
1787         /* record this tasks comm */
1788         tracing_record_cmdline(tsk);
1789         latency_fsnotify(tr);
1790 }
1791
1792 /**
1793  * update_max_tr - snapshot all trace buffers from global_trace to max_tr
1794  * @tr: tracer
1795  * @tsk: the task with the latency
1796  * @cpu: The cpu that initiated the trace.
1797  * @cond_data: User data associated with a conditional snapshot
1798  *
1799  * Flip the buffers between the @tr and the max_tr and record information
1800  * about which task was the cause of this latency.
1801  */
1802 void
1803 update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu,
1804               void *cond_data)
1805 {
1806         if (tr->stop_count)
1807                 return;
1808
1809         WARN_ON_ONCE(!irqs_disabled());
1810
1811         if (!tr->allocated_snapshot) {
1812                 /* Only the nop tracer should hit this when disabling */
1813                 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1814                 return;
1815         }
1816
1817         arch_spin_lock(&tr->max_lock);
1818
1819         /* Inherit the recordable setting from array_buffer */
1820         if (ring_buffer_record_is_set_on(tr->array_buffer.buffer))
1821                 ring_buffer_record_on(tr->max_buffer.buffer);
1822         else
1823                 ring_buffer_record_off(tr->max_buffer.buffer);
1824
1825 #ifdef CONFIG_TRACER_SNAPSHOT
1826         if (tr->cond_snapshot && !tr->cond_snapshot->update(tr, cond_data))
1827                 goto out_unlock;
1828 #endif
1829         swap(tr->array_buffer.buffer, tr->max_buffer.buffer);
1830
1831         __update_max_tr(tr, tsk, cpu);
1832
1833  out_unlock:
1834         arch_spin_unlock(&tr->max_lock);
1835 }
1836
1837 /**
1838  * update_max_tr_single - only copy one trace over, and reset the rest
1839  * @tr: tracer
1840  * @tsk: task with the latency
1841  * @cpu: the cpu of the buffer to copy.
1842  *
1843  * Flip the trace of a single CPU buffer between the @tr and the max_tr.
1844  */
1845 void
1846 update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
1847 {
1848         int ret;
1849
1850         if (tr->stop_count)
1851                 return;
1852
1853         WARN_ON_ONCE(!irqs_disabled());
1854         if (!tr->allocated_snapshot) {
1855                 /* Only the nop tracer should hit this when disabling */
1856                 WARN_ON_ONCE(tr->current_trace != &nop_trace);
1857                 return;
1858         }
1859
1860         arch_spin_lock(&tr->max_lock);
1861
1862         ret = ring_buffer_swap_cpu(tr->max_buffer.buffer, tr->array_buffer.buffer, cpu);
1863
1864         if (ret == -EBUSY) {
1865                 /*
1866                  * We failed to swap the buffer due to a commit taking
1867                  * place on this CPU. We fail to record, but we reset
1868                  * the max trace buffer (no one writes directly to it)
1869                  * and flag that it failed.
1870                  */
1871                 trace_array_printk_buf(tr->max_buffer.buffer, _THIS_IP_,
1872                         "Failed to swap buffers due to commit in progress\n");
1873         }
1874
1875         WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY);
1876
1877         __update_max_tr(tr, tsk, cpu);
1878         arch_spin_unlock(&tr->max_lock);
1879 }
1880 #endif /* CONFIG_TRACER_MAX_TRACE */
1881
1882 static int wait_on_pipe(struct trace_iterator *iter, int full)
1883 {
1884         /* Iterators are static, they should be filled or empty */
1885         if (trace_buffer_iter(iter, iter->cpu_file))
1886                 return 0;
1887
1888         return ring_buffer_wait(iter->array_buffer->buffer, iter->cpu_file,
1889                                 full);
1890 }
1891
1892 #ifdef CONFIG_FTRACE_STARTUP_TEST
1893 static bool selftests_can_run;
1894
1895 struct trace_selftests {
1896         struct list_head                list;
1897         struct tracer                   *type;
1898 };
1899
1900 static LIST_HEAD(postponed_selftests);
1901
1902 static int save_selftest(struct tracer *type)
1903 {
1904         struct trace_selftests *selftest;
1905
1906         selftest = kmalloc(sizeof(*selftest), GFP_KERNEL);
1907         if (!selftest)
1908                 return -ENOMEM;
1909
1910         selftest->type = type;
1911         list_add(&selftest->list, &postponed_selftests);
1912         return 0;
1913 }
1914
1915 static int run_tracer_selftest(struct tracer *type)
1916 {
1917         struct trace_array *tr = &global_trace;
1918         struct tracer *saved_tracer = tr->current_trace;
1919         int ret;
1920
1921         if (!type->selftest || tracing_selftest_disabled)
1922                 return 0;
1923
1924         /*
1925          * If a tracer registers early in boot up (before scheduling is
1926          * initialized and such), then do not run its selftests yet.
1927          * Instead, run it a little later in the boot process.
1928          */
1929         if (!selftests_can_run)
1930                 return save_selftest(type);
1931
1932         if (!tracing_is_on()) {
1933                 pr_warn("Selftest for tracer %s skipped due to tracing disabled\n",
1934                         type->name);
1935                 return 0;
1936         }
1937
1938         /*
1939          * Run a selftest on this tracer.
1940          * Here we reset the trace buffer, and set the current
1941          * tracer to be this tracer. The tracer can then run some
1942          * internal tracing to verify that everything is in order.
1943          * If we fail, we do not register this tracer.
1944          */
1945         tracing_reset_online_cpus(&tr->array_buffer);
1946
1947         tr->current_trace = type;
1948
1949 #ifdef CONFIG_TRACER_MAX_TRACE
1950         if (type->use_max_tr) {
1951                 /* If we expanded the buffers, make sure the max is expanded too */
1952                 if (ring_buffer_expanded)
1953                         ring_buffer_resize(tr->max_buffer.buffer, trace_buf_size,
1954                                            RING_BUFFER_ALL_CPUS);
1955                 tr->allocated_snapshot = true;
1956         }
1957 #endif
1958
1959         /* the test is responsible for initializing and enabling */
1960         pr_info("Testing tracer %s: ", type->name);
1961         ret = type->selftest(type, tr);
1962         /* the test is responsible for resetting too */
1963         tr->current_trace = saved_tracer;
1964         if (ret) {
1965                 printk(KERN_CONT "FAILED!\n");
1966                 /* Add the warning after printing 'FAILED' */
1967                 WARN_ON(1);
1968                 return -1;
1969         }
1970         /* Only reset on passing, to avoid touching corrupted buffers */
1971         tracing_reset_online_cpus(&tr->array_buffer);
1972
1973 #ifdef CONFIG_TRACER_MAX_TRACE
1974         if (type->use_max_tr) {
1975                 tr->allocated_snapshot = false;
1976
1977                 /* Shrink the max buffer again */
1978                 if (ring_buffer_expanded)
1979                         ring_buffer_resize(tr->max_buffer.buffer, 1,
1980                                            RING_BUFFER_ALL_CPUS);
1981         }
1982 #endif
1983
1984         printk(KERN_CONT "PASSED\n");
1985         return 0;
1986 }
1987
1988 static __init int init_trace_selftests(void)
1989 {
1990         struct trace_selftests *p, *n;
1991         struct tracer *t, **last;
1992         int ret;
1993
1994         selftests_can_run = true;
1995
1996         mutex_lock(&trace_types_lock);
1997
1998         if (list_empty(&postponed_selftests))
1999                 goto out;
2000
2001         pr_info("Running postponed tracer tests:\n");
2002
2003         tracing_selftest_running = true;
2004         list_for_each_entry_safe(p, n, &postponed_selftests, list) {
2005                 /* This loop can take minutes when sanitizers are enabled, so
2006                  * lets make sure we allow RCU processing.
2007                  */
2008                 cond_resched();
2009                 ret = run_tracer_selftest(p->type);
2010                 /* If the test fails, then warn and remove from available_tracers */
2011                 if (ret < 0) {
2012                         WARN(1, "tracer: %s failed selftest, disabling\n",
2013                              p->type->name);
2014                         last = &trace_types;
2015                         for (t = trace_types; t; t = t->next) {
2016                                 if (t == p->type) {
2017                                         *last = t->next;
2018                                         break;
2019                                 }
2020                                 last = &t->next;
2021                         }
2022                 }
2023                 list_del(&p->list);
2024                 kfree(p);
2025         }
2026         tracing_selftest_running = false;
2027
2028  out:
2029         mutex_unlock(&trace_types_lock);
2030
2031         return 0;
2032 }
2033 core_initcall(init_trace_selftests);
2034 #else
2035 static inline int run_tracer_selftest(struct tracer *type)
2036 {
2037         return 0;
2038 }
2039 #endif /* CONFIG_FTRACE_STARTUP_TEST */
2040
2041 static void add_tracer_options(struct trace_array *tr, struct tracer *t);
2042
2043 static void __init apply_trace_boot_options(void);
2044
2045 /**
2046  * register_tracer - register a tracer with the ftrace system.
2047  * @type: the plugin for the tracer
2048  *
2049  * Register a new plugin tracer.
2050  */
2051 int __init register_tracer(struct tracer *type)
2052 {
2053         struct tracer *t;
2054         int ret = 0;
2055
2056         if (!type->name) {
2057                 pr_info("Tracer must have a name\n");
2058                 return -1;
2059         }
2060
2061         if (strlen(type->name) >= MAX_TRACER_SIZE) {
2062                 pr_info("Tracer has a name longer than %d\n", MAX_TRACER_SIZE);
2063                 return -1;
2064         }
2065
2066         if (security_locked_down(LOCKDOWN_TRACEFS)) {
2067                 pr_warn("Can not register tracer %s due to lockdown\n",
2068                            type->name);
2069                 return -EPERM;
2070         }
2071
2072         mutex_lock(&trace_types_lock);
2073
2074         tracing_selftest_running = true;
2075
2076         for (t = trace_types; t; t = t->next) {
2077                 if (strcmp(type->name, t->name) == 0) {
2078                         /* already found */
2079                         pr_info("Tracer %s already registered\n",
2080                                 type->name);
2081                         ret = -1;
2082                         goto out;
2083                 }
2084         }
2085
2086         if (!type->set_flag)
2087                 type->set_flag = &dummy_set_flag;
2088         if (!type->flags) {
2089                 /*allocate a dummy tracer_flags*/
2090                 type->flags = kmalloc(sizeof(*type->flags), GFP_KERNEL);
2091                 if (!type->flags) {
2092                         ret = -ENOMEM;
2093                         goto out;
2094                 }
2095                 type->flags->val = 0;
2096                 type->flags->opts = dummy_tracer_opt;
2097         } else
2098                 if (!type->flags->opts)
2099                         type->flags->opts = dummy_tracer_opt;
2100
2101         /* store the tracer for __set_tracer_option */
2102         type->flags->trace = type;
2103
2104         ret = run_tracer_selftest(type);
2105         if (ret < 0)
2106                 goto out;
2107
2108         type->next = trace_types;
2109         trace_types = type;
2110         add_tracer_options(&global_trace, type);
2111
2112  out:
2113         tracing_selftest_running = false;
2114         mutex_unlock(&trace_types_lock);
2115
2116         if (ret || !default_bootup_tracer)
2117                 goto out_unlock;
2118
2119         if (strncmp(default_bootup_tracer, type->name, MAX_TRACER_SIZE))
2120                 goto out_unlock;
2121
2122         printk(KERN_INFO "Starting tracer '%s'\n", type->name);
2123         /* Do we want this tracer to start on bootup? */
2124         tracing_set_tracer(&global_trace, type->name);
2125         default_bootup_tracer = NULL;
2126
2127         apply_trace_boot_options();
2128
2129         /* disable other selftests, since this will break it. */
2130         disable_tracing_selftest("running a tracer");
2131
2132  out_unlock:
2133         return ret;
2134 }
2135
2136 static void tracing_reset_cpu(struct array_buffer *buf, int cpu)
2137 {
2138         struct trace_buffer *buffer = buf->buffer;
2139
2140         if (!buffer)
2141                 return;
2142
2143         ring_buffer_record_disable(buffer);
2144
2145         /* Make sure all commits have finished */
2146         synchronize_rcu();
2147         ring_buffer_reset_cpu(buffer, cpu);
2148
2149         ring_buffer_record_enable(buffer);
2150 }
2151
2152 void tracing_reset_online_cpus(struct array_buffer *buf)
2153 {
2154         struct trace_buffer *buffer = buf->buffer;
2155
2156         if (!buffer)
2157                 return;
2158
2159         ring_buffer_record_disable(buffer);
2160
2161         /* Make sure all commits have finished */
2162         synchronize_rcu();
2163
2164         buf->time_start = buffer_ftrace_now(buf, buf->cpu);
2165
2166         ring_buffer_reset_online_cpus(buffer);
2167
2168         ring_buffer_record_enable(buffer);
2169 }
2170
2171 /* Must have trace_types_lock held */
2172 void tracing_reset_all_online_cpus(void)
2173 {
2174         struct trace_array *tr;
2175
2176         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
2177                 if (!tr->clear_trace)
2178                         continue;
2179                 tr->clear_trace = false;
2180                 tracing_reset_online_cpus(&tr->array_buffer);
2181 #ifdef CONFIG_TRACER_MAX_TRACE
2182                 tracing_reset_online_cpus(&tr->max_buffer);
2183 #endif
2184         }
2185 }
2186
2187 static int *tgid_map;
2188
2189 #define SAVED_CMDLINES_DEFAULT 128
2190 #define NO_CMDLINE_MAP UINT_MAX
2191 static arch_spinlock_t trace_cmdline_lock = __ARCH_SPIN_LOCK_UNLOCKED;
2192 struct saved_cmdlines_buffer {
2193         unsigned map_pid_to_cmdline[PID_MAX_DEFAULT+1];
2194         unsigned *map_cmdline_to_pid;
2195         unsigned cmdline_num;
2196         int cmdline_idx;
2197         char *saved_cmdlines;
2198 };
2199 static struct saved_cmdlines_buffer *savedcmd;
2200
2201 /* temporary disable recording */
2202 static atomic_t trace_record_taskinfo_disabled __read_mostly;
2203
2204 static inline char *get_saved_cmdlines(int idx)
2205 {
2206         return &savedcmd->saved_cmdlines[idx * TASK_COMM_LEN];
2207 }
2208
2209 static inline void set_cmdline(int idx, const char *cmdline)
2210 {
2211         strncpy(get_saved_cmdlines(idx), cmdline, TASK_COMM_LEN);
2212 }
2213
2214 static int allocate_cmdlines_buffer(unsigned int val,
2215                                     struct saved_cmdlines_buffer *s)
2216 {
2217         s->map_cmdline_to_pid = kmalloc_array(val,
2218                                               sizeof(*s->map_cmdline_to_pid),
2219                                               GFP_KERNEL);
2220         if (!s->map_cmdline_to_pid)
2221                 return -ENOMEM;
2222
2223         s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
2224         if (!s->saved_cmdlines) {
2225                 kfree(s->map_cmdline_to_pid);
2226                 return -ENOMEM;
2227         }
2228
2229         s->cmdline_idx = 0;
2230         s->cmdline_num = val;
2231         memset(&s->map_pid_to_cmdline, NO_CMDLINE_MAP,
2232                sizeof(s->map_pid_to_cmdline));
2233         memset(s->map_cmdline_to_pid, NO_CMDLINE_MAP,
2234                val * sizeof(*s->map_cmdline_to_pid));
2235
2236         return 0;
2237 }
2238
2239 static int trace_create_savedcmd(void)
2240 {
2241         int ret;
2242
2243         savedcmd = kmalloc(sizeof(*savedcmd), GFP_KERNEL);
2244         if (!savedcmd)
2245                 return -ENOMEM;
2246
2247         ret = allocate_cmdlines_buffer(SAVED_CMDLINES_DEFAULT, savedcmd);
2248         if (ret < 0) {
2249                 kfree(savedcmd);
2250                 savedcmd = NULL;
2251                 return -ENOMEM;
2252         }
2253
2254         return 0;
2255 }
2256
2257 int is_tracing_stopped(void)
2258 {
2259         return global_trace.stop_count;
2260 }
2261
2262 /**
2263  * tracing_start - quick start of the tracer
2264  *
2265  * If tracing is enabled but was stopped by tracing_stop,
2266  * this will start the tracer back up.
2267  */
2268 void tracing_start(void)
2269 {
2270         struct trace_buffer *buffer;
2271         unsigned long flags;
2272
2273         if (tracing_disabled)
2274                 return;
2275
2276         raw_spin_lock_irqsave(&global_trace.start_lock, flags);
2277         if (--global_trace.stop_count) {
2278                 if (global_trace.stop_count < 0) {
2279                         /* Someone screwed up their debugging */
2280                         WARN_ON_ONCE(1);
2281                         global_trace.stop_count = 0;
2282                 }
2283                 goto out;
2284         }
2285
2286         /* Prevent the buffers from switching */
2287         arch_spin_lock(&global_trace.max_lock);
2288
2289         buffer = global_trace.array_buffer.buffer;
2290         if (buffer)
2291                 ring_buffer_record_enable(buffer);
2292
2293 #ifdef CONFIG_TRACER_MAX_TRACE
2294         buffer = global_trace.max_buffer.buffer;
2295         if (buffer)
2296                 ring_buffer_record_enable(buffer);
2297 #endif
2298
2299         arch_spin_unlock(&global_trace.max_lock);
2300
2301  out:
2302         raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
2303 }
2304
2305 static void tracing_start_tr(struct trace_array *tr)
2306 {
2307         struct trace_buffer *buffer;
2308         unsigned long flags;
2309
2310         if (tracing_disabled)
2311                 return;
2312
2313         /* If global, we need to also start the max tracer */
2314         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
2315                 return tracing_start();
2316
2317         raw_spin_lock_irqsave(&tr->start_lock, flags);
2318
2319         if (--tr->stop_count) {
2320                 if (tr->stop_count < 0) {
2321                         /* Someone screwed up their debugging */
2322                         WARN_ON_ONCE(1);
2323                         tr->stop_count = 0;
2324                 }
2325                 goto out;
2326         }
2327
2328         buffer = tr->array_buffer.buffer;
2329         if (buffer)
2330                 ring_buffer_record_enable(buffer);
2331
2332  out:
2333         raw_spin_unlock_irqrestore(&tr->start_lock, flags);
2334 }
2335
2336 /**
2337  * tracing_stop - quick stop of the tracer
2338  *
2339  * Light weight way to stop tracing. Use in conjunction with
2340  * tracing_start.
2341  */
2342 void tracing_stop(void)
2343 {
2344         struct trace_buffer *buffer;
2345         unsigned long flags;
2346
2347         raw_spin_lock_irqsave(&global_trace.start_lock, flags);
2348         if (global_trace.stop_count++)
2349                 goto out;
2350
2351         /* Prevent the buffers from switching */
2352         arch_spin_lock(&global_trace.max_lock);
2353
2354         buffer = global_trace.array_buffer.buffer;
2355         if (buffer)
2356                 ring_buffer_record_disable(buffer);
2357
2358 #ifdef CONFIG_TRACER_MAX_TRACE
2359         buffer = global_trace.max_buffer.buffer;
2360         if (buffer)
2361                 ring_buffer_record_disable(buffer);
2362 #endif
2363
2364         arch_spin_unlock(&global_trace.max_lock);
2365
2366  out:
2367         raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
2368 }
2369
2370 static void tracing_stop_tr(struct trace_array *tr)
2371 {
2372         struct trace_buffer *buffer;
2373         unsigned long flags;
2374
2375         /* If global, we need to also stop the max tracer */
2376         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
2377                 return tracing_stop();
2378
2379         raw_spin_lock_irqsave(&tr->start_lock, flags);
2380         if (tr->stop_count++)
2381                 goto out;
2382
2383         buffer = tr->array_buffer.buffer;
2384         if (buffer)
2385                 ring_buffer_record_disable(buffer);
2386
2387  out:
2388         raw_spin_unlock_irqrestore(&tr->start_lock, flags);
2389 }
2390
2391 static int trace_save_cmdline(struct task_struct *tsk)
2392 {
2393         unsigned pid, idx;
2394
2395         /* treat recording of idle task as a success */
2396         if (!tsk->pid)
2397                 return 1;
2398
2399         if (unlikely(tsk->pid > PID_MAX_DEFAULT))
2400                 return 0;
2401
2402         /*
2403          * It's not the end of the world if we don't get
2404          * the lock, but we also don't want to spin
2405          * nor do we want to disable interrupts,
2406          * so if we miss here, then better luck next time.
2407          */
2408         if (!arch_spin_trylock(&trace_cmdline_lock))
2409                 return 0;
2410
2411         idx = savedcmd->map_pid_to_cmdline[tsk->pid];
2412         if (idx == NO_CMDLINE_MAP) {
2413                 idx = (savedcmd->cmdline_idx + 1) % savedcmd->cmdline_num;
2414
2415                 /*
2416                  * Check whether the cmdline buffer at idx has a pid
2417                  * mapped. We are going to overwrite that entry so we
2418                  * need to clear the map_pid_to_cmdline. Otherwise we
2419                  * would read the new comm for the old pid.
2420                  */
2421                 pid = savedcmd->map_cmdline_to_pid[idx];
2422                 if (pid != NO_CMDLINE_MAP)
2423                         savedcmd->map_pid_to_cmdline[pid] = NO_CMDLINE_MAP;
2424
2425                 savedcmd->map_cmdline_to_pid[idx] = tsk->pid;
2426                 savedcmd->map_pid_to_cmdline[tsk->pid] = idx;
2427
2428                 savedcmd->cmdline_idx = idx;
2429         }
2430
2431         set_cmdline(idx, tsk->comm);
2432
2433         arch_spin_unlock(&trace_cmdline_lock);
2434
2435         return 1;
2436 }
2437
2438 static void __trace_find_cmdline(int pid, char comm[])
2439 {
2440         unsigned map;
2441
2442         if (!pid) {
2443                 strcpy(comm, "<idle>");
2444                 return;
2445         }
2446
2447         if (WARN_ON_ONCE(pid < 0)) {
2448                 strcpy(comm, "<XXX>");
2449                 return;
2450         }
2451
2452         if (pid > PID_MAX_DEFAULT) {
2453                 strcpy(comm, "<...>");
2454                 return;
2455         }
2456
2457         map = savedcmd->map_pid_to_cmdline[pid];
2458         if (map != NO_CMDLINE_MAP)
2459                 strlcpy(comm, get_saved_cmdlines(map), TASK_COMM_LEN);
2460         else
2461                 strcpy(comm, "<...>");
2462 }
2463
2464 void trace_find_cmdline(int pid, char comm[])
2465 {
2466         preempt_disable();
2467         arch_spin_lock(&trace_cmdline_lock);
2468
2469         __trace_find_cmdline(pid, comm);
2470
2471         arch_spin_unlock(&trace_cmdline_lock);
2472         preempt_enable();
2473 }
2474
2475 int trace_find_tgid(int pid)
2476 {
2477         if (unlikely(!tgid_map || !pid || pid > PID_MAX_DEFAULT))
2478                 return 0;
2479
2480         return tgid_map[pid];
2481 }
2482
2483 static int trace_save_tgid(struct task_struct *tsk)
2484 {
2485         /* treat recording of idle task as a success */
2486         if (!tsk->pid)
2487                 return 1;
2488
2489         if (unlikely(!tgid_map || tsk->pid > PID_MAX_DEFAULT))
2490                 return 0;
2491
2492         tgid_map[tsk->pid] = tsk->tgid;
2493         return 1;
2494 }
2495
2496 static bool tracing_record_taskinfo_skip(int flags)
2497 {
2498         if (unlikely(!(flags & (TRACE_RECORD_CMDLINE | TRACE_RECORD_TGID))))
2499                 return true;
2500         if (atomic_read(&trace_record_taskinfo_disabled) || !tracing_is_on())
2501                 return true;
2502         if (!__this_cpu_read(trace_taskinfo_save))
2503                 return true;
2504         return false;
2505 }
2506
2507 /**
2508  * tracing_record_taskinfo - record the task info of a task
2509  *
2510  * @task:  task to record
2511  * @flags: TRACE_RECORD_CMDLINE for recording comm
2512  *         TRACE_RECORD_TGID for recording tgid
2513  */
2514 void tracing_record_taskinfo(struct task_struct *task, int flags)
2515 {
2516         bool done;
2517
2518         if (tracing_record_taskinfo_skip(flags))
2519                 return;
2520
2521         /*
2522          * Record as much task information as possible. If some fail, continue
2523          * to try to record the others.
2524          */
2525         done = !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(task);
2526         done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(task);
2527
2528         /* If recording any information failed, retry again soon. */
2529         if (!done)
2530                 return;
2531
2532         __this_cpu_write(trace_taskinfo_save, false);
2533 }
2534
2535 /**
2536  * tracing_record_taskinfo_sched_switch - record task info for sched_switch
2537  *
2538  * @prev: previous task during sched_switch
2539  * @next: next task during sched_switch
2540  * @flags: TRACE_RECORD_CMDLINE for recording comm
2541  *         TRACE_RECORD_TGID for recording tgid
2542  */
2543 void tracing_record_taskinfo_sched_switch(struct task_struct *prev,
2544                                           struct task_struct *next, int flags)
2545 {
2546         bool done;
2547
2548         if (tracing_record_taskinfo_skip(flags))
2549                 return;
2550
2551         /*
2552          * Record as much task information as possible. If some fail, continue
2553          * to try to record the others.
2554          */
2555         done  = !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(prev);
2556         done &= !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(next);
2557         done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(prev);
2558         done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(next);
2559
2560         /* If recording any information failed, retry again soon. */
2561         if (!done)
2562                 return;
2563
2564         __this_cpu_write(trace_taskinfo_save, false);
2565 }
2566
2567 /* Helpers to record a specific task information */
2568 void tracing_record_cmdline(struct task_struct *task)
2569 {
2570         tracing_record_taskinfo(task, TRACE_RECORD_CMDLINE);
2571 }
2572
2573 void tracing_record_tgid(struct task_struct *task)
2574 {
2575         tracing_record_taskinfo(task, TRACE_RECORD_TGID);
2576 }
2577
2578 /*
2579  * Several functions return TRACE_TYPE_PARTIAL_LINE if the trace_seq
2580  * overflowed, and TRACE_TYPE_HANDLED otherwise. This helper function
2581  * simplifies those functions and keeps them in sync.
2582  */
2583 enum print_line_t trace_handle_return(struct trace_seq *s)
2584 {
2585         return trace_seq_has_overflowed(s) ?
2586                 TRACE_TYPE_PARTIAL_LINE : TRACE_TYPE_HANDLED;
2587 }
2588 EXPORT_SYMBOL_GPL(trace_handle_return);
2589
2590 unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status)
2591 {
2592         unsigned int trace_flags = irqs_status;
2593         unsigned int pc;
2594
2595         pc = preempt_count();
2596
2597         if (pc & NMI_MASK)
2598                 trace_flags |= TRACE_FLAG_NMI;
2599         if (pc & HARDIRQ_MASK)
2600                 trace_flags |= TRACE_FLAG_HARDIRQ;
2601         if (in_serving_softirq())
2602                 trace_flags |= TRACE_FLAG_SOFTIRQ;
2603
2604         if (tif_need_resched())
2605                 trace_flags |= TRACE_FLAG_NEED_RESCHED;
2606         if (test_preempt_need_resched())
2607                 trace_flags |= TRACE_FLAG_PREEMPT_RESCHED;
2608         return (trace_flags << 16) | (pc & 0xff);
2609 }
2610
2611 struct ring_buffer_event *
2612 trace_buffer_lock_reserve(struct trace_buffer *buffer,
2613                           int type,
2614                           unsigned long len,
2615                           unsigned int trace_ctx)
2616 {
2617         return __trace_buffer_lock_reserve(buffer, type, len, trace_ctx);
2618 }
2619
2620 DEFINE_PER_CPU(struct ring_buffer_event *, trace_buffered_event);
2621 DEFINE_PER_CPU(int, trace_buffered_event_cnt);
2622 static int trace_buffered_event_ref;
2623
2624 /**
2625  * trace_buffered_event_enable - enable buffering events
2626  *
2627  * When events are being filtered, it is quicker to use a temporary
2628  * buffer to write the event data into if there's a likely chance
2629  * that it will not be committed. The discard of the ring buffer
2630  * is not as fast as committing, and is much slower than copying
2631  * a commit.
2632  *
2633  * When an event is to be filtered, allocate per cpu buffers to
2634  * write the event data into, and if the event is filtered and discarded
2635  * it is simply dropped, otherwise, the entire data is to be committed
2636  * in one shot.
2637  */
2638 void trace_buffered_event_enable(void)
2639 {
2640         struct ring_buffer_event *event;
2641         struct page *page;
2642         int cpu;
2643
2644         WARN_ON_ONCE(!mutex_is_locked(&event_mutex));
2645
2646         if (trace_buffered_event_ref++)
2647                 return;
2648
2649         for_each_tracing_cpu(cpu) {
2650                 page = alloc_pages_node(cpu_to_node(cpu),
2651                                         GFP_KERNEL | __GFP_NORETRY, 0);
2652                 if (!page)
2653                         goto failed;
2654
2655                 event = page_address(page);
2656                 memset(event, 0, sizeof(*event));
2657
2658                 per_cpu(trace_buffered_event, cpu) = event;
2659
2660                 preempt_disable();
2661                 if (cpu == smp_processor_id() &&
2662                     __this_cpu_read(trace_buffered_event) !=
2663                     per_cpu(trace_buffered_event, cpu))
2664                         WARN_ON_ONCE(1);
2665                 preempt_enable();
2666         }
2667
2668         return;
2669  failed:
2670         trace_buffered_event_disable();
2671 }
2672
2673 static void enable_trace_buffered_event(void *data)
2674 {
2675         /* Probably not needed, but do it anyway */
2676         smp_rmb();
2677         this_cpu_dec(trace_buffered_event_cnt);
2678 }
2679
2680 static void disable_trace_buffered_event(void *data)
2681 {
2682         this_cpu_inc(trace_buffered_event_cnt);
2683 }
2684
2685 /**
2686  * trace_buffered_event_disable - disable buffering events
2687  *
2688  * When a filter is removed, it is faster to not use the buffered
2689  * events, and to commit directly into the ring buffer. Free up
2690  * the temp buffers when there are no more users. This requires
2691  * special synchronization with current events.
2692  */
2693 void trace_buffered_event_disable(void)
2694 {
2695         int cpu;
2696
2697         WARN_ON_ONCE(!mutex_is_locked(&event_mutex));
2698
2699         if (WARN_ON_ONCE(!trace_buffered_event_ref))
2700                 return;
2701
2702         if (--trace_buffered_event_ref)
2703                 return;
2704
2705         preempt_disable();
2706         /* For each CPU, set the buffer as used. */
2707         smp_call_function_many(tracing_buffer_mask,
2708                                disable_trace_buffered_event, NULL, 1);
2709         preempt_enable();
2710
2711         /* Wait for all current users to finish */
2712         synchronize_rcu();
2713
2714         for_each_tracing_cpu(cpu) {
2715                 free_page((unsigned long)per_cpu(trace_buffered_event, cpu));
2716                 per_cpu(trace_buffered_event, cpu) = NULL;
2717         }
2718         /*
2719          * Make sure trace_buffered_event is NULL before clearing
2720          * trace_buffered_event_cnt.
2721          */
2722         smp_wmb();
2723
2724         preempt_disable();
2725         /* Do the work on each cpu */
2726         smp_call_function_many(tracing_buffer_mask,
2727                                enable_trace_buffered_event, NULL, 1);
2728         preempt_enable();
2729 }
2730
2731 static struct trace_buffer *temp_buffer;
2732
2733 struct ring_buffer_event *
2734 trace_event_buffer_lock_reserve(struct trace_buffer **current_rb,
2735                           struct trace_event_file *trace_file,
2736                           int type, unsigned long len,
2737                           unsigned int trace_ctx)
2738 {
2739         struct ring_buffer_event *entry;
2740         int val;
2741
2742         *current_rb = trace_file->tr->array_buffer.buffer;
2743
2744         if (!ring_buffer_time_stamp_abs(*current_rb) && (trace_file->flags &
2745              (EVENT_FILE_FL_SOFT_DISABLED | EVENT_FILE_FL_FILTERED)) &&
2746             (entry = this_cpu_read(trace_buffered_event))) {
2747                 /* Try to use the per cpu buffer first */
2748                 val = this_cpu_inc_return(trace_buffered_event_cnt);
2749                 if ((len < (PAGE_SIZE - sizeof(*entry))) && val == 1) {
2750                         trace_event_setup(entry, type, trace_ctx);
2751                         entry->array[0] = len;
2752                         return entry;
2753                 }
2754                 this_cpu_dec(trace_buffered_event_cnt);
2755         }
2756
2757         entry = __trace_buffer_lock_reserve(*current_rb, type, len,
2758                                             trace_ctx);
2759         /*
2760          * If tracing is off, but we have triggers enabled
2761          * we still need to look at the event data. Use the temp_buffer
2762          * to store the trace event for the trigger to use. It's recursive
2763          * safe and will not be recorded anywhere.
2764          */
2765         if (!entry && trace_file->flags & EVENT_FILE_FL_TRIGGER_COND) {
2766                 *current_rb = temp_buffer;
2767                 entry = __trace_buffer_lock_reserve(*current_rb, type, len,
2768                                                     trace_ctx);
2769         }
2770         return entry;
2771 }
2772 EXPORT_SYMBOL_GPL(trace_event_buffer_lock_reserve);
2773
2774 static DEFINE_SPINLOCK(tracepoint_iter_lock);
2775 static DEFINE_MUTEX(tracepoint_printk_mutex);
2776
2777 static void output_printk(struct trace_event_buffer *fbuffer)
2778 {
2779         struct trace_event_call *event_call;
2780         struct trace_event_file *file;
2781         struct trace_event *event;
2782         unsigned long flags;
2783         struct trace_iterator *iter = tracepoint_print_iter;
2784
2785         /* We should never get here if iter is NULL */
2786         if (WARN_ON_ONCE(!iter))
2787                 return;
2788
2789         event_call = fbuffer->trace_file->event_call;
2790         if (!event_call || !event_call->event.funcs ||
2791             !event_call->event.funcs->trace)
2792                 return;
2793
2794         file = fbuffer->trace_file;
2795         if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags) ||
2796             (unlikely(file->flags & EVENT_FILE_FL_FILTERED) &&
2797              !filter_match_preds(file->filter, fbuffer->entry)))
2798                 return;
2799
2800         event = &fbuffer->trace_file->event_call->event;
2801
2802         spin_lock_irqsave(&tracepoint_iter_lock, flags);
2803         trace_seq_init(&iter->seq);
2804         iter->ent = fbuffer->entry;
2805         event_call->event.funcs->trace(iter, 0, event);
2806         trace_seq_putc(&iter->seq, 0);
2807         printk("%s", iter->seq.buffer);
2808
2809         spin_unlock_irqrestore(&tracepoint_iter_lock, flags);
2810 }
2811
2812 int tracepoint_printk_sysctl(struct ctl_table *table, int write,
2813                              void *buffer, size_t *lenp,
2814                              loff_t *ppos)
2815 {
2816         int save_tracepoint_printk;
2817         int ret;
2818
2819         mutex_lock(&tracepoint_printk_mutex);
2820         save_tracepoint_printk = tracepoint_printk;
2821
2822         ret = proc_dointvec(table, write, buffer, lenp, ppos);
2823
2824         /*
2825          * This will force exiting early, as tracepoint_printk
2826          * is always zero when tracepoint_printk_iter is not allocated
2827          */
2828         if (!tracepoint_print_iter)
2829                 tracepoint_printk = 0;
2830
2831         if (save_tracepoint_printk == tracepoint_printk)
2832                 goto out;
2833
2834         if (tracepoint_printk)
2835                 static_key_enable(&tracepoint_printk_key.key);
2836         else
2837                 static_key_disable(&tracepoint_printk_key.key);
2838
2839  out:
2840         mutex_unlock(&tracepoint_printk_mutex);
2841
2842         return ret;
2843 }
2844
2845 void trace_event_buffer_commit(struct trace_event_buffer *fbuffer)
2846 {
2847         if (static_key_false(&tracepoint_printk_key.key))
2848                 output_printk(fbuffer);
2849
2850         if (static_branch_unlikely(&trace_event_exports_enabled))
2851                 ftrace_exports(fbuffer->event, TRACE_EXPORT_EVENT);
2852         event_trigger_unlock_commit_regs(fbuffer->trace_file, fbuffer->buffer,
2853                                     fbuffer->event, fbuffer->entry,
2854                                     fbuffer->trace_ctx, fbuffer->regs);
2855 }
2856 EXPORT_SYMBOL_GPL(trace_event_buffer_commit);
2857
2858 /*
2859  * Skip 3:
2860  *
2861  *   trace_buffer_unlock_commit_regs()
2862  *   trace_event_buffer_commit()
2863  *   trace_event_raw_event_xxx()
2864  */
2865 # define STACK_SKIP 3
2866
2867 void trace_buffer_unlock_commit_regs(struct trace_array *tr,
2868                                      struct trace_buffer *buffer,
2869                                      struct ring_buffer_event *event,
2870                                      unsigned int trace_ctx,
2871                                      struct pt_regs *regs)
2872 {
2873         __buffer_unlock_commit(buffer, event);
2874
2875         /*
2876          * If regs is not set, then skip the necessary functions.
2877          * Note, we can still get here via blktrace, wakeup tracer
2878          * and mmiotrace, but that's ok if they lose a function or
2879          * two. They are not that meaningful.
2880          */
2881         ftrace_trace_stack(tr, buffer, trace_ctx, regs ? 0 : STACK_SKIP, regs);
2882         ftrace_trace_userstack(tr, buffer, trace_ctx);
2883 }
2884
2885 /*
2886  * Similar to trace_buffer_unlock_commit_regs() but do not dump stack.
2887  */
2888 void
2889 trace_buffer_unlock_commit_nostack(struct trace_buffer *buffer,
2890                                    struct ring_buffer_event *event)
2891 {
2892         __buffer_unlock_commit(buffer, event);
2893 }
2894
2895 void
2896 trace_function(struct trace_array *tr, unsigned long ip, unsigned long
2897                parent_ip, unsigned int trace_ctx)
2898 {
2899         struct trace_event_call *call = &event_function;
2900         struct trace_buffer *buffer = tr->array_buffer.buffer;
2901         struct ring_buffer_event *event;
2902         struct ftrace_entry *entry;
2903
2904         event = __trace_buffer_lock_reserve(buffer, TRACE_FN, sizeof(*entry),
2905                                             trace_ctx);
2906         if (!event)
2907                 return;
2908         entry   = ring_buffer_event_data(event);
2909         entry->ip                       = ip;
2910         entry->parent_ip                = parent_ip;
2911
2912         if (!call_filter_check_discard(call, entry, buffer, event)) {
2913                 if (static_branch_unlikely(&trace_function_exports_enabled))
2914                         ftrace_exports(event, TRACE_EXPORT_FUNCTION);
2915                 __buffer_unlock_commit(buffer, event);
2916         }
2917 }
2918
2919 #ifdef CONFIG_STACKTRACE
2920
2921 /* Allow 4 levels of nesting: normal, softirq, irq, NMI */
2922 #define FTRACE_KSTACK_NESTING   4
2923
2924 #define FTRACE_KSTACK_ENTRIES   (PAGE_SIZE / FTRACE_KSTACK_NESTING)
2925
2926 struct ftrace_stack {
2927         unsigned long           calls[FTRACE_KSTACK_ENTRIES];
2928 };
2929
2930
2931 struct ftrace_stacks {
2932         struct ftrace_stack     stacks[FTRACE_KSTACK_NESTING];
2933 };
2934
2935 static DEFINE_PER_CPU(struct ftrace_stacks, ftrace_stacks);
2936 static DEFINE_PER_CPU(int, ftrace_stack_reserve);
2937
2938 static void __ftrace_trace_stack(struct trace_buffer *buffer,
2939                                  unsigned int trace_ctx,
2940                                  int skip, struct pt_regs *regs)
2941 {
2942         struct trace_event_call *call = &event_kernel_stack;
2943         struct ring_buffer_event *event;
2944         unsigned int size, nr_entries;
2945         struct ftrace_stack *fstack;
2946         struct stack_entry *entry;
2947         int stackidx;
2948
2949         /*
2950          * Add one, for this function and the call to save_stack_trace()
2951          * If regs is set, then these functions will not be in the way.
2952          */
2953 #ifndef CONFIG_UNWINDER_ORC
2954         if (!regs)
2955                 skip++;
2956 #endif
2957
2958         preempt_disable_notrace();
2959
2960         stackidx = __this_cpu_inc_return(ftrace_stack_reserve) - 1;
2961
2962         /* This should never happen. If it does, yell once and skip */
2963         if (WARN_ON_ONCE(stackidx >= FTRACE_KSTACK_NESTING))
2964                 goto out;
2965
2966         /*
2967          * The above __this_cpu_inc_return() is 'atomic' cpu local. An
2968          * interrupt will either see the value pre increment or post
2969          * increment. If the interrupt happens pre increment it will have
2970          * restored the counter when it returns.  We just need a barrier to
2971          * keep gcc from moving things around.
2972          */
2973         barrier();
2974
2975         fstack = this_cpu_ptr(ftrace_stacks.stacks) + stackidx;
2976         size = ARRAY_SIZE(fstack->calls);
2977
2978         if (regs) {
2979                 nr_entries = stack_trace_save_regs(regs, fstack->calls,
2980                                                    size, skip);
2981         } else {
2982                 nr_entries = stack_trace_save(fstack->calls, size, skip);
2983         }
2984
2985         size = nr_entries * sizeof(unsigned long);
2986         event = __trace_buffer_lock_reserve(buffer, TRACE_STACK,
2987                                             sizeof(*entry) + size, trace_ctx);
2988         if (!event)
2989                 goto out;
2990         entry = ring_buffer_event_data(event);
2991
2992         memcpy(&entry->caller, fstack->calls, size);
2993         entry->size = nr_entries;
2994
2995         if (!call_filter_check_discard(call, entry, buffer, event))
2996                 __buffer_unlock_commit(buffer, event);
2997
2998  out:
2999         /* Again, don't let gcc optimize things here */
3000         barrier();
3001         __this_cpu_dec(ftrace_stack_reserve);
3002         preempt_enable_notrace();
3003
3004 }
3005
3006 static inline void ftrace_trace_stack(struct trace_array *tr,
3007                                       struct trace_buffer *buffer,
3008                                       unsigned int trace_ctx,
3009                                       int skip, struct pt_regs *regs)
3010 {
3011         if (!(tr->trace_flags & TRACE_ITER_STACKTRACE))
3012                 return;
3013
3014         __ftrace_trace_stack(buffer, trace_ctx, skip, regs);
3015 }
3016
3017 void __trace_stack(struct trace_array *tr, unsigned int trace_ctx,
3018                    int skip)
3019 {
3020         struct trace_buffer *buffer = tr->array_buffer.buffer;
3021
3022         if (rcu_is_watching()) {
3023                 __ftrace_trace_stack(buffer, trace_ctx, skip, NULL);
3024                 return;
3025         }
3026
3027         /*
3028          * When an NMI triggers, RCU is enabled via rcu_nmi_enter(),
3029          * but if the above rcu_is_watching() failed, then the NMI
3030          * triggered someplace critical, and rcu_irq_enter() should
3031          * not be called from NMI.
3032          */
3033         if (unlikely(in_nmi()))
3034                 return;
3035
3036         rcu_irq_enter_irqson();
3037         __ftrace_trace_stack(buffer, trace_ctx, skip, NULL);
3038         rcu_irq_exit_irqson();
3039 }
3040
3041 /**
3042  * trace_dump_stack - record a stack back trace in the trace buffer
3043  * @skip: Number of functions to skip (helper handlers)
3044  */
3045 void trace_dump_stack(int skip)
3046 {
3047         if (tracing_disabled || tracing_selftest_running)
3048                 return;
3049
3050 #ifndef CONFIG_UNWINDER_ORC
3051         /* Skip 1 to skip this function. */
3052         skip++;
3053 #endif
3054         __ftrace_trace_stack(global_trace.array_buffer.buffer,
3055                              tracing_gen_ctx(), skip, NULL);
3056 }
3057 EXPORT_SYMBOL_GPL(trace_dump_stack);
3058
3059 #ifdef CONFIG_USER_STACKTRACE_SUPPORT
3060 static DEFINE_PER_CPU(int, user_stack_count);
3061
3062 static void
3063 ftrace_trace_userstack(struct trace_array *tr,
3064                        struct trace_buffer *buffer, unsigned int trace_ctx)
3065 {
3066         struct trace_event_call *call = &event_user_stack;
3067         struct ring_buffer_event *event;
3068         struct userstack_entry *entry;
3069
3070         if (!(tr->trace_flags & TRACE_ITER_USERSTACKTRACE))
3071                 return;
3072
3073         /*
3074          * NMIs can not handle page faults, even with fix ups.
3075          * The save user stack can (and often does) fault.
3076          */
3077         if (unlikely(in_nmi()))
3078                 return;
3079
3080         /*
3081          * prevent recursion, since the user stack tracing may
3082          * trigger other kernel events.
3083          */
3084         preempt_disable();
3085         if (__this_cpu_read(user_stack_count))
3086                 goto out;
3087
3088         __this_cpu_inc(user_stack_count);
3089
3090         event = __trace_buffer_lock_reserve(buffer, TRACE_USER_STACK,
3091                                             sizeof(*entry), trace_ctx);
3092         if (!event)
3093                 goto out_drop_count;
3094         entry   = ring_buffer_event_data(event);
3095
3096         entry->tgid             = current->tgid;
3097         memset(&entry->caller, 0, sizeof(entry->caller));
3098
3099         stack_trace_save_user(entry->caller, FTRACE_STACK_ENTRIES);
3100         if (!call_filter_check_discard(call, entry, buffer, event))
3101                 __buffer_unlock_commit(buffer, event);
3102
3103  out_drop_count:
3104         __this_cpu_dec(user_stack_count);
3105  out:
3106         preempt_enable();
3107 }
3108 #else /* CONFIG_USER_STACKTRACE_SUPPORT */
3109 static void ftrace_trace_userstack(struct trace_array *tr,
3110                                    struct trace_buffer *buffer,
3111                                    unsigned int trace_ctx)
3112 {
3113 }
3114 #endif /* !CONFIG_USER_STACKTRACE_SUPPORT */
3115
3116 #endif /* CONFIG_STACKTRACE */
3117
3118 /* created for use with alloc_percpu */
3119 struct trace_buffer_struct {
3120         int nesting;
3121         char buffer[4][TRACE_BUF_SIZE];
3122 };
3123
3124 static struct trace_buffer_struct *trace_percpu_buffer;
3125
3126 /*
3127  * This allows for lockless recording.  If we're nested too deeply, then
3128  * this returns NULL.
3129  */
3130 static char *get_trace_buf(void)
3131 {
3132         struct trace_buffer_struct *buffer = this_cpu_ptr(trace_percpu_buffer);
3133
3134         if (!buffer || buffer->nesting >= 4)
3135                 return NULL;
3136
3137         buffer->nesting++;
3138
3139         /* Interrupts must see nesting incremented before we use the buffer */
3140         barrier();
3141         return &buffer->buffer[buffer->nesting - 1][0];
3142 }
3143
3144 static void put_trace_buf(void)
3145 {
3146         /* Don't let the decrement of nesting leak before this */
3147         barrier();
3148         this_cpu_dec(trace_percpu_buffer->nesting);
3149 }
3150
3151 static int alloc_percpu_trace_buffer(void)
3152 {
3153         struct trace_buffer_struct *buffers;
3154
3155         if (trace_percpu_buffer)
3156                 return 0;
3157
3158         buffers = alloc_percpu(struct trace_buffer_struct);
3159         if (MEM_FAIL(!buffers, "Could not allocate percpu trace_printk buffer"))
3160                 return -ENOMEM;
3161
3162         trace_percpu_buffer = buffers;
3163         return 0;
3164 }
3165
3166 static int buffers_allocated;
3167
3168 void trace_printk_init_buffers(void)
3169 {
3170         if (buffers_allocated)
3171                 return;
3172
3173         if (alloc_percpu_trace_buffer())
3174                 return;
3175
3176         /* trace_printk() is for debug use only. Don't use it in production. */
3177
3178         pr_warn("\n");
3179         pr_warn("**********************************************************\n");
3180         pr_warn("**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **\n");
3181         pr_warn("**                                                      **\n");
3182         pr_warn("** trace_printk() being used. Allocating extra memory.  **\n");
3183         pr_warn("**                                                      **\n");
3184         pr_warn("** This means that this is a DEBUG kernel and it is     **\n");
3185         pr_warn("** unsafe for production use.                           **\n");
3186         pr_warn("**                                                      **\n");
3187         pr_warn("** If you see this message and you are not debugging    **\n");
3188         pr_warn("** the kernel, report this immediately to your vendor!  **\n");
3189         pr_warn("**                                                      **\n");
3190         pr_warn("**   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **\n");
3191         pr_warn("**********************************************************\n");
3192
3193         /* Expand the buffers to set size */
3194         tracing_update_buffers();
3195
3196         buffers_allocated = 1;
3197
3198         /*
3199          * trace_printk_init_buffers() can be called by modules.
3200          * If that happens, then we need to start cmdline recording
3201          * directly here. If the global_trace.buffer is already
3202          * allocated here, then this was called by module code.
3203          */
3204         if (global_trace.array_buffer.buffer)
3205                 tracing_start_cmdline_record();
3206 }
3207 EXPORT_SYMBOL_GPL(trace_printk_init_buffers);
3208
3209 void trace_printk_start_comm(void)
3210 {
3211         /* Start tracing comms if trace printk is set */
3212         if (!buffers_allocated)
3213                 return;
3214         tracing_start_cmdline_record();
3215 }
3216
3217 static void trace_printk_start_stop_comm(int enabled)
3218 {
3219         if (!buffers_allocated)
3220                 return;
3221
3222         if (enabled)
3223                 tracing_start_cmdline_record();
3224         else
3225                 tracing_stop_cmdline_record();
3226 }
3227
3228 /**
3229  * trace_vbprintk - write binary msg to tracing buffer
3230  * @ip:    The address of the caller
3231  * @fmt:   The string format to write to the buffer
3232  * @args:  Arguments for @fmt
3233  */
3234 int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
3235 {
3236         struct trace_event_call *call = &event_bprint;
3237         struct ring_buffer_event *event;
3238         struct trace_buffer *buffer;
3239         struct trace_array *tr = &global_trace;
3240         struct bprint_entry *entry;
3241         unsigned int trace_ctx;
3242         char *tbuffer;
3243         int len = 0, size;
3244
3245         if (unlikely(tracing_selftest_running || tracing_disabled))
3246                 return 0;
3247
3248         /* Don't pollute graph traces with trace_vprintk internals */
3249         pause_graph_tracing();
3250
3251         trace_ctx = tracing_gen_ctx();
3252         preempt_disable_notrace();
3253
3254         tbuffer = get_trace_buf();
3255         if (!tbuffer) {
3256                 len = 0;
3257                 goto out_nobuffer;
3258         }
3259
3260         len = vbin_printf((u32 *)tbuffer, TRACE_BUF_SIZE/sizeof(int), fmt, args);
3261
3262         if (len > TRACE_BUF_SIZE/sizeof(int) || len < 0)
3263                 goto out_put;
3264
3265         size = sizeof(*entry) + sizeof(u32) * len;
3266         buffer = tr->array_buffer.buffer;
3267         ring_buffer_nest_start(buffer);
3268         event = __trace_buffer_lock_reserve(buffer, TRACE_BPRINT, size,
3269                                             trace_ctx);
3270         if (!event)
3271                 goto out;
3272         entry = ring_buffer_event_data(event);
3273         entry->ip                       = ip;
3274         entry->fmt                      = fmt;
3275
3276         memcpy(entry->buf, tbuffer, sizeof(u32) * len);
3277         if (!call_filter_check_discard(call, entry, buffer, event)) {
3278                 __buffer_unlock_commit(buffer, event);
3279                 ftrace_trace_stack(tr, buffer, trace_ctx, 6, NULL);
3280         }
3281
3282 out:
3283         ring_buffer_nest_end(buffer);
3284 out_put:
3285         put_trace_buf();
3286
3287 out_nobuffer:
3288         preempt_enable_notrace();
3289         unpause_graph_tracing();
3290
3291         return len;
3292 }
3293 EXPORT_SYMBOL_GPL(trace_vbprintk);
3294
3295 __printf(3, 0)
3296 static int
3297 __trace_array_vprintk(struct trace_buffer *buffer,
3298                       unsigned long ip, const char *fmt, va_list args)
3299 {
3300         struct trace_event_call *call = &event_print;
3301         struct ring_buffer_event *event;
3302         int len = 0, size;
3303         struct print_entry *entry;
3304         unsigned int trace_ctx;
3305         char *tbuffer;
3306
3307         if (tracing_disabled || tracing_selftest_running)
3308                 return 0;
3309
3310         /* Don't pollute graph traces with trace_vprintk internals */
3311         pause_graph_tracing();
3312
3313         trace_ctx = tracing_gen_ctx();
3314         preempt_disable_notrace();
3315
3316
3317         tbuffer = get_trace_buf();
3318         if (!tbuffer) {
3319                 len = 0;
3320                 goto out_nobuffer;
3321         }
3322
3323         len = vscnprintf(tbuffer, TRACE_BUF_SIZE, fmt, args);
3324
3325         size = sizeof(*entry) + len + 1;
3326         ring_buffer_nest_start(buffer);
3327         event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
3328                                             trace_ctx);
3329         if (!event)
3330                 goto out;
3331         entry = ring_buffer_event_data(event);
3332         entry->ip = ip;
3333
3334         memcpy(&entry->buf, tbuffer, len + 1);
3335         if (!call_filter_check_discard(call, entry, buffer, event)) {
3336                 __buffer_unlock_commit(buffer, event);
3337                 ftrace_trace_stack(&global_trace, buffer, trace_ctx, 6, NULL);
3338         }
3339
3340 out:
3341         ring_buffer_nest_end(buffer);
3342         put_trace_buf();
3343
3344 out_nobuffer:
3345         preempt_enable_notrace();
3346         unpause_graph_tracing();
3347
3348         return len;
3349 }
3350
3351 __printf(3, 0)
3352 int trace_array_vprintk(struct trace_array *tr,
3353                         unsigned long ip, const char *fmt, va_list args)
3354 {
3355         return __trace_array_vprintk(tr->array_buffer.buffer, ip, fmt, args);
3356 }
3357
3358 /**
3359  * trace_array_printk - Print a message to a specific instance
3360  * @tr: The instance trace_array descriptor
3361  * @ip: The instruction pointer that this is called from.
3362  * @fmt: The format to print (printf format)
3363  *
3364  * If a subsystem sets up its own instance, they have the right to
3365  * printk strings into their tracing instance buffer using this
3366  * function. Note, this function will not write into the top level
3367  * buffer (use trace_printk() for that), as writing into the top level
3368  * buffer should only have events that can be individually disabled.
3369  * trace_printk() is only used for debugging a kernel, and should not
3370  * be ever encorporated in normal use.
3371  *
3372  * trace_array_printk() can be used, as it will not add noise to the
3373  * top level tracing buffer.
3374  *
3375  * Note, trace_array_init_printk() must be called on @tr before this
3376  * can be used.
3377  */
3378 __printf(3, 0)
3379 int trace_array_printk(struct trace_array *tr,
3380                        unsigned long ip, const char *fmt, ...)
3381 {
3382         int ret;
3383         va_list ap;
3384
3385         if (!tr)
3386                 return -ENOENT;
3387
3388         /* This is only allowed for created instances */
3389         if (tr == &global_trace)
3390                 return 0;
3391
3392         if (!(tr->trace_flags & TRACE_ITER_PRINTK))
3393                 return 0;
3394
3395         va_start(ap, fmt);
3396         ret = trace_array_vprintk(tr, ip, fmt, ap);
3397         va_end(ap);
3398         return ret;
3399 }
3400 EXPORT_SYMBOL_GPL(trace_array_printk);
3401
3402 /**
3403  * trace_array_init_printk - Initialize buffers for trace_array_printk()
3404  * @tr: The trace array to initialize the buffers for
3405  *
3406  * As trace_array_printk() only writes into instances, they are OK to
3407  * have in the kernel (unlike trace_printk()). This needs to be called
3408  * before trace_array_printk() can be used on a trace_array.
3409  */
3410 int trace_array_init_printk(struct trace_array *tr)
3411 {
3412         if (!tr)
3413                 return -ENOENT;
3414
3415         /* This is only allowed for created instances */
3416         if (tr == &global_trace)
3417                 return -EINVAL;
3418
3419         return alloc_percpu_trace_buffer();
3420 }
3421 EXPORT_SYMBOL_GPL(trace_array_init_printk);
3422
3423 __printf(3, 4)
3424 int trace_array_printk_buf(struct trace_buffer *buffer,
3425                            unsigned long ip, const char *fmt, ...)
3426 {
3427         int ret;
3428         va_list ap;
3429
3430         if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
3431                 return 0;
3432
3433         va_start(ap, fmt);
3434         ret = __trace_array_vprintk(buffer, ip, fmt, ap);
3435         va_end(ap);
3436         return ret;
3437 }
3438
3439 __printf(2, 0)
3440 int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
3441 {
3442         return trace_array_vprintk(&global_trace, ip, fmt, args);
3443 }
3444 EXPORT_SYMBOL_GPL(trace_vprintk);
3445
3446 static void trace_iterator_increment(struct trace_iterator *iter)
3447 {
3448         struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, iter->cpu);
3449
3450         iter->idx++;
3451         if (buf_iter)
3452                 ring_buffer_iter_advance(buf_iter);
3453 }
3454
3455 static struct trace_entry *
3456 peek_next_entry(struct trace_iterator *iter, int cpu, u64 *ts,
3457                 unsigned long *lost_events)
3458 {
3459         struct ring_buffer_event *event;
3460         struct ring_buffer_iter *buf_iter = trace_buffer_iter(iter, cpu);
3461
3462         if (buf_iter) {
3463                 event = ring_buffer_iter_peek(buf_iter, ts);
3464                 if (lost_events)
3465                         *lost_events = ring_buffer_iter_dropped(buf_iter) ?
3466                                 (unsigned long)-1 : 0;
3467         } else {
3468                 event = ring_buffer_peek(iter->array_buffer->buffer, cpu, ts,
3469                                          lost_events);
3470         }
3471
3472         if (event) {
3473                 iter->ent_size = ring_buffer_event_length(event);
3474                 return ring_buffer_event_data(event);
3475         }
3476         iter->ent_size = 0;
3477         return NULL;
3478 }
3479
3480 static struct trace_entry *
3481 __find_next_entry(struct trace_iterator *iter, int *ent_cpu,
3482                   unsigned long *missing_events, u64 *ent_ts)
3483 {
3484         struct trace_buffer *buffer = iter->array_buffer->buffer;
3485         struct trace_entry *ent, *next = NULL;
3486         unsigned long lost_events = 0, next_lost = 0;
3487         int cpu_file = iter->cpu_file;
3488         u64 next_ts = 0, ts;
3489         int next_cpu = -1;
3490         int next_size = 0;
3491         int cpu;
3492
3493         /*
3494          * If we are in a per_cpu trace file, don't bother by iterating over
3495          * all cpu and peek directly.
3496          */
3497         if (cpu_file > RING_BUFFER_ALL_CPUS) {
3498                 if (ring_buffer_empty_cpu(buffer, cpu_file))
3499                         return NULL;
3500                 ent = peek_next_entry(iter, cpu_file, ent_ts, missing_events);
3501                 if (ent_cpu)
3502                         *ent_cpu = cpu_file;
3503
3504                 return ent;
3505         }
3506
3507         for_each_tracing_cpu(cpu) {
3508
3509                 if (ring_buffer_empty_cpu(buffer, cpu))
3510                         continue;
3511
3512                 ent = peek_next_entry(iter, cpu, &ts, &lost_events);
3513
3514                 /*
3515                  * Pick the entry with the smallest timestamp:
3516                  */
3517                 if (ent && (!next || ts < next_ts)) {
3518                         next = ent;
3519                         next_cpu = cpu;
3520                         next_ts = ts;
3521                         next_lost = lost_events;
3522                         next_size = iter->ent_size;
3523                 }
3524         }
3525
3526         iter->ent_size = next_size;
3527
3528         if (ent_cpu)
3529                 *ent_cpu = next_cpu;
3530
3531         if (ent_ts)
3532                 *ent_ts = next_ts;
3533
3534         if (missing_events)
3535                 *missing_events = next_lost;
3536
3537         return next;
3538 }
3539
3540 #define STATIC_FMT_BUF_SIZE     128
3541 static char static_fmt_buf[STATIC_FMT_BUF_SIZE];
3542
3543 static char *trace_iter_expand_format(struct trace_iterator *iter)
3544 {
3545         char *tmp;
3546
3547         if (iter->fmt == static_fmt_buf)
3548                 return NULL;
3549
3550         tmp = krealloc(iter->fmt, iter->fmt_size + STATIC_FMT_BUF_SIZE,
3551                        GFP_KERNEL);
3552         if (tmp) {
3553                 iter->fmt_size += STATIC_FMT_BUF_SIZE;
3554                 iter->fmt = tmp;
3555         }
3556
3557         return tmp;
3558 }
3559
3560 const char *trace_event_format(struct trace_iterator *iter, const char *fmt)
3561 {
3562         const char *p, *new_fmt;
3563         char *q;
3564
3565         if (WARN_ON_ONCE(!fmt))
3566                 return fmt;
3567
3568         if (iter->tr->trace_flags & TRACE_ITER_HASH_PTR)
3569                 return fmt;
3570
3571         p = fmt;
3572         new_fmt = q = iter->fmt;
3573         while (*p) {
3574                 if (unlikely(q - new_fmt + 3 > iter->fmt_size)) {
3575                         if (!trace_iter_expand_format(iter))
3576                                 return fmt;
3577
3578                         q += iter->fmt - new_fmt;
3579                         new_fmt = iter->fmt;
3580                 }
3581
3582                 *q++ = *p++;
3583
3584                 /* Replace %p with %px */
3585                 if (p[-1] == '%') {
3586                         if (p[0] == '%') {
3587                                 *q++ = *p++;
3588                         } else if (p[0] == 'p' && !isalnum(p[1])) {
3589                                 *q++ = *p++;
3590                                 *q++ = 'x';
3591                         }
3592                 }
3593         }
3594         *q = '\0';
3595
3596         return new_fmt;
3597 }
3598
3599 #define STATIC_TEMP_BUF_SIZE    128
3600 static char static_temp_buf[STATIC_TEMP_BUF_SIZE] __aligned(4);
3601
3602 /* Find the next real entry, without updating the iterator itself */
3603 struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,
3604                                           int *ent_cpu, u64 *ent_ts)
3605 {
3606         /* __find_next_entry will reset ent_size */
3607         int ent_size = iter->ent_size;
3608         struct trace_entry *entry;
3609
3610         /*
3611          * If called from ftrace_dump(), then the iter->temp buffer
3612          * will be the static_temp_buf and not created from kmalloc.
3613          * If the entry size is greater than the buffer, we can
3614          * not save it. Just return NULL in that case. This is only
3615          * used to add markers when two consecutive events' time
3616          * stamps have a large delta. See trace_print_lat_context()
3617          */
3618         if (iter->temp == static_temp_buf &&
3619             STATIC_TEMP_BUF_SIZE < ent_size)
3620                 return NULL;
3621
3622         /*
3623          * The __find_next_entry() may call peek_next_entry(), which may
3624          * call ring_buffer_peek() that may make the contents of iter->ent
3625          * undefined. Need to copy iter->ent now.
3626          */
3627         if (iter->ent && iter->ent != iter->temp) {
3628                 if ((!iter->temp || iter->temp_size < iter->ent_size) &&
3629                     !WARN_ON_ONCE(iter->temp == static_temp_buf)) {
3630                         void *temp;
3631                         temp = kmalloc(iter->ent_size, GFP_KERNEL);
3632                         if (!temp)
3633                                 return NULL;
3634                         kfree(iter->temp);
3635                         iter->temp = temp;
3636                         iter->temp_size = iter->ent_size;
3637                 }
3638                 memcpy(iter->temp, iter->ent, iter->ent_size);
3639                 iter->ent = iter->temp;
3640         }
3641         entry = __find_next_entry(iter, ent_cpu, NULL, ent_ts);
3642         /* Put back the original ent_size */
3643         iter->ent_size = ent_size;
3644
3645         return entry;
3646 }
3647
3648 /* Find the next real entry, and increment the iterator to the next entry */
3649 void *trace_find_next_entry_inc(struct trace_iterator *iter)
3650 {
3651         iter->ent = __find_next_entry(iter, &iter->cpu,
3652                                       &iter->lost_events, &iter->ts);
3653
3654         if (iter->ent)
3655                 trace_iterator_increment(iter);
3656
3657         return iter->ent ? iter : NULL;
3658 }
3659
3660 static void trace_consume(struct trace_iterator *iter)
3661 {
3662         ring_buffer_consume(iter->array_buffer->buffer, iter->cpu, &iter->ts,
3663                             &iter->lost_events);
3664 }
3665
3666 static void *s_next(struct seq_file *m, void *v, loff_t *pos)
3667 {
3668         struct trace_iterator *iter = m->private;
3669         int i = (int)*pos;
3670         void *ent;
3671
3672         WARN_ON_ONCE(iter->leftover);
3673
3674         (*pos)++;
3675
3676         /* can't go backwards */
3677         if (iter->idx > i)
3678                 return NULL;
3679
3680         if (iter->idx < 0)
3681                 ent = trace_find_next_entry_inc(iter);
3682         else
3683                 ent = iter;
3684
3685         while (ent && iter->idx < i)
3686                 ent = trace_find_next_entry_inc(iter);
3687
3688         iter->pos = *pos;
3689
3690         return ent;
3691 }
3692
3693 void tracing_iter_reset(struct trace_iterator *iter, int cpu)
3694 {
3695         struct ring_buffer_iter *buf_iter;
3696         unsigned long entries = 0;
3697         u64 ts;
3698
3699         per_cpu_ptr(iter->array_buffer->data, cpu)->skipped_entries = 0;
3700
3701         buf_iter = trace_buffer_iter(iter, cpu);
3702         if (!buf_iter)
3703                 return;
3704
3705         ring_buffer_iter_reset(buf_iter);
3706
3707         /*
3708          * We could have the case with the max latency tracers
3709          * that a reset never took place on a cpu. This is evident
3710          * by the timestamp being before the start of the buffer.
3711          */
3712         while (ring_buffer_iter_peek(buf_iter, &ts)) {
3713                 if (ts >= iter->array_buffer->time_start)
3714                         break;
3715                 entries++;
3716                 ring_buffer_iter_advance(buf_iter);
3717         }
3718
3719         per_cpu_ptr(iter->array_buffer->data, cpu)->skipped_entries = entries;
3720 }
3721
3722 /*
3723  * The current tracer is copied to avoid a global locking
3724  * all around.
3725  */
3726 static void *s_start(struct seq_file *m, loff_t *pos)
3727 {
3728         struct trace_iterator *iter = m->private;
3729         struct trace_array *tr = iter->tr;
3730         int cpu_file = iter->cpu_file;
3731         void *p = NULL;
3732         loff_t l = 0;
3733         int cpu;
3734
3735         /*
3736          * copy the tracer to avoid using a global lock all around.
3737          * iter->trace is a copy of current_trace, the pointer to the
3738          * name may be used instead of a strcmp(), as iter->trace->name
3739          * will point to the same string as current_trace->name.
3740          */
3741         mutex_lock(&trace_types_lock);
3742         if (unlikely(tr->current_trace && iter->trace->name != tr->current_trace->name))
3743                 *iter->trace = *tr->current_trace;
3744         mutex_unlock(&trace_types_lock);
3745
3746 #ifdef CONFIG_TRACER_MAX_TRACE
3747         if (iter->snapshot && iter->trace->use_max_tr)
3748                 return ERR_PTR(-EBUSY);
3749 #endif
3750
3751         if (!iter->snapshot)
3752                 atomic_inc(&trace_record_taskinfo_disabled);
3753
3754         if (*pos != iter->pos) {
3755                 iter->ent = NULL;
3756                 iter->cpu = 0;
3757                 iter->idx = -1;
3758
3759                 if (cpu_file == RING_BUFFER_ALL_CPUS) {
3760                         for_each_tracing_cpu(cpu)
3761                                 tracing_iter_reset(iter, cpu);
3762                 } else
3763                         tracing_iter_reset(iter, cpu_file);
3764
3765                 iter->leftover = 0;
3766                 for (p = iter; p && l < *pos; p = s_next(m, p, &l))
3767                         ;
3768
3769         } else {
3770                 /*
3771                  * If we overflowed the seq_file before, then we want
3772                  * to just reuse the trace_seq buffer again.
3773                  */
3774                 if (iter->leftover)
3775                         p = iter;
3776                 else {
3777                         l = *pos - 1;
3778                         p = s_next(m, p, &l);
3779                 }
3780         }
3781
3782         trace_event_read_lock();
3783         trace_access_lock(cpu_file);
3784         return p;
3785 }
3786
3787 static void s_stop(struct seq_file *m, void *p)
3788 {
3789         struct trace_iterator *iter = m->private;
3790
3791 #ifdef CONFIG_TRACER_MAX_TRACE
3792         if (iter->snapshot && iter->trace->use_max_tr)
3793                 return;
3794 #endif
3795
3796         if (!iter->snapshot)
3797                 atomic_dec(&trace_record_taskinfo_disabled);
3798
3799         trace_access_unlock(iter->cpu_file);
3800         trace_event_read_unlock();
3801 }
3802
3803 static void
3804 get_total_entries_cpu(struct array_buffer *buf, unsigned long *total,
3805                       unsigned long *entries, int cpu)
3806 {
3807         unsigned long count;
3808
3809         count = ring_buffer_entries_cpu(buf->buffer, cpu);
3810         /*
3811          * If this buffer has skipped entries, then we hold all
3812          * entries for the trace and we need to ignore the
3813          * ones before the time stamp.
3814          */
3815         if (per_cpu_ptr(buf->data, cpu)->skipped_entries) {
3816                 count -= per_cpu_ptr(buf->data, cpu)->skipped_entries;
3817                 /* total is the same as the entries */
3818                 *total = count;
3819         } else
3820                 *total = count +
3821                         ring_buffer_overrun_cpu(buf->buffer, cpu);
3822         *entries = count;
3823 }
3824
3825 static void
3826 get_total_entries(struct array_buffer *buf,
3827                   unsigned long *total, unsigned long *entries)
3828 {
3829         unsigned long t, e;
3830         int cpu;
3831
3832         *total = 0;
3833         *entries = 0;
3834
3835         for_each_tracing_cpu(cpu) {
3836                 get_total_entries_cpu(buf, &t, &e, cpu);
3837                 *total += t;
3838                 *entries += e;
3839         }
3840 }
3841
3842 unsigned long trace_total_entries_cpu(struct trace_array *tr, int cpu)
3843 {
3844         unsigned long total, entries;
3845
3846         if (!tr)
3847                 tr = &global_trace;
3848
3849         get_total_entries_cpu(&tr->array_buffer, &total, &entries, cpu);
3850
3851         return entries;
3852 }
3853
3854 unsigned long trace_total_entries(struct trace_array *tr)
3855 {
3856         unsigned long total, entries;
3857
3858         if (!tr)
3859                 tr = &global_trace;
3860
3861         get_total_entries(&tr->array_buffer, &total, &entries);
3862
3863         return entries;
3864 }
3865
3866 static void print_lat_help_header(struct seq_file *m)
3867 {
3868         seq_puts(m, "#                    _------=> CPU#            \n"
3869                     "#                   / _-----=> irqs-off        \n"
3870                     "#                  | / _----=> need-resched    \n"
3871                     "#                  || / _---=> hardirq/softirq \n"
3872                     "#                  ||| / _--=> preempt-depth   \n"
3873                     "#                  |||| /     delay            \n"
3874                     "#  cmd     pid     ||||| time  |   caller      \n"
3875                     "#     \\   /        |||||  \\    |   /         \n");
3876 }
3877
3878 static void print_event_info(struct array_buffer *buf, struct seq_file *m)
3879 {
3880         unsigned long total;
3881         unsigned long entries;
3882
3883         get_total_entries(buf, &total, &entries);
3884         seq_printf(m, "# entries-in-buffer/entries-written: %lu/%lu   #P:%d\n",
3885                    entries, total, num_online_cpus());
3886         seq_puts(m, "#\n");
3887 }
3888
3889 static void print_func_help_header(struct array_buffer *buf, struct seq_file *m,
3890                                    unsigned int flags)
3891 {
3892         bool tgid = flags & TRACE_ITER_RECORD_TGID;
3893
3894         print_event_info(buf, m);
3895
3896         seq_printf(m, "#           TASK-PID    %s CPU#     TIMESTAMP  FUNCTION\n", tgid ? "   TGID   " : "");
3897         seq_printf(m, "#              | |      %s   |         |         |\n",      tgid ? "     |    " : "");
3898 }
3899
3900 static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file *m,
3901                                        unsigned int flags)
3902 {
3903         bool tgid = flags & TRACE_ITER_RECORD_TGID;
3904         const char *space = "            ";
3905         int prec = tgid ? 12 : 2;
3906
3907         print_event_info(buf, m);
3908
3909         seq_printf(m, "#                            %.*s  _-----=> irqs-off\n", prec, space);
3910         seq_printf(m, "#                            %.*s / _----=> need-resched\n", prec, space);
3911         seq_printf(m, "#                            %.*s| / _---=> hardirq/softirq\n", prec, space);
3912         seq_printf(m, "#                            %.*s|| / _--=> preempt-depth\n", prec, space);
3913         seq_printf(m, "#                            %.*s||| /     delay\n", prec, space);
3914         seq_printf(m, "#           TASK-PID  %.*s CPU#  ||||   TIMESTAMP  FUNCTION\n", prec, "     TGID   ");
3915         seq_printf(m, "#              | |    %.*s   |   ||||      |         |\n", prec, "       |    ");
3916 }
3917
3918 void
3919 print_trace_header(struct seq_file *m, struct trace_iterator *iter)
3920 {
3921         unsigned long sym_flags = (global_trace.trace_flags & TRACE_ITER_SYM_MASK);
3922         struct array_buffer *buf = iter->array_buffer;
3923         struct trace_array_cpu *data = per_cpu_ptr(buf->data, buf->cpu);
3924         struct tracer *type = iter->trace;
3925         unsigned long entries;
3926         unsigned long total;
3927         const char *name = "preemption";
3928
3929         name = type->name;
3930
3931         get_total_entries(buf, &total, &entries);
3932
3933         seq_printf(m, "# %s latency trace v1.1.5 on %s\n",
3934                    name, UTS_RELEASE);
3935         seq_puts(m, "# -----------------------------------"
3936                  "---------------------------------\n");
3937         seq_printf(m, "# latency: %lu us, #%lu/%lu, CPU#%d |"
3938                    " (M:%s VP:%d, KP:%d, SP:%d HP:%d",
3939                    nsecs_to_usecs(data->saved_latency),
3940                    entries,
3941                    total,
3942                    buf->cpu,
3943 #if defined(CONFIG_PREEMPT_NONE)
3944                    "server",
3945 #elif defined(CONFIG_PREEMPT_VOLUNTARY)
3946                    "desktop",
3947 #elif defined(CONFIG_PREEMPT)
3948                    "preempt",
3949 #elif defined(CONFIG_PREEMPT_RT)
3950                    "preempt_rt",
3951 #else
3952                    "unknown",
3953 #endif
3954                    /* These are reserved for later use */
3955                    0, 0, 0, 0);
3956 #ifdef CONFIG_SMP
3957         seq_printf(m, " #P:%d)\n", num_online_cpus());
3958 #else
3959         seq_puts(m, ")\n");
3960 #endif
3961         seq_puts(m, "#    -----------------\n");
3962         seq_printf(m, "#    | task: %.16s-%d "
3963                    "(uid:%d nice:%ld policy:%ld rt_prio:%ld)\n",
3964                    data->comm, data->pid,
3965                    from_kuid_munged(seq_user_ns(m), data->uid), data->nice,
3966                    data->policy, data->rt_priority);
3967         seq_puts(m, "#    -----------------\n");
3968
3969         if (data->critical_start) {
3970                 seq_puts(m, "#  => started at: ");
3971                 seq_print_ip_sym(&iter->seq, data->critical_start, sym_flags);
3972                 trace_print_seq(m, &iter->seq);
3973                 seq_puts(m, "\n#  => ended at:   ");
3974                 seq_print_ip_sym(&iter->seq, data->critical_end, sym_flags);
3975                 trace_print_seq(m, &iter->seq);
3976                 seq_puts(m, "\n#\n");
3977         }
3978
3979         seq_puts(m, "#\n");
3980 }
3981
3982 static void test_cpu_buff_start(struct trace_iterator *iter)
3983 {
3984         struct trace_seq *s = &iter->seq;
3985         struct trace_array *tr = iter->tr;
3986
3987         if (!(tr->trace_flags & TRACE_ITER_ANNOTATE))
3988                 return;
3989
3990         if (!(iter->iter_flags & TRACE_FILE_ANNOTATE))
3991                 return;
3992
3993         if (cpumask_available(iter->started) &&
3994             cpumask_test_cpu(iter->cpu, iter->started))
3995                 return;
3996
3997         if (per_cpu_ptr(iter->array_buffer->data, iter->cpu)->skipped_entries)
3998                 return;
3999
4000         if (cpumask_available(iter->started))
4001                 cpumask_set_cpu(iter->cpu, iter->started);
4002
4003         /* Don't print started cpu buffer for the first entry of the trace */
4004         if (iter->idx > 1)
4005                 trace_seq_printf(s, "##### CPU %u buffer started ####\n",
4006                                 iter->cpu);
4007 }
4008
4009 static enum print_line_t print_trace_fmt(struct trace_iterator *iter)
4010 {
4011         struct trace_array *tr = iter->tr;
4012         struct trace_seq *s = &iter->seq;
4013         unsigned long sym_flags = (tr->trace_flags & TRACE_ITER_SYM_MASK);
4014         struct trace_entry *entry;
4015         struct trace_event *event;
4016
4017         entry = iter->ent;
4018
4019         test_cpu_buff_start(iter);
4020
4021         event = ftrace_find_event(entry->type);
4022
4023         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
4024                 if (iter->iter_flags & TRACE_FILE_LAT_FMT)
4025                         trace_print_lat_context(iter);
4026                 else
4027                         trace_print_context(iter);
4028         }
4029
4030         if (trace_seq_has_overflowed(s))
4031                 return TRACE_TYPE_PARTIAL_LINE;
4032
4033         if (event)
4034                 return event->funcs->trace(iter, sym_flags, event);
4035
4036         trace_seq_printf(s, "Unknown type %d\n", entry->type);
4037
4038         return trace_handle_return(s);
4039 }
4040
4041 static enum print_line_t print_raw_fmt(struct trace_iterator *iter)
4042 {
4043         struct trace_array *tr = iter->tr;
4044         struct trace_seq *s = &iter->seq;
4045         struct trace_entry *entry;
4046         struct trace_event *event;
4047
4048         entry = iter->ent;
4049
4050         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO)
4051                 trace_seq_printf(s, "%d %d %llu ",
4052                                  entry->pid, iter->cpu, iter->ts);
4053
4054         if (trace_seq_has_overflowed(s))
4055                 return TRACE_TYPE_PARTIAL_LINE;
4056
4057         event = ftrace_find_event(entry->type);
4058         if (event)
4059                 return event->funcs->raw(iter, 0, event);
4060
4061         trace_seq_printf(s, "%d ?\n", entry->type);
4062
4063         return trace_handle_return(s);
4064 }
4065
4066 static enum print_line_t print_hex_fmt(struct trace_iterator *iter)
4067 {
4068         struct trace_array *tr = iter->tr;
4069         struct trace_seq *s = &iter->seq;
4070         unsigned char newline = '\n';
4071         struct trace_entry *entry;
4072         struct trace_event *event;
4073
4074         entry = iter->ent;
4075
4076         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
4077                 SEQ_PUT_HEX_FIELD(s, entry->pid);
4078                 SEQ_PUT_HEX_FIELD(s, iter->cpu);
4079                 SEQ_PUT_HEX_FIELD(s, iter->ts);
4080                 if (trace_seq_has_overflowed(s))
4081                         return TRACE_TYPE_PARTIAL_LINE;
4082         }
4083
4084         event = ftrace_find_event(entry->type);
4085         if (event) {
4086                 enum print_line_t ret = event->funcs->hex(iter, 0, event);
4087                 if (ret != TRACE_TYPE_HANDLED)
4088                         return ret;
4089         }
4090
4091         SEQ_PUT_FIELD(s, newline);
4092
4093         return trace_handle_return(s);
4094 }
4095
4096 static enum print_line_t print_bin_fmt(struct trace_iterator *iter)
4097 {
4098         struct trace_array *tr = iter->tr;
4099         struct trace_seq *s = &iter->seq;
4100         struct trace_entry *entry;
4101         struct trace_event *event;
4102
4103         entry = iter->ent;
4104
4105         if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) {
4106                 SEQ_PUT_FIELD(s, entry->pid);
4107                 SEQ_PUT_FIELD(s, iter->cpu);
4108                 SEQ_PUT_FIELD(s, iter->ts);
4109                 if (trace_seq_has_overflowed(s))
4110                         return TRACE_TYPE_PARTIAL_LINE;
4111         }
4112
4113         event = ftrace_find_event(entry->type);
4114         return event ? event->funcs->binary(iter, 0, event) :
4115                 TRACE_TYPE_HANDLED;
4116 }
4117
4118 int trace_empty(struct trace_iterator *iter)
4119 {
4120         struct ring_buffer_iter *buf_iter;
4121         int cpu;
4122
4123         /* If we are looking at one CPU buffer, only check that one */
4124         if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
4125                 cpu = iter->cpu_file;
4126                 buf_iter = trace_buffer_iter(iter, cpu);
4127                 if (buf_iter) {
4128                         if (!ring_buffer_iter_empty(buf_iter))
4129                                 return 0;
4130                 } else {
4131                         if (!ring_buffer_empty_cpu(iter->array_buffer->buffer, cpu))
4132                                 return 0;
4133                 }
4134                 return 1;
4135         }
4136
4137         for_each_tracing_cpu(cpu) {
4138                 buf_iter = trace_buffer_iter(iter, cpu);
4139                 if (buf_iter) {
4140                         if (!ring_buffer_iter_empty(buf_iter))
4141                                 return 0;
4142                 } else {
4143                         if (!ring_buffer_empty_cpu(iter->array_buffer->buffer, cpu))
4144                                 return 0;
4145                 }
4146         }
4147
4148         return 1;
4149 }
4150
4151 /*  Called with trace_event_read_lock() held. */
4152 enum print_line_t print_trace_line(struct trace_iterator *iter)
4153 {
4154         struct trace_array *tr = iter->tr;
4155         unsigned long trace_flags = tr->trace_flags;
4156         enum print_line_t ret;
4157
4158         if (iter->lost_events) {
4159                 if (iter->lost_events == (unsigned long)-1)
4160                         trace_seq_printf(&iter->seq, "CPU:%d [LOST EVENTS]\n",
4161                                          iter->cpu);
4162                 else
4163                         trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
4164                                          iter->cpu, iter->lost_events);
4165                 if (trace_seq_has_overflowed(&iter->seq))
4166                         return TRACE_TYPE_PARTIAL_LINE;
4167         }
4168
4169         if (iter->trace && iter->trace->print_line) {
4170                 ret = iter->trace->print_line(iter);
4171                 if (ret != TRACE_TYPE_UNHANDLED)
4172                         return ret;
4173         }
4174
4175         if (iter->ent->type == TRACE_BPUTS &&
4176                         trace_flags & TRACE_ITER_PRINTK &&
4177                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
4178                 return trace_print_bputs_msg_only(iter);
4179
4180         if (iter->ent->type == TRACE_BPRINT &&
4181                         trace_flags & TRACE_ITER_PRINTK &&
4182                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
4183                 return trace_print_bprintk_msg_only(iter);
4184
4185         if (iter->ent->type == TRACE_PRINT &&
4186                         trace_flags & TRACE_ITER_PRINTK &&
4187                         trace_flags & TRACE_ITER_PRINTK_MSGONLY)
4188                 return trace_print_printk_msg_only(iter);
4189
4190         if (trace_flags & TRACE_ITER_BIN)
4191                 return print_bin_fmt(iter);
4192
4193         if (trace_flags & TRACE_ITER_HEX)
4194                 return print_hex_fmt(iter);
4195
4196         if (trace_flags & TRACE_ITER_RAW)
4197                 return print_raw_fmt(iter);
4198
4199         return print_trace_fmt(iter);
4200 }
4201
4202 void trace_latency_header(struct seq_file *m)
4203 {
4204         struct trace_iterator *iter = m->private;
4205         struct trace_array *tr = iter->tr;
4206
4207         /* print nothing if the buffers are empty */
4208         if (trace_empty(iter))
4209                 return;
4210
4211         if (iter->iter_flags & TRACE_FILE_LAT_FMT)
4212                 print_trace_header(m, iter);
4213
4214         if (!(tr->trace_flags & TRACE_ITER_VERBOSE))
4215                 print_lat_help_header(m);
4216 }
4217
4218 void trace_default_header(struct seq_file *m)
4219 {
4220         struct trace_iterator *iter = m->private;
4221         struct trace_array *tr = iter->tr;
4222         unsigned long trace_flags = tr->trace_flags;
4223
4224         if (!(trace_flags & TRACE_ITER_CONTEXT_INFO))
4225                 return;
4226
4227         if (iter->iter_flags & TRACE_FILE_LAT_FMT) {
4228                 /* print nothing if the buffers are empty */
4229                 if (trace_empty(iter))
4230                         return;
4231                 print_trace_header(m, iter);
4232                 if (!(trace_flags & TRACE_ITER_VERBOSE))
4233                         print_lat_help_header(m);
4234         } else {
4235                 if (!(trace_flags & TRACE_ITER_VERBOSE)) {
4236                         if (trace_flags & TRACE_ITER_IRQ_INFO)
4237                                 print_func_help_header_irq(iter->array_buffer,
4238                                                            m, trace_flags);
4239                         else
4240                                 print_func_help_header(iter->array_buffer, m,
4241                                                        trace_flags);
4242                 }
4243         }
4244 }
4245
4246 static void test_ftrace_alive(struct seq_file *m)
4247 {
4248         if (!ftrace_is_dead())
4249                 return;
4250         seq_puts(m, "# WARNING: FUNCTION TRACING IS CORRUPTED\n"
4251                     "#          MAY BE MISSING FUNCTION EVENTS\n");
4252 }
4253
4254 #ifdef CONFIG_TRACER_MAX_TRACE
4255 static void show_snapshot_main_help(struct seq_file *m)
4256 {
4257         seq_puts(m, "# echo 0 > snapshot : Clears and frees snapshot buffer\n"
4258                     "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n"
4259                     "#                      Takes a snapshot of the main buffer.\n"
4260                     "# echo 2 > snapshot : Clears snapshot buffer (but does not allocate or free)\n"
4261                     "#                      (Doesn't have to be '2' works with any number that\n"
4262                     "#                       is not a '0' or '1')\n");
4263 }
4264
4265 static void show_snapshot_percpu_help(struct seq_file *m)
4266 {
4267         seq_puts(m, "# echo 0 > snapshot : Invalid for per_cpu snapshot file.\n");
4268 #ifdef CONFIG_RING_BUFFER_ALLOW_SWAP
4269         seq_puts(m, "# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.\n"
4270                     "#                      Takes a snapshot of the main buffer for this cpu.\n");
4271 #else
4272         seq_puts(m, "# echo 1 > snapshot : Not supported with this kernel.\n"
4273                     "#                     Must use main snapshot file to allocate.\n");
4274 #endif
4275         seq_puts(m, "# echo 2 > snapshot : Clears this cpu's snapshot buffer (but does not allocate)\n"
4276                     "#                      (Doesn't have to be '2' works with any number that\n"
4277                     "#                       is not a '0' or '1')\n");
4278 }
4279
4280 static void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter)
4281 {
4282         if (iter->tr->allocated_snapshot)
4283                 seq_puts(m, "#\n# * Snapshot is allocated *\n#\n");
4284         else
4285                 seq_puts(m, "#\n# * Snapshot is freed *\n#\n");
4286
4287         seq_puts(m, "# Snapshot commands:\n");
4288         if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
4289                 show_snapshot_main_help(m);
4290         else
4291                 show_snapshot_percpu_help(m);
4292 }
4293 #else
4294 /* Should never be called */
4295 static inline void print_snapshot_help(struct seq_file *m, struct trace_iterator *iter) { }
4296 #endif
4297
4298 static int s_show(struct seq_file *m, void *v)
4299 {
4300         struct trace_iterator *iter = v;
4301         int ret;
4302
4303         if (iter->ent == NULL) {
4304                 if (iter->tr) {
4305                         seq_printf(m, "# tracer: %s\n", iter->trace->name);
4306                         seq_puts(m, "#\n");
4307                         test_ftrace_alive(m);
4308                 }
4309                 if (iter->snapshot && trace_empty(iter))
4310                         print_snapshot_help(m, iter);
4311                 else if (iter->trace && iter->trace->print_header)
4312                         iter->trace->print_header(m);
4313                 else
4314                         trace_default_header(m);
4315
4316         } else if (iter->leftover) {
4317                 /*
4318                  * If we filled the seq_file buffer earlier, we
4319                  * want to just show it now.
4320                  */
4321                 ret = trace_print_seq(m, &iter->seq);
4322
4323                 /* ret should this time be zero, but you never know */
4324                 iter->leftover = ret;
4325
4326         } else {
4327                 print_trace_line(iter);
4328                 ret = trace_print_seq(m, &iter->seq);
4329                 /*
4330                  * If we overflow the seq_file buffer, then it will
4331                  * ask us for this data again at start up.
4332                  * Use that instead.
4333                  *  ret is 0 if seq_file write succeeded.
4334                  *        -1 otherwise.
4335                  */
4336                 iter->leftover = ret;
4337         }
4338
4339         return 0;
4340 }
4341
4342 /*
4343  * Should be used after trace_array_get(), trace_types_lock
4344  * ensures that i_cdev was already initialized.
4345  */
4346 static inline int tracing_get_cpu(struct inode *inode)
4347 {
4348         if (inode->i_cdev) /* See trace_create_cpu_file() */
4349                 return (long)inode->i_cdev - 1;
4350         return RING_BUFFER_ALL_CPUS;
4351 }
4352
4353 static const struct seq_operations tracer_seq_ops = {
4354         .start          = s_start,
4355         .next           = s_next,
4356         .stop           = s_stop,
4357         .show           = s_show,
4358 };
4359
4360 static struct trace_iterator *
4361 __tracing_open(struct inode *inode, struct file *file, bool snapshot)
4362 {
4363         struct trace_array *tr = inode->i_private;
4364         struct trace_iterator *iter;
4365         int cpu;
4366
4367         if (tracing_disabled)
4368                 return ERR_PTR(-ENODEV);
4369
4370         iter = __seq_open_private(file, &tracer_seq_ops, sizeof(*iter));
4371         if (!iter)
4372                 return ERR_PTR(-ENOMEM);
4373
4374         iter->buffer_iter = kcalloc(nr_cpu_ids, sizeof(*iter->buffer_iter),
4375                                     GFP_KERNEL);
4376         if (!iter->buffer_iter)
4377                 goto release;
4378
4379         /*
4380          * trace_find_next_entry() may need to save off iter->ent.
4381          * It will place it into the iter->temp buffer. As most
4382          * events are less than 128, allocate a buffer of that size.
4383          * If one is greater, then trace_find_next_entry() will
4384          * allocate a new buffer to adjust for the bigger iter->ent.
4385          * It's not critical if it fails to get allocated here.
4386          */
4387         iter->temp = kmalloc(128, GFP_KERNEL);
4388         if (iter->temp)
4389                 iter->temp_size = 128;
4390
4391         /*
4392          * trace_event_printf() may need to modify given format
4393          * string to replace %p with %px so that it shows real address
4394          * instead of hash value. However, that is only for the event
4395          * tracing, other tracer may not need. Defer the allocation
4396          * until it is needed.
4397          */
4398         iter->fmt = NULL;
4399         iter->fmt_size = 0;
4400
4401         /*
4402          * We make a copy of the current tracer to avoid concurrent
4403          * changes on it while we are reading.
4404          */
4405         mutex_lock(&trace_types_lock);
4406         iter->trace = kzalloc(sizeof(*iter->trace), GFP_KERNEL);
4407         if (!iter->trace)
4408                 goto fail;
4409
4410         *iter->trace = *tr->current_trace;
4411
4412         if (!zalloc_cpumask_var(&iter->started, GFP_KERNEL))
4413                 goto fail;
4414
4415         iter->tr = tr;
4416
4417 #ifdef CONFIG_TRACER_MAX_TRACE
4418         /* Currently only the top directory has a snapshot */
4419         if (tr->current_trace->print_max || snapshot)
4420                 iter->array_buffer = &tr->max_buffer;
4421         else
4422 #endif
4423                 iter->array_buffer = &tr->array_buffer;
4424         iter->snapshot = snapshot;
4425         iter->pos = -1;
4426         iter->cpu_file = tracing_get_cpu(inode);
4427         mutex_init(&iter->mutex);
4428
4429         /* Notify the tracer early; before we stop tracing. */
4430         if (iter->trace->open)
4431                 iter->trace->open(iter);
4432
4433         /* Annotate start of buffers if we had overruns */
4434         if (ring_buffer_overruns(iter->array_buffer->buffer))
4435                 iter->iter_flags |= TRACE_FILE_ANNOTATE;
4436
4437         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
4438         if (trace_clocks[tr->clock_id].in_ns)
4439                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
4440
4441         /*
4442          * If pause-on-trace is enabled, then stop the trace while
4443          * dumping, unless this is the "snapshot" file
4444          */
4445         if (!iter->snapshot && (tr->trace_flags & TRACE_ITER_PAUSE_ON_TRACE))
4446                 tracing_stop_tr(tr);
4447
4448         if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
4449                 for_each_tracing_cpu(cpu) {
4450                         iter->buffer_iter[cpu] =
4451                                 ring_buffer_read_prepare(iter->array_buffer->buffer,
4452                                                          cpu, GFP_KERNEL);
4453                 }
4454                 ring_buffer_read_prepare_sync();
4455                 for_each_tracing_cpu(cpu) {
4456                         ring_buffer_read_start(iter->buffer_iter[cpu]);
4457                         tracing_iter_reset(iter, cpu);
4458                 }
4459         } else {
4460                 cpu = iter->cpu_file;
4461                 iter->buffer_iter[cpu] =
4462                         ring_buffer_read_prepare(iter->array_buffer->buffer,
4463                                                  cpu, GFP_KERNEL);
4464                 ring_buffer_read_prepare_sync();
4465                 ring_buffer_read_start(iter->buffer_iter[cpu]);
4466                 tracing_iter_reset(iter, cpu);
4467         }
4468
4469         mutex_unlock(&trace_types_lock);
4470
4471         return iter;
4472
4473  fail:
4474         mutex_unlock(&trace_types_lock);
4475         kfree(iter->trace);
4476         kfree(iter->temp);
4477         kfree(iter->buffer_iter);
4478 release:
4479         seq_release_private(inode, file);
4480         return ERR_PTR(-ENOMEM);
4481 }
4482
4483 int tracing_open_generic(struct inode *inode, struct file *filp)
4484 {
4485         int ret;
4486
4487         ret = tracing_check_open_get_tr(NULL);
4488         if (ret)
4489                 return ret;
4490
4491         filp->private_data = inode->i_private;
4492         return 0;
4493 }
4494
4495 bool tracing_is_disabled(void)
4496 {
4497         return (tracing_disabled) ? true: false;
4498 }
4499
4500 /*
4501  * Open and update trace_array ref count.
4502  * Must have the current trace_array passed to it.
4503  */
4504 int tracing_open_generic_tr(struct inode *inode, struct file *filp)
4505 {
4506         struct trace_array *tr = inode->i_private;
4507         int ret;
4508
4509         ret = tracing_check_open_get_tr(tr);
4510         if (ret)
4511                 return ret;
4512
4513         filp->private_data = inode->i_private;
4514
4515         return 0;
4516 }
4517
4518 static int tracing_release(struct inode *inode, struct file *file)
4519 {
4520         struct trace_array *tr = inode->i_private;
4521         struct seq_file *m = file->private_data;
4522         struct trace_iterator *iter;
4523         int cpu;
4524
4525         if (!(file->f_mode & FMODE_READ)) {
4526                 trace_array_put(tr);
4527                 return 0;
4528         }
4529
4530         /* Writes do not use seq_file */
4531         iter = m->private;
4532         mutex_lock(&trace_types_lock);
4533
4534         for_each_tracing_cpu(cpu) {
4535                 if (iter->buffer_iter[cpu])
4536                         ring_buffer_read_finish(iter->buffer_iter[cpu]);
4537         }
4538
4539         if (iter->trace && iter->trace->close)
4540                 iter->trace->close(iter);
4541
4542         if (!iter->snapshot && tr->stop_count)
4543                 /* reenable tracing if it was previously enabled */
4544                 tracing_start_tr(tr);
4545
4546         __trace_array_put(tr);
4547
4548         mutex_unlock(&trace_types_lock);
4549
4550         mutex_destroy(&iter->mutex);
4551         free_cpumask_var(iter->started);
4552         kfree(iter->fmt);
4553         kfree(iter->temp);
4554         kfree(iter->trace);
4555         kfree(iter->buffer_iter);
4556         seq_release_private(inode, file);
4557
4558         return 0;
4559 }
4560
4561 static int tracing_release_generic_tr(struct inode *inode, struct file *file)
4562 {
4563         struct trace_array *tr = inode->i_private;
4564
4565         trace_array_put(tr);
4566         return 0;
4567 }
4568
4569 static int tracing_single_release_tr(struct inode *inode, struct file *file)
4570 {
4571         struct trace_array *tr = inode->i_private;
4572
4573         trace_array_put(tr);
4574
4575         return single_release(inode, file);
4576 }
4577
4578 static int tracing_open(struct inode *inode, struct file *file)
4579 {
4580         struct trace_array *tr = inode->i_private;
4581         struct trace_iterator *iter;
4582         int ret;
4583
4584         ret = tracing_check_open_get_tr(tr);
4585         if (ret)
4586                 return ret;
4587
4588         /* If this file was open for write, then erase contents */
4589         if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_TRUNC)) {
4590                 int cpu = tracing_get_cpu(inode);
4591                 struct array_buffer *trace_buf = &tr->array_buffer;
4592
4593 #ifdef CONFIG_TRACER_MAX_TRACE
4594                 if (tr->current_trace->print_max)
4595                         trace_buf = &tr->max_buffer;
4596 #endif
4597
4598                 if (cpu == RING_BUFFER_ALL_CPUS)
4599                         tracing_reset_online_cpus(trace_buf);
4600                 else
4601                         tracing_reset_cpu(trace_buf, cpu);
4602         }
4603
4604         if (file->f_mode & FMODE_READ) {
4605                 iter = __tracing_open(inode, file, false);
4606                 if (IS_ERR(iter))
4607                         ret = PTR_ERR(iter);
4608                 else if (tr->trace_flags & TRACE_ITER_LATENCY_FMT)
4609                         iter->iter_flags |= TRACE_FILE_LAT_FMT;
4610         }
4611
4612         if (ret < 0)
4613                 trace_array_put(tr);
4614
4615         return ret;
4616 }
4617
4618 /*
4619  * Some tracers are not suitable for instance buffers.
4620  * A tracer is always available for the global array (toplevel)
4621  * or if it explicitly states that it is.
4622  */
4623 static bool
4624 trace_ok_for_array(struct tracer *t, struct trace_array *tr)
4625 {
4626         return (tr->flags & TRACE_ARRAY_FL_GLOBAL) || t->allow_instances;
4627 }
4628
4629 /* Find the next tracer that this trace array may use */
4630 static struct tracer *
4631 get_tracer_for_array(struct trace_array *tr, struct tracer *t)
4632 {
4633         while (t && !trace_ok_for_array(t, tr))
4634                 t = t->next;
4635
4636         return t;
4637 }
4638
4639 static void *
4640 t_next(struct seq_file *m, void *v, loff_t *pos)
4641 {
4642         struct trace_array *tr = m->private;
4643         struct tracer *t = v;
4644
4645         (*pos)++;
4646
4647         if (t)
4648                 t = get_tracer_for_array(tr, t->next);
4649
4650         return t;
4651 }
4652
4653 static void *t_start(struct seq_file *m, loff_t *pos)
4654 {
4655         struct trace_array *tr = m->private;
4656         struct tracer *t;
4657         loff_t l = 0;
4658
4659         mutex_lock(&trace_types_lock);
4660
4661         t = get_tracer_for_array(tr, trace_types);
4662         for (; t && l < *pos; t = t_next(m, t, &l))
4663                         ;
4664
4665         return t;
4666 }
4667
4668 static void t_stop(struct seq_file *m, void *p)
4669 {
4670         mutex_unlock(&trace_types_lock);
4671 }
4672
4673 static int t_show(struct seq_file *m, void *v)
4674 {
4675         struct tracer *t = v;
4676
4677         if (!t)
4678                 return 0;
4679
4680         seq_puts(m, t->name);
4681         if (t->next)
4682                 seq_putc(m, ' ');
4683         else
4684                 seq_putc(m, '\n');
4685
4686         return 0;
4687 }
4688
4689 static const struct seq_operations show_traces_seq_ops = {
4690         .start          = t_start,
4691         .next           = t_next,
4692         .stop           = t_stop,
4693         .show           = t_show,
4694 };
4695
4696 static int show_traces_open(struct inode *inode, struct file *file)
4697 {
4698         struct trace_array *tr = inode->i_private;
4699         struct seq_file *m;
4700         int ret;
4701
4702         ret = tracing_check_open_get_tr(tr);
4703         if (ret)
4704                 return ret;
4705
4706         ret = seq_open(file, &show_traces_seq_ops);
4707         if (ret) {
4708                 trace_array_put(tr);
4709                 return ret;
4710         }
4711
4712         m = file->private_data;
4713         m->private = tr;
4714
4715         return 0;
4716 }
4717
4718 static int show_traces_release(struct inode *inode, struct file *file)
4719 {
4720         struct trace_array *tr = inode->i_private;
4721
4722         trace_array_put(tr);
4723         return seq_release(inode, file);
4724 }
4725
4726 static ssize_t
4727 tracing_write_stub(struct file *filp, const char __user *ubuf,
4728                    size_t count, loff_t *ppos)
4729 {
4730         return count;
4731 }
4732
4733 loff_t tracing_lseek(struct file *file, loff_t offset, int whence)
4734 {
4735         int ret;
4736
4737         if (file->f_mode & FMODE_READ)
4738                 ret = seq_lseek(file, offset, whence);
4739         else
4740                 file->f_pos = ret = 0;
4741
4742         return ret;
4743 }
4744
4745 static const struct file_operations tracing_fops = {
4746         .open           = tracing_open,
4747         .read           = seq_read,
4748         .write          = tracing_write_stub,
4749         .llseek         = tracing_lseek,
4750         .release        = tracing_release,
4751 };
4752
4753 static const struct file_operations show_traces_fops = {
4754         .open           = show_traces_open,
4755         .read           = seq_read,
4756         .llseek         = seq_lseek,
4757         .release        = show_traces_release,
4758 };
4759
4760 static ssize_t
4761 tracing_cpumask_read(struct file *filp, char __user *ubuf,
4762                      size_t count, loff_t *ppos)
4763 {
4764         struct trace_array *tr = file_inode(filp)->i_private;
4765         char *mask_str;
4766         int len;
4767
4768         len = snprintf(NULL, 0, "%*pb\n",
4769                        cpumask_pr_args(tr->tracing_cpumask)) + 1;
4770         mask_str = kmalloc(len, GFP_KERNEL);
4771         if (!mask_str)
4772                 return -ENOMEM;
4773
4774         len = snprintf(mask_str, len, "%*pb\n",
4775                        cpumask_pr_args(tr->tracing_cpumask));
4776         if (len >= count) {
4777                 count = -EINVAL;
4778                 goto out_err;
4779         }
4780         count = simple_read_from_buffer(ubuf, count, ppos, mask_str, len);
4781
4782 out_err:
4783         kfree(mask_str);
4784
4785         return count;
4786 }
4787
4788 int tracing_set_cpumask(struct trace_array *tr,
4789                         cpumask_var_t tracing_cpumask_new)
4790 {
4791         int cpu;
4792
4793         if (!tr)
4794                 return -EINVAL;
4795
4796         local_irq_disable();
4797         arch_spin_lock(&tr->max_lock);
4798         for_each_tracing_cpu(cpu) {
4799                 /*
4800                  * Increase/decrease the disabled counter if we are
4801                  * about to flip a bit in the cpumask:
4802                  */
4803                 if (cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
4804                                 !cpumask_test_cpu(cpu, tracing_cpumask_new)) {
4805                         atomic_inc(&per_cpu_ptr(tr->array_buffer.data, cpu)->disabled);
4806                         ring_buffer_record_disable_cpu(tr->array_buffer.buffer, cpu);
4807                 }
4808                 if (!cpumask_test_cpu(cpu, tr->tracing_cpumask) &&
4809                                 cpumask_test_cpu(cpu, tracing_cpumask_new)) {
4810                         atomic_dec(&per_cpu_ptr(tr->array_buffer.data, cpu)->disabled);
4811                         ring_buffer_record_enable_cpu(tr->array_buffer.buffer, cpu);
4812                 }
4813         }
4814         arch_spin_unlock(&tr->max_lock);
4815         local_irq_enable();
4816
4817         cpumask_copy(tr->tracing_cpumask, tracing_cpumask_new);
4818
4819         return 0;
4820 }
4821
4822 static ssize_t
4823 tracing_cpumask_write(struct file *filp, const char __user *ubuf,
4824                       size_t count, loff_t *ppos)
4825 {
4826         struct trace_array *tr = file_inode(filp)->i_private;
4827         cpumask_var_t tracing_cpumask_new;
4828         int err;
4829
4830         if (!alloc_cpumask_var(&tracing_cpumask_new, GFP_KERNEL))
4831                 return -ENOMEM;
4832
4833         err = cpumask_parse_user(ubuf, count, tracing_cpumask_new);
4834         if (err)
4835                 goto err_free;
4836
4837         err = tracing_set_cpumask(tr, tracing_cpumask_new);
4838         if (err)
4839                 goto err_free;
4840
4841         free_cpumask_var(tracing_cpumask_new);
4842
4843         return count;
4844
4845 err_free:
4846         free_cpumask_var(tracing_cpumask_new);
4847
4848         return err;
4849 }
4850
4851 static const struct file_operations tracing_cpumask_fops = {
4852         .open           = tracing_open_generic_tr,
4853         .read           = tracing_cpumask_read,
4854         .write          = tracing_cpumask_write,
4855         .release        = tracing_release_generic_tr,
4856         .llseek         = generic_file_llseek,
4857 };
4858
4859 static int tracing_trace_options_show(struct seq_file *m, void *v)
4860 {
4861         struct tracer_opt *trace_opts;
4862         struct trace_array *tr = m->private;
4863         u32 tracer_flags;
4864         int i;
4865
4866         mutex_lock(&trace_types_lock);
4867         tracer_flags = tr->current_trace->flags->val;
4868         trace_opts = tr->current_trace->flags->opts;
4869
4870         for (i = 0; trace_options[i]; i++) {
4871                 if (tr->trace_flags & (1 << i))
4872                         seq_printf(m, "%s\n", trace_options[i]);
4873                 else
4874                         seq_printf(m, "no%s\n", trace_options[i]);
4875         }
4876
4877         for (i = 0; trace_opts[i].name; i++) {
4878                 if (tracer_flags & trace_opts[i].bit)
4879                         seq_printf(m, "%s\n", trace_opts[i].name);
4880                 else
4881                         seq_printf(m, "no%s\n", trace_opts[i].name);
4882         }
4883         mutex_unlock(&trace_types_lock);
4884
4885         return 0;
4886 }
4887
4888 static int __set_tracer_option(struct trace_array *tr,
4889                                struct tracer_flags *tracer_flags,
4890                                struct tracer_opt *opts, int neg)
4891 {
4892         struct tracer *trace = tracer_flags->trace;
4893         int ret;
4894
4895         ret = trace->set_flag(tr, tracer_flags->val, opts->bit, !neg);
4896         if (ret)
4897                 return ret;
4898
4899         if (neg)
4900                 tracer_flags->val &= ~opts->bit;
4901         else
4902                 tracer_flags->val |= opts->bit;
4903         return 0;
4904 }
4905
4906 /* Try to assign a tracer specific option */
4907 static int set_tracer_option(struct trace_array *tr, char *cmp, int neg)
4908 {
4909         struct tracer *trace = tr->current_trace;
4910         struct tracer_flags *tracer_flags = trace->flags;
4911         struct tracer_opt *opts = NULL;
4912         int i;
4913
4914         for (i = 0; tracer_flags->opts[i].name; i++) {
4915                 opts = &tracer_flags->opts[i];
4916
4917                 if (strcmp(cmp, opts->name) == 0)
4918                         return __set_tracer_option(tr, trace->flags, opts, neg);
4919         }
4920
4921         return -EINVAL;
4922 }
4923
4924 /* Some tracers require overwrite to stay enabled */
4925 int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
4926 {
4927         if (tracer->enabled && (mask & TRACE_ITER_OVERWRITE) && !set)
4928                 return -1;
4929
4930         return 0;
4931 }
4932
4933 int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled)
4934 {
4935         if ((mask == TRACE_ITER_RECORD_TGID) ||
4936             (mask == TRACE_ITER_RECORD_CMD))
4937                 lockdep_assert_held(&event_mutex);
4938
4939         /* do nothing if flag is already set */
4940         if (!!(tr->trace_flags & mask) == !!enabled)
4941                 return 0;
4942
4943         /* Give the tracer a chance to approve the change */
4944         if (tr->current_trace->flag_changed)
4945                 if (tr->current_trace->flag_changed(tr, mask, !!enabled))
4946                         return -EINVAL;
4947
4948         if (enabled)
4949                 tr->trace_flags |= mask;
4950         else
4951                 tr->trace_flags &= ~mask;
4952
4953         if (mask == TRACE_ITER_RECORD_CMD)
4954                 trace_event_enable_cmd_record(enabled);
4955
4956         if (mask == TRACE_ITER_RECORD_TGID) {
4957                 if (!tgid_map)
4958                         tgid_map = kvcalloc(PID_MAX_DEFAULT + 1,
4959                                            sizeof(*tgid_map),
4960                                            GFP_KERNEL);
4961                 if (!tgid_map) {
4962                         tr->trace_flags &= ~TRACE_ITER_RECORD_TGID;
4963                         return -ENOMEM;
4964                 }
4965
4966                 trace_event_enable_tgid_record(enabled);
4967         }
4968
4969         if (mask == TRACE_ITER_EVENT_FORK)
4970                 trace_event_follow_fork(tr, enabled);
4971
4972         if (mask == TRACE_ITER_FUNC_FORK)
4973                 ftrace_pid_follow_fork(tr, enabled);
4974
4975         if (mask == TRACE_ITER_OVERWRITE) {
4976                 ring_buffer_change_overwrite(tr->array_buffer.buffer, enabled);
4977 #ifdef CONFIG_TRACER_MAX_TRACE
4978                 ring_buffer_change_overwrite(tr->max_buffer.buffer, enabled);
4979 #endif
4980         }
4981
4982         if (mask == TRACE_ITER_PRINTK) {
4983                 trace_printk_start_stop_comm(enabled);
4984                 trace_printk_control(enabled);
4985         }
4986
4987         return 0;
4988 }
4989
4990 int trace_set_options(struct trace_array *tr, char *option)
4991 {
4992         char *cmp;
4993         int neg = 0;
4994         int ret;
4995         size_t orig_len = strlen(option);
4996         int len;
4997
4998         cmp = strstrip(option);
4999
5000         len = str_has_prefix(cmp, "no");
5001         if (len)
5002                 neg = 1;
5003
5004         cmp += len;
5005
5006         mutex_lock(&event_mutex);
5007         mutex_lock(&trace_types_lock);
5008
5009         ret = match_string(trace_options, -1, cmp);
5010         /* If no option could be set, test the specific tracer options */
5011         if (ret < 0)
5012                 ret = set_tracer_option(tr, cmp, neg);
5013         else
5014                 ret = set_tracer_flag(tr, 1 << ret, !neg);
5015
5016         mutex_unlock(&trace_types_lock);
5017         mutex_unlock(&event_mutex);
5018
5019         /*
5020          * If the first trailing whitespace is replaced with '\0' by strstrip,
5021          * turn it back into a space.
5022          */
5023         if (orig_len > strlen(option))
5024                 option[strlen(option)] = ' ';
5025
5026         return ret;
5027 }
5028
5029 static void __init apply_trace_boot_options(void)
5030 {
5031         char *buf = trace_boot_options_buf;
5032         char *option;
5033
5034         while (true) {
5035                 option = strsep(&buf, ",");
5036
5037                 if (!option)
5038                         break;
5039
5040                 if (*option)
5041                         trace_set_options(&global_trace, option);
5042
5043                 /* Put back the comma to allow this to be called again */
5044                 if (buf)
5045                         *(buf - 1) = ',';
5046         }
5047 }
5048
5049 static ssize_t
5050 tracing_trace_options_write(struct file *filp, const char __user *ubuf,
5051                         size_t cnt, loff_t *ppos)
5052 {
5053         struct seq_file *m = filp->private_data;
5054         struct trace_array *tr = m->private;
5055         char buf[64];
5056         int ret;
5057
5058         if (cnt >= sizeof(buf))
5059                 return -EINVAL;
5060
5061         if (copy_from_user(buf, ubuf, cnt))
5062                 return -EFAULT;
5063
5064         buf[cnt] = 0;
5065
5066         ret = trace_set_options(tr, buf);
5067         if (ret < 0)
5068                 return ret;
5069
5070         *ppos += cnt;
5071
5072         return cnt;
5073 }
5074
5075 static int tracing_trace_options_open(struct inode *inode, struct file *file)
5076 {
5077         struct trace_array *tr = inode->i_private;
5078         int ret;
5079
5080         ret = tracing_check_open_get_tr(tr);
5081         if (ret)
5082                 return ret;
5083
5084         ret = single_open(file, tracing_trace_options_show, inode->i_private);
5085         if (ret < 0)
5086                 trace_array_put(tr);
5087
5088         return ret;
5089 }
5090
5091 static const struct file_operations tracing_iter_fops = {
5092         .open           = tracing_trace_options_open,
5093         .read           = seq_read,
5094         .llseek         = seq_lseek,
5095         .release        = tracing_single_release_tr,
5096         .write          = tracing_trace_options_write,
5097 };
5098
5099 static const char readme_msg[] =
5100         "tracing mini-HOWTO:\n\n"
5101         "# echo 0 > tracing_on : quick way to disable tracing\n"
5102         "# echo 1 > tracing_on : quick way to re-enable tracing\n\n"
5103         " Important files:\n"
5104         "  trace\t\t\t- The static contents of the buffer\n"
5105         "\t\t\t  To clear the buffer write into this file: echo > trace\n"
5106         "  trace_pipe\t\t- A consuming read to see the contents of the buffer\n"
5107         "  current_tracer\t- function and latency tracers\n"
5108         "  available_tracers\t- list of configured tracers for current_tracer\n"
5109         "  error_log\t- error log for failed commands (that support it)\n"
5110         "  buffer_size_kb\t- view and modify size of per cpu buffer\n"
5111         "  buffer_total_size_kb  - view total size of all cpu buffers\n\n"
5112         "  trace_clock\t\t-change the clock used to order events\n"
5113         "       local:   Per cpu clock but may not be synced across CPUs\n"
5114         "      global:   Synced across CPUs but slows tracing down.\n"
5115         "     counter:   Not a clock, but just an increment\n"
5116         "      uptime:   Jiffy counter from time of boot\n"
5117         "        perf:   Same clock that perf events use\n"
5118 #ifdef CONFIG_X86_64
5119         "     x86-tsc:   TSC cycle counter\n"
5120 #endif
5121         "\n  timestamp_mode\t-view the mode used to timestamp events\n"
5122         "       delta:   Delta difference against a buffer-wide timestamp\n"
5123         "    absolute:   Absolute (standalone) timestamp\n"
5124         "\n  trace_marker\t\t- Writes into this file writes into the kernel buffer\n"
5125         "\n  trace_marker_raw\t\t- Writes into this file writes binary data into the kernel buffer\n"
5126         "  tracing_cpumask\t- Limit which CPUs to trace\n"
5127         "  instances\t\t- Make sub-buffers with: mkdir instances/foo\n"
5128         "\t\t\t  Remove sub-buffer with rmdir\n"
5129         "  trace_options\t\t- Set format or modify how tracing happens\n"
5130         "\t\t\t  Disable an option by prefixing 'no' to the\n"
5131         "\t\t\t  option name\n"
5132         "  saved_cmdlines_size\t- echo command number in here to store comm-pid list\n"
5133 #ifdef CONFIG_DYNAMIC_FTRACE
5134         "\n  available_filter_functions - list of functions that can be filtered on\n"
5135         "  set_ftrace_filter\t- echo function name in here to only trace these\n"
5136         "\t\t\t  functions\n"
5137         "\t     accepts: func_full_name or glob-matching-pattern\n"
5138         "\t     modules: Can select a group via module\n"
5139         "\t      Format: :mod:<module-name>\n"
5140         "\t     example: echo :mod:ext3 > set_ftrace_filter\n"
5141         "\t    triggers: a command to perform when function is hit\n"
5142         "\t      Format: <function>:<trigger>[:count]\n"
5143         "\t     trigger: traceon, traceoff\n"
5144         "\t\t      enable_event:<system>:<event>\n"
5145         "\t\t      disable_event:<system>:<event>\n"
5146 #ifdef CONFIG_STACKTRACE
5147         "\t\t      stacktrace\n"
5148 #endif
5149 #ifdef CONFIG_TRACER_SNAPSHOT
5150         "\t\t      snapshot\n"
5151 #endif
5152         "\t\t      dump\n"
5153         "\t\t      cpudump\n"
5154         "\t     example: echo do_fault:traceoff > set_ftrace_filter\n"
5155         "\t              echo do_trap:traceoff:3 > set_ftrace_filter\n"
5156         "\t     The first one will disable tracing every time do_fault is hit\n"
5157         "\t     The second will disable tracing at most 3 times when do_trap is hit\n"
5158         "\t       The first time do trap is hit and it disables tracing, the\n"
5159         "\t       counter will decrement to 2. If tracing is already disabled,\n"
5160         "\t       the counter will not decrement. It only decrements when the\n"
5161         "\t       trigger did work\n"
5162         "\t     To remove trigger without count:\n"
5163         "\t       echo '!<function>:<trigger> > set_ftrace_filter\n"
5164         "\t     To remove trigger with a count:\n"
5165         "\t       echo '!<function>:<trigger>:0 > set_ftrace_filter\n"
5166         "  set_ftrace_notrace\t- echo function name in here to never trace.\n"
5167         "\t    accepts: func_full_name, *func_end, func_begin*, *func_middle*\n"
5168         "\t    modules: Can select a group via module command :mod:\n"
5169         "\t    Does not accept triggers\n"
5170 #endif /* CONFIG_DYNAMIC_FTRACE */
5171 #ifdef CONFIG_FUNCTION_TRACER
5172         "  set_ftrace_pid\t- Write pid(s) to only function trace those pids\n"
5173         "\t\t    (function)\n"
5174         "  set_ftrace_notrace_pid\t- Write pid(s) to not function trace those pids\n"
5175         "\t\t    (function)\n"
5176 #endif
5177 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
5178         "  set_graph_function\t- Trace the nested calls of a function (function_graph)\n"
5179         "  set_graph_notrace\t- Do not trace the nested calls of a function (function_graph)\n"
5180         "  max_graph_depth\t- Trace a limited depth of nested calls (0 is unlimited)\n"
5181 #endif
5182 #ifdef CONFIG_TRACER_SNAPSHOT
5183         "\n  snapshot\t\t- Like 'trace' but shows the content of the static\n"
5184         "\t\t\t  snapshot buffer. Read the contents for more\n"
5185         "\t\t\t  information\n"
5186 #endif
5187 #ifdef CONFIG_STACK_TRACER
5188         "  stack_trace\t\t- Shows the max stack trace when active\n"
5189         "  stack_max_size\t- Shows current max stack size that was traced\n"
5190         "\t\t\t  Write into this file to reset the max size (trigger a\n"
5191         "\t\t\t  new trace)\n"
5192 #ifdef CONFIG_DYNAMIC_FTRACE
5193         "  stack_trace_filter\t- Like set_ftrace_filter but limits what stack_trace\n"
5194         "\t\t\t  traces\n"
5195 #endif
5196 #endif /* CONFIG_STACK_TRACER */
5197 #ifdef CONFIG_DYNAMIC_EVENTS
5198         "  dynamic_events\t\t- Create/append/remove/show the generic dynamic events\n"
5199         "\t\t\t  Write into this file to define/undefine new trace events.\n"
5200 #endif
5201 #ifdef CONFIG_KPROBE_EVENTS
5202         "  kprobe_events\t\t- Create/append/remove/show the kernel dynamic events\n"
5203         "\t\t\t  Write into this file to define/undefine new trace events.\n"
5204 #endif
5205 #ifdef CONFIG_UPROBE_EVENTS
5206         "  uprobe_events\t\t- Create/append/remove/show the userspace dynamic events\n"
5207         "\t\t\t  Write into this file to define/undefine new trace events.\n"
5208 #endif
5209 #if defined(CONFIG_KPROBE_EVENTS) || defined(CONFIG_UPROBE_EVENTS)
5210         "\t  accepts: event-definitions (one definition per line)\n"
5211         "\t   Format: p[:[<group>/]<event>] <place> [<args>]\n"
5212         "\t           r[maxactive][:[<group>/]<event>] <place> [<args>]\n"
5213 #ifdef CONFIG_HIST_TRIGGERS
5214         "\t           s:[synthetic/]<event> <field> [<field>]\n"
5215 #endif
5216         "\t           -:[<group>/]<event>\n"
5217 #ifdef CONFIG_KPROBE_EVENTS
5218         "\t    place: [<module>:]<symbol>[+<offset>]|<memaddr>\n"
5219   "place (kretprobe): [<module>:]<symbol>[+<offset>]%return|<memaddr>\n"
5220 #endif
5221 #ifdef CONFIG_UPROBE_EVENTS
5222   "   place (uprobe): <path>:<offset>[%return][(ref_ctr_offset)]\n"
5223 #endif
5224         "\t     args: <name>=fetcharg[:type]\n"
5225         "\t fetcharg: %<register>, @<address>, @<symbol>[+|-<offset>],\n"
5226 #ifdef CONFIG_HAVE_FUNCTION_ARG_ACCESS_API
5227         "\t           $stack<index>, $stack, $retval, $comm, $arg<N>,\n"
5228 #else
5229         "\t           $stack<index>, $stack, $retval, $comm,\n"
5230 #endif
5231         "\t           +|-[u]<offset>(<fetcharg>), \\imm-value, \\\"imm-string\"\n"
5232         "\t     type: s8/16/32/64, u8/16/32/64, x8/16/32/64, string, symbol,\n"
5233         "\t           b<bit-width>@<bit-offset>/<container-size>, ustring,\n"
5234         "\t           <type>\\[<array-size>\\]\n"
5235 #ifdef CONFIG_HIST_TRIGGERS
5236         "\t    field: <stype> <name>;\n"
5237         "\t    stype: u8/u16/u32/u64, s8/s16/s32/s64, pid_t,\n"
5238         "\t           [unsigned] char/int/long\n"
5239 #endif
5240 #endif
5241         "  events/\t\t- Directory containing all trace event subsystems:\n"
5242         "      enable\t\t- Write 0/1 to enable/disable tracing of all events\n"
5243         "  events/<system>/\t- Directory containing all trace events for <system>:\n"
5244         "      enable\t\t- Write 0/1 to enable/disable tracing of all <system>\n"
5245         "\t\t\t  events\n"
5246         "      filter\t\t- If set, only events passing filter are traced\n"
5247         "  events/<system>/<event>/\t- Directory containing control files for\n"
5248         "\t\t\t  <event>:\n"
5249         "      enable\t\t- Write 0/1 to enable/disable tracing of <event>\n"
5250         "      filter\t\t- If set, only events passing filter are traced\n"
5251         "      trigger\t\t- If set, a command to perform when event is hit\n"
5252         "\t    Format: <trigger>[:count][if <filter>]\n"
5253         "\t   trigger: traceon, traceoff\n"
5254         "\t            enable_event:<system>:<event>\n"
5255         "\t            disable_event:<system>:<event>\n"
5256 #ifdef CONFIG_HIST_TRIGGERS
5257         "\t            enable_hist:<system>:<event>\n"
5258         "\t            disable_hist:<system>:<event>\n"
5259 #endif
5260 #ifdef CONFIG_STACKTRACE
5261         "\t\t    stacktrace\n"
5262 #endif
5263 #ifdef CONFIG_TRACER_SNAPSHOT
5264         "\t\t    snapshot\n"
5265 #endif
5266 #ifdef CONFIG_HIST_TRIGGERS
5267         "\t\t    hist (see below)\n"
5268 #endif
5269         "\t   example: echo traceoff > events/block/block_unplug/trigger\n"
5270         "\t            echo traceoff:3 > events/block/block_unplug/trigger\n"
5271         "\t            echo 'enable_event:kmem:kmalloc:3 if nr_rq > 1' > \\\n"
5272         "\t                  events/block/block_unplug/trigger\n"
5273         "\t   The first disables tracing every time block_unplug is hit.\n"
5274         "\t   The second disables tracing the first 3 times block_unplug is hit.\n"
5275         "\t   The third enables the kmalloc event the first 3 times block_unplug\n"
5276         "\t     is hit and has value of greater than 1 for the 'nr_rq' event field.\n"
5277         "\t   Like function triggers, the counter is only decremented if it\n"
5278         "\t    enabled or disabled tracing.\n"
5279         "\t   To remove a trigger without a count:\n"
5280         "\t     echo '!<trigger> > <system>/<event>/trigger\n"
5281         "\t   To remove a trigger with a count:\n"
5282         "\t     echo '!<trigger>:0 > <system>/<event>/trigger\n"
5283         "\t   Filters can be ignored when removing a trigger.\n"
5284 #ifdef CONFIG_HIST_TRIGGERS
5285         "      hist trigger\t- If set, event hits are aggregated into a hash table\n"
5286         "\t    Format: hist:keys=<field1[,field2,...]>\n"
5287         "\t            [:values=<field1[,field2,...]>]\n"
5288         "\t            [:sort=<field1[,field2,...]>]\n"
5289         "\t            [:size=#entries]\n"
5290         "\t            [:pause][:continue][:clear]\n"
5291         "\t            [:name=histname1]\n"
5292         "\t            [:<handler>.<action>]\n"
5293         "\t            [if <filter>]\n\n"
5294         "\t    When a matching event is hit, an entry is added to a hash\n"
5295         "\t    table using the key(s) and value(s) named, and the value of a\n"
5296         "\t    sum called 'hitcount' is incremented.  Keys and values\n"
5297         "\t    correspond to fields in the event's format description.  Keys\n"
5298         "\t    can be any field, or the special string 'stacktrace'.\n"
5299         "\t    Compound keys consisting of up to two fields can be specified\n"
5300         "\t    by the 'keys' keyword.  Values must correspond to numeric\n"
5301         "\t    fields.  Sort keys consisting of up to two fields can be\n"
5302         "\t    specified using the 'sort' keyword.  The sort direction can\n"
5303         "\t    be modified by appending '.descending' or '.ascending' to a\n"
5304         "\t    sort field.  The 'size' parameter can be used to specify more\n"
5305         "\t    or fewer than the default 2048 entries for the hashtable size.\n"
5306         "\t    If a hist trigger is given a name using the 'name' parameter,\n"
5307         "\t    its histogram data will be shared with other triggers of the\n"
5308         "\t    same name, and trigger hits will update this common data.\n\n"
5309         "\t    Reading the 'hist' file for the event will dump the hash\n"
5310         "\t    table in its entirety to stdout.  If there are multiple hist\n"
5311         "\t    triggers attached to an event, there will be a table for each\n"
5312         "\t    trigger in the output.  The table displayed for a named\n"
5313         "\t    trigger will be the same as any other instance having the\n"
5314         "\t    same name.  The default format used to display a given field\n"
5315         "\t    can be modified by appending any of the following modifiers\n"
5316         "\t    to the field name, as applicable:\n\n"
5317         "\t            .hex        display a number as a hex value\n"
5318         "\t            .sym        display an address as a symbol\n"
5319         "\t            .sym-offset display an address as a symbol and offset\n"
5320         "\t            .execname   display a common_pid as a program name\n"
5321         "\t            .syscall    display a syscall id as a syscall name\n"
5322         "\t            .log2       display log2 value rather than raw number\n"
5323         "\t            .usecs      display a common_timestamp in microseconds\n\n"
5324         "\t    The 'pause' parameter can be used to pause an existing hist\n"
5325         "\t    trigger or to start a hist trigger but not log any events\n"
5326         "\t    until told to do so.  'continue' can be used to start or\n"
5327         "\t    restart a paused hist trigger.\n\n"
5328         "\t    The 'clear' parameter will clear the contents of a running\n"
5329         "\t    hist trigger and leave its current paused/active state\n"
5330         "\t    unchanged.\n\n"
5331         "\t    The enable_hist and disable_hist triggers can be used to\n"
5332         "\t    have one event conditionally start and stop another event's\n"
5333         "\t    already-attached hist trigger.  The syntax is analogous to\n"
5334         "\t    the enable_event and disable_event triggers.\n\n"
5335         "\t    Hist trigger handlers and actions are executed whenever a\n"
5336         "\t    a histogram entry is added or updated.  They take the form:\n\n"
5337         "\t        <handler>.<action>\n\n"
5338         "\t    The available handlers are:\n\n"
5339         "\t        onmatch(matching.event)  - invoke on addition or update\n"
5340         "\t        onmax(var)               - invoke if var exceeds current max\n"
5341         "\t        onchange(var)            - invoke action if var changes\n\n"
5342         "\t    The available actions are:\n\n"
5343         "\t        trace(<synthetic_event>,param list)  - generate synthetic event\n"
5344         "\t        save(field,...)                      - save current event fields\n"
5345 #ifdef CONFIG_TRACER_SNAPSHOT
5346         "\t        snapshot()                           - snapshot the trace buffer\n\n"
5347 #endif
5348 #ifdef CONFIG_SYNTH_EVENTS
5349         "  events/synthetic_events\t- Create/append/remove/show synthetic events\n"
5350         "\t  Write into this file to define/undefine new synthetic events.\n"
5351         "\t     example: echo 'myevent u64 lat; char name[]' >> synthetic_events\n"
5352 #endif
5353 #endif
5354 ;
5355
5356 static ssize_t
5357 tracing_readme_read(struct file *filp, char __user *ubuf,
5358                        size_t cnt, loff_t *ppos)
5359 {
5360         return simple_read_from_buffer(ubuf, cnt, ppos,
5361                                         readme_msg, strlen(readme_msg));
5362 }
5363
5364 static const struct file_operations tracing_readme_fops = {
5365         .open           = tracing_open_generic,
5366         .read           = tracing_readme_read,
5367         .llseek         = generic_file_llseek,
5368 };
5369
5370 static void *saved_tgids_next(struct seq_file *m, void *v, loff_t *pos)
5371 {
5372         int *ptr = v;
5373
5374         if (*pos || m->count)
5375                 ptr++;
5376
5377         (*pos)++;
5378
5379         for (; ptr <= &tgid_map[PID_MAX_DEFAULT]; ptr++) {
5380                 if (trace_find_tgid(*ptr))
5381                         return ptr;
5382         }
5383
5384         return NULL;
5385 }
5386
5387 static void *saved_tgids_start(struct seq_file *m, loff_t *pos)
5388 {
5389         void *v;
5390         loff_t l = 0;
5391
5392         if (!tgid_map)
5393                 return NULL;
5394
5395         v = &tgid_map[0];
5396         while (l <= *pos) {
5397                 v = saved_tgids_next(m, v, &l);
5398                 if (!v)
5399                         return NULL;
5400         }
5401
5402         return v;
5403 }
5404
5405 static void saved_tgids_stop(struct seq_file *m, void *v)
5406 {
5407 }
5408
5409 static int saved_tgids_show(struct seq_file *m, void *v)
5410 {
5411         int pid = (int *)v - tgid_map;
5412
5413         seq_printf(m, "%d %d\n", pid, trace_find_tgid(pid));
5414         return 0;
5415 }
5416
5417 static const struct seq_operations tracing_saved_tgids_seq_ops = {
5418         .start          = saved_tgids_start,
5419         .stop           = saved_tgids_stop,
5420         .next           = saved_tgids_next,
5421         .show           = saved_tgids_show,
5422 };
5423
5424 static int tracing_saved_tgids_open(struct inode *inode, struct file *filp)
5425 {
5426         int ret;
5427
5428         ret = tracing_check_open_get_tr(NULL);
5429         if (ret)
5430                 return ret;
5431
5432         return seq_open(filp, &tracing_saved_tgids_seq_ops);
5433 }
5434
5435
5436 static const struct file_operations tracing_saved_tgids_fops = {
5437         .open           = tracing_saved_tgids_open,
5438         .read           = seq_read,
5439         .llseek         = seq_lseek,
5440         .release        = seq_release,
5441 };
5442
5443 static void *saved_cmdlines_next(struct seq_file *m, void *v, loff_t *pos)
5444 {
5445         unsigned int *ptr = v;
5446
5447         if (*pos || m->count)
5448                 ptr++;
5449
5450         (*pos)++;
5451
5452         for (; ptr < &savedcmd->map_cmdline_to_pid[savedcmd->cmdline_num];
5453              ptr++) {
5454                 if (*ptr == -1 || *ptr == NO_CMDLINE_MAP)
5455                         continue;
5456
5457                 return ptr;
5458         }
5459
5460         return NULL;
5461 }
5462
5463 static void *saved_cmdlines_start(struct seq_file *m, loff_t *pos)
5464 {
5465         void *v;
5466         loff_t l = 0;
5467
5468         preempt_disable();
5469         arch_spin_lock(&trace_cmdline_lock);
5470
5471         v = &savedcmd->map_cmdline_to_pid[0];
5472         while (l <= *pos) {
5473                 v = saved_cmdlines_next(m, v, &l);
5474                 if (!v)
5475                         return NULL;
5476         }
5477
5478         return v;
5479 }
5480
5481 static void saved_cmdlines_stop(struct seq_file *m, void *v)
5482 {
5483         arch_spin_unlock(&trace_cmdline_lock);
5484         preempt_enable();
5485 }
5486
5487 static int saved_cmdlines_show(struct seq_file *m, void *v)
5488 {
5489         char buf[TASK_COMM_LEN];
5490         unsigned int *pid = v;
5491
5492         __trace_find_cmdline(*pid, buf);
5493         seq_printf(m, "%d %s\n", *pid, buf);
5494         return 0;
5495 }
5496
5497 static const struct seq_operations tracing_saved_cmdlines_seq_ops = {
5498         .start          = saved_cmdlines_start,
5499         .next           = saved_cmdlines_next,
5500         .stop           = saved_cmdlines_stop,
5501         .show           = saved_cmdlines_show,
5502 };
5503
5504 static int tracing_saved_cmdlines_open(struct inode *inode, struct file *filp)
5505 {
5506         int ret;
5507
5508         ret = tracing_check_open_get_tr(NULL);
5509         if (ret)
5510                 return ret;
5511
5512         return seq_open(filp, &tracing_saved_cmdlines_seq_ops);
5513 }
5514
5515 static const struct file_operations tracing_saved_cmdlines_fops = {
5516         .open           = tracing_saved_cmdlines_open,
5517         .read           = seq_read,
5518         .llseek         = seq_lseek,
5519         .release        = seq_release,
5520 };
5521
5522 static ssize_t
5523 tracing_saved_cmdlines_size_read(struct file *filp, char __user *ubuf,
5524                                  size_t cnt, loff_t *ppos)
5525 {
5526         char buf[64];
5527         int r;
5528
5529         arch_spin_lock(&trace_cmdline_lock);
5530         r = scnprintf(buf, sizeof(buf), "%u\n", savedcmd->cmdline_num);
5531         arch_spin_unlock(&trace_cmdline_lock);
5532
5533         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
5534 }
5535
5536 static void free_saved_cmdlines_buffer(struct saved_cmdlines_buffer *s)
5537 {
5538         kfree(s->saved_cmdlines);
5539         kfree(s->map_cmdline_to_pid);
5540         kfree(s);
5541 }
5542
5543 static int tracing_resize_saved_cmdlines(unsigned int val)
5544 {
5545         struct saved_cmdlines_buffer *s, *savedcmd_temp;
5546
5547         s = kmalloc(sizeof(*s), GFP_KERNEL);
5548         if (!s)
5549                 return -ENOMEM;
5550
5551         if (allocate_cmdlines_buffer(val, s) < 0) {
5552                 kfree(s);
5553                 return -ENOMEM;
5554         }
5555
5556         arch_spin_lock(&trace_cmdline_lock);
5557         savedcmd_temp = savedcmd;
5558         savedcmd = s;
5559         arch_spin_unlock(&trace_cmdline_lock);
5560         free_saved_cmdlines_buffer(savedcmd_temp);
5561
5562         return 0;
5563 }
5564
5565 static ssize_t
5566 tracing_saved_cmdlines_size_write(struct file *filp, const char __user *ubuf,
5567                                   size_t cnt, loff_t *ppos)
5568 {
5569         unsigned long val;
5570         int ret;
5571
5572         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
5573         if (ret)
5574                 return ret;
5575
5576         /* must have at least 1 entry or less than PID_MAX_DEFAULT */
5577         if (!val || val > PID_MAX_DEFAULT)
5578                 return -EINVAL;
5579
5580         ret = tracing_resize_saved_cmdlines((unsigned int)val);
5581         if (ret < 0)
5582                 return ret;
5583
5584         *ppos += cnt;
5585
5586         return cnt;
5587 }
5588
5589 static const struct file_operations tracing_saved_cmdlines_size_fops = {
5590         .open           = tracing_open_generic,
5591         .read           = tracing_saved_cmdlines_size_read,
5592         .write          = tracing_saved_cmdlines_size_write,
5593 };
5594
5595 #ifdef CONFIG_TRACE_EVAL_MAP_FILE
5596 static union trace_eval_map_item *
5597 update_eval_map(union trace_eval_map_item *ptr)
5598 {
5599         if (!ptr->map.eval_string) {
5600                 if (ptr->tail.next) {
5601                         ptr = ptr->tail.next;
5602                         /* Set ptr to the next real item (skip head) */
5603                         ptr++;
5604                 } else
5605                         return NULL;
5606         }
5607         return ptr;
5608 }
5609
5610 static void *eval_map_next(struct seq_file *m, void *v, loff_t *pos)
5611 {
5612         union trace_eval_map_item *ptr = v;
5613
5614         /*
5615          * Paranoid! If ptr points to end, we don't want to increment past it.
5616          * This really should never happen.
5617          */
5618         (*pos)++;
5619         ptr = update_eval_map(ptr);
5620         if (WARN_ON_ONCE(!ptr))
5621                 return NULL;
5622
5623         ptr++;
5624         ptr = update_eval_map(ptr);
5625
5626         return ptr;
5627 }
5628
5629 static void *eval_map_start(struct seq_file *m, loff_t *pos)
5630 {
5631         union trace_eval_map_item *v;
5632         loff_t l = 0;
5633
5634         mutex_lock(&trace_eval_mutex);
5635
5636         v = trace_eval_maps;
5637         if (v)
5638                 v++;
5639
5640         while (v && l < *pos) {
5641                 v = eval_map_next(m, v, &l);
5642         }
5643
5644         return v;
5645 }
5646
5647 static void eval_map_stop(struct seq_file *m, void *v)
5648 {
5649         mutex_unlock(&trace_eval_mutex);
5650 }
5651
5652 static int eval_map_show(struct seq_file *m, void *v)
5653 {
5654         union trace_eval_map_item *ptr = v;
5655
5656         seq_printf(m, "%s %ld (%s)\n",
5657                    ptr->map.eval_string, ptr->map.eval_value,
5658                    ptr->map.system);
5659
5660         return 0;
5661 }
5662
5663 static const struct seq_operations tracing_eval_map_seq_ops = {
5664         .start          = eval_map_start,
5665         .next           = eval_map_next,
5666         .stop           = eval_map_stop,
5667         .show           = eval_map_show,
5668 };
5669
5670 static int tracing_eval_map_open(struct inode *inode, struct file *filp)
5671 {
5672         int ret;
5673
5674         ret = tracing_check_open_get_tr(NULL);
5675         if (ret)
5676                 return ret;
5677
5678         return seq_open(filp, &tracing_eval_map_seq_ops);
5679 }
5680
5681 static const struct file_operations tracing_eval_map_fops = {
5682         .open           = tracing_eval_map_open,
5683         .read           = seq_read,
5684         .llseek         = seq_lseek,
5685         .release        = seq_release,
5686 };
5687
5688 static inline union trace_eval_map_item *
5689 trace_eval_jmp_to_tail(union trace_eval_map_item *ptr)
5690 {
5691         /* Return tail of array given the head */
5692         return ptr + ptr->head.length + 1;
5693 }
5694
5695 static void
5696 trace_insert_eval_map_file(struct module *mod, struct trace_eval_map **start,
5697                            int len)
5698 {
5699         struct trace_eval_map **stop;
5700         struct trace_eval_map **map;
5701         union trace_eval_map_item *map_array;
5702         union trace_eval_map_item *ptr;
5703
5704         stop = start + len;
5705
5706         /*
5707          * The trace_eval_maps contains the map plus a head and tail item,
5708          * where the head holds the module and length of array, and the
5709          * tail holds a pointer to the next list.
5710          */
5711         map_array = kmalloc_array(len + 2, sizeof(*map_array), GFP_KERNEL);
5712         if (!map_array) {
5713                 pr_warn("Unable to allocate trace eval mapping\n");
5714                 return;
5715         }
5716
5717         mutex_lock(&trace_eval_mutex);
5718
5719         if (!trace_eval_maps)
5720                 trace_eval_maps = map_array;
5721         else {
5722                 ptr = trace_eval_maps;
5723                 for (;;) {
5724                         ptr = trace_eval_jmp_to_tail(ptr);
5725                         if (!ptr->tail.next)
5726                                 break;
5727                         ptr = ptr->tail.next;
5728
5729                 }
5730                 ptr->tail.next = map_array;
5731         }
5732         map_array->head.mod = mod;
5733         map_array->head.length = len;
5734         map_array++;
5735
5736         for (map = start; (unsigned long)map < (unsigned long)stop; map++) {
5737                 map_array->map = **map;
5738                 map_array++;
5739         }
5740         memset(map_array, 0, sizeof(*map_array));
5741
5742         mutex_unlock(&trace_eval_mutex);
5743 }
5744
5745 static void trace_create_eval_file(struct dentry *d_tracer)
5746 {
5747         trace_create_file("eval_map", 0444, d_tracer,
5748                           NULL, &tracing_eval_map_fops);
5749 }
5750
5751 #else /* CONFIG_TRACE_EVAL_MAP_FILE */
5752 static inline void trace_create_eval_file(struct dentry *d_tracer) { }
5753 static inline void trace_insert_eval_map_file(struct module *mod,
5754                               struct trace_eval_map **start, int len) { }
5755 #endif /* !CONFIG_TRACE_EVAL_MAP_FILE */
5756
5757 static void trace_insert_eval_map(struct module *mod,
5758                                   struct trace_eval_map **start, int len)
5759 {
5760         struct trace_eval_map **map;
5761
5762         if (len <= 0)
5763                 return;
5764
5765         map = start;
5766
5767         trace_event_eval_update(map, len);
5768
5769         trace_insert_eval_map_file(mod, start, len);
5770 }
5771
5772 static ssize_t
5773 tracing_set_trace_read(struct file *filp, char __user *ubuf,
5774                        size_t cnt, loff_t *ppos)
5775 {
5776         struct trace_array *tr = filp->private_data;
5777         char buf[MAX_TRACER_SIZE+2];
5778         int r;
5779
5780         mutex_lock(&trace_types_lock);
5781         r = sprintf(buf, "%s\n", tr->current_trace->name);
5782         mutex_unlock(&trace_types_lock);
5783
5784         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
5785 }
5786
5787 int tracer_init(struct tracer *t, struct trace_array *tr)
5788 {
5789         tracing_reset_online_cpus(&tr->array_buffer);
5790         return t->init(tr);
5791 }
5792
5793 static void set_buffer_entries(struct array_buffer *buf, unsigned long val)
5794 {
5795         int cpu;
5796
5797         for_each_tracing_cpu(cpu)
5798                 per_cpu_ptr(buf->data, cpu)->entries = val;
5799 }
5800
5801 #ifdef CONFIG_TRACER_MAX_TRACE
5802 /* resize @tr's buffer to the size of @size_tr's entries */
5803 static int resize_buffer_duplicate_size(struct array_buffer *trace_buf,
5804                                         struct array_buffer *size_buf, int cpu_id)
5805 {
5806         int cpu, ret = 0;
5807
5808         if (cpu_id == RING_BUFFER_ALL_CPUS) {
5809                 for_each_tracing_cpu(cpu) {
5810                         ret = ring_buffer_resize(trace_buf->buffer,
5811                                  per_cpu_ptr(size_buf->data, cpu)->entries, cpu);
5812                         if (ret < 0)
5813                                 break;
5814                         per_cpu_ptr(trace_buf->data, cpu)->entries =
5815                                 per_cpu_ptr(size_buf->data, cpu)->entries;
5816                 }
5817         } else {
5818                 ret = ring_buffer_resize(trace_buf->buffer,
5819                                  per_cpu_ptr(size_buf->data, cpu_id)->entries, cpu_id);
5820                 if (ret == 0)
5821                         per_cpu_ptr(trace_buf->data, cpu_id)->entries =
5822                                 per_cpu_ptr(size_buf->data, cpu_id)->entries;
5823         }
5824
5825         return ret;
5826 }
5827 #endif /* CONFIG_TRACER_MAX_TRACE */
5828
5829 static int __tracing_resize_ring_buffer(struct trace_array *tr,
5830                                         unsigned long size, int cpu)
5831 {
5832         int ret;
5833
5834         /*
5835          * If kernel or user changes the size of the ring buffer
5836          * we use the size that was given, and we can forget about
5837          * expanding it later.
5838          */
5839         ring_buffer_expanded = true;
5840
5841         /* May be called before buffers are initialized */
5842         if (!tr->array_buffer.buffer)
5843                 return 0;
5844
5845         ret = ring_buffer_resize(tr->array_buffer.buffer, size, cpu);
5846         if (ret < 0)
5847                 return ret;
5848
5849 #ifdef CONFIG_TRACER_MAX_TRACE
5850         if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL) ||
5851             !tr->current_trace->use_max_tr)
5852                 goto out;
5853
5854         ret = ring_buffer_resize(tr->max_buffer.buffer, size, cpu);
5855         if (ret < 0) {
5856                 int r = resize_buffer_duplicate_size(&tr->array_buffer,
5857                                                      &tr->array_buffer, cpu);
5858                 if (r < 0) {
5859                         /*
5860                          * AARGH! We are left with different
5861                          * size max buffer!!!!
5862                          * The max buffer is our "snapshot" buffer.
5863                          * When a tracer needs a snapshot (one of the
5864                          * latency tracers), it swaps the max buffer
5865                          * with the saved snap shot. We succeeded to
5866                          * update the size of the main buffer, but failed to
5867                          * update the size of the max buffer. But when we tried
5868                          * to reset the main buffer to the original size, we
5869                          * failed there too. This is very unlikely to
5870                          * happen, but if it does, warn and kill all
5871                          * tracing.
5872                          */
5873                         WARN_ON(1);
5874                         tracing_disabled = 1;
5875                 }
5876                 return ret;
5877         }
5878
5879         if (cpu == RING_BUFFER_ALL_CPUS)
5880                 set_buffer_entries(&tr->max_buffer, size);
5881         else
5882                 per_cpu_ptr(tr->max_buffer.data, cpu)->entries = size;
5883
5884  out:
5885 #endif /* CONFIG_TRACER_MAX_TRACE */
5886
5887         if (cpu == RING_BUFFER_ALL_CPUS)
5888                 set_buffer_entries(&tr->array_buffer, size);
5889         else
5890                 per_cpu_ptr(tr->array_buffer.data, cpu)->entries = size;
5891
5892         return ret;
5893 }
5894
5895 ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
5896                                   unsigned long size, int cpu_id)
5897 {
5898         int ret = size;
5899
5900         mutex_lock(&trace_types_lock);
5901
5902         if (cpu_id != RING_BUFFER_ALL_CPUS) {
5903                 /* make sure, this cpu is enabled in the mask */
5904                 if (!cpumask_test_cpu(cpu_id, tracing_buffer_mask)) {
5905                         ret = -EINVAL;
5906                         goto out;
5907                 }
5908         }
5909
5910         ret = __tracing_resize_ring_buffer(tr, size, cpu_id);
5911         if (ret < 0)
5912                 ret = -ENOMEM;
5913
5914 out:
5915         mutex_unlock(&trace_types_lock);
5916
5917         return ret;
5918 }
5919
5920
5921 /**
5922  * tracing_update_buffers - used by tracing facility to expand ring buffers
5923  *
5924  * To save on memory when the tracing is never used on a system with it
5925  * configured in. The ring buffers are set to a minimum size. But once
5926  * a user starts to use the tracing facility, then they need to grow
5927  * to their default size.
5928  *
5929  * This function is to be called when a tracer is about to be used.
5930  */
5931 int tracing_update_buffers(void)
5932 {
5933         int ret = 0;
5934
5935         mutex_lock(&trace_types_lock);
5936         if (!ring_buffer_expanded)
5937                 ret = __tracing_resize_ring_buffer(&global_trace, trace_buf_size,
5938                                                 RING_BUFFER_ALL_CPUS);
5939         mutex_unlock(&trace_types_lock);
5940
5941         return ret;
5942 }
5943
5944 struct trace_option_dentry;
5945
5946 static void
5947 create_trace_option_files(struct trace_array *tr, struct tracer *tracer);
5948
5949 /*
5950  * Used to clear out the tracer before deletion of an instance.
5951  * Must have trace_types_lock held.
5952  */
5953 static void tracing_set_nop(struct trace_array *tr)
5954 {
5955         if (tr->current_trace == &nop_trace)
5956                 return;
5957         
5958         tr->current_trace->enabled--;
5959
5960         if (tr->current_trace->reset)
5961                 tr->current_trace->reset(tr);
5962
5963         tr->current_trace = &nop_trace;
5964 }
5965
5966 static void add_tracer_options(struct trace_array *tr, struct tracer *t)
5967 {
5968         /* Only enable if the directory has been created already. */
5969         if (!tr->dir)
5970                 return;
5971
5972         create_trace_option_files(tr, t);
5973 }
5974
5975 int tracing_set_tracer(struct trace_array *tr, const char *buf)
5976 {
5977         struct tracer *t;
5978 #ifdef CONFIG_TRACER_MAX_TRACE
5979         bool had_max_tr;
5980 #endif
5981         int ret = 0;
5982
5983         mutex_lock(&trace_types_lock);
5984
5985         if (!ring_buffer_expanded) {
5986                 ret = __tracing_resize_ring_buffer(tr, trace_buf_size,
5987                                                 RING_BUFFER_ALL_CPUS);
5988                 if (ret < 0)
5989                         goto out;
5990                 ret = 0;
5991         }
5992
5993         for (t = trace_types; t; t = t->next) {
5994                 if (strcmp(t->name, buf) == 0)
5995                         break;
5996         }
5997         if (!t) {
5998                 ret = -EINVAL;
5999                 goto out;
6000         }
6001         if (t == tr->current_trace)
6002                 goto out;
6003
6004 #ifdef CONFIG_TRACER_SNAPSHOT
6005         if (t->use_max_tr) {
6006                 arch_spin_lock(&tr->max_lock);
6007                 if (tr->cond_snapshot)
6008                         ret = -EBUSY;
6009                 arch_spin_unlock(&tr->max_lock);
6010                 if (ret)
6011                         goto out;
6012         }
6013 #endif
6014         /* Some tracers won't work on kernel command line */
6015         if (system_state < SYSTEM_RUNNING && t->noboot) {
6016                 pr_warn("Tracer '%s' is not allowed on command line, ignored\n",
6017                         t->name);
6018                 goto out;
6019         }
6020
6021         /* Some tracers are only allowed for the top level buffer */
6022         if (!trace_ok_for_array(t, tr)) {
6023                 ret = -EINVAL;
6024                 goto out;
6025         }
6026
6027         /* If trace pipe files are being read, we can't change the tracer */
6028         if (tr->trace_ref) {
6029                 ret = -EBUSY;
6030                 goto out;
6031         }
6032
6033         trace_branch_disable();
6034
6035         tr->current_trace->enabled--;
6036
6037         if (tr->current_trace->reset)
6038                 tr->current_trace->reset(tr);
6039
6040         /* Current trace needs to be nop_trace before synchronize_rcu */
6041         tr->current_trace = &nop_trace;
6042
6043 #ifdef CONFIG_TRACER_MAX_TRACE
6044         had_max_tr = tr->allocated_snapshot;
6045
6046         if (had_max_tr && !t->use_max_tr) {
6047                 /*
6048                  * We need to make sure that the update_max_tr sees that
6049                  * current_trace changed to nop_trace to keep it from
6050                  * swapping the buffers after we resize it.
6051                  * The update_max_tr is called from interrupts disabled
6052                  * so a synchronized_sched() is sufficient.
6053                  */
6054                 synchronize_rcu();
6055                 free_snapshot(tr);
6056         }
6057 #endif
6058
6059 #ifdef CONFIG_TRACER_MAX_TRACE
6060         if (t->use_max_tr && !had_max_tr) {
6061                 ret = tracing_alloc_snapshot_instance(tr);
6062                 if (ret < 0)
6063                         goto out;
6064         }
6065 #endif
6066
6067         if (t->init) {
6068                 ret = tracer_init(t, tr);
6069                 if (ret)
6070                         goto out;
6071         }
6072
6073         tr->current_trace = t;
6074         tr->current_trace->enabled++;
6075         trace_branch_enable(tr);
6076  out:
6077         mutex_unlock(&trace_types_lock);
6078
6079         return ret;
6080 }
6081
6082 static ssize_t
6083 tracing_set_trace_write(struct file *filp, const char __user *ubuf,
6084                         size_t cnt, loff_t *ppos)
6085 {
6086         struct trace_array *tr = filp->private_data;
6087         char buf[MAX_TRACER_SIZE+1];
6088         int i;
6089         size_t ret;
6090         int err;
6091
6092         ret = cnt;
6093
6094         if (cnt > MAX_TRACER_SIZE)
6095                 cnt = MAX_TRACER_SIZE;
6096
6097         if (copy_from_user(buf, ubuf, cnt))
6098                 return -EFAULT;
6099
6100         buf[cnt] = 0;
6101
6102         /* strip ending whitespace. */
6103         for (i = cnt - 1; i > 0 && isspace(buf[i]); i--)
6104                 buf[i] = 0;
6105
6106         err = tracing_set_tracer(tr, buf);
6107         if (err)
6108                 return err;
6109
6110         *ppos += ret;
6111
6112         return ret;
6113 }
6114
6115 static ssize_t
6116 tracing_nsecs_read(unsigned long *ptr, char __user *ubuf,
6117                    size_t cnt, loff_t *ppos)
6118 {
6119         char buf[64];
6120         int r;
6121
6122         r = snprintf(buf, sizeof(buf), "%ld\n",
6123                      *ptr == (unsigned long)-1 ? -1 : nsecs_to_usecs(*ptr));
6124         if (r > sizeof(buf))
6125                 r = sizeof(buf);
6126         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6127 }
6128
6129 static ssize_t
6130 tracing_nsecs_write(unsigned long *ptr, const char __user *ubuf,
6131                     size_t cnt, loff_t *ppos)
6132 {
6133         unsigned long val;
6134         int ret;
6135
6136         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6137         if (ret)
6138                 return ret;
6139
6140         *ptr = val * 1000;
6141
6142         return cnt;
6143 }
6144
6145 static ssize_t
6146 tracing_thresh_read(struct file *filp, char __user *ubuf,
6147                     size_t cnt, loff_t *ppos)
6148 {
6149         return tracing_nsecs_read(&tracing_thresh, ubuf, cnt, ppos);
6150 }
6151
6152 static ssize_t
6153 tracing_thresh_write(struct file *filp, const char __user *ubuf,
6154                      size_t cnt, loff_t *ppos)
6155 {
6156         struct trace_array *tr = filp->private_data;
6157         int ret;
6158
6159         mutex_lock(&trace_types_lock);
6160         ret = tracing_nsecs_write(&tracing_thresh, ubuf, cnt, ppos);
6161         if (ret < 0)
6162                 goto out;
6163
6164         if (tr->current_trace->update_thresh) {
6165                 ret = tr->current_trace->update_thresh(tr);
6166                 if (ret < 0)
6167                         goto out;
6168         }
6169
6170         ret = cnt;
6171 out:
6172         mutex_unlock(&trace_types_lock);
6173
6174         return ret;
6175 }
6176
6177 #if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)
6178
6179 static ssize_t
6180 tracing_max_lat_read(struct file *filp, char __user *ubuf,
6181                      size_t cnt, loff_t *ppos)
6182 {
6183         return tracing_nsecs_read(filp->private_data, ubuf, cnt, ppos);
6184 }
6185
6186 static ssize_t
6187 tracing_max_lat_write(struct file *filp, const char __user *ubuf,
6188                       size_t cnt, loff_t *ppos)
6189 {
6190         return tracing_nsecs_write(filp->private_data, ubuf, cnt, ppos);
6191 }
6192
6193 #endif
6194
6195 static int tracing_open_pipe(struct inode *inode, struct file *filp)
6196 {
6197         struct trace_array *tr = inode->i_private;
6198         struct trace_iterator *iter;
6199         int ret;
6200
6201         ret = tracing_check_open_get_tr(tr);
6202         if (ret)
6203                 return ret;
6204
6205         mutex_lock(&trace_types_lock);
6206
6207         /* create a buffer to store the information to pass to userspace */
6208         iter = kzalloc(sizeof(*iter), GFP_KERNEL);
6209         if (!iter) {
6210                 ret = -ENOMEM;
6211                 __trace_array_put(tr);
6212                 goto out;
6213         }
6214
6215         trace_seq_init(&iter->seq);
6216         iter->trace = tr->current_trace;
6217
6218         if (!alloc_cpumask_var(&iter->started, GFP_KERNEL)) {
6219                 ret = -ENOMEM;
6220                 goto fail;
6221         }
6222
6223         /* trace pipe does not show start of buffer */
6224         cpumask_setall(iter->started);
6225
6226         if (tr->trace_flags & TRACE_ITER_LATENCY_FMT)
6227                 iter->iter_flags |= TRACE_FILE_LAT_FMT;
6228
6229         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
6230         if (trace_clocks[tr->clock_id].in_ns)
6231                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
6232
6233         iter->tr = tr;
6234         iter->array_buffer = &tr->array_buffer;
6235         iter->cpu_file = tracing_get_cpu(inode);
6236         mutex_init(&iter->mutex);
6237         filp->private_data = iter;
6238
6239         if (iter->trace->pipe_open)
6240                 iter->trace->pipe_open(iter);
6241
6242         nonseekable_open(inode, filp);
6243
6244         tr->trace_ref++;
6245 out:
6246         mutex_unlock(&trace_types_lock);
6247         return ret;
6248
6249 fail:
6250         kfree(iter);
6251         __trace_array_put(tr);
6252         mutex_unlock(&trace_types_lock);
6253         return ret;
6254 }
6255
6256 static int tracing_release_pipe(struct inode *inode, struct file *file)
6257 {
6258         struct trace_iterator *iter = file->private_data;
6259         struct trace_array *tr = inode->i_private;
6260
6261         mutex_lock(&trace_types_lock);
6262
6263         tr->trace_ref--;
6264
6265         if (iter->trace->pipe_close)
6266                 iter->trace->pipe_close(iter);
6267
6268         mutex_unlock(&trace_types_lock);
6269
6270         free_cpumask_var(iter->started);
6271         mutex_destroy(&iter->mutex);
6272         kfree(iter);
6273
6274         trace_array_put(tr);
6275
6276         return 0;
6277 }
6278
6279 static __poll_t
6280 trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_table)
6281 {
6282         struct trace_array *tr = iter->tr;
6283
6284         /* Iterators are static, they should be filled or empty */
6285         if (trace_buffer_iter(iter, iter->cpu_file))
6286                 return EPOLLIN | EPOLLRDNORM;
6287
6288         if (tr->trace_flags & TRACE_ITER_BLOCK)
6289                 /*
6290                  * Always select as readable when in blocking mode
6291                  */
6292                 return EPOLLIN | EPOLLRDNORM;
6293         else
6294                 return ring_buffer_poll_wait(iter->array_buffer->buffer, iter->cpu_file,
6295                                              filp, poll_table);
6296 }
6297
6298 static __poll_t
6299 tracing_poll_pipe(struct file *filp, poll_table *poll_table)
6300 {
6301         struct trace_iterator *iter = filp->private_data;
6302
6303         return trace_poll(iter, filp, poll_table);
6304 }
6305
6306 /* Must be called with iter->mutex held. */
6307 static int tracing_wait_pipe(struct file *filp)
6308 {
6309         struct trace_iterator *iter = filp->private_data;
6310         int ret;
6311
6312         while (trace_empty(iter)) {
6313
6314                 if ((filp->f_flags & O_NONBLOCK)) {
6315                         return -EAGAIN;
6316                 }
6317
6318                 /*
6319                  * We block until we read something and tracing is disabled.
6320                  * We still block if tracing is disabled, but we have never
6321                  * read anything. This allows a user to cat this file, and
6322                  * then enable tracing. But after we have read something,
6323                  * we give an EOF when tracing is again disabled.
6324                  *
6325                  * iter->pos will be 0 if we haven't read anything.
6326                  */
6327                 if (!tracer_tracing_is_on(iter->tr) && iter->pos)
6328                         break;
6329
6330                 mutex_unlock(&iter->mutex);
6331
6332                 ret = wait_on_pipe(iter, 0);
6333
6334                 mutex_lock(&iter->mutex);
6335
6336                 if (ret)
6337                         return ret;
6338         }
6339
6340         return 1;
6341 }
6342
6343 /*
6344  * Consumer reader.
6345  */
6346 static ssize_t
6347 tracing_read_pipe(struct file *filp, char __user *ubuf,
6348                   size_t cnt, loff_t *ppos)
6349 {
6350         struct trace_iterator *iter = filp->private_data;
6351         ssize_t sret;
6352
6353         /*
6354          * Avoid more than one consumer on a single file descriptor
6355          * This is just a matter of traces coherency, the ring buffer itself
6356          * is protected.
6357          */
6358         mutex_lock(&iter->mutex);
6359
6360         /* return any leftover data */
6361         sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
6362         if (sret != -EBUSY)
6363                 goto out;
6364
6365         trace_seq_init(&iter->seq);
6366
6367         if (iter->trace->read) {
6368                 sret = iter->trace->read(iter, filp, ubuf, cnt, ppos);
6369                 if (sret)
6370                         goto out;
6371         }
6372
6373 waitagain:
6374         sret = tracing_wait_pipe(filp);
6375         if (sret <= 0)
6376                 goto out;
6377
6378         /* stop when tracing is finished */
6379         if (trace_empty(iter)) {
6380                 sret = 0;
6381                 goto out;
6382         }
6383
6384         if (cnt >= PAGE_SIZE)
6385                 cnt = PAGE_SIZE - 1;
6386
6387         /* reset all but tr, trace, and overruns */
6388         memset(&iter->seq, 0,
6389                sizeof(struct trace_iterator) -
6390                offsetof(struct trace_iterator, seq));
6391         cpumask_clear(iter->started);
6392         trace_seq_init(&iter->seq);
6393         iter->pos = -1;
6394
6395         trace_event_read_lock();
6396         trace_access_lock(iter->cpu_file);
6397         while (trace_find_next_entry_inc(iter) != NULL) {
6398                 enum print_line_t ret;
6399                 int save_len = iter->seq.seq.len;
6400
6401                 ret = print_trace_line(iter);
6402                 if (ret == TRACE_TYPE_PARTIAL_LINE) {
6403                         /* don't print partial lines */
6404                         iter->seq.seq.len = save_len;
6405                         break;
6406                 }
6407                 if (ret != TRACE_TYPE_NO_CONSUME)
6408                         trace_consume(iter);
6409
6410                 if (trace_seq_used(&iter->seq) >= cnt)
6411                         break;
6412
6413                 /*
6414                  * Setting the full flag means we reached the trace_seq buffer
6415                  * size and we should leave by partial output condition above.
6416                  * One of the trace_seq_* functions is not used properly.
6417                  */
6418                 WARN_ONCE(iter->seq.full, "full flag set for trace type %d",
6419                           iter->ent->type);
6420         }
6421         trace_access_unlock(iter->cpu_file);
6422         trace_event_read_unlock();
6423
6424         /* Now copy what we have to the user */
6425         sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
6426         if (iter->seq.seq.readpos >= trace_seq_used(&iter->seq))
6427                 trace_seq_init(&iter->seq);
6428
6429         /*
6430          * If there was nothing to send to user, in spite of consuming trace
6431          * entries, go back to wait for more entries.
6432          */
6433         if (sret == -EBUSY)
6434                 goto waitagain;
6435
6436 out:
6437         mutex_unlock(&iter->mutex);
6438
6439         return sret;
6440 }
6441
6442 static void tracing_spd_release_pipe(struct splice_pipe_desc *spd,
6443                                      unsigned int idx)
6444 {
6445         __free_page(spd->pages[idx]);
6446 }
6447
6448 static size_t
6449 tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
6450 {
6451         size_t count;
6452         int save_len;
6453         int ret;
6454
6455         /* Seq buffer is page-sized, exactly what we need. */
6456         for (;;) {
6457                 save_len = iter->seq.seq.len;
6458                 ret = print_trace_line(iter);
6459
6460                 if (trace_seq_has_overflowed(&iter->seq)) {
6461                         iter->seq.seq.len = save_len;
6462                         break;
6463                 }
6464
6465                 /*
6466                  * This should not be hit, because it should only
6467                  * be set if the iter->seq overflowed. But check it
6468                  * anyway to be safe.
6469                  */
6470                 if (ret == TRACE_TYPE_PARTIAL_LINE) {
6471                         iter->seq.seq.len = save_len;
6472                         break;
6473                 }
6474
6475                 count = trace_seq_used(&iter->seq) - save_len;
6476                 if (rem < count) {
6477                         rem = 0;
6478                         iter->seq.seq.len = save_len;
6479                         break;
6480                 }
6481
6482                 if (ret != TRACE_TYPE_NO_CONSUME)
6483                         trace_consume(iter);
6484                 rem -= count;
6485                 if (!trace_find_next_entry_inc(iter))   {
6486                         rem = 0;
6487                         iter->ent = NULL;
6488                         break;
6489                 }
6490         }
6491
6492         return rem;
6493 }
6494
6495 static ssize_t tracing_splice_read_pipe(struct file *filp,
6496                                         loff_t *ppos,
6497                                         struct pipe_inode_info *pipe,
6498                                         size_t len,
6499                                         unsigned int flags)
6500 {
6501         struct page *pages_def[PIPE_DEF_BUFFERS];
6502         struct partial_page partial_def[PIPE_DEF_BUFFERS];
6503         struct trace_iterator *iter = filp->private_data;
6504         struct splice_pipe_desc spd = {
6505                 .pages          = pages_def,
6506                 .partial        = partial_def,
6507                 .nr_pages       = 0, /* This gets updated below. */
6508                 .nr_pages_max   = PIPE_DEF_BUFFERS,
6509                 .ops            = &default_pipe_buf_ops,
6510                 .spd_release    = tracing_spd_release_pipe,
6511         };
6512         ssize_t ret;
6513         size_t rem;
6514         unsigned int i;
6515
6516         if (splice_grow_spd(pipe, &spd))
6517                 return -ENOMEM;
6518
6519         mutex_lock(&iter->mutex);
6520
6521         if (iter->trace->splice_read) {
6522                 ret = iter->trace->splice_read(iter, filp,
6523                                                ppos, pipe, len, flags);
6524                 if (ret)
6525                         goto out_err;
6526         }
6527
6528         ret = tracing_wait_pipe(filp);
6529         if (ret <= 0)
6530                 goto out_err;
6531
6532         if (!iter->ent && !trace_find_next_entry_inc(iter)) {
6533                 ret = -EFAULT;
6534                 goto out_err;
6535         }
6536
6537         trace_event_read_lock();
6538         trace_access_lock(iter->cpu_file);
6539
6540         /* Fill as many pages as possible. */
6541         for (i = 0, rem = len; i < spd.nr_pages_max && rem; i++) {
6542                 spd.pages[i] = alloc_page(GFP_KERNEL);
6543                 if (!spd.pages[i])
6544                         break;
6545
6546                 rem = tracing_fill_pipe_page(rem, iter);
6547
6548                 /* Copy the data into the page, so we can start over. */
6549                 ret = trace_seq_to_buffer(&iter->seq,
6550                                           page_address(spd.pages[i]),
6551                                           trace_seq_used(&iter->seq));
6552                 if (ret < 0) {
6553                         __free_page(spd.pages[i]);
6554                         break;
6555                 }
6556                 spd.partial[i].offset = 0;
6557                 spd.partial[i].len = trace_seq_used(&iter->seq);
6558
6559                 trace_seq_init(&iter->seq);
6560         }
6561
6562         trace_access_unlock(iter->cpu_file);
6563         trace_event_read_unlock();
6564         mutex_unlock(&iter->mutex);
6565
6566         spd.nr_pages = i;
6567
6568         if (i)
6569                 ret = splice_to_pipe(pipe, &spd);
6570         else
6571                 ret = 0;
6572 out:
6573         splice_shrink_spd(&spd);
6574         return ret;
6575
6576 out_err:
6577         mutex_unlock(&iter->mutex);
6578         goto out;
6579 }
6580
6581 static ssize_t
6582 tracing_entries_read(struct file *filp, char __user *ubuf,
6583                      size_t cnt, loff_t *ppos)
6584 {
6585         struct inode *inode = file_inode(filp);
6586         struct trace_array *tr = inode->i_private;
6587         int cpu = tracing_get_cpu(inode);
6588         char buf[64];
6589         int r = 0;
6590         ssize_t ret;
6591
6592         mutex_lock(&trace_types_lock);
6593
6594         if (cpu == RING_BUFFER_ALL_CPUS) {
6595                 int cpu, buf_size_same;
6596                 unsigned long size;
6597
6598                 size = 0;
6599                 buf_size_same = 1;
6600                 /* check if all cpu sizes are same */
6601                 for_each_tracing_cpu(cpu) {
6602                         /* fill in the size from first enabled cpu */
6603                         if (size == 0)
6604                                 size = per_cpu_ptr(tr->array_buffer.data, cpu)->entries;
6605                         if (size != per_cpu_ptr(tr->array_buffer.data, cpu)->entries) {
6606                                 buf_size_same = 0;
6607                                 break;
6608                         }
6609                 }
6610
6611                 if (buf_size_same) {
6612                         if (!ring_buffer_expanded)
6613                                 r = sprintf(buf, "%lu (expanded: %lu)\n",
6614                                             size >> 10,
6615                                             trace_buf_size >> 10);
6616                         else
6617                                 r = sprintf(buf, "%lu\n", size >> 10);
6618                 } else
6619                         r = sprintf(buf, "X\n");
6620         } else
6621                 r = sprintf(buf, "%lu\n", per_cpu_ptr(tr->array_buffer.data, cpu)->entries >> 10);
6622
6623         mutex_unlock(&trace_types_lock);
6624
6625         ret = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6626         return ret;
6627 }
6628
6629 static ssize_t
6630 tracing_entries_write(struct file *filp, const char __user *ubuf,
6631                       size_t cnt, loff_t *ppos)
6632 {
6633         struct inode *inode = file_inode(filp);
6634         struct trace_array *tr = inode->i_private;
6635         unsigned long val;
6636         int ret;
6637
6638         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
6639         if (ret)
6640                 return ret;
6641
6642         /* must have at least 1 entry */
6643         if (!val)
6644                 return -EINVAL;
6645
6646         /* value is in KB */
6647         val <<= 10;
6648         ret = tracing_resize_ring_buffer(tr, val, tracing_get_cpu(inode));
6649         if (ret < 0)
6650                 return ret;
6651
6652         *ppos += cnt;
6653
6654         return cnt;
6655 }
6656
6657 static ssize_t
6658 tracing_total_entries_read(struct file *filp, char __user *ubuf,
6659                                 size_t cnt, loff_t *ppos)
6660 {
6661         struct trace_array *tr = filp->private_data;
6662         char buf[64];
6663         int r, cpu;
6664         unsigned long size = 0, expanded_size = 0;
6665
6666         mutex_lock(&trace_types_lock);
6667         for_each_tracing_cpu(cpu) {
6668                 size += per_cpu_ptr(tr->array_buffer.data, cpu)->entries >> 10;
6669                 if (!ring_buffer_expanded)
6670                         expanded_size += trace_buf_size >> 10;
6671         }
6672         if (ring_buffer_expanded)
6673                 r = sprintf(buf, "%lu\n", size);
6674         else
6675                 r = sprintf(buf, "%lu (expanded: %lu)\n", size, expanded_size);
6676         mutex_unlock(&trace_types_lock);
6677
6678         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
6679 }
6680
6681 static ssize_t
6682 tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
6683                           size_t cnt, loff_t *ppos)
6684 {
6685         /*
6686          * There is no need to read what the user has written, this function
6687          * is just to make sure that there is no error when "echo" is used
6688          */
6689
6690         *ppos += cnt;
6691
6692         return cnt;
6693 }
6694
6695 static int
6696 tracing_free_buffer_release(struct inode *inode, struct file *filp)
6697 {
6698         struct trace_array *tr = inode->i_private;
6699
6700         /* disable tracing ? */
6701         if (tr->trace_flags & TRACE_ITER_STOP_ON_FREE)
6702                 tracer_tracing_off(tr);
6703         /* resize the ring buffer to 0 */
6704         tracing_resize_ring_buffer(tr, 0, RING_BUFFER_ALL_CPUS);
6705
6706         trace_array_put(tr);
6707
6708         return 0;
6709 }
6710
6711 static ssize_t
6712 tracing_mark_write(struct file *filp, const char __user *ubuf,
6713                                         size_t cnt, loff_t *fpos)
6714 {
6715         struct trace_array *tr = filp->private_data;
6716         struct ring_buffer_event *event;
6717         enum event_trigger_type tt = ETT_NONE;
6718         struct trace_buffer *buffer;
6719         struct print_entry *entry;
6720         ssize_t written;
6721         int size;
6722         int len;
6723
6724 /* Used in tracing_mark_raw_write() as well */
6725 #define FAULTED_STR "<faulted>"
6726 #define FAULTED_SIZE (sizeof(FAULTED_STR) - 1) /* '\0' is already accounted for */
6727
6728         if (tracing_disabled)
6729                 return -EINVAL;
6730
6731         if (!(tr->trace_flags & TRACE_ITER_MARKERS))
6732                 return -EINVAL;
6733
6734         if (cnt > TRACE_BUF_SIZE)
6735                 cnt = TRACE_BUF_SIZE;
6736
6737         BUILD_BUG_ON(TRACE_BUF_SIZE >= PAGE_SIZE);
6738
6739         size = sizeof(*entry) + cnt + 2; /* add '\0' and possible '\n' */
6740
6741         /* If less than "<faulted>", then make sure we can still add that */
6742         if (cnt < FAULTED_SIZE)
6743                 size += FAULTED_SIZE - cnt;
6744
6745         buffer = tr->array_buffer.buffer;
6746         event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
6747                                             tracing_gen_ctx());
6748         if (unlikely(!event))
6749                 /* Ring buffer disabled, return as if not open for write */
6750                 return -EBADF;
6751
6752         entry = ring_buffer_event_data(event);
6753         entry->ip = _THIS_IP_;
6754
6755         len = __copy_from_user_inatomic(&entry->buf, ubuf, cnt);
6756         if (len) {
6757                 memcpy(&entry->buf, FAULTED_STR, FAULTED_SIZE);
6758                 cnt = FAULTED_SIZE;
6759                 written = -EFAULT;
6760         } else
6761                 written = cnt;
6762
6763         if (tr->trace_marker_file && !list_empty(&tr->trace_marker_file->triggers)) {
6764                 /* do not add \n before testing triggers, but add \0 */
6765                 entry->buf[cnt] = '\0';
6766                 tt = event_triggers_call(tr->trace_marker_file, entry, event);
6767         }
6768
6769         if (entry->buf[cnt - 1] != '\n') {
6770                 entry->buf[cnt] = '\n';
6771                 entry->buf[cnt + 1] = '\0';
6772         } else
6773                 entry->buf[cnt] = '\0';
6774
6775         if (static_branch_unlikely(&trace_marker_exports_enabled))
6776                 ftrace_exports(event, TRACE_EXPORT_MARKER);
6777         __buffer_unlock_commit(buffer, event);
6778
6779         if (tt)
6780                 event_triggers_post_call(tr->trace_marker_file, tt);
6781
6782         if (written > 0)
6783                 *fpos += written;
6784
6785         return written;
6786 }
6787
6788 /* Limit it for now to 3K (including tag) */
6789 #define RAW_DATA_MAX_SIZE (1024*3)
6790
6791 static ssize_t
6792 tracing_mark_raw_write(struct file *filp, const char __user *ubuf,
6793                                         size_t cnt, loff_t *fpos)
6794 {
6795         struct trace_array *tr = filp->private_data;
6796         struct ring_buffer_event *event;
6797         struct trace_buffer *buffer;
6798         struct raw_data_entry *entry;
6799         ssize_t written;
6800         int size;
6801         int len;
6802
6803 #define FAULT_SIZE_ID (FAULTED_SIZE + sizeof(int))
6804
6805         if (tracing_disabled)
6806                 return -EINVAL;
6807
6808         if (!(tr->trace_flags & TRACE_ITER_MARKERS))
6809                 return -EINVAL;
6810
6811         /* The marker must at least have a tag id */
6812         if (cnt < sizeof(unsigned int) || cnt > RAW_DATA_MAX_SIZE)
6813                 return -EINVAL;
6814
6815         if (cnt > TRACE_BUF_SIZE)
6816                 cnt = TRACE_BUF_SIZE;
6817
6818         BUILD_BUG_ON(TRACE_BUF_SIZE >= PAGE_SIZE);
6819
6820         size = sizeof(*entry) + cnt;
6821         if (cnt < FAULT_SIZE_ID)
6822                 size += FAULT_SIZE_ID - cnt;
6823
6824         buffer = tr->array_buffer.buffer;
6825         event = __trace_buffer_lock_reserve(buffer, TRACE_RAW_DATA, size,
6826                                             tracing_gen_ctx());
6827         if (!event)
6828                 /* Ring buffer disabled, return as if not open for write */
6829                 return -EBADF;
6830
6831         entry = ring_buffer_event_data(event);
6832
6833         len = __copy_from_user_inatomic(&entry->id, ubuf, cnt);
6834         if (len) {
6835                 entry->id = -1;
6836                 memcpy(&entry->buf, FAULTED_STR, FAULTED_SIZE);
6837                 written = -EFAULT;
6838         } else
6839                 written = cnt;
6840
6841         __buffer_unlock_commit(buffer, event);
6842
6843         if (written > 0)
6844                 *fpos += written;
6845
6846         return written;
6847 }
6848
6849 static int tracing_clock_show(struct seq_file *m, void *v)
6850 {
6851         struct trace_array *tr = m->private;
6852         int i;
6853
6854         for (i = 0; i < ARRAY_SIZE(trace_clocks); i++)
6855                 seq_printf(m,
6856                         "%s%s%s%s", i ? " " : "",
6857                         i == tr->clock_id ? "[" : "", trace_clocks[i].name,
6858                         i == tr->clock_id ? "]" : "");
6859         seq_putc(m, '\n');
6860
6861         return 0;
6862 }
6863
6864 int tracing_set_clock(struct trace_array *tr, const char *clockstr)
6865 {
6866         int i;
6867
6868         for (i = 0; i < ARRAY_SIZE(trace_clocks); i++) {
6869                 if (strcmp(trace_clocks[i].name, clockstr) == 0)
6870                         break;
6871         }
6872         if (i == ARRAY_SIZE(trace_clocks))
6873                 return -EINVAL;
6874
6875         mutex_lock(&trace_types_lock);
6876
6877         tr->clock_id = i;
6878
6879         ring_buffer_set_clock(tr->array_buffer.buffer, trace_clocks[i].func);
6880
6881         /*
6882          * New clock may not be consistent with the previous clock.
6883          * Reset the buffer so that it doesn't have incomparable timestamps.
6884          */
6885         tracing_reset_online_cpus(&tr->array_buffer);
6886
6887 #ifdef CONFIG_TRACER_MAX_TRACE
6888         if (tr->max_buffer.buffer)
6889                 ring_buffer_set_clock(tr->max_buffer.buffer, trace_clocks[i].func);
6890         tracing_reset_online_cpus(&tr->max_buffer);
6891 #endif
6892
6893         mutex_unlock(&trace_types_lock);
6894
6895         return 0;
6896 }
6897
6898 static ssize_t tracing_clock_write(struct file *filp, const char __user *ubuf,
6899                                    size_t cnt, loff_t *fpos)
6900 {
6901         struct seq_file *m = filp->private_data;
6902         struct trace_array *tr = m->private;
6903         char buf[64];
6904         const char *clockstr;
6905         int ret;
6906
6907         if (cnt >= sizeof(buf))
6908                 return -EINVAL;
6909
6910         if (copy_from_user(buf, ubuf, cnt))
6911                 return -EFAULT;
6912
6913         buf[cnt] = 0;
6914
6915         clockstr = strstrip(buf);
6916
6917         ret = tracing_set_clock(tr, clockstr);
6918         if (ret)
6919                 return ret;
6920
6921         *fpos += cnt;
6922
6923         return cnt;
6924 }
6925
6926 static int tracing_clock_open(struct inode *inode, struct file *file)
6927 {
6928         struct trace_array *tr = inode->i_private;
6929         int ret;
6930
6931         ret = tracing_check_open_get_tr(tr);
6932         if (ret)
6933                 return ret;
6934
6935         ret = single_open(file, tracing_clock_show, inode->i_private);
6936         if (ret < 0)
6937                 trace_array_put(tr);
6938
6939         return ret;
6940 }
6941
6942 static int tracing_time_stamp_mode_show(struct seq_file *m, void *v)
6943 {
6944         struct trace_array *tr = m->private;
6945
6946         mutex_lock(&trace_types_lock);
6947
6948         if (ring_buffer_time_stamp_abs(tr->array_buffer.buffer))
6949                 seq_puts(m, "delta [absolute]\n");
6950         else
6951                 seq_puts(m, "[delta] absolute\n");
6952
6953         mutex_unlock(&trace_types_lock);
6954
6955         return 0;
6956 }
6957
6958 static int tracing_time_stamp_mode_open(struct inode *inode, struct file *file)
6959 {
6960         struct trace_array *tr = inode->i_private;
6961         int ret;
6962
6963         ret = tracing_check_open_get_tr(tr);
6964         if (ret)
6965                 return ret;
6966
6967         ret = single_open(file, tracing_time_stamp_mode_show, inode->i_private);
6968         if (ret < 0)
6969                 trace_array_put(tr);
6970
6971         return ret;
6972 }
6973
6974 int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs)
6975 {
6976         int ret = 0;
6977
6978         mutex_lock(&trace_types_lock);
6979
6980         if (abs && tr->time_stamp_abs_ref++)
6981                 goto out;
6982
6983         if (!abs) {
6984                 if (WARN_ON_ONCE(!tr->time_stamp_abs_ref)) {
6985                         ret = -EINVAL;
6986                         goto out;
6987                 }
6988
6989                 if (--tr->time_stamp_abs_ref)
6990                         goto out;
6991         }
6992
6993         ring_buffer_set_time_stamp_abs(tr->array_buffer.buffer, abs);
6994
6995 #ifdef CONFIG_TRACER_MAX_TRACE
6996         if (tr->max_buffer.buffer)
6997                 ring_buffer_set_time_stamp_abs(tr->max_buffer.buffer, abs);
6998 #endif
6999  out:
7000         mutex_unlock(&trace_types_lock);
7001
7002         return ret;
7003 }
7004
7005 struct ftrace_buffer_info {
7006         struct trace_iterator   iter;
7007         void                    *spare;
7008         unsigned int            spare_cpu;
7009         unsigned int            read;
7010 };
7011
7012 #ifdef CONFIG_TRACER_SNAPSHOT
7013 static int tracing_snapshot_open(struct inode *inode, struct file *file)
7014 {
7015         struct trace_array *tr = inode->i_private;
7016         struct trace_iterator *iter;
7017         struct seq_file *m;
7018         int ret;
7019
7020         ret = tracing_check_open_get_tr(tr);
7021         if (ret)
7022                 return ret;
7023
7024         if (file->f_mode & FMODE_READ) {
7025                 iter = __tracing_open(inode, file, true);
7026                 if (IS_ERR(iter))
7027                         ret = PTR_ERR(iter);
7028         } else {
7029                 /* Writes still need the seq_file to hold the private data */
7030                 ret = -ENOMEM;
7031                 m = kzalloc(sizeof(*m), GFP_KERNEL);
7032                 if (!m)
7033                         goto out;
7034                 iter = kzalloc(sizeof(*iter), GFP_KERNEL);
7035                 if (!iter) {
7036                         kfree(m);
7037                         goto out;
7038                 }
7039                 ret = 0;
7040
7041                 iter->tr = tr;
7042                 iter->array_buffer = &tr->max_buffer;
7043                 iter->cpu_file = tracing_get_cpu(inode);
7044                 m->private = iter;
7045                 file->private_data = m;
7046         }
7047 out:
7048         if (ret < 0)
7049                 trace_array_put(tr);
7050
7051         return ret;
7052 }
7053
7054 static ssize_t
7055 tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
7056                        loff_t *ppos)
7057 {
7058         struct seq_file *m = filp->private_data;
7059         struct trace_iterator *iter = m->private;
7060         struct trace_array *tr = iter->tr;
7061         unsigned long val;
7062         int ret;
7063
7064         ret = tracing_update_buffers();
7065         if (ret < 0)
7066                 return ret;
7067
7068         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
7069         if (ret)
7070                 return ret;
7071
7072         mutex_lock(&trace_types_lock);
7073
7074         if (tr->current_trace->use_max_tr) {
7075                 ret = -EBUSY;
7076                 goto out;
7077         }
7078
7079         arch_spin_lock(&tr->max_lock);
7080         if (tr->cond_snapshot)
7081                 ret = -EBUSY;
7082         arch_spin_unlock(&tr->max_lock);
7083         if (ret)
7084                 goto out;
7085
7086         switch (val) {
7087         case 0:
7088                 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
7089                         ret = -EINVAL;
7090                         break;
7091                 }
7092                 if (tr->allocated_snapshot)
7093                         free_snapshot(tr);
7094                 break;
7095         case 1:
7096 /* Only allow per-cpu swap if the ring buffer supports it */
7097 #ifndef CONFIG_RING_BUFFER_ALLOW_SWAP
7098                 if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
7099                         ret = -EINVAL;
7100                         break;
7101                 }
7102 #endif
7103                 if (tr->allocated_snapshot)
7104                         ret = resize_buffer_duplicate_size(&tr->max_buffer,
7105                                         &tr->array_buffer, iter->cpu_file);
7106                 else
7107                         ret = tracing_alloc_snapshot_instance(tr);
7108                 if (ret < 0)
7109                         break;
7110                 local_irq_disable();
7111                 /* Now, we're going to swap */
7112                 if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
7113                         update_max_tr(tr, current, smp_processor_id(), NULL);
7114                 else
7115                         update_max_tr_single(tr, current, iter->cpu_file);
7116                 local_irq_enable();
7117                 break;
7118         default:
7119                 if (tr->allocated_snapshot) {
7120                         if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
7121                                 tracing_reset_online_cpus(&tr->max_buffer);
7122                         else
7123                                 tracing_reset_cpu(&tr->max_buffer, iter->cpu_file);
7124                 }
7125                 break;
7126         }
7127
7128         if (ret >= 0) {
7129                 *ppos += cnt;
7130                 ret = cnt;
7131         }
7132 out:
7133         mutex_unlock(&trace_types_lock);
7134         return ret;
7135 }
7136
7137 static int tracing_snapshot_release(struct inode *inode, struct file *file)
7138 {
7139         struct seq_file *m = file->private_data;
7140         int ret;
7141
7142         ret = tracing_release(inode, file);
7143
7144         if (file->f_mode & FMODE_READ)
7145                 return ret;
7146
7147         /* If write only, the seq_file is just a stub */
7148         if (m)
7149                 kfree(m->private);
7150         kfree(m);
7151
7152         return 0;
7153 }
7154
7155 static int tracing_buffers_open(struct inode *inode, struct file *filp);
7156 static ssize_t tracing_buffers_read(struct file *filp, char __user *ubuf,
7157                                     size_t count, loff_t *ppos);
7158 static int tracing_buffers_release(struct inode *inode, struct file *file);
7159 static ssize_t tracing_buffers_splice_read(struct file *file, loff_t *ppos,
7160                    struct pipe_inode_info *pipe, size_t len, unsigned int flags);
7161
7162 static int snapshot_raw_open(struct inode *inode, struct file *filp)
7163 {
7164         struct ftrace_buffer_info *info;
7165         int ret;
7166
7167         /* The following checks for tracefs lockdown */
7168         ret = tracing_buffers_open(inode, filp);
7169         if (ret < 0)
7170                 return ret;
7171
7172         info = filp->private_data;
7173
7174         if (info->iter.trace->use_max_tr) {
7175                 tracing_buffers_release(inode, filp);
7176                 return -EBUSY;
7177         }
7178
7179         info->iter.snapshot = true;
7180         info->iter.array_buffer = &info->iter.tr->max_buffer;
7181
7182         return ret;
7183 }
7184
7185 #endif /* CONFIG_TRACER_SNAPSHOT */
7186
7187
7188 static const struct file_operations tracing_thresh_fops = {
7189         .open           = tracing_open_generic,
7190         .read           = tracing_thresh_read,
7191         .write          = tracing_thresh_write,
7192         .llseek         = generic_file_llseek,
7193 };
7194
7195 #if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)
7196 static const struct file_operations tracing_max_lat_fops = {
7197         .open           = tracing_open_generic,
7198         .read           = tracing_max_lat_read,
7199         .write          = tracing_max_lat_write,
7200         .llseek         = generic_file_llseek,
7201 };
7202 #endif
7203
7204 static const struct file_operations set_tracer_fops = {
7205         .open           = tracing_open_generic,
7206         .read           = tracing_set_trace_read,
7207         .write          = tracing_set_trace_write,
7208         .llseek         = generic_file_llseek,
7209 };
7210
7211 static const struct file_operations tracing_pipe_fops = {
7212         .open           = tracing_open_pipe,
7213         .poll           = tracing_poll_pipe,
7214         .read           = tracing_read_pipe,
7215         .splice_read    = tracing_splice_read_pipe,
7216         .release        = tracing_release_pipe,
7217         .llseek         = no_llseek,
7218 };
7219
7220 static const struct file_operations tracing_entries_fops = {
7221         .open           = tracing_open_generic_tr,
7222         .read           = tracing_entries_read,
7223         .write          = tracing_entries_write,
7224         .llseek         = generic_file_llseek,
7225         .release        = tracing_release_generic_tr,
7226 };
7227
7228 static const struct file_operations tracing_total_entries_fops = {
7229         .open           = tracing_open_generic_tr,
7230         .read           = tracing_total_entries_read,
7231         .llseek         = generic_file_llseek,
7232         .release        = tracing_release_generic_tr,
7233 };
7234
7235 static const struct file_operations tracing_free_buffer_fops = {
7236         .open           = tracing_open_generic_tr,
7237         .write          = tracing_free_buffer_write,
7238         .release        = tracing_free_buffer_release,
7239 };
7240
7241 static const struct file_operations tracing_mark_fops = {
7242         .open           = tracing_open_generic_tr,
7243         .write          = tracing_mark_write,
7244         .llseek         = generic_file_llseek,
7245         .release        = tracing_release_generic_tr,
7246 };
7247
7248 static const struct file_operations tracing_mark_raw_fops = {
7249         .open           = tracing_open_generic_tr,
7250         .write          = tracing_mark_raw_write,
7251         .llseek         = generic_file_llseek,
7252         .release        = tracing_release_generic_tr,
7253 };
7254
7255 static const struct file_operations trace_clock_fops = {
7256         .open           = tracing_clock_open,
7257         .read           = seq_read,
7258         .llseek         = seq_lseek,
7259         .release        = tracing_single_release_tr,
7260         .write          = tracing_clock_write,
7261 };
7262
7263 static const struct file_operations trace_time_stamp_mode_fops = {
7264         .open           = tracing_time_stamp_mode_open,
7265         .read           = seq_read,
7266         .llseek         = seq_lseek,
7267         .release        = tracing_single_release_tr,
7268 };
7269
7270 #ifdef CONFIG_TRACER_SNAPSHOT
7271 static const struct file_operations snapshot_fops = {
7272         .open           = tracing_snapshot_open,
7273         .read           = seq_read,
7274         .write          = tracing_snapshot_write,
7275         .llseek         = tracing_lseek,
7276         .release        = tracing_snapshot_release,
7277 };
7278
7279 static const struct file_operations snapshot_raw_fops = {
7280         .open           = snapshot_raw_open,
7281         .read           = tracing_buffers_read,
7282         .release        = tracing_buffers_release,
7283         .splice_read    = tracing_buffers_splice_read,
7284         .llseek         = no_llseek,
7285 };
7286
7287 #endif /* CONFIG_TRACER_SNAPSHOT */
7288
7289 #define TRACING_LOG_ERRS_MAX    8
7290 #define TRACING_LOG_LOC_MAX     128
7291
7292 #define CMD_PREFIX "  Command: "
7293
7294 struct err_info {
7295         const char      **errs; /* ptr to loc-specific array of err strings */
7296         u8              type;   /* index into errs -> specific err string */
7297         u8              pos;    /* MAX_FILTER_STR_VAL = 256 */
7298         u64             ts;
7299 };
7300
7301 struct tracing_log_err {
7302         struct list_head        list;
7303         struct err_info         info;
7304         char                    loc[TRACING_LOG_LOC_MAX]; /* err location */
7305         char                    cmd[MAX_FILTER_STR_VAL]; /* what caused err */
7306 };
7307
7308 static DEFINE_MUTEX(tracing_err_log_lock);
7309
7310 static struct tracing_log_err *get_tracing_log_err(struct trace_array *tr)
7311 {
7312         struct tracing_log_err *err;
7313
7314         if (tr->n_err_log_entries < TRACING_LOG_ERRS_MAX) {
7315                 err = kzalloc(sizeof(*err), GFP_KERNEL);
7316                 if (!err)
7317                         err = ERR_PTR(-ENOMEM);
7318                 tr->n_err_log_entries++;
7319
7320                 return err;
7321         }
7322
7323         err = list_first_entry(&tr->err_log, struct tracing_log_err, list);
7324         list_del(&err->list);
7325
7326         return err;
7327 }
7328
7329 /**
7330  * err_pos - find the position of a string within a command for error careting
7331  * @cmd: The tracing command that caused the error
7332  * @str: The string to position the caret at within @cmd
7333  *
7334  * Finds the position of the first occurence of @str within @cmd.  The
7335  * return value can be passed to tracing_log_err() for caret placement
7336  * within @cmd.
7337  *
7338  * Returns the index within @cmd of the first occurence of @str or 0
7339  * if @str was not found.
7340  */
7341 unsigned int err_pos(char *cmd, const char *str)
7342 {
7343         char *found;
7344
7345         if (WARN_ON(!strlen(cmd)))
7346                 return 0;
7347
7348         found = strstr(cmd, str);
7349         if (found)
7350                 return found - cmd;
7351
7352         return 0;
7353 }
7354
7355 /**
7356  * tracing_log_err - write an error to the tracing error log
7357  * @tr: The associated trace array for the error (NULL for top level array)
7358  * @loc: A string describing where the error occurred
7359  * @cmd: The tracing command that caused the error
7360  * @errs: The array of loc-specific static error strings
7361  * @type: The index into errs[], which produces the specific static err string
7362  * @pos: The position the caret should be placed in the cmd
7363  *
7364  * Writes an error into tracing/error_log of the form:
7365  *
7366  * <loc>: error: <text>
7367  *   Command: <cmd>
7368  *              ^
7369  *
7370  * tracing/error_log is a small log file containing the last
7371  * TRACING_LOG_ERRS_MAX errors (8).  Memory for errors isn't allocated
7372  * unless there has been a tracing error, and the error log can be
7373  * cleared and have its memory freed by writing the empty string in
7374  * truncation mode to it i.e. echo > tracing/error_log.
7375  *
7376  * NOTE: the @errs array along with the @type param are used to
7377  * produce a static error string - this string is not copied and saved
7378  * when the error is logged - only a pointer to it is saved.  See
7379  * existing callers for examples of how static strings are typically
7380  * defined for use with tracing_log_err().
7381  */
7382 void tracing_log_err(struct trace_array *tr,
7383                      const char *loc, const char *cmd,
7384                      const char **errs, u8 type, u8 pos)
7385 {
7386         struct tracing_log_err *err;
7387
7388         if (!tr)
7389                 tr = &global_trace;
7390
7391         mutex_lock(&tracing_err_log_lock);
7392         err = get_tracing_log_err(tr);
7393         if (PTR_ERR(err) == -ENOMEM) {
7394                 mutex_unlock(&tracing_err_log_lock);
7395                 return;
7396         }
7397
7398         snprintf(err->loc, TRACING_LOG_LOC_MAX, "%s: error: ", loc);
7399         snprintf(err->cmd, MAX_FILTER_STR_VAL,"\n" CMD_PREFIX "%s\n", cmd);
7400
7401         err->info.errs = errs;
7402         err->info.type = type;
7403         err->info.pos = pos;
7404         err->info.ts = local_clock();
7405
7406         list_add_tail(&err->list, &tr->err_log);
7407         mutex_unlock(&tracing_err_log_lock);
7408 }
7409
7410 static void clear_tracing_err_log(struct trace_array *tr)
7411 {
7412         struct tracing_log_err *err, *next;
7413
7414         mutex_lock(&tracing_err_log_lock);
7415         list_for_each_entry_safe(err, next, &tr->err_log, list) {
7416                 list_del(&err->list);
7417                 kfree(err);
7418         }
7419
7420         tr->n_err_log_entries = 0;
7421         mutex_unlock(&tracing_err_log_lock);
7422 }
7423
7424 static void *tracing_err_log_seq_start(struct seq_file *m, loff_t *pos)
7425 {
7426         struct trace_array *tr = m->private;
7427
7428         mutex_lock(&tracing_err_log_lock);
7429
7430         return seq_list_start(&tr->err_log, *pos);
7431 }
7432
7433 static void *tracing_err_log_seq_next(struct seq_file *m, void *v, loff_t *pos)
7434 {
7435         struct trace_array *tr = m->private;
7436
7437         return seq_list_next(v, &tr->err_log, pos);
7438 }
7439
7440 static void tracing_err_log_seq_stop(struct seq_file *m, void *v)
7441 {
7442         mutex_unlock(&tracing_err_log_lock);
7443 }
7444
7445 static void tracing_err_log_show_pos(struct seq_file *m, u8 pos)
7446 {
7447         u8 i;
7448
7449         for (i = 0; i < sizeof(CMD_PREFIX) - 1; i++)
7450                 seq_putc(m, ' ');
7451         for (i = 0; i < pos; i++)
7452                 seq_putc(m, ' ');
7453         seq_puts(m, "^\n");
7454 }
7455
7456 static int tracing_err_log_seq_show(struct seq_file *m, void *v)
7457 {
7458         struct tracing_log_err *err = v;
7459
7460         if (err) {
7461                 const char *err_text = err->info.errs[err->info.type];
7462                 u64 sec = err->info.ts;
7463                 u32 nsec;
7464
7465                 nsec = do_div(sec, NSEC_PER_SEC);
7466                 seq_printf(m, "[%5llu.%06u] %s%s", sec, nsec / 1000,
7467                            err->loc, err_text);
7468                 seq_printf(m, "%s", err->cmd);
7469                 tracing_err_log_show_pos(m, err->info.pos);
7470         }
7471
7472         return 0;
7473 }
7474
7475 static const struct seq_operations tracing_err_log_seq_ops = {
7476         .start  = tracing_err_log_seq_start,
7477         .next   = tracing_err_log_seq_next,
7478         .stop   = tracing_err_log_seq_stop,
7479         .show   = tracing_err_log_seq_show
7480 };
7481
7482 static int tracing_err_log_open(struct inode *inode, struct file *file)
7483 {
7484         struct trace_array *tr = inode->i_private;
7485         int ret = 0;
7486
7487         ret = tracing_check_open_get_tr(tr);
7488         if (ret)
7489                 return ret;
7490
7491         /* If this file was opened for write, then erase contents */
7492         if ((file->f_mode & FMODE_WRITE) && (file->f_flags & O_TRUNC))
7493                 clear_tracing_err_log(tr);
7494
7495         if (file->f_mode & FMODE_READ) {
7496                 ret = seq_open(file, &tracing_err_log_seq_ops);
7497                 if (!ret) {
7498                         struct seq_file *m = file->private_data;
7499                         m->private = tr;
7500                 } else {
7501                         trace_array_put(tr);
7502                 }
7503         }
7504         return ret;
7505 }
7506
7507 static ssize_t tracing_err_log_write(struct file *file,
7508                                      const char __user *buffer,
7509                                      size_t count, loff_t *ppos)
7510 {
7511         return count;
7512 }
7513
7514 static int tracing_err_log_release(struct inode *inode, struct file *file)
7515 {
7516         struct trace_array *tr = inode->i_private;
7517
7518         trace_array_put(tr);
7519
7520         if (file->f_mode & FMODE_READ)
7521                 seq_release(inode, file);
7522
7523         return 0;
7524 }
7525
7526 static const struct file_operations tracing_err_log_fops = {
7527         .open           = tracing_err_log_open,
7528         .write          = tracing_err_log_write,
7529         .read           = seq_read,
7530         .llseek         = seq_lseek,
7531         .release        = tracing_err_log_release,
7532 };
7533
7534 static int tracing_buffers_open(struct inode *inode, struct file *filp)
7535 {
7536         struct trace_array *tr = inode->i_private;
7537         struct ftrace_buffer_info *info;
7538         int ret;
7539
7540         ret = tracing_check_open_get_tr(tr);
7541         if (ret)
7542                 return ret;
7543
7544         info = kvzalloc(sizeof(*info), GFP_KERNEL);
7545         if (!info) {
7546                 trace_array_put(tr);
7547                 return -ENOMEM;
7548         }
7549
7550         mutex_lock(&trace_types_lock);
7551
7552         info->iter.tr           = tr;
7553         info->iter.cpu_file     = tracing_get_cpu(inode);
7554         info->iter.trace        = tr->current_trace;
7555         info->iter.array_buffer = &tr->array_buffer;
7556         info->spare             = NULL;
7557         /* Force reading ring buffer for first read */
7558         info->read              = (unsigned int)-1;
7559
7560         filp->private_data = info;
7561
7562         tr->trace_ref++;
7563
7564         mutex_unlock(&trace_types_lock);
7565
7566         ret = nonseekable_open(inode, filp);
7567         if (ret < 0)
7568                 trace_array_put(tr);
7569
7570         return ret;
7571 }
7572
7573 static __poll_t
7574 tracing_buffers_poll(struct file *filp, poll_table *poll_table)
7575 {
7576         struct ftrace_buffer_info *info = filp->private_data;
7577         struct trace_iterator *iter = &info->iter;
7578
7579         return trace_poll(iter, filp, poll_table);
7580 }
7581
7582 static ssize_t
7583 tracing_buffers_read(struct file *filp, char __user *ubuf,
7584                      size_t count, loff_t *ppos)
7585 {
7586         struct ftrace_buffer_info *info = filp->private_data;
7587         struct trace_iterator *iter = &info->iter;
7588         ssize_t ret = 0;
7589         ssize_t size;
7590
7591         if (!count)
7592                 return 0;
7593
7594 #ifdef CONFIG_TRACER_MAX_TRACE
7595         if (iter->snapshot && iter->tr->current_trace->use_max_tr)
7596                 return -EBUSY;
7597 #endif
7598
7599         if (!info->spare) {
7600                 info->spare = ring_buffer_alloc_read_page(iter->array_buffer->buffer,
7601                                                           iter->cpu_file);
7602                 if (IS_ERR(info->spare)) {
7603                         ret = PTR_ERR(info->spare);
7604                         info->spare = NULL;
7605                 } else {
7606                         info->spare_cpu = iter->cpu_file;
7607                 }
7608         }
7609         if (!info->spare)
7610                 return ret;
7611
7612         /* Do we have previous read data to read? */
7613         if (info->read < PAGE_SIZE)
7614                 goto read;
7615
7616  again:
7617         trace_access_lock(iter->cpu_file);
7618         ret = ring_buffer_read_page(iter->array_buffer->buffer,
7619                                     &info->spare,
7620                                     count,
7621                                     iter->cpu_file, 0);
7622         trace_access_unlock(iter->cpu_file);
7623
7624         if (ret < 0) {
7625                 if (trace_empty(iter)) {
7626                         if ((filp->f_flags & O_NONBLOCK))
7627                                 return -EAGAIN;
7628
7629                         ret = wait_on_pipe(iter, 0);
7630                         if (ret)
7631                                 return ret;
7632
7633                         goto again;
7634                 }
7635                 return 0;
7636         }
7637
7638         info->read = 0;
7639  read:
7640         size = PAGE_SIZE - info->read;
7641         if (size > count)
7642                 size = count;
7643
7644         ret = copy_to_user(ubuf, info->spare + info->read, size);
7645         if (ret == size)
7646                 return -EFAULT;
7647
7648         size -= ret;
7649
7650         *ppos += size;
7651         info->read += size;
7652
7653         return size;
7654 }
7655
7656 static int tracing_buffers_release(struct inode *inode, struct file *file)
7657 {
7658         struct ftrace_buffer_info *info = file->private_data;
7659         struct trace_iterator *iter = &info->iter;
7660
7661         mutex_lock(&trace_types_lock);
7662
7663         iter->tr->trace_ref--;
7664
7665         __trace_array_put(iter->tr);
7666
7667         if (info->spare)
7668                 ring_buffer_free_read_page(iter->array_buffer->buffer,
7669                                            info->spare_cpu, info->spare);
7670         kvfree(info);
7671
7672         mutex_unlock(&trace_types_lock);
7673
7674         return 0;
7675 }
7676
7677 struct buffer_ref {
7678         struct trace_buffer     *buffer;
7679         void                    *page;
7680         int                     cpu;
7681         refcount_t              refcount;
7682 };
7683
7684 static void buffer_ref_release(struct buffer_ref *ref)
7685 {
7686         if (!refcount_dec_and_test(&ref->refcount))
7687                 return;
7688         ring_buffer_free_read_page(ref->buffer, ref->cpu, ref->page);
7689         kfree(ref);
7690 }
7691
7692 static void buffer_pipe_buf_release(struct pipe_inode_info *pipe,
7693                                     struct pipe_buffer *buf)
7694 {
7695         struct buffer_ref *ref = (struct buffer_ref *)buf->private;
7696
7697         buffer_ref_release(ref);
7698         buf->private = 0;
7699 }
7700
7701 static bool buffer_pipe_buf_get(struct pipe_inode_info *pipe,
7702                                 struct pipe_buffer *buf)
7703 {
7704         struct buffer_ref *ref = (struct buffer_ref *)buf->private;
7705
7706         if (refcount_read(&ref->refcount) > INT_MAX/2)
7707                 return false;
7708
7709         refcount_inc(&ref->refcount);
7710         return true;
7711 }
7712
7713 /* Pipe buffer operations for a buffer. */
7714 static const struct pipe_buf_operations buffer_pipe_buf_ops = {
7715         .release                = buffer_pipe_buf_release,
7716         .get                    = buffer_pipe_buf_get,
7717 };
7718
7719 /*
7720  * Callback from splice_to_pipe(), if we need to release some pages
7721  * at the end of the spd in case we error'ed out in filling the pipe.
7722  */
7723 static void buffer_spd_release(struct splice_pipe_desc *spd, unsigned int i)
7724 {
7725         struct buffer_ref *ref =
7726                 (struct buffer_ref *)spd->partial[i].private;
7727
7728         buffer_ref_release(ref);
7729         spd->partial[i].private = 0;
7730 }
7731
7732 static ssize_t
7733 tracing_buffers_splice_read(struct file *file, loff_t *ppos,
7734                             struct pipe_inode_info *pipe, size_t len,
7735                             unsigned int flags)
7736 {
7737         struct ftrace_buffer_info *info = file->private_data;
7738         struct trace_iterator *iter = &info->iter;
7739         struct partial_page partial_def[PIPE_DEF_BUFFERS];
7740         struct page *pages_def[PIPE_DEF_BUFFERS];
7741         struct splice_pipe_desc spd = {
7742                 .pages          = pages_def,
7743                 .partial        = partial_def,
7744                 .nr_pages_max   = PIPE_DEF_BUFFERS,
7745                 .ops            = &buffer_pipe_buf_ops,
7746                 .spd_release    = buffer_spd_release,
7747         };
7748         struct buffer_ref *ref;
7749         int entries, i;
7750         ssize_t ret = 0;
7751
7752 #ifdef CONFIG_TRACER_MAX_TRACE
7753         if (iter->snapshot && iter->tr->current_trace->use_max_tr)
7754                 return -EBUSY;
7755 #endif
7756
7757         if (*ppos & (PAGE_SIZE - 1))
7758                 return -EINVAL;
7759
7760         if (len & (PAGE_SIZE - 1)) {
7761                 if (len < PAGE_SIZE)
7762                         return -EINVAL;
7763                 len &= PAGE_MASK;
7764         }
7765
7766         if (splice_grow_spd(pipe, &spd))
7767                 return -ENOMEM;
7768
7769  again:
7770         trace_access_lock(iter->cpu_file);
7771         entries = ring_buffer_entries_cpu(iter->array_buffer->buffer, iter->cpu_file);
7772
7773         for (i = 0; i < spd.nr_pages_max && len && entries; i++, len -= PAGE_SIZE) {
7774                 struct page *page;
7775                 int r;
7776
7777                 ref = kzalloc(sizeof(*ref), GFP_KERNEL);
7778                 if (!ref) {
7779                         ret = -ENOMEM;
7780                         break;
7781                 }
7782
7783                 refcount_set(&ref->refcount, 1);
7784                 ref->buffer = iter->array_buffer->buffer;
7785                 ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file);
7786                 if (IS_ERR(ref->page)) {
7787                         ret = PTR_ERR(ref->page);
7788                         ref->page = NULL;
7789                         kfree(ref);
7790                         break;
7791                 }
7792                 ref->cpu = iter->cpu_file;
7793
7794                 r = ring_buffer_read_page(ref->buffer, &ref->page,
7795                                           len, iter->cpu_file, 1);
7796                 if (r < 0) {
7797                         ring_buffer_free_read_page(ref->buffer, ref->cpu,
7798                                                    ref->page);
7799                         kfree(ref);
7800                         break;
7801                 }
7802
7803                 page = virt_to_page(ref->page);
7804
7805                 spd.pages[i] = page;
7806                 spd.partial[i].len = PAGE_SIZE;
7807                 spd.partial[i].offset = 0;
7808                 spd.partial[i].private = (unsigned long)ref;
7809                 spd.nr_pages++;
7810                 *ppos += PAGE_SIZE;
7811
7812                 entries = ring_buffer_entries_cpu(iter->array_buffer->buffer, iter->cpu_file);
7813         }
7814
7815         trace_access_unlock(iter->cpu_file);
7816         spd.nr_pages = i;
7817
7818         /* did we read anything? */
7819         if (!spd.nr_pages) {
7820                 if (ret)
7821                         goto out;
7822
7823                 ret = -EAGAIN;
7824                 if ((file->f_flags & O_NONBLOCK) || (flags & SPLICE_F_NONBLOCK))
7825                         goto out;
7826
7827                 ret = wait_on_pipe(iter, iter->tr->buffer_percent);
7828                 if (ret)
7829                         goto out;
7830
7831                 goto again;
7832         }
7833
7834         ret = splice_to_pipe(pipe, &spd);
7835 out:
7836         splice_shrink_spd(&spd);
7837
7838         return ret;
7839 }
7840
7841 static const struct file_operations tracing_buffers_fops = {
7842         .open           = tracing_buffers_open,
7843         .read           = tracing_buffers_read,
7844         .poll           = tracing_buffers_poll,
7845         .release        = tracing_buffers_release,
7846         .splice_read    = tracing_buffers_splice_read,
7847         .llseek         = no_llseek,
7848 };
7849
7850 static ssize_t
7851 tracing_stats_read(struct file *filp, char __user *ubuf,
7852                    size_t count, loff_t *ppos)
7853 {
7854         struct inode *inode = file_inode(filp);
7855         struct trace_array *tr = inode->i_private;
7856         struct array_buffer *trace_buf = &tr->array_buffer;
7857         int cpu = tracing_get_cpu(inode);
7858         struct trace_seq *s;
7859         unsigned long cnt;
7860         unsigned long long t;
7861         unsigned long usec_rem;
7862
7863         s = kmalloc(sizeof(*s), GFP_KERNEL);
7864         if (!s)
7865                 return -ENOMEM;
7866
7867         trace_seq_init(s);
7868
7869         cnt = ring_buffer_entries_cpu(trace_buf->buffer, cpu);
7870         trace_seq_printf(s, "entries: %ld\n", cnt);
7871
7872         cnt = ring_buffer_overrun_cpu(trace_buf->buffer, cpu);
7873         trace_seq_printf(s, "overrun: %ld\n", cnt);
7874
7875         cnt = ring_buffer_commit_overrun_cpu(trace_buf->buffer, cpu);
7876         trace_seq_printf(s, "commit overrun: %ld\n", cnt);
7877
7878         cnt = ring_buffer_bytes_cpu(trace_buf->buffer, cpu);
7879         trace_seq_printf(s, "bytes: %ld\n", cnt);
7880
7881         if (trace_clocks[tr->clock_id].in_ns) {
7882                 /* local or global for trace_clock */
7883                 t = ns2usecs(ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
7884                 usec_rem = do_div(t, USEC_PER_SEC);
7885                 trace_seq_printf(s, "oldest event ts: %5llu.%06lu\n",
7886                                                                 t, usec_rem);
7887
7888                 t = ns2usecs(ring_buffer_time_stamp(trace_buf->buffer, cpu));
7889                 usec_rem = do_div(t, USEC_PER_SEC);
7890                 trace_seq_printf(s, "now ts: %5llu.%06lu\n", t, usec_rem);
7891         } else {
7892                 /* counter or tsc mode for trace_clock */
7893                 trace_seq_printf(s, "oldest event ts: %llu\n",
7894                                 ring_buffer_oldest_event_ts(trace_buf->buffer, cpu));
7895
7896                 trace_seq_printf(s, "now ts: %llu\n",
7897                                 ring_buffer_time_stamp(trace_buf->buffer, cpu));
7898         }
7899
7900         cnt = ring_buffer_dropped_events_cpu(trace_buf->buffer, cpu);
7901         trace_seq_printf(s, "dropped events: %ld\n", cnt);
7902
7903         cnt = ring_buffer_read_events_cpu(trace_buf->buffer, cpu);
7904         trace_seq_printf(s, "read events: %ld\n", cnt);
7905
7906         count = simple_read_from_buffer(ubuf, count, ppos,
7907                                         s->buffer, trace_seq_used(s));
7908
7909         kfree(s);
7910
7911         return count;
7912 }
7913
7914 static const struct file_operations tracing_stats_fops = {
7915         .open           = tracing_open_generic_tr,
7916         .read           = tracing_stats_read,
7917         .llseek         = generic_file_llseek,
7918         .release        = tracing_release_generic_tr,
7919 };
7920
7921 #ifdef CONFIG_DYNAMIC_FTRACE
7922
7923 static ssize_t
7924 tracing_read_dyn_info(struct file *filp, char __user *ubuf,
7925                   size_t cnt, loff_t *ppos)
7926 {
7927         ssize_t ret;
7928         char *buf;
7929         int r;
7930
7931         /* 256 should be plenty to hold the amount needed */
7932         buf = kmalloc(256, GFP_KERNEL);
7933         if (!buf)
7934                 return -ENOMEM;
7935
7936         r = scnprintf(buf, 256, "%ld pages:%ld groups: %ld\n",
7937                       ftrace_update_tot_cnt,
7938                       ftrace_number_of_pages,
7939                       ftrace_number_of_groups);
7940
7941         ret = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
7942         kfree(buf);
7943         return ret;
7944 }
7945
7946 static const struct file_operations tracing_dyn_info_fops = {
7947         .open           = tracing_open_generic,
7948         .read           = tracing_read_dyn_info,
7949         .llseek         = generic_file_llseek,
7950 };
7951 #endif /* CONFIG_DYNAMIC_FTRACE */
7952
7953 #if defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE)
7954 static void
7955 ftrace_snapshot(unsigned long ip, unsigned long parent_ip,
7956                 struct trace_array *tr, struct ftrace_probe_ops *ops,
7957                 void *data)
7958 {
7959         tracing_snapshot_instance(tr);
7960 }
7961
7962 static void
7963 ftrace_count_snapshot(unsigned long ip, unsigned long parent_ip,
7964                       struct trace_array *tr, struct ftrace_probe_ops *ops,
7965                       void *data)
7966 {
7967         struct ftrace_func_mapper *mapper = data;
7968         long *count = NULL;
7969
7970         if (mapper)
7971                 count = (long *)ftrace_func_mapper_find_ip(mapper, ip);
7972
7973         if (count) {
7974
7975                 if (*count <= 0)
7976                         return;
7977
7978                 (*count)--;
7979         }
7980
7981         tracing_snapshot_instance(tr);
7982 }
7983
7984 static int
7985 ftrace_snapshot_print(struct seq_file *m, unsigned long ip,
7986                       struct ftrace_probe_ops *ops, void *data)
7987 {
7988         struct ftrace_func_mapper *mapper = data;
7989         long *count = NULL;
7990
7991         seq_printf(m, "%ps:", (void *)ip);
7992
7993         seq_puts(m, "snapshot");
7994
7995         if (mapper)
7996                 count = (long *)ftrace_func_mapper_find_ip(mapper, ip);
7997
7998         if (count)
7999                 seq_printf(m, ":count=%ld\n", *count);
8000         else
8001                 seq_puts(m, ":unlimited\n");
8002
8003         return 0;
8004 }
8005
8006 static int
8007 ftrace_snapshot_init(struct ftrace_probe_ops *ops, struct trace_array *tr,
8008                      unsigned long ip, void *init_data, void **data)
8009 {
8010         struct ftrace_func_mapper *mapper = *data;
8011
8012         if (!mapper) {
8013                 mapper = allocate_ftrace_func_mapper();
8014                 if (!mapper)
8015                         return -ENOMEM;
8016                 *data = mapper;
8017         }
8018
8019         return ftrace_func_mapper_add_ip(mapper, ip, init_data);
8020 }
8021
8022 static void
8023 ftrace_snapshot_free(struct ftrace_probe_ops *ops, struct trace_array *tr,
8024                      unsigned long ip, void *data)
8025 {
8026         struct ftrace_func_mapper *mapper = data;
8027
8028         if (!ip) {
8029                 if (!mapper)
8030                         return;
8031                 free_ftrace_func_mapper(mapper, NULL);
8032                 return;
8033         }
8034
8035         ftrace_func_mapper_remove_ip(mapper, ip);
8036 }
8037
8038 static struct ftrace_probe_ops snapshot_probe_ops = {
8039         .func                   = ftrace_snapshot,
8040         .print                  = ftrace_snapshot_print,
8041 };
8042
8043 static struct ftrace_probe_ops snapshot_count_probe_ops = {
8044         .func                   = ftrace_count_snapshot,
8045         .print                  = ftrace_snapshot_print,
8046         .init                   = ftrace_snapshot_init,
8047         .free                   = ftrace_snapshot_free,
8048 };
8049
8050 static int
8051 ftrace_trace_snapshot_callback(struct trace_array *tr, struct ftrace_hash *hash,
8052                                char *glob, char *cmd, char *param, int enable)
8053 {
8054         struct ftrace_probe_ops *ops;
8055         void *count = (void *)-1;
8056         char *number;
8057         int ret;
8058
8059         if (!tr)
8060                 return -ENODEV;
8061
8062         /* hash funcs only work with set_ftrace_filter */
8063         if (!enable)
8064                 return -EINVAL;
8065
8066         ops = param ? &snapshot_count_probe_ops :  &snapshot_probe_ops;
8067
8068         if (glob[0] == '!')
8069                 return unregister_ftrace_function_probe_func(glob+1, tr, ops);
8070
8071         if (!param)
8072                 goto out_reg;
8073
8074         number = strsep(&param, ":");
8075
8076         if (!strlen(number))
8077                 goto out_reg;
8078
8079         /*
8080          * We use the callback data field (which is a pointer)
8081          * as our counter.
8082          */
8083         ret = kstrtoul(number, 0, (unsigned long *)&count);
8084         if (ret)
8085                 return ret;
8086
8087  out_reg:
8088         ret = tracing_alloc_snapshot_instance(tr);
8089         if (ret < 0)
8090                 goto out;
8091
8092         ret = register_ftrace_function_probe(glob, tr, ops, count);
8093
8094  out:
8095         return ret < 0 ? ret : 0;
8096 }
8097
8098 static struct ftrace_func_command ftrace_snapshot_cmd = {
8099         .name                   = "snapshot",
8100         .func                   = ftrace_trace_snapshot_callback,
8101 };
8102
8103 static __init int register_snapshot_cmd(void)
8104 {
8105         return register_ftrace_command(&ftrace_snapshot_cmd);
8106 }
8107 #else
8108 static inline __init int register_snapshot_cmd(void) { return 0; }
8109 #endif /* defined(CONFIG_TRACER_SNAPSHOT) && defined(CONFIG_DYNAMIC_FTRACE) */
8110
8111 static struct dentry *tracing_get_dentry(struct trace_array *tr)
8112 {
8113         if (WARN_ON(!tr->dir))
8114                 return ERR_PTR(-ENODEV);
8115
8116         /* Top directory uses NULL as the parent */
8117         if (tr->flags & TRACE_ARRAY_FL_GLOBAL)
8118                 return NULL;
8119
8120         /* All sub buffers have a descriptor */
8121         return tr->dir;
8122 }
8123
8124 static struct dentry *tracing_dentry_percpu(struct trace_array *tr, int cpu)
8125 {
8126         struct dentry *d_tracer;
8127
8128         if (tr->percpu_dir)
8129                 return tr->percpu_dir;
8130
8131         d_tracer = tracing_get_dentry(tr);
8132         if (IS_ERR(d_tracer))
8133                 return NULL;
8134
8135         tr->percpu_dir = tracefs_create_dir("per_cpu", d_tracer);
8136
8137         MEM_FAIL(!tr->percpu_dir,
8138                   "Could not create tracefs directory 'per_cpu/%d'\n", cpu);
8139
8140         return tr->percpu_dir;
8141 }
8142
8143 static struct dentry *
8144 trace_create_cpu_file(const char *name, umode_t mode, struct dentry *parent,
8145                       void *data, long cpu, const struct file_operations *fops)
8146 {
8147         struct dentry *ret = trace_create_file(name, mode, parent, data, fops);
8148
8149         if (ret) /* See tracing_get_cpu() */
8150                 d_inode(ret)->i_cdev = (void *)(cpu + 1);
8151         return ret;
8152 }
8153
8154 static void
8155 tracing_init_tracefs_percpu(struct trace_array *tr, long cpu)
8156 {
8157         struct dentry *d_percpu = tracing_dentry_percpu(tr, cpu);
8158         struct dentry *d_cpu;
8159         char cpu_dir[30]; /* 30 characters should be more than enough */
8160
8161         if (!d_percpu)
8162                 return;
8163
8164         snprintf(cpu_dir, 30, "cpu%ld", cpu);
8165         d_cpu = tracefs_create_dir(cpu_dir, d_percpu);
8166         if (!d_cpu) {
8167                 pr_warn("Could not create tracefs '%s' entry\n", cpu_dir);
8168                 return;
8169         }
8170
8171         /* per cpu trace_pipe */
8172         trace_create_cpu_file("trace_pipe", 0444, d_cpu,
8173                                 tr, cpu, &tracing_pipe_fops);
8174
8175         /* per cpu trace */
8176         trace_create_cpu_file("trace", 0644, d_cpu,
8177                                 tr, cpu, &tracing_fops);
8178
8179         trace_create_cpu_file("trace_pipe_raw", 0444, d_cpu,
8180                                 tr, cpu, &tracing_buffers_fops);
8181
8182         trace_create_cpu_file("stats", 0444, d_cpu,
8183                                 tr, cpu, &tracing_stats_fops);
8184
8185         trace_create_cpu_file("buffer_size_kb", 0444, d_cpu,
8186                                 tr, cpu, &tracing_entries_fops);
8187
8188 #ifdef CONFIG_TRACER_SNAPSHOT
8189         trace_create_cpu_file("snapshot", 0644, d_cpu,
8190                                 tr, cpu, &snapshot_fops);
8191
8192         trace_create_cpu_file("snapshot_raw", 0444, d_cpu,
8193                                 tr, cpu, &snapshot_raw_fops);
8194 #endif
8195 }
8196
8197 #ifdef CONFIG_FTRACE_SELFTEST
8198 /* Let selftest have access to static functions in this file */
8199 #include "trace_selftest.c"
8200 #endif
8201
8202 static ssize_t
8203 trace_options_read(struct file *filp, char __user *ubuf, size_t cnt,
8204                         loff_t *ppos)
8205 {
8206         struct trace_option_dentry *topt = filp->private_data;
8207         char *buf;
8208
8209         if (topt->flags->val & topt->opt->bit)
8210                 buf = "1\n";
8211         else
8212                 buf = "0\n";
8213
8214         return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
8215 }
8216
8217 static ssize_t
8218 trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
8219                          loff_t *ppos)
8220 {
8221         struct trace_option_dentry *topt = filp->private_data;
8222         unsigned long val;
8223         int ret;
8224
8225         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
8226         if (ret)
8227                 return ret;
8228
8229         if (val != 0 && val != 1)
8230                 return -EINVAL;
8231
8232         if (!!(topt->flags->val & topt->opt->bit) != val) {
8233                 mutex_lock(&trace_types_lock);
8234                 ret = __set_tracer_option(topt->tr, topt->flags,
8235                                           topt->opt, !val);
8236                 mutex_unlock(&trace_types_lock);
8237                 if (ret)
8238                         return ret;
8239         }
8240
8241         *ppos += cnt;
8242
8243         return cnt;
8244 }
8245
8246
8247 static const struct file_operations trace_options_fops = {
8248         .open = tracing_open_generic,
8249         .read = trace_options_read,
8250         .write = trace_options_write,
8251         .llseek = generic_file_llseek,
8252 };
8253
8254 /*
8255  * In order to pass in both the trace_array descriptor as well as the index
8256  * to the flag that the trace option file represents, the trace_array
8257  * has a character array of trace_flags_index[], which holds the index
8258  * of the bit for the flag it represents. index[0] == 0, index[1] == 1, etc.
8259  * The address of this character array is passed to the flag option file
8260  * read/write callbacks.
8261  *
8262  * In order to extract both the index and the trace_array descriptor,
8263  * get_tr_index() uses the following algorithm.
8264  *
8265  *   idx = *ptr;
8266  *
8267  * As the pointer itself contains the address of the index (remember
8268  * index[1] == 1).
8269  *
8270  * Then to get the trace_array descriptor, by subtracting that index
8271  * from the ptr, we get to the start of the index itself.
8272  *
8273  *   ptr - idx == &index[0]
8274  *
8275  * Then a simple container_of() from that pointer gets us to the
8276  * trace_array descriptor.
8277  */
8278 static void get_tr_index(void *data, struct trace_array **ptr,
8279                          unsigned int *pindex)
8280 {
8281         *pindex = *(unsigned char *)data;
8282
8283         *ptr = container_of(data - *pindex, struct trace_array,
8284                             trace_flags_index);
8285 }
8286
8287 static ssize_t
8288 trace_options_core_read(struct file *filp, char __user *ubuf, size_t cnt,
8289                         loff_t *ppos)
8290 {
8291         void *tr_index = filp->private_data;
8292         struct trace_array *tr;
8293         unsigned int index;
8294         char *buf;
8295
8296         get_tr_index(tr_index, &tr, &index);
8297
8298         if (tr->trace_flags & (1 << index))
8299                 buf = "1\n";
8300         else
8301                 buf = "0\n";
8302
8303         return simple_read_from_buffer(ubuf, cnt, ppos, buf, 2);
8304 }
8305
8306 static ssize_t
8307 trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
8308                          loff_t *ppos)
8309 {
8310         void *tr_index = filp->private_data;
8311         struct trace_array *tr;
8312         unsigned int index;
8313         unsigned long val;
8314         int ret;
8315
8316         get_tr_index(tr_index, &tr, &index);
8317
8318         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
8319         if (ret)
8320                 return ret;
8321
8322         if (val != 0 && val != 1)
8323                 return -EINVAL;
8324
8325         mutex_lock(&event_mutex);
8326         mutex_lock(&trace_types_lock);
8327         ret = set_tracer_flag(tr, 1 << index, val);
8328         mutex_unlock(&trace_types_lock);
8329         mutex_unlock(&event_mutex);
8330
8331         if (ret < 0)
8332                 return ret;
8333
8334         *ppos += cnt;
8335
8336         return cnt;
8337 }
8338
8339 static const struct file_operations trace_options_core_fops = {
8340         .open = tracing_open_generic,
8341         .read = trace_options_core_read,
8342         .write = trace_options_core_write,
8343         .llseek = generic_file_llseek,
8344 };
8345
8346 struct dentry *trace_create_file(const char *name,
8347                                  umode_t mode,
8348                                  struct dentry *parent,
8349                                  void *data,
8350                                  const struct file_operations *fops)
8351 {
8352         struct dentry *ret;
8353
8354         ret = tracefs_create_file(name, mode, parent, data, fops);
8355         if (!ret)
8356                 pr_warn("Could not create tracefs '%s' entry\n", name);
8357
8358         return ret;
8359 }
8360
8361
8362 static struct dentry *trace_options_init_dentry(struct trace_array *tr)
8363 {
8364         struct dentry *d_tracer;
8365
8366         if (tr->options)
8367                 return tr->options;
8368
8369         d_tracer = tracing_get_dentry(tr);
8370         if (IS_ERR(d_tracer))
8371                 return NULL;
8372
8373         tr->options = tracefs_create_dir("options", d_tracer);
8374         if (!tr->options) {
8375                 pr_warn("Could not create tracefs directory 'options'\n");
8376                 return NULL;
8377         }
8378
8379         return tr->options;
8380 }
8381
8382 static void
8383 create_trace_option_file(struct trace_array *tr,
8384                          struct trace_option_dentry *topt,
8385                          struct tracer_flags *flags,
8386                          struct tracer_opt *opt)
8387 {
8388         struct dentry *t_options;
8389
8390         t_options = trace_options_init_dentry(tr);
8391         if (!t_options)
8392                 return;
8393
8394         topt->flags = flags;
8395         topt->opt = opt;
8396         topt->tr = tr;
8397
8398         topt->entry = trace_create_file(opt->name, 0644, t_options, topt,
8399                                     &trace_options_fops);
8400
8401 }
8402
8403 static void
8404 create_trace_option_files(struct trace_array *tr, struct tracer *tracer)
8405 {
8406         struct trace_option_dentry *topts;
8407         struct trace_options *tr_topts;
8408         struct tracer_flags *flags;
8409         struct tracer_opt *opts;
8410         int cnt;
8411         int i;
8412
8413         if (!tracer)
8414                 return;
8415
8416         flags = tracer->flags;
8417
8418         if (!flags || !flags->opts)
8419                 return;
8420
8421         /*
8422          * If this is an instance, only create flags for tracers
8423          * the instance may have.
8424          */
8425         if (!trace_ok_for_array(tracer, tr))
8426                 return;
8427
8428         for (i = 0; i < tr->nr_topts; i++) {
8429                 /* Make sure there's no duplicate flags. */
8430                 if (WARN_ON_ONCE(tr->topts[i].tracer->flags == tracer->flags))
8431                         return;
8432         }
8433
8434         opts = flags->opts;
8435
8436         for (cnt = 0; opts[cnt].name; cnt++)
8437                 ;
8438
8439         topts = kcalloc(cnt + 1, sizeof(*topts), GFP_KERNEL);
8440         if (!topts)
8441                 return;
8442
8443         tr_topts = krealloc(tr->topts, sizeof(*tr->topts) * (tr->nr_topts + 1),
8444                             GFP_KERNEL);
8445         if (!tr_topts) {
8446                 kfree(topts);
8447                 return;
8448         }
8449
8450         tr->topts = tr_topts;
8451         tr->topts[tr->nr_topts].tracer = tracer;
8452         tr->topts[tr->nr_topts].topts = topts;
8453         tr->nr_topts++;
8454
8455         for (cnt = 0; opts[cnt].name; cnt++) {
8456                 create_trace_option_file(tr, &topts[cnt], flags,
8457                                          &opts[cnt]);
8458                 MEM_FAIL(topts[cnt].entry == NULL,
8459                           "Failed to create trace option: %s",
8460                           opts[cnt].name);
8461         }
8462 }
8463
8464 static struct dentry *
8465 create_trace_option_core_file(struct trace_array *tr,
8466                               const char *option, long index)
8467 {
8468         struct dentry *t_options;
8469
8470         t_options = trace_options_init_dentry(tr);
8471         if (!t_options)
8472                 return NULL;
8473
8474         return trace_create_file(option, 0644, t_options,
8475                                  (void *)&tr->trace_flags_index[index],
8476                                  &trace_options_core_fops);
8477 }
8478
8479 static void create_trace_options_dir(struct trace_array *tr)
8480 {
8481         struct dentry *t_options;
8482         bool top_level = tr == &global_trace;
8483         int i;
8484
8485         t_options = trace_options_init_dentry(tr);
8486         if (!t_options)
8487                 return;
8488
8489         for (i = 0; trace_options[i]; i++) {
8490                 if (top_level ||
8491                     !((1 << i) & TOP_LEVEL_TRACE_FLAGS))
8492                         create_trace_option_core_file(tr, trace_options[i], i);
8493         }
8494 }
8495
8496 static ssize_t
8497 rb_simple_read(struct file *filp, char __user *ubuf,
8498                size_t cnt, loff_t *ppos)
8499 {
8500         struct trace_array *tr = filp->private_data;
8501         char buf[64];
8502         int r;
8503
8504         r = tracer_tracing_is_on(tr);
8505         r = sprintf(buf, "%d\n", r);
8506
8507         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
8508 }
8509
8510 static ssize_t
8511 rb_simple_write(struct file *filp, const char __user *ubuf,
8512                 size_t cnt, loff_t *ppos)
8513 {
8514         struct trace_array *tr = filp->private_data;
8515         struct trace_buffer *buffer = tr->array_buffer.buffer;
8516         unsigned long val;
8517         int ret;
8518
8519         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
8520         if (ret)
8521                 return ret;
8522
8523         if (buffer) {
8524                 mutex_lock(&trace_types_lock);
8525                 if (!!val == tracer_tracing_is_on(tr)) {
8526                         val = 0; /* do nothing */
8527                 } else if (val) {
8528                         tracer_tracing_on(tr);
8529                         if (tr->current_trace->start)
8530                                 tr->current_trace->start(tr);
8531                 } else {
8532                         tracer_tracing_off(tr);
8533                         if (tr->current_trace->stop)
8534                                 tr->current_trace->stop(tr);
8535                 }
8536                 mutex_unlock(&trace_types_lock);
8537         }
8538
8539         (*ppos)++;
8540
8541         return cnt;
8542 }
8543
8544 static const struct file_operations rb_simple_fops = {
8545         .open           = tracing_open_generic_tr,
8546         .read           = rb_simple_read,
8547         .write          = rb_simple_write,
8548         .release        = tracing_release_generic_tr,
8549         .llseek         = default_llseek,
8550 };
8551
8552 static ssize_t
8553 buffer_percent_read(struct file *filp, char __user *ubuf,
8554                     size_t cnt, loff_t *ppos)
8555 {
8556         struct trace_array *tr = filp->private_data;
8557         char buf[64];
8558         int r;
8559
8560         r = tr->buffer_percent;
8561         r = sprintf(buf, "%d\n", r);
8562
8563         return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
8564 }
8565
8566 static ssize_t
8567 buffer_percent_write(struct file *filp, const char __user *ubuf,
8568                      size_t cnt, loff_t *ppos)
8569 {
8570         struct trace_array *tr = filp->private_data;
8571         unsigned long val;
8572         int ret;
8573
8574         ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
8575         if (ret)
8576                 return ret;
8577
8578         if (val > 100)
8579                 return -EINVAL;
8580
8581         if (!val)
8582                 val = 1;
8583
8584         tr->buffer_percent = val;
8585
8586         (*ppos)++;
8587
8588         return cnt;
8589 }
8590
8591 static const struct file_operations buffer_percent_fops = {
8592         .open           = tracing_open_generic_tr,
8593         .read           = buffer_percent_read,
8594         .write          = buffer_percent_write,
8595         .release        = tracing_release_generic_tr,
8596         .llseek         = default_llseek,
8597 };
8598
8599 static struct dentry *trace_instance_dir;
8600
8601 static void
8602 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer);
8603
8604 static int
8605 allocate_trace_buffer(struct trace_array *tr, struct array_buffer *buf, int size)
8606 {
8607         enum ring_buffer_flags rb_flags;
8608
8609         rb_flags = tr->trace_flags & TRACE_ITER_OVERWRITE ? RB_FL_OVERWRITE : 0;
8610
8611         buf->tr = tr;
8612
8613         buf->buffer = ring_buffer_alloc(size, rb_flags);
8614         if (!buf->buffer)
8615                 return -ENOMEM;
8616
8617         buf->data = alloc_percpu(struct trace_array_cpu);
8618         if (!buf->data) {
8619                 ring_buffer_free(buf->buffer);
8620                 buf->buffer = NULL;
8621                 return -ENOMEM;
8622         }
8623
8624         /* Allocate the first page for all buffers */
8625         set_buffer_entries(&tr->array_buffer,
8626                            ring_buffer_size(tr->array_buffer.buffer, 0));
8627
8628         return 0;
8629 }
8630
8631 static int allocate_trace_buffers(struct trace_array *tr, int size)
8632 {
8633         int ret;
8634
8635         ret = allocate_trace_buffer(tr, &tr->array_buffer, size);
8636         if (ret)
8637                 return ret;
8638
8639 #ifdef CONFIG_TRACER_MAX_TRACE
8640         ret = allocate_trace_buffer(tr, &tr->max_buffer,
8641                                     allocate_snapshot ? size : 1);
8642         if (MEM_FAIL(ret, "Failed to allocate trace buffer\n")) {
8643                 ring_buffer_free(tr->array_buffer.buffer);
8644                 tr->array_buffer.buffer = NULL;
8645                 free_percpu(tr->array_buffer.data);
8646                 tr->array_buffer.data = NULL;
8647                 return -ENOMEM;
8648         }
8649         tr->allocated_snapshot = allocate_snapshot;
8650
8651         /*
8652          * Only the top level trace array gets its snapshot allocated
8653          * from the kernel command line.
8654          */
8655         allocate_snapshot = false;
8656 #endif
8657
8658         return 0;
8659 }
8660
8661 static void free_trace_buffer(struct array_buffer *buf)
8662 {
8663         if (buf->buffer) {
8664                 ring_buffer_free(buf->buffer);
8665                 buf->buffer = NULL;
8666                 free_percpu(buf->data);
8667                 buf->data = NULL;
8668         }
8669 }
8670
8671 static void free_trace_buffers(struct trace_array *tr)
8672 {
8673         if (!tr)
8674                 return;
8675
8676         free_trace_buffer(&tr->array_buffer);
8677
8678 #ifdef CONFIG_TRACER_MAX_TRACE
8679         free_trace_buffer(&tr->max_buffer);
8680 #endif
8681 }
8682
8683 static void init_trace_flags_index(struct trace_array *tr)
8684 {
8685         int i;
8686
8687         /* Used by the trace options files */
8688         for (i = 0; i < TRACE_FLAGS_MAX_SIZE; i++)
8689                 tr->trace_flags_index[i] = i;
8690 }
8691
8692 static void __update_tracer_options(struct trace_array *tr)
8693 {
8694         struct tracer *t;
8695
8696         for (t = trace_types; t; t = t->next)
8697                 add_tracer_options(tr, t);
8698 }
8699
8700 static void update_tracer_options(struct trace_array *tr)
8701 {
8702         mutex_lock(&trace_types_lock);
8703         __update_tracer_options(tr);
8704         mutex_unlock(&trace_types_lock);
8705 }
8706
8707 /* Must have trace_types_lock held */
8708 struct trace_array *trace_array_find(const char *instance)
8709 {
8710         struct trace_array *tr, *found = NULL;
8711
8712         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
8713                 if (tr->name && strcmp(tr->name, instance) == 0) {
8714                         found = tr;
8715                         break;
8716                 }
8717         }
8718
8719         return found;
8720 }
8721
8722 struct trace_array *trace_array_find_get(const char *instance)
8723 {
8724         struct trace_array *tr;
8725
8726         mutex_lock(&trace_types_lock);
8727         tr = trace_array_find(instance);
8728         if (tr)
8729                 tr->ref++;
8730         mutex_unlock(&trace_types_lock);
8731
8732         return tr;
8733 }
8734
8735 static int trace_array_create_dir(struct trace_array *tr)
8736 {
8737         int ret;
8738
8739         tr->dir = tracefs_create_dir(tr->name, trace_instance_dir);
8740         if (!tr->dir)
8741                 return -EINVAL;
8742
8743         ret = event_trace_add_tracer(tr->dir, tr);
8744         if (ret)
8745                 tracefs_remove(tr->dir);
8746
8747         init_tracer_tracefs(tr, tr->dir);
8748         __update_tracer_options(tr);
8749
8750         return ret;
8751 }
8752
8753 static struct trace_array *trace_array_create(const char *name)
8754 {
8755         struct trace_array *tr;
8756         int ret;
8757
8758         ret = -ENOMEM;
8759         tr = kzalloc(sizeof(*tr), GFP_KERNEL);
8760         if (!tr)
8761                 return ERR_PTR(ret);
8762
8763         tr->name = kstrdup(name, GFP_KERNEL);
8764         if (!tr->name)
8765                 goto out_free_tr;
8766
8767         if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL))
8768                 goto out_free_tr;
8769
8770         tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS;
8771
8772         cpumask_copy(tr->tracing_cpumask, cpu_all_mask);
8773
8774         raw_spin_lock_init(&tr->start_lock);
8775
8776         tr->max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
8777
8778         tr->current_trace = &nop_trace;
8779
8780         INIT_LIST_HEAD(&tr->systems);
8781         INIT_LIST_HEAD(&tr->events);
8782         INIT_LIST_HEAD(&tr->hist_vars);
8783         INIT_LIST_HEAD(&tr->err_log);
8784
8785         if (allocate_trace_buffers(tr, trace_buf_size) < 0)
8786                 goto out_free_tr;
8787
8788         if (ftrace_allocate_ftrace_ops(tr) < 0)
8789                 goto out_free_tr;
8790
8791         ftrace_init_trace_array(tr);
8792
8793         init_trace_flags_index(tr);
8794
8795         if (trace_instance_dir) {
8796                 ret = trace_array_create_dir(tr);
8797                 if (ret)
8798                         goto out_free_tr;
8799         } else
8800                 __trace_early_add_events(tr);
8801
8802         list_add(&tr->list, &ftrace_trace_arrays);
8803
8804         tr->ref++;
8805
8806         return tr;
8807
8808  out_free_tr:
8809         ftrace_free_ftrace_ops(tr);
8810         free_trace_buffers(tr);
8811         free_cpumask_var(tr->tracing_cpumask);
8812         kfree(tr->name);
8813         kfree(tr);
8814
8815         return ERR_PTR(ret);
8816 }
8817
8818 static int instance_mkdir(const char *name)
8819 {
8820         struct trace_array *tr;
8821         int ret;
8822
8823         mutex_lock(&event_mutex);
8824         mutex_lock(&trace_types_lock);
8825
8826         ret = -EEXIST;
8827         if (trace_array_find(name))
8828                 goto out_unlock;
8829
8830         tr = trace_array_create(name);
8831
8832         ret = PTR_ERR_OR_ZERO(tr);
8833
8834 out_unlock:
8835         mutex_unlock(&trace_types_lock);
8836         mutex_unlock(&event_mutex);
8837         return ret;
8838 }
8839
8840 /**
8841  * trace_array_get_by_name - Create/Lookup a trace array, given its name.
8842  * @name: The name of the trace array to be looked up/created.
8843  *
8844  * Returns pointer to trace array with given name.
8845  * NULL, if it cannot be created.
8846  *
8847  * NOTE: This function increments the reference counter associated with the
8848  * trace array returned. This makes sure it cannot be freed while in use.
8849  * Use trace_array_put() once the trace array is no longer needed.
8850  * If the trace_array is to be freed, trace_array_destroy() needs to
8851  * be called after the trace_array_put(), or simply let user space delete
8852  * it from the tracefs instances directory. But until the
8853  * trace_array_put() is called, user space can not delete it.
8854  *
8855  */
8856 struct trace_array *trace_array_get_by_name(const char *name)
8857 {
8858         struct trace_array *tr;
8859
8860         mutex_lock(&event_mutex);
8861         mutex_lock(&trace_types_lock);
8862
8863         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
8864                 if (tr->name && strcmp(tr->name, name) == 0)
8865                         goto out_unlock;
8866         }
8867
8868         tr = trace_array_create(name);
8869
8870         if (IS_ERR(tr))
8871                 tr = NULL;
8872 out_unlock:
8873         if (tr)
8874                 tr->ref++;
8875
8876         mutex_unlock(&trace_types_lock);
8877         mutex_unlock(&event_mutex);
8878         return tr;
8879 }
8880 EXPORT_SYMBOL_GPL(trace_array_get_by_name);
8881
8882 static int __remove_instance(struct trace_array *tr)
8883 {
8884         int i;
8885
8886         /* Reference counter for a newly created trace array = 1. */
8887         if (tr->ref > 1 || (tr->current_trace && tr->trace_ref))
8888                 return -EBUSY;
8889
8890         list_del(&tr->list);
8891
8892         /* Disable all the flags that were enabled coming in */
8893         for (i = 0; i < TRACE_FLAGS_MAX_SIZE; i++) {
8894                 if ((1 << i) & ZEROED_TRACE_FLAGS)
8895                         set_tracer_flag(tr, 1 << i, 0);
8896         }
8897
8898         tracing_set_nop(tr);
8899         clear_ftrace_function_probes(tr);
8900         event_trace_del_tracer(tr);
8901         ftrace_clear_pids(tr);
8902         ftrace_destroy_function_files(tr);
8903         tracefs_remove(tr->dir);
8904         free_trace_buffers(tr);
8905
8906         for (i = 0; i < tr->nr_topts; i++) {
8907                 kfree(tr->topts[i].topts);
8908         }
8909         kfree(tr->topts);
8910
8911         free_cpumask_var(tr->tracing_cpumask);
8912         kfree(tr->name);
8913         kfree(tr);
8914
8915         return 0;
8916 }
8917
8918 int trace_array_destroy(struct trace_array *this_tr)
8919 {
8920         struct trace_array *tr;
8921         int ret;
8922
8923         if (!this_tr)
8924                 return -EINVAL;
8925
8926         mutex_lock(&event_mutex);
8927         mutex_lock(&trace_types_lock);
8928
8929         ret = -ENODEV;
8930
8931         /* Making sure trace array exists before destroying it. */
8932         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
8933                 if (tr == this_tr) {
8934                         ret = __remove_instance(tr);
8935                         break;
8936                 }
8937         }
8938
8939         mutex_unlock(&trace_types_lock);
8940         mutex_unlock(&event_mutex);
8941
8942         return ret;
8943 }
8944 EXPORT_SYMBOL_GPL(trace_array_destroy);
8945
8946 static int instance_rmdir(const char *name)
8947 {
8948         struct trace_array *tr;
8949         int ret;
8950
8951         mutex_lock(&event_mutex);
8952         mutex_lock(&trace_types_lock);
8953
8954         ret = -ENODEV;
8955         tr = trace_array_find(name);
8956         if (tr)
8957                 ret = __remove_instance(tr);
8958
8959         mutex_unlock(&trace_types_lock);
8960         mutex_unlock(&event_mutex);
8961
8962         return ret;
8963 }
8964
8965 static __init void create_trace_instances(struct dentry *d_tracer)
8966 {
8967         struct trace_array *tr;
8968
8969         trace_instance_dir = tracefs_create_instance_dir("instances", d_tracer,
8970                                                          instance_mkdir,
8971                                                          instance_rmdir);
8972         if (MEM_FAIL(!trace_instance_dir, "Failed to create instances directory\n"))
8973                 return;
8974
8975         mutex_lock(&event_mutex);
8976         mutex_lock(&trace_types_lock);
8977
8978         list_for_each_entry(tr, &ftrace_trace_arrays, list) {
8979                 if (!tr->name)
8980                         continue;
8981                 if (MEM_FAIL(trace_array_create_dir(tr) < 0,
8982                              "Failed to create instance directory\n"))
8983                         break;
8984         }
8985
8986         mutex_unlock(&trace_types_lock);
8987         mutex_unlock(&event_mutex);
8988 }
8989
8990 static void
8991 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer)
8992 {
8993         struct trace_event_file *file;
8994         int cpu;
8995
8996         trace_create_file("available_tracers", 0444, d_tracer,
8997                         tr, &show_traces_fops);
8998
8999         trace_create_file("current_tracer", 0644, d_tracer,
9000                         tr, &set_tracer_fops);
9001
9002         trace_create_file("tracing_cpumask", 0644, d_tracer,
9003                           tr, &tracing_cpumask_fops);
9004
9005         trace_create_file("trace_options", 0644, d_tracer,
9006                           tr, &tracing_iter_fops);
9007
9008         trace_create_file("trace", 0644, d_tracer,
9009                           tr, &tracing_fops);
9010
9011         trace_create_file("trace_pipe", 0444, d_tracer,
9012                           tr, &tracing_pipe_fops);
9013
9014         trace_create_file("buffer_size_kb", 0644, d_tracer,
9015                           tr, &tracing_entries_fops);
9016
9017         trace_create_file("buffer_total_size_kb", 0444, d_tracer,
9018                           tr, &tracing_total_entries_fops);
9019
9020         trace_create_file("free_buffer", 0200, d_tracer,
9021                           tr, &tracing_free_buffer_fops);
9022
9023         trace_create_file("trace_marker", 0220, d_tracer,
9024                           tr, &tracing_mark_fops);
9025
9026         file = __find_event_file(tr, "ftrace", "print");
9027         if (file && file->dir)
9028                 trace_create_file("trigger", 0644, file->dir, file,
9029                                   &event_trigger_fops);
9030         tr->trace_marker_file = file;
9031
9032         trace_create_file("trace_marker_raw", 0220, d_tracer,
9033                           tr, &tracing_mark_raw_fops);
9034
9035         trace_create_file("trace_clock", 0644, d_tracer, tr,
9036                           &trace_clock_fops);
9037
9038         trace_create_file("tracing_on", 0644, d_tracer,
9039                           tr, &rb_simple_fops);
9040
9041         trace_create_file("timestamp_mode", 0444, d_tracer, tr,
9042                           &trace_time_stamp_mode_fops);
9043
9044         tr->buffer_percent = 50;
9045
9046         trace_create_file("buffer_percent", 0444, d_tracer,
9047                         tr, &buffer_percent_fops);
9048
9049         create_trace_options_dir(tr);
9050
9051 #if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)
9052         trace_create_maxlat_file(tr, d_tracer);
9053 #endif
9054
9055         if (ftrace_create_function_files(tr, d_tracer))
9056                 MEM_FAIL(1, "Could not allocate function filter files");
9057
9058 #ifdef CONFIG_TRACER_SNAPSHOT
9059         trace_create_file("snapshot", 0644, d_tracer,
9060                           tr, &snapshot_fops);
9061 #endif
9062
9063         trace_create_file("error_log", 0644, d_tracer,
9064                           tr, &tracing_err_log_fops);
9065
9066         for_each_tracing_cpu(cpu)
9067                 tracing_init_tracefs_percpu(tr, cpu);
9068
9069         ftrace_init_tracefs(tr, d_tracer);
9070 }
9071
9072 static struct vfsmount *trace_automount(struct dentry *mntpt, void *ingore)
9073 {
9074         struct vfsmount *mnt;
9075         struct file_system_type *type;
9076
9077         /*
9078          * To maintain backward compatibility for tools that mount
9079          * debugfs to get to the tracing facility, tracefs is automatically
9080          * mounted to the debugfs/tracing directory.
9081          */
9082         type = get_fs_type("tracefs");
9083         if (!type)
9084                 return NULL;
9085         mnt = vfs_submount(mntpt, type, "tracefs", NULL);
9086         put_filesystem(type);
9087         if (IS_ERR(mnt))
9088                 return NULL;
9089         mntget(mnt);
9090
9091         return mnt;
9092 }
9093
9094 /**
9095  * tracing_init_dentry - initialize top level trace array
9096  *
9097  * This is called when creating files or directories in the tracing
9098  * directory. It is called via fs_initcall() by any of the boot up code
9099  * and expects to return the dentry of the top level tracing directory.
9100  */
9101 int tracing_init_dentry(void)
9102 {
9103         struct trace_array *tr = &global_trace;
9104
9105         if (security_locked_down(LOCKDOWN_TRACEFS)) {
9106                 pr_warn("Tracing disabled due to lockdown\n");
9107                 return -EPERM;
9108         }
9109
9110         /* The top level trace array uses  NULL as parent */
9111         if (tr->dir)
9112                 return 0;
9113
9114         if (WARN_ON(!tracefs_initialized()))
9115                 return -ENODEV;
9116
9117         /*
9118          * As there may still be users that expect the tracing
9119          * files to exist in debugfs/tracing, we must automount
9120          * the tracefs file system there, so older tools still
9121          * work with the newer kerenl.
9122          */
9123         tr->dir = debugfs_create_automount("tracing", NULL,
9124                                            trace_automount, NULL);
9125
9126         return 0;
9127 }
9128
9129 extern struct trace_eval_map *__start_ftrace_eval_maps[];
9130 extern struct trace_eval_map *__stop_ftrace_eval_maps[];
9131
9132 static struct workqueue_struct *eval_map_wq __initdata;
9133 static struct work_struct eval_map_work __initdata;
9134
9135 static void __init eval_map_work_func(struct work_struct *work)
9136 {
9137         int len;
9138
9139         len = __stop_ftrace_eval_maps - __start_ftrace_eval_maps;
9140         trace_insert_eval_map(NULL, __start_ftrace_eval_maps, len);
9141 }
9142
9143 static int __init trace_eval_init(void)
9144 {
9145         INIT_WORK(&eval_map_work, eval_map_work_func);
9146
9147         eval_map_wq = alloc_workqueue("eval_map_wq", WQ_UNBOUND, 0);
9148         if (!eval_map_wq) {
9149                 pr_err("Unable to allocate eval_map_wq\n");
9150                 /* Do work here */
9151                 eval_map_work_func(&eval_map_work);
9152                 return -ENOMEM;
9153         }
9154
9155         queue_work(eval_map_wq, &eval_map_work);
9156         return 0;
9157 }
9158
9159 static int __init trace_eval_sync(void)
9160 {
9161         /* Make sure the eval map updates are finished */
9162         if (eval_map_wq)
9163                 destroy_workqueue(eval_map_wq);
9164         return 0;
9165 }
9166
9167 late_initcall_sync(trace_eval_sync);
9168
9169
9170 #ifdef CONFIG_MODULES
9171 static void trace_module_add_evals(struct module *mod)
9172 {
9173         if (!mod->num_trace_evals)
9174                 return;
9175
9176         /*
9177          * Modules with bad taint do not have events created, do
9178          * not bother with enums either.
9179          */
9180         if (trace_module_has_bad_taint(mod))
9181                 return;
9182
9183         trace_insert_eval_map(mod, mod->trace_evals, mod->num_trace_evals);
9184 }
9185
9186 #ifdef CONFIG_TRACE_EVAL_MAP_FILE
9187 static void trace_module_remove_evals(struct module *mod)
9188 {
9189         union trace_eval_map_item *map;
9190         union trace_eval_map_item **last = &trace_eval_maps;
9191
9192         if (!mod->num_trace_evals)
9193                 return;
9194
9195         mutex_lock(&trace_eval_mutex);
9196
9197         map = trace_eval_maps;
9198
9199         while (map) {
9200                 if (map->head.mod == mod)
9201                         break;
9202                 map = trace_eval_jmp_to_tail(map);
9203                 last = &map->tail.next;
9204                 map = map->tail.next;
9205         }
9206         if (!map)
9207                 goto out;
9208
9209         *last = trace_eval_jmp_to_tail(map)->tail.next;
9210         kfree(map);
9211  out:
9212         mutex_unlock(&trace_eval_mutex);
9213 }
9214 #else
9215 static inline void trace_module_remove_evals(struct module *mod) { }
9216 #endif /* CONFIG_TRACE_EVAL_MAP_FILE */
9217
9218 static int trace_module_notify(struct notifier_block *self,
9219                                unsigned long val, void *data)
9220 {
9221         struct module *mod = data;
9222
9223         switch (val) {
9224         case MODULE_STATE_COMING:
9225                 trace_module_add_evals(mod);
9226                 break;
9227         case MODULE_STATE_GOING:
9228                 trace_module_remove_evals(mod);
9229                 break;
9230         }
9231
9232         return NOTIFY_OK;
9233 }
9234
9235 static struct notifier_block trace_module_nb = {
9236         .notifier_call = trace_module_notify,
9237         .priority = 0,
9238 };
9239 #endif /* CONFIG_MODULES */
9240
9241 static __init int tracer_init_tracefs(void)
9242 {
9243         int ret;
9244
9245         trace_access_lock_init();
9246
9247         ret = tracing_init_dentry();
9248         if (ret)
9249                 return 0;
9250
9251         event_trace_init();
9252
9253         init_tracer_tracefs(&global_trace, NULL);
9254         ftrace_init_tracefs_toplevel(&global_trace, NULL);
9255
9256         trace_create_file("tracing_thresh", 0644, NULL,
9257                         &global_trace, &tracing_thresh_fops);
9258
9259         trace_create_file("README", 0444, NULL,
9260                         NULL, &tracing_readme_fops);
9261
9262         trace_create_file("saved_cmdlines", 0444, NULL,
9263                         NULL, &tracing_saved_cmdlines_fops);
9264
9265         trace_create_file("saved_cmdlines_size", 0644, NULL,
9266                           NULL, &tracing_saved_cmdlines_size_fops);
9267
9268         trace_create_file("saved_tgids", 0444, NULL,
9269                         NULL, &tracing_saved_tgids_fops);
9270
9271         trace_eval_init();
9272
9273         trace_create_eval_file(NULL);
9274
9275 #ifdef CONFIG_MODULES
9276         register_module_notifier(&trace_module_nb);
9277 #endif
9278
9279 #ifdef CONFIG_DYNAMIC_FTRACE
9280         trace_create_file("dyn_ftrace_total_info", 0444, NULL,
9281                         NULL, &tracing_dyn_info_fops);
9282 #endif
9283
9284         create_trace_instances(NULL);
9285
9286         update_tracer_options(&global_trace);
9287
9288         return 0;
9289 }
9290
9291 static int trace_panic_handler(struct notifier_block *this,
9292                                unsigned long event, void *unused)
9293 {
9294         if (ftrace_dump_on_oops)
9295                 ftrace_dump(ftrace_dump_on_oops);
9296         return NOTIFY_OK;
9297 }
9298
9299 static struct notifier_block trace_panic_notifier = {
9300         .notifier_call  = trace_panic_handler,
9301         .next           = NULL,
9302         .priority       = 150   /* priority: INT_MAX >= x >= 0 */
9303 };
9304
9305 static int trace_die_handler(struct notifier_block *self,
9306                              unsigned long val,
9307                              void *data)
9308 {
9309         switch (val) {
9310         case DIE_OOPS:
9311                 if (ftrace_dump_on_oops)
9312                         ftrace_dump(ftrace_dump_on_oops);
9313                 break;
9314         default:
9315                 break;
9316         }
9317         return NOTIFY_OK;
9318 }
9319
9320 static struct notifier_block trace_die_notifier = {
9321         .notifier_call = trace_die_handler,
9322         .priority = 200
9323 };
9324
9325 /*
9326  * printk is set to max of 1024, we really don't need it that big.
9327  * Nothing should be printing 1000 characters anyway.
9328  */
9329 #define TRACE_MAX_PRINT         1000
9330
9331 /*
9332  * Define here KERN_TRACE so that we have one place to modify
9333  * it if we decide to change what log level the ftrace dump
9334  * should be at.
9335  */
9336 #define KERN_TRACE              KERN_EMERG
9337
9338 void
9339 trace_printk_seq(struct trace_seq *s)
9340 {
9341         /* Probably should print a warning here. */
9342         if (s->seq.len >= TRACE_MAX_PRINT)
9343                 s->seq.len = TRACE_MAX_PRINT;
9344
9345         /*
9346          * More paranoid code. Although the buffer size is set to
9347          * PAGE_SIZE, and TRACE_MAX_PRINT is 1000, this is just
9348          * an extra layer of protection.
9349          */
9350         if (WARN_ON_ONCE(s->seq.len >= s->seq.size))
9351                 s->seq.len = s->seq.size - 1;
9352
9353         /* should be zero ended, but we are paranoid. */
9354         s->buffer[s->seq.len] = 0;
9355
9356         printk(KERN_TRACE "%s", s->buffer);
9357
9358         trace_seq_init(s);
9359 }
9360
9361 void trace_init_global_iter(struct trace_iterator *iter)
9362 {
9363         iter->tr = &global_trace;
9364         iter->trace = iter->tr->current_trace;
9365         iter->cpu_file = RING_BUFFER_ALL_CPUS;
9366         iter->array_buffer = &global_trace.array_buffer;
9367
9368         if (iter->trace && iter->trace->open)
9369                 iter->trace->open(iter);
9370
9371         /* Annotate start of buffers if we had overruns */
9372         if (ring_buffer_overruns(iter->array_buffer->buffer))
9373                 iter->iter_flags |= TRACE_FILE_ANNOTATE;
9374
9375         /* Output in nanoseconds only if we are using a clock in nanoseconds. */
9376         if (trace_clocks[iter->tr->clock_id].in_ns)
9377                 iter->iter_flags |= TRACE_FILE_TIME_IN_NS;
9378 }
9379
9380 void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
9381 {
9382         /* use static because iter can be a bit big for the stack */
9383         static struct trace_iterator iter;
9384         static atomic_t dump_running;
9385         struct trace_array *tr = &global_trace;
9386         unsigned int old_userobj;
9387         unsigned long flags;
9388         int cnt = 0, cpu;
9389
9390         /* Only allow one dump user at a time. */
9391         if (atomic_inc_return(&dump_running) != 1) {
9392                 atomic_dec(&dump_running);
9393                 return;
9394         }
9395
9396         /*
9397          * Always turn off tracing when we dump.
9398          * We don't need to show trace output of what happens
9399          * between multiple crashes.
9400          *
9401          * If the user does a sysrq-z, then they can re-enable
9402          * tracing with echo 1 > tracing_on.
9403          */
9404         tracing_off();
9405
9406         local_irq_save(flags);
9407         printk_nmi_direct_enter();
9408
9409         /* Simulate the iterator */
9410         trace_init_global_iter(&iter);
9411         /* Can not use kmalloc for iter.temp and iter.fmt */
9412         iter.temp = static_temp_buf;
9413         iter.temp_size = STATIC_TEMP_BUF_SIZE;
9414         iter.fmt = static_fmt_buf;
9415         iter.fmt_size = STATIC_FMT_BUF_SIZE;
9416
9417         for_each_tracing_cpu(cpu) {
9418                 atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);
9419         }
9420
9421         old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ;
9422
9423         /* don't look at user memory in panic mode */
9424         tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
9425
9426         switch (oops_dump_mode) {
9427         case DUMP_ALL:
9428                 iter.cpu_file = RING_BUFFER_ALL_CPUS;
9429                 break;
9430         case DUMP_ORIG:
9431                 iter.cpu_file = raw_smp_processor_id();
9432                 break;
9433         case DUMP_NONE:
9434                 goto out_enable;
9435         default:
9436                 printk(KERN_TRACE "Bad dumping mode, switching to all CPUs dump\n");
9437                 iter.cpu_file = RING_BUFFER_ALL_CPUS;
9438         }
9439
9440         printk(KERN_TRACE "Dumping ftrace buffer:\n");
9441
9442         /* Did function tracer already get disabled? */
9443         if (ftrace_is_dead()) {
9444                 printk("# WARNING: FUNCTION TRACING IS CORRUPTED\n");
9445                 printk("#          MAY BE MISSING FUNCTION EVENTS\n");
9446         }
9447
9448         /*
9449          * We need to stop all tracing on all CPUS to read
9450          * the next buffer. This is a bit expensive, but is
9451          * not done often. We fill all what we can read,
9452          * and then release the locks again.
9453          */
9454
9455         while (!trace_empty(&iter)) {
9456
9457                 if (!cnt)
9458                         printk(KERN_TRACE "---------------------------------\n");
9459
9460                 cnt++;
9461
9462                 trace_iterator_reset(&iter);
9463                 iter.iter_flags |= TRACE_FILE_LAT_FMT;
9464
9465                 if (trace_find_next_entry_inc(&iter) != NULL) {
9466                         int ret;
9467
9468                         ret = print_trace_line(&iter);
9469                         if (ret != TRACE_TYPE_NO_CONSUME)
9470                                 trace_consume(&iter);
9471                 }
9472                 touch_nmi_watchdog();
9473
9474                 trace_printk_seq(&iter.seq);
9475         }
9476
9477         if (!cnt)
9478                 printk(KERN_TRACE "   (ftrace buffer empty)\n");
9479         else
9480                 printk(KERN_TRACE "---------------------------------\n");
9481
9482  out_enable:
9483         tr->trace_flags |= old_userobj;
9484
9485         for_each_tracing_cpu(cpu) {
9486                 atomic_dec(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);
9487         }
9488         atomic_dec(&dump_running);
9489         printk_nmi_direct_exit();
9490         local_irq_restore(flags);
9491 }
9492 EXPORT_SYMBOL_GPL(ftrace_dump);
9493
9494 #define WRITE_BUFSIZE  4096
9495
9496 ssize_t trace_parse_run_command(struct file *file, const char __user *buffer,
9497                                 size_t count, loff_t *ppos,
9498                                 int (*createfn)(const char *))
9499 {
9500         char *kbuf, *buf, *tmp;
9501         int ret = 0;
9502         size_t done = 0;
9503         size_t size;
9504
9505         kbuf = kmalloc(WRITE_BUFSIZE, GFP_KERNEL);
9506         if (!kbuf)
9507                 return -ENOMEM;
9508
9509         while (done < count) {
9510                 size = count - done;
9511
9512                 if (size >= WRITE_BUFSIZE)
9513                         size = WRITE_BUFSIZE - 1;
9514
9515                 if (copy_from_user(kbuf, buffer + done, size)) {
9516                         ret = -EFAULT;
9517                         goto out;
9518                 }
9519                 kbuf[size] = '\0';
9520                 buf = kbuf;
9521                 do {
9522                         tmp = strchr(buf, '\n');
9523                         if (tmp) {
9524                                 *tmp = '\0';
9525                                 size = tmp - buf + 1;
9526                         } else {
9527                                 size = strlen(buf);
9528                                 if (done + size < count) {
9529                                         if (buf != kbuf)
9530                                                 break;
9531                                         /* This can accept WRITE_BUFSIZE - 2 ('\n' + '\0') */
9532                                         pr_warn("Line length is too long: Should be less than %d\n",
9533                                                 WRITE_BUFSIZE - 2);
9534                                         ret = -EINVAL;
9535                                         goto out;
9536                                 }
9537                         }
9538                         done += size;
9539
9540                         /* Remove comments */
9541                         tmp = strchr(buf, '#');
9542
9543                         if (tmp)
9544                                 *tmp = '\0';
9545
9546                         ret = createfn(buf);
9547                         if (ret)
9548                                 goto out;
9549                         buf += size;
9550
9551                 } while (done < count);
9552         }
9553         ret = done;
9554
9555 out:
9556         kfree(kbuf);
9557
9558         return ret;
9559 }
9560
9561 __init static int tracer_alloc_buffers(void)
9562 {
9563         int ring_buf_size;
9564         int ret = -ENOMEM;
9565
9566
9567         if (security_locked_down(LOCKDOWN_TRACEFS)) {
9568                 pr_warn("Tracing disabled due to lockdown\n");
9569                 return -EPERM;
9570         }
9571
9572         /*
9573          * Make sure we don't accidentally add more trace options
9574          * than we have bits for.
9575          */
9576         BUILD_BUG_ON(TRACE_ITER_LAST_BIT > TRACE_FLAGS_MAX_SIZE);
9577
9578         if (!alloc_cpumask_var(&tracing_buffer_mask, GFP_KERNEL))
9579                 goto out;
9580
9581         if (!alloc_cpumask_var(&global_trace.tracing_cpumask, GFP_KERNEL))
9582                 goto out_free_buffer_mask;
9583
9584         /* Only allocate trace_printk buffers if a trace_printk exists */
9585         if (&__stop___trace_bprintk_fmt != &__start___trace_bprintk_fmt)
9586                 /* Must be called before global_trace.buffer is allocated */
9587                 trace_printk_init_buffers();
9588
9589         /* To save memory, keep the ring buffer size to its minimum */
9590         if (ring_buffer_expanded)
9591                 ring_buf_size = trace_buf_size;
9592         else
9593                 ring_buf_size = 1;
9594
9595         cpumask_copy(tracing_buffer_mask, cpu_possible_mask);
9596         cpumask_copy(global_trace.tracing_cpumask, cpu_all_mask);
9597
9598         raw_spin_lock_init(&global_trace.start_lock);
9599
9600         /*
9601          * The prepare callbacks allocates some memory for the ring buffer. We
9602          * don't free the buffer if the CPU goes down. If we were to free
9603          * the buffer, then the user would lose any trace that was in the
9604          * buffer. The memory will be removed once the "instance" is removed.
9605          */
9606         ret = cpuhp_setup_state_multi(CPUHP_TRACE_RB_PREPARE,
9607                                       "trace/RB:preapre", trace_rb_cpu_prepare,
9608                                       NULL);
9609         if (ret < 0)
9610                 goto out_free_cpumask;
9611         /* Used for event triggers */
9612         ret = -ENOMEM;
9613         temp_buffer = ring_buffer_alloc(PAGE_SIZE, RB_FL_OVERWRITE);
9614         if (!temp_buffer)
9615                 goto out_rm_hp_state;
9616
9617         if (trace_create_savedcmd() < 0)
9618                 goto out_free_temp_buffer;
9619
9620         /* TODO: make the number of buffers hot pluggable with CPUS */
9621         if (allocate_trace_buffers(&global_trace, ring_buf_size) < 0) {
9622                 MEM_FAIL(1, "tracer: failed to allocate ring buffer!\n");
9623                 goto out_free_savedcmd;
9624         }
9625
9626         if (global_trace.buffer_disabled)
9627                 tracing_off();
9628
9629         if (trace_boot_clock) {
9630                 ret = tracing_set_clock(&global_trace, trace_boot_clock);
9631                 if (ret < 0)
9632                         pr_warn("Trace clock %s not defined, going back to default\n",
9633                                 trace_boot_clock);
9634         }
9635
9636         /*
9637          * register_tracer() might reference current_trace, so it
9638          * needs to be set before we register anything. This is
9639          * just a bootstrap of current_trace anyway.
9640          */
9641         global_trace.current_trace = &nop_trace;
9642
9643         global_trace.max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
9644
9645         ftrace_init_global_array_ops(&global_trace);
9646
9647         init_trace_flags_index(&global_trace);
9648
9649         register_tracer(&nop_trace);
9650
9651         /* Function tracing may start here (via kernel command line) */
9652         init_function_trace();
9653
9654         /* All seems OK, enable tracing */
9655         tracing_disabled = 0;
9656
9657         atomic_notifier_chain_register(&panic_notifier_list,
9658                                        &trace_panic_notifier);
9659
9660         register_die_notifier(&trace_die_notifier);
9661
9662         global_trace.flags = TRACE_ARRAY_FL_GLOBAL;
9663
9664         INIT_LIST_HEAD(&global_trace.systems);
9665         INIT_LIST_HEAD(&global_trace.events);
9666         INIT_LIST_HEAD(&global_trace.hist_vars);
9667         INIT_LIST_HEAD(&global_trace.err_log);
9668         list_add(&global_trace.list, &ftrace_trace_arrays);
9669
9670         apply_trace_boot_options();
9671
9672         register_snapshot_cmd();
9673
9674         return 0;
9675
9676 out_free_savedcmd:
9677         free_saved_cmdlines_buffer(savedcmd);
9678 out_free_temp_buffer:
9679         ring_buffer_free(temp_buffer);
9680 out_rm_hp_state:
9681         cpuhp_remove_multi_state(CPUHP_TRACE_RB_PREPARE);
9682 out_free_cpumask:
9683         free_cpumask_var(global_trace.tracing_cpumask);
9684 out_free_buffer_mask:
9685         free_cpumask_var(tracing_buffer_mask);
9686 out:
9687         return ret;
9688 }
9689
9690 void __init early_trace_init(void)
9691 {
9692         if (tracepoint_printk) {
9693                 tracepoint_print_iter =
9694                         kmalloc(sizeof(*tracepoint_print_iter), GFP_KERNEL);
9695                 if (MEM_FAIL(!tracepoint_print_iter,
9696                              "Failed to allocate trace iterator\n"))
9697                         tracepoint_printk = 0;
9698                 else
9699                         static_key_enable(&tracepoint_printk_key.key);
9700         }
9701         tracer_alloc_buffers();
9702 }
9703
9704 void __init trace_init(void)
9705 {
9706         trace_event_init();
9707 }
9708
9709 __init static int clear_boot_tracer(void)
9710 {
9711         /*
9712          * The default tracer at boot buffer is an init section.
9713          * This function is called in lateinit. If we did not
9714          * find the boot tracer, then clear it out, to prevent
9715          * later registration from accessing the buffer that is
9716          * about to be freed.
9717          */
9718         if (!default_bootup_tracer)
9719                 return 0;
9720
9721         printk(KERN_INFO "ftrace bootup tracer '%s' not registered.\n",
9722                default_bootup_tracer);
9723         default_bootup_tracer = NULL;
9724
9725         return 0;
9726 }
9727
9728 fs_initcall(tracer_init_tracefs);
9729 late_initcall_sync(clear_boot_tracer);
9730
9731 #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
9732 __init static int tracing_set_default_clock(void)
9733 {
9734         /* sched_clock_stable() is determined in late_initcall */
9735         if (!trace_boot_clock && !sched_clock_stable()) {
9736                 if (security_locked_down(LOCKDOWN_TRACEFS)) {
9737                         pr_warn("Can not set tracing clock due to lockdown\n");
9738                         return -EPERM;
9739                 }
9740
9741                 printk(KERN_WARNING
9742                        "Unstable clock detected, switching default tracing clock to \"global\"\n"
9743                        "If you want to keep using the local clock, then add:\n"
9744                        "  \"trace_clock=local\"\n"
9745                        "on the kernel command line\n");
9746                 tracing_set_clock(&global_trace, "global");
9747         }
9748
9749         return 0;
9750 }
9751 late_initcall_sync(tracing_set_default_clock);
9752 #endif