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