aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-08-17 04:41:59 -0400
committerIngo Molnar <mingo@kernel.org>2015-08-17 04:41:59 -0400
commit5461bd81bf7f86503f393b0b1d57e69b1f1bd44e (patch)
tree25ec4a2f43019c4d7cc76eb6a967ec450add9401 /tools/perf
parent949163015ce6fdb76a5e846a3582d3c40c23c001 (diff)
parent2c6625cd545bdd66acff14f3394865d43920a5c7 (diff)
Merge tag 'v4.2-rc7' into x86/boot, to refresh the branch before merging new changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/MANIFEST2
-rw-r--r--tools/perf/Makefile.perf19
-rw-r--r--tools/perf/builtin-stat.c4
-rw-r--r--tools/perf/config/Makefile2
-rw-r--r--tools/perf/ui/browsers/hists.c2
-rw-r--r--tools/perf/util/Build2
-rw-r--r--tools/perf/util/auxtrace.c10
-rw-r--r--tools/perf/util/python-ext-sources4
-rw-r--r--tools/perf/util/stat-shadow.c8
-rw-r--r--tools/perf/util/symbol.c2
-rw-r--r--tools/perf/util/symbol.h3
-rw-r--r--tools/perf/util/thread_map.c3
-rw-r--r--tools/perf/util/vdso.c8
13 files changed, 40 insertions, 29 deletions
diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST
index 09dc0aabb515..d01a0aad5a01 100644
--- a/tools/perf/MANIFEST
+++ b/tools/perf/MANIFEST
@@ -18,6 +18,7 @@ tools/arch/x86/include/asm/atomic.h
18tools/arch/x86/include/asm/rmwcc.h 18tools/arch/x86/include/asm/rmwcc.h
19tools/lib/traceevent 19tools/lib/traceevent
20tools/lib/api 20tools/lib/api
21tools/lib/hweight.c
21tools/lib/rbtree.c 22tools/lib/rbtree.c
22tools/lib/symbol/kallsyms.c 23tools/lib/symbol/kallsyms.c
23tools/lib/symbol/kallsyms.h 24tools/lib/symbol/kallsyms.h
@@ -57,7 +58,6 @@ include/linux/perf_event.h
57include/linux/list.h 58include/linux/list.h
58include/linux/hash.h 59include/linux/hash.h
59include/linux/stringify.h 60include/linux/stringify.h
60lib/hweight.c
61include/linux/swab.h 61include/linux/swab.h
62arch/*/include/asm/unistd*.h 62arch/*/include/asm/unistd*.h
63arch/*/include/uapi/asm/unistd*.h 63arch/*/include/uapi/asm/unistd*.h
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 7a4b549214e3..bba34636b733 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -109,9 +109,22 @@ $(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD
109 $(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) 109 $(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
110 $(Q)touch $(OUTPUT)PERF-VERSION-FILE 110 $(Q)touch $(OUTPUT)PERF-VERSION-FILE
111 111
112CC = $(CROSS_COMPILE)gcc 112# Makefiles suck: This macro sets a default value of $(2) for the
113LD ?= $(CROSS_COMPILE)ld 113# variable named by $(1), unless the variable has been set by
114AR = $(CROSS_COMPILE)ar 114# environment or command line. This is necessary for CC and AR
115# because make sets default values, so the simpler ?= approach
116# won't work as expected.
117define allow-override
118 $(if $(or $(findstring environment,$(origin $(1))),\
119 $(findstring command line,$(origin $(1)))),,\
120 $(eval $(1) = $(2)))
121endef
122
123# Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix.
124$(call allow-override,CC,$(CROSS_COMPILE)gcc)
125$(call allow-override,AR,$(CROSS_COMPILE)ar)
126$(call allow-override,LD,$(CROSS_COMPILE)ld)
127
115PKG_CONFIG = $(CROSS_COMPILE)pkg-config 128PKG_CONFIG = $(CROSS_COMPILE)pkg-config
116 129
117RM = rm -f 130RM = rm -f
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 37e301a32f43..d99d850e1444 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -343,7 +343,7 @@ static int read_counter(struct perf_evsel *counter)
343 return 0; 343 return 0;
344} 344}
345 345
346static void read_counters(bool close) 346static void read_counters(bool close_counters)
347{ 347{
348 struct perf_evsel *counter; 348 struct perf_evsel *counter;
349 349
@@ -354,7 +354,7 @@ static void read_counters(bool close)
354 if (process_counter(counter)) 354 if (process_counter(counter))
355 pr_warning("failed to process counter %s\n", counter->name); 355 pr_warning("failed to process counter %s\n", counter->name);
356 356
357 if (close) { 357 if (close_counters) {
358 perf_evsel__close_fd(counter, perf_evsel__nr_cpus(counter), 358 perf_evsel__close_fd(counter, perf_evsel__nr_cpus(counter),
359 thread_map__nr(evsel_list->threads)); 359 thread_map__nr(evsel_list->threads));
360 } 360 }
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 094ddaee104c..d31fac19c30b 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -638,7 +638,7 @@ ifndef DESTDIR
638prefix ?= $(HOME) 638prefix ?= $(HOME)
639endif 639endif
640bindir_relative = bin 640bindir_relative = bin
641bindir = $(prefix)/$(bindir_relative) 641bindir = $(abspath $(prefix)/$(bindir_relative))
642mandir = share/man 642mandir = share/man
643infodir = share/info 643infodir = share/info
644perfexecdir = libexec/perf-core 644perfexecdir = libexec/perf-core
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 7629bef2fd79..fa67613976a8 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -48,7 +48,7 @@ static struct rb_node *hists__filter_entries(struct rb_node *nd,
48 48
49static bool hist_browser__has_filter(struct hist_browser *hb) 49static bool hist_browser__has_filter(struct hist_browser *hb)
50{ 50{
51 return hists__has_filter(hb->hists) || hb->min_pcnt; 51 return hists__has_filter(hb->hists) || hb->min_pcnt || symbol_conf.has_filter;
52} 52}
53 53
54static int hist_browser__get_folding(struct hist_browser *browser) 54static int hist_browser__get_folding(struct hist_browser *browser)
diff --git a/tools/perf/util/Build b/tools/perf/util/Build
index 601d11440596..d2d318c59b37 100644
--- a/tools/perf/util/Build
+++ b/tools/perf/util/Build
@@ -143,6 +143,6 @@ $(OUTPUT)util/rbtree.o: ../lib/rbtree.c FORCE
143 $(call rule_mkdir) 143 $(call rule_mkdir)
144 $(call if_changed_dep,cc_o_c) 144 $(call if_changed_dep,cc_o_c)
145 145
146$(OUTPUT)util/hweight.o: ../../lib/hweight.c FORCE 146$(OUTPUT)util/hweight.o: ../lib/hweight.c FORCE
147 $(call rule_mkdir) 147 $(call rule_mkdir)
148 $(call if_changed_dep,cc_o_c) 148 $(call if_changed_dep,cc_o_c)
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
index 7e7405c9b936..83d9dd96fe08 100644
--- a/tools/perf/util/auxtrace.c
+++ b/tools/perf/util/auxtrace.c
@@ -53,11 +53,6 @@ int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,
53{ 53{
54 struct perf_event_mmap_page *pc = userpg; 54 struct perf_event_mmap_page *pc = userpg;
55 55
56#if BITS_PER_LONG != 64 && !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
57 pr_err("Cannot use AUX area tracing mmaps\n");
58 return -1;
59#endif
60
61 WARN_ONCE(mm->base, "Uninitialized auxtrace_mmap\n"); 56 WARN_ONCE(mm->base, "Uninitialized auxtrace_mmap\n");
62 57
63 mm->userpg = userpg; 58 mm->userpg = userpg;
@@ -73,6 +68,11 @@ int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,
73 return 0; 68 return 0;
74 } 69 }
75 70
71#if BITS_PER_LONG != 64 && !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
72 pr_err("Cannot use AUX area tracing mmaps\n");
73 return -1;
74#endif
75
76 pc->aux_offset = mp->offset; 76 pc->aux_offset = mp->offset;
77 pc->aux_size = mp->len; 77 pc->aux_size = mp->len;
78 78
diff --git a/tools/perf/util/python-ext-sources b/tools/perf/util/python-ext-sources
index e23ded40c79e..0766d98c5da5 100644
--- a/tools/perf/util/python-ext-sources
+++ b/tools/perf/util/python-ext-sources
@@ -10,7 +10,7 @@ util/ctype.c
10util/evlist.c 10util/evlist.c
11util/evsel.c 11util/evsel.c
12util/cpumap.c 12util/cpumap.c
13../../lib/hweight.c 13../lib/hweight.c
14util/thread_map.c 14util/thread_map.c
15util/util.c 15util/util.c
16util/xyarray.c 16util/xyarray.c
@@ -19,5 +19,5 @@ util/rblist.c
19util/stat.c 19util/stat.c
20util/strlist.c 20util/strlist.c
21util/trace-event.c 21util/trace-event.c
22../../lib/rbtree.c 22../lib/rbtree.c
23util/string.c 23util/string.c
diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index 53e8bb7bc852..2a5d8d7698ae 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -85,7 +85,7 @@ void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 *count,
85 else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES)) 85 else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES))
86 update_stats(&runtime_cycles_stats[ctx][cpu], count[0]); 86 update_stats(&runtime_cycles_stats[ctx][cpu], count[0]);
87 else if (perf_stat_evsel__is(counter, CYCLES_IN_TX)) 87 else if (perf_stat_evsel__is(counter, CYCLES_IN_TX))
88 update_stats(&runtime_transaction_stats[ctx][cpu], count[0]); 88 update_stats(&runtime_cycles_in_tx_stats[ctx][cpu], count[0]);
89 else if (perf_stat_evsel__is(counter, TRANSACTION_START)) 89 else if (perf_stat_evsel__is(counter, TRANSACTION_START))
90 update_stats(&runtime_transaction_stats[ctx][cpu], count[0]); 90 update_stats(&runtime_transaction_stats[ctx][cpu], count[0]);
91 else if (perf_stat_evsel__is(counter, ELISION_START)) 91 else if (perf_stat_evsel__is(counter, ELISION_START))
@@ -398,20 +398,18 @@ void perf_stat__print_shadow_stats(FILE *out, struct perf_evsel *evsel,
398 " # %5.2f%% aborted cycles ", 398 " # %5.2f%% aborted cycles ",
399 100.0 * ((total2-avg) / total)); 399 100.0 * ((total2-avg) / total));
400 } else if (perf_stat_evsel__is(evsel, TRANSACTION_START) && 400 } else if (perf_stat_evsel__is(evsel, TRANSACTION_START) &&
401 avg > 0 &&
402 runtime_cycles_in_tx_stats[ctx][cpu].n != 0) { 401 runtime_cycles_in_tx_stats[ctx][cpu].n != 0) {
403 total = avg_stats(&runtime_cycles_in_tx_stats[ctx][cpu]); 402 total = avg_stats(&runtime_cycles_in_tx_stats[ctx][cpu]);
404 403
405 if (total) 404 if (avg)
406 ratio = total / avg; 405 ratio = total / avg;
407 406
408 fprintf(out, " # %8.0f cycles / transaction ", ratio); 407 fprintf(out, " # %8.0f cycles / transaction ", ratio);
409 } else if (perf_stat_evsel__is(evsel, ELISION_START) && 408 } else if (perf_stat_evsel__is(evsel, ELISION_START) &&
410 avg > 0 &&
411 runtime_cycles_in_tx_stats[ctx][cpu].n != 0) { 409 runtime_cycles_in_tx_stats[ctx][cpu].n != 0) {
412 total = avg_stats(&runtime_cycles_in_tx_stats[ctx][cpu]); 410 total = avg_stats(&runtime_cycles_in_tx_stats[ctx][cpu]);
413 411
414 if (total) 412 if (avg)
415 ratio = total / avg; 413 ratio = total / avg;
416 414
417 fprintf(out, " # %8.0f cycles / elision ", ratio); 415 fprintf(out, " # %8.0f cycles / elision ", ratio);
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 48b588c6951a..60f11414bb5c 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1911,6 +1911,8 @@ int setup_list(struct strlist **list, const char *list_str,
1911 pr_err("problems parsing %s list\n", list_name); 1911 pr_err("problems parsing %s list\n", list_name);
1912 return -1; 1912 return -1;
1913 } 1913 }
1914
1915 symbol_conf.has_filter = true;
1914 return 0; 1916 return 0;
1915} 1917}
1916 1918
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index bef47ead1d9b..b98ce51af142 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -105,7 +105,8 @@ struct symbol_conf {
105 demangle_kernel, 105 demangle_kernel,
106 filter_relative, 106 filter_relative,
107 show_hist_headers, 107 show_hist_headers,
108 branch_callstack; 108 branch_callstack,
109 has_filter;
109 const char *vmlinux_name, 110 const char *vmlinux_name,
110 *kallsyms_name, 111 *kallsyms_name,
111 *source_prefix, 112 *source_prefix,
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c
index da7646d767fe..292ae2c90e06 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -136,8 +136,7 @@ struct thread_map *thread_map__new_by_uid(uid_t uid)
136 if (grow) { 136 if (grow) {
137 struct thread_map *tmp; 137 struct thread_map *tmp;
138 138
139 tmp = realloc(threads, (sizeof(*threads) + 139 tmp = thread_map__realloc(threads, max_threads);
140 max_threads * sizeof(pid_t)));
141 if (tmp == NULL) 140 if (tmp == NULL)
142 goto out_free_namelist; 141 goto out_free_namelist;
143 142
diff --git a/tools/perf/util/vdso.c b/tools/perf/util/vdso.c
index 4b89118f158d..44d440da15dc 100644
--- a/tools/perf/util/vdso.c
+++ b/tools/perf/util/vdso.c
@@ -236,18 +236,16 @@ static struct dso *__machine__findnew_compat(struct machine *machine,
236 const char *file_name; 236 const char *file_name;
237 struct dso *dso; 237 struct dso *dso;
238 238
239 pthread_rwlock_wrlock(&machine->dsos.lock);
240 dso = __dsos__find(&machine->dsos, vdso_file->dso_name, true); 239 dso = __dsos__find(&machine->dsos, vdso_file->dso_name, true);
241 if (dso) 240 if (dso)
242 goto out_unlock; 241 goto out;
243 242
244 file_name = vdso__get_compat_file(vdso_file); 243 file_name = vdso__get_compat_file(vdso_file);
245 if (!file_name) 244 if (!file_name)
246 goto out_unlock; 245 goto out;
247 246
248 dso = __machine__addnew_vdso(machine, vdso_file->dso_name, file_name); 247 dso = __machine__addnew_vdso(machine, vdso_file->dso_name, file_name);
249out_unlock: 248out:
250 pthread_rwlock_unlock(&machine->dsos.lock);
251 return dso; 249 return dso;
252} 250}
253 251