diff options
author | Steven Rostedt <srostedt@redhat.com> | 2012-05-08 20:57:53 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2012-05-08 21:06:26 -0400 |
commit | 68179686ac67cb08f08b1ef28b860d5ed899f242 (patch) | |
tree | 5358088eddef07e00a6daf309c0fe43f94a6cdc4 /kernel | |
parent | 50e18b94c695644d824381e7574b9c44acc25ffe (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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace.c | 44 |
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 | ||
88 | DEFINE_PER_CPU(int, ftrace_cpu_disabled); | 88 | DEFINE_PER_CPU(int, ftrace_cpu_disabled); |
89 | 89 | ||
90 | static inline void ftrace_disable_cpu(void) | ||
91 | { | ||
92 | preempt_disable(); | ||
93 | __this_cpu_inc(ftrace_cpu_disabled); | ||
94 | } | ||
95 | |||
96 | static inline void ftrace_enable_cpu(void) | ||
97 | { | ||
98 | __this_cpu_dec(ftrace_cpu_disabled); | ||
99 | preempt_enable(); | ||
100 | } | ||
101 | |||
102 | cpumask_var_t __read_mostly tracing_buffer_mask; | 90 | cpumask_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 | ||
919 | static 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 | |||
926 | void tracing_reset(struct trace_array *tr, int cpu) | 903 | void 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 | ||
1734 | static void trace_iterator_increment(struct trace_iterator *iter) | 1711 | static 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 | ||
1746 | static struct trace_entry * | 1718 | static 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 | ||
1851 | static void trace_consume(struct trace_iterator *iter) | 1818 | static 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 | ||
1860 | static void *s_next(struct seq_file *m, void *v, loff_t *pos) | 1824 | static 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 | ; |