aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2012-05-08 20:57:53 -0400
committerSteven Rostedt <rostedt@goodmis.org>2012-05-08 21:06:26 -0400
commit68179686ac67cb08f08b1ef28b860d5ed899f242 (patch)
tree5358088eddef07e00a6daf309c0fe43f94a6cdc4
parent50e18b94c695644d824381e7574b9c44acc25ffe (diff)
tracing: Remove ftrace_disable/enable_cpu()
The ftrace_disable_cpu() and ftrace_enable_cpu() functions were needed back before the ring buffer was lockless. Now that the ring buffer is lockless (and has been for some time), these functions serve no purpose, and unnecessarily slow down operations of the tracer. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-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 ;