aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace.c44
1 files changed, 2 insertions, 42 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 4fb10ef727d3..48ef4960ec90 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -87,18 +87,6 @@ static int tracing_disabled = 1;
87 87
88DEFINE_PER_CPU(int, ftrace_cpu_disabled); 88DEFINE_PER_CPU(int, ftrace_cpu_disabled);
89 89
90static inline void ftrace_disable_cpu(void)
91{
92 preempt_disable();
93 __this_cpu_inc(ftrace_cpu_disabled);
94}
95
96static inline void ftrace_enable_cpu(void)
97{
98 __this_cpu_dec(ftrace_cpu_disabled);
99 preempt_enable();
100}
101
102cpumask_var_t __read_mostly tracing_buffer_mask; 90cpumask_var_t __read_mostly tracing_buffer_mask;
103 91
104/* 92/*
@@ -748,8 +736,6 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
748 736
749 arch_spin_lock(&ftrace_max_lock); 737 arch_spin_lock(&ftrace_max_lock);
750 738
751 ftrace_disable_cpu();
752
753 ret = ring_buffer_swap_cpu(max_tr.buffer, tr->buffer, cpu); 739 ret = ring_buffer_swap_cpu(max_tr.buffer, tr->buffer, cpu);
754 740
755 if (ret == -EBUSY) { 741 if (ret == -EBUSY) {
@@ -763,8 +749,6 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
763 "Failed to swap buffers due to commit in progress\n"); 749 "Failed to swap buffers due to commit in progress\n");
764 } 750 }
765 751
766 ftrace_enable_cpu();
767
768 WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY); 752 WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY);
769 753
770 __update_max_tr(tr, tsk, cpu); 754 __update_max_tr(tr, tsk, cpu);
@@ -916,13 +900,6 @@ out:
916 mutex_unlock(&trace_types_lock); 900 mutex_unlock(&trace_types_lock);
917} 901}
918 902
919static void __tracing_reset(struct ring_buffer *buffer, int cpu)
920{
921 ftrace_disable_cpu();
922 ring_buffer_reset_cpu(buffer, cpu);
923 ftrace_enable_cpu();
924}
925
926void tracing_reset(struct trace_array *tr, int cpu) 903void tracing_reset(struct trace_array *tr, int cpu)
927{ 904{
928 struct ring_buffer *buffer = tr->buffer; 905 struct ring_buffer *buffer = tr->buffer;
@@ -931,7 +908,7 @@ void tracing_reset(struct trace_array *tr, int cpu)
931 908
932 /* Make sure all commits have finished */ 909 /* Make sure all commits have finished */
933 synchronize_sched(); 910 synchronize_sched();
934 __tracing_reset(buffer, cpu); 911 ring_buffer_reset_cpu(buffer, cpu);
935 912
936 ring_buffer_record_enable(buffer); 913 ring_buffer_record_enable(buffer);
937} 914}
@@ -949,7 +926,7 @@ void tracing_reset_online_cpus(struct trace_array *tr)
949 tr->time_start = ftrace_now(tr->cpu); 926 tr->time_start = ftrace_now(tr->cpu);
950 927
951 for_each_online_cpu(cpu) 928 for_each_online_cpu(cpu)
952 __tracing_reset(buffer, cpu); 929 ring_buffer_reset_cpu(buffer, cpu);
953 930
954 ring_buffer_record_enable(buffer); 931 ring_buffer_record_enable(buffer);
955} 932}
@@ -1733,14 +1710,9 @@ EXPORT_SYMBOL_GPL(trace_vprintk);
1733 1710
1734static void trace_iterator_increment(struct trace_iterator *iter) 1711static void trace_iterator_increment(struct trace_iterator *iter)
1735{ 1712{
1736 /* Don't allow ftrace to trace into the ring buffers */
1737 ftrace_disable_cpu();
1738
1739 iter->idx++; 1713 iter->idx++;
1740 if (iter->buffer_iter[iter->cpu]) 1714 if (iter->buffer_iter[iter->cpu])
1741 ring_buffer_read(iter->buffer_iter[iter->cpu], NULL); 1715 ring_buffer_read(iter->buffer_iter[iter->cpu], NULL);
1742
1743 ftrace_enable_cpu();
1744} 1716}
1745 1717
1746static struct trace_entry * 1718static struct trace_entry *
@@ -1750,17 +1722,12 @@ peek_next_entry(struct trace_iterator *iter, int cpu, u64 *ts,
1750 struct ring_buffer_event *event; 1722 struct ring_buffer_event *event;
1751 struct ring_buffer_iter *buf_iter = iter->buffer_iter[cpu]; 1723 struct ring_buffer_iter *buf_iter = iter->buffer_iter[cpu];
1752 1724
1753 /* Don't allow ftrace to trace into the ring buffers */
1754 ftrace_disable_cpu();
1755
1756 if (buf_iter) 1725 if (buf_iter)
1757 event = ring_buffer_iter_peek(buf_iter, ts); 1726 event = ring_buffer_iter_peek(buf_iter, ts);
1758 else 1727 else
1759 event = ring_buffer_peek(iter->tr->buffer, cpu, ts, 1728 event = ring_buffer_peek(iter->tr->buffer, cpu, ts,
1760 lost_events); 1729 lost_events);
1761 1730
1762 ftrace_enable_cpu();
1763
1764 if (event) { 1731 if (event) {
1765 iter->ent_size = ring_buffer_event_length(event); 1732 iter->ent_size = ring_buffer_event_length(event);
1766 return ring_buffer_event_data(event); 1733 return ring_buffer_event_data(event);
@@ -1850,11 +1817,8 @@ void *trace_find_next_entry_inc(struct trace_iterator *iter)
1850 1817
1851static void trace_consume(struct trace_iterator *iter) 1818static void trace_consume(struct trace_iterator *iter)
1852{ 1819{
1853 /* Don't allow ftrace to trace into the ring buffers */
1854 ftrace_disable_cpu();
1855 ring_buffer_consume(iter->tr->buffer, iter->cpu, &iter->ts, 1820 ring_buffer_consume(iter->tr->buffer, iter->cpu, &iter->ts,
1856 &iter->lost_events); 1821 &iter->lost_events);
1857 ftrace_enable_cpu();
1858} 1822}
1859 1823
1860static void *s_next(struct seq_file *m, void *v, loff_t *pos) 1824static void *s_next(struct seq_file *m, void *v, loff_t *pos)
@@ -1943,16 +1907,12 @@ static void *s_start(struct seq_file *m, loff_t *pos)
1943 iter->cpu = 0; 1907 iter->cpu = 0;
1944 iter->idx = -1; 1908 iter->idx = -1;
1945 1909
1946 ftrace_disable_cpu();
1947
1948 if (cpu_file == TRACE_PIPE_ALL_CPU) { 1910 if (cpu_file == TRACE_PIPE_ALL_CPU) {
1949 for_each_tracing_cpu(cpu) 1911 for_each_tracing_cpu(cpu)
1950 tracing_iter_reset(iter, cpu); 1912 tracing_iter_reset(iter, cpu);
1951 } else 1913 } else
1952 tracing_iter_reset(iter, cpu_file); 1914 tracing_iter_reset(iter, cpu_file);
1953 1915
1954 ftrace_enable_cpu();
1955
1956 iter->leftover = 0; 1916 iter->leftover = 0;
1957 for (p = iter; p && l < *pos; p = s_next(m, p, &l)) 1917 for (p = iter; p && l < *pos; p = s_next(m, p, &l))
1958 ; 1918 ;