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