aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/arch
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2019-09-20 12:14:00 -0400
committerIngo Molnar <mingo@kernel.org>2019-09-20 12:16:42 -0400
commit351a1f5c8afa13ea5cfcdae543f6596ef8ebdbd9 (patch)
tree6d039ac0d47666bd6de701911a283c51bea7105e /tools/perf/arch
parent7f2444d38f6bbfa12bc15e2533d8f9daa85ca02b (diff)
parent2bff2b828502b5e5d5ea5a52643d3542053df03f (diff)
Merge tag 'perf-core-for-mingo-5.4-20190920-2' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: perf stat: Srikar Dronamraju: - Fix a segmentation fault when using repeat forever. - Reset previous counts on repeat with interval. aarch64: James Clark: - Add PMU event JSON files for Cortex-A76 and Neoverse N1. PowerPC: Anju T Sudhakar: - Make 'trace_cycles' the default event for 'perf kvm record' in PowerPC. S/390: - Link libjvmti to tools/lib/string.o to have a weak strlcpy() implementation, providing previously unresolved symbol on s/390. perf test: Jiri Olsa: - Add libperf automated tests to 'make -C tools/perf build-test'. Colin Ian King: - Fix spelling mistake. Tree wide: Arnaldo Carvalho de Melo: - Some more header file sanitization. libperf: Jiri Olsa: - Add dependency on libperf for python.so binding. libtraceevent: Sakari Ailus: - Convert remaining %p[fF] users to %p[sS]. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/arch')
-rw-r--r--tools/perf/arch/arm/util/cs-etm.c2
-rw-r--r--tools/perf/arch/arm64/util/arm-spe.c2
-rw-r--r--tools/perf/arch/arm64/util/dwarf-regs.c1
-rw-r--r--tools/perf/arch/arm64/util/header.c4
-rw-r--r--tools/perf/arch/arm64/util/unwind-libunwind.c2
-rw-r--r--tools/perf/arch/powerpc/util/dwarf-regs.c1
-rw-r--r--tools/perf/arch/powerpc/util/header.c1
-rw-r--r--tools/perf/arch/powerpc/util/kvm-stat.c45
-rw-r--r--tools/perf/arch/powerpc/util/skip-callchain-idx.c1
-rw-r--r--tools/perf/arch/powerpc/util/sym-handling.c1
-rw-r--r--tools/perf/arch/s390/util/machine.c2
-rw-r--r--tools/perf/arch/x86/tests/intel-cqm.c1
-rw-r--r--tools/perf/arch/x86/tests/perf-time-to-tsc.c1
-rw-r--r--tools/perf/arch/x86/tests/rdpmc.c2
-rw-r--r--tools/perf/arch/x86/util/archinsn.c1
-rw-r--r--tools/perf/arch/x86/util/event.c2
-rw-r--r--tools/perf/arch/x86/util/intel-bts.c2
-rw-r--r--tools/perf/arch/x86/util/intel-pt.c2
-rw-r--r--tools/perf/arch/x86/util/machine.c3
-rw-r--r--tools/perf/arch/x86/util/tsc.c2
20 files changed, 63 insertions, 15 deletions
diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index c32db09baf0d..5d120b1e35ed 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -25,7 +25,7 @@
25#include "../../util/evsel.h" 25#include "../../util/evsel.h"
26#include "../../util/pmu.h" 26#include "../../util/pmu.h"
27#include "../../util/cs-etm.h" 27#include "../../util/cs-etm.h"
28#include "../../util/util.h" 28#include "../../util/util.h" // page_size
29#include "../../util/session.h" 29#include "../../util/session.h"
30 30
31#include <errno.h> 31#include <errno.h>
diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/util/arm-spe.c
index 4b364692da67..eebbf31f995c 100644
--- a/tools/perf/arch/arm64/util/arm-spe.c
+++ b/tools/perf/arch/arm64/util/arm-spe.c
@@ -16,7 +16,7 @@
16#include "../../util/evsel.h" 16#include "../../util/evsel.h"
17#include "../../util/evlist.h" 17#include "../../util/evlist.h"
18#include "../../util/session.h" 18#include "../../util/session.h"
19#include "../../util/util.h" 19#include "../../util/util.h" // page_size
20#include "../../util/pmu.h" 20#include "../../util/pmu.h"
21#include "../../util/debug.h" 21#include "../../util/debug.h"
22#include "../../util/auxtrace.h" 22#include "../../util/auxtrace.h"
diff --git a/tools/perf/arch/arm64/util/dwarf-regs.c b/tools/perf/arch/arm64/util/dwarf-regs.c
index b047b882c5b1..917b97d7c5d3 100644
--- a/tools/perf/arch/arm64/util/dwarf-regs.c
+++ b/tools/perf/arch/arm64/util/dwarf-regs.c
@@ -11,7 +11,6 @@
11#include <dwarf-regs.h> 11#include <dwarf-regs.h>
12#include <linux/ptrace.h> /* for struct user_pt_regs */ 12#include <linux/ptrace.h> /* for struct user_pt_regs */
13#include <linux/stringify.h> 13#include <linux/stringify.h>
14#include "util.h"
15 14
16struct pt_regs_dwarfnum { 15struct pt_regs_dwarfnum {
17 const char *name; 16 const char *name;
diff --git a/tools/perf/arch/arm64/util/header.c b/tools/perf/arch/arm64/util/header.c
index e41defaaa2e6..a32e4b72a98f 100644
--- a/tools/perf/arch/arm64/util/header.c
+++ b/tools/perf/arch/arm64/util/header.c
@@ -1,5 +1,7 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <stdlib.h> 2#include <stdlib.h>
3#include <perf/cpumap.h>
4#include <internal/cpumap.h>
3#include <api/fs/fs.h> 5#include <api/fs/fs.h>
4#include "debug.h" 6#include "debug.h"
5#include "header.h" 7#include "header.h"
@@ -29,7 +31,7 @@ char *get_cpuid_str(struct perf_pmu *pmu)
29 31
30 /* read midr from list of cpus mapped to this pmu */ 32 /* read midr from list of cpus mapped to this pmu */
31 cpus = perf_cpu_map__get(pmu->cpus); 33 cpus = perf_cpu_map__get(pmu->cpus);
32 for (cpu = 0; cpu < cpus->nr; cpu++) { 34 for (cpu = 0; cpu < perf_cpu_map__nr(cpus); cpu++) {
33 scnprintf(path, PATH_MAX, "%s/devices/system/cpu/cpu%d"MIDR, 35 scnprintf(path, PATH_MAX, "%s/devices/system/cpu/cpu%d"MIDR,
34 sysfs, cpus->map[cpu]); 36 sysfs, cpus->map[cpu]);
35 37
diff --git a/tools/perf/arch/arm64/util/unwind-libunwind.c b/tools/perf/arch/arm64/util/unwind-libunwind.c
index 002520d4036b..1495a9523a23 100644
--- a/tools/perf/arch/arm64/util/unwind-libunwind.c
+++ b/tools/perf/arch/arm64/util/unwind-libunwind.c
@@ -5,8 +5,8 @@
5#include <libunwind.h> 5#include <libunwind.h>
6#include "perf_regs.h" 6#include "perf_regs.h"
7#include "../../util/unwind.h" 7#include "../../util/unwind.h"
8#include "../../util/debug.h"
9#endif 8#endif
9#include "../../util/debug.h"
10 10
11int LIBUNWIND__ARCH_REG_ID(int regnum) 11int LIBUNWIND__ARCH_REG_ID(int regnum)
12{ 12{
diff --git a/tools/perf/arch/powerpc/util/dwarf-regs.c b/tools/perf/arch/powerpc/util/dwarf-regs.c
index 4952890b9428..0c4f4caf53ac 100644
--- a/tools/perf/arch/powerpc/util/dwarf-regs.c
+++ b/tools/perf/arch/powerpc/util/dwarf-regs.c
@@ -12,7 +12,6 @@
12#include <linux/ptrace.h> 12#include <linux/ptrace.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/stringify.h> 14#include <linux/stringify.h>
15#include "util.h"
16 15
17struct pt_regs_dwarfnum { 16struct pt_regs_dwarfnum {
18 const char *name; 17 const char *name;
diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c
index 0b242664f5ea..b6b7bc7e31a1 100644
--- a/tools/perf/arch/powerpc/util/header.c
+++ b/tools/perf/arch/powerpc/util/header.c
@@ -6,7 +6,6 @@
6#include <string.h> 6#include <string.h>
7#include <linux/stringify.h> 7#include <linux/stringify.h>
8#include "header.h" 8#include "header.h"
9#include "util.h"
10 9
11#define mfspr(rn) ({unsigned long rval; \ 10#define mfspr(rn) ({unsigned long rval; \
12 asm volatile("mfspr %0," __stringify(rn) \ 11 asm volatile("mfspr %0," __stringify(rn) \
diff --git a/tools/perf/arch/powerpc/util/kvm-stat.c b/tools/perf/arch/powerpc/util/kvm-stat.c
index f0dbf7b075c8..9cc1c4a9dec4 100644
--- a/tools/perf/arch/powerpc/util/kvm-stat.c
+++ b/tools/perf/arch/powerpc/util/kvm-stat.c
@@ -5,9 +5,11 @@
5#include "util/debug.h" 5#include "util/debug.h"
6#include "util/evsel.h" 6#include "util/evsel.h"
7#include "util/evlist.h" 7#include "util/evlist.h"
8#include "util/pmu.h"
8 9
9#include "book3s_hv_exits.h" 10#include "book3s_hv_exits.h"
10#include "book3s_hcalls.h" 11#include "book3s_hcalls.h"
12#include <subcmd/parse-options.h>
11 13
12#define NR_TPS 4 14#define NR_TPS 4
13 15
@@ -172,3 +174,46 @@ int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid __maybe_unused)
172 174
173 return ret; 175 return ret;
174} 176}
177
178/*
179 * Incase of powerpc architecture, pmu registers are programmable
180 * by guest kernel. So monitoring guest via host may not provide
181 * valid samples with default 'cycles' event. It is better to use
182 * 'trace_imc/trace_cycles' event for guest profiling, since it
183 * can track the guest instruction pointer in the trace-record.
184 *
185 * Function to parse the arguments and return appropriate values.
186 */
187int kvm_add_default_arch_event(int *argc, const char **argv)
188{
189 const char **tmp;
190 bool event = false;
191 int i, j = *argc;
192
193 const struct option event_options[] = {
194 OPT_BOOLEAN('e', "event", &event, NULL),
195 OPT_END()
196 };
197
198 tmp = calloc(j + 1, sizeof(char *));
199 if (!tmp)
200 return -EINVAL;
201
202 for (i = 0; i < j; i++)
203 tmp[i] = argv[i];
204
205 parse_options(j, tmp, event_options, NULL, PARSE_OPT_KEEP_UNKNOWN);
206 if (!event) {
207 if (pmu_have_event("trace_imc", "trace_cycles")) {
208 argv[j++] = strdup("-e");
209 argv[j++] = strdup("trace_imc/trace_cycles/");
210 *argc += 2;
211 } else {
212 free(tmp);
213 return -EINVAL;
214 }
215 }
216
217 free(tmp);
218 return 0;
219}
diff --git a/tools/perf/arch/powerpc/util/skip-callchain-idx.c b/tools/perf/arch/powerpc/util/skip-callchain-idx.c
index fc9c2f5fcd52..3018a054526a 100644
--- a/tools/perf/arch/powerpc/util/skip-callchain-idx.c
+++ b/tools/perf/arch/powerpc/util/skip-callchain-idx.c
@@ -13,6 +13,7 @@
13#include "util/callchain.h" 13#include "util/callchain.h"
14#include "util/debug.h" 14#include "util/debug.h"
15#include "util/dso.h" 15#include "util/dso.h"
16#include "util/event.h" // struct ip_callchain
16#include "util/map.h" 17#include "util/map.h"
17#include "util/symbol.h" 18#include "util/symbol.h"
18 19
diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c
index 8a4b717e0a53..abb7a12d8f93 100644
--- a/tools/perf/arch/powerpc/util/sym-handling.c
+++ b/tools/perf/arch/powerpc/util/sym-handling.c
@@ -4,7 +4,6 @@
4 * Copyright (C) 2015 Naveen N. Rao, IBM Corporation 4 * Copyright (C) 2015 Naveen N. Rao, IBM Corporation
5 */ 5 */
6 6
7#include "debug.h"
8#include "dso.h" 7#include "dso.h"
9#include "symbol.h" 8#include "symbol.h"
10#include "map.h" 9#include "map.h"
diff --git a/tools/perf/arch/s390/util/machine.c b/tools/perf/arch/s390/util/machine.c
index c8c86a0c9b79..df099d6cc3f5 100644
--- a/tools/perf/arch/s390/util/machine.c
+++ b/tools/perf/arch/s390/util/machine.c
@@ -2,7 +2,7 @@
2#include <unistd.h> 2#include <unistd.h>
3#include <stdio.h> 3#include <stdio.h>
4#include <string.h> 4#include <string.h>
5#include "util.h" 5#include "util.h" // page_size
6#include "machine.h" 6#include "machine.h"
7#include "api/fs/fs.h" 7#include "api/fs/fs.h"
8#include "debug.h" 8#include "debug.h"
diff --git a/tools/perf/arch/x86/tests/intel-cqm.c b/tools/perf/arch/x86/tests/intel-cqm.c
index 3b5cc3373821..111c0ab2e7b5 100644
--- a/tools/perf/arch/x86/tests/intel-cqm.c
+++ b/tools/perf/arch/x86/tests/intel-cqm.c
@@ -5,7 +5,6 @@
5#include "evlist.h" 5#include "evlist.h"
6#include "evsel.h" 6#include "evsel.h"
7#include "arch-tests.h" 7#include "arch-tests.h"
8#include "util.h"
9 8
10#include <signal.h> 9#include <signal.h>
11#include <sys/mman.h> 10#include <sys/mman.h>
diff --git a/tools/perf/arch/x86/tests/perf-time-to-tsc.c b/tools/perf/arch/x86/tests/perf-time-to-tsc.c
index eb3635941c2b..0a4570b340fa 100644
--- a/tools/perf/arch/x86/tests/perf-time-to-tsc.c
+++ b/tools/perf/arch/x86/tests/perf-time-to-tsc.c
@@ -15,7 +15,6 @@
15#include "evlist.h" 15#include "evlist.h"
16#include "evsel.h" 16#include "evsel.h"
17#include "thread_map.h" 17#include "thread_map.h"
18#include "cpumap.h"
19#include "record.h" 18#include "record.h"
20#include "tsc.h" 19#include "tsc.h"
21#include "tests/tests.h" 20#include "tests/tests.h"
diff --git a/tools/perf/arch/x86/tests/rdpmc.c b/tools/perf/arch/x86/tests/rdpmc.c
index 6e67cee792b1..e7640fb047de 100644
--- a/tools/perf/arch/x86/tests/rdpmc.c
+++ b/tools/perf/arch/x86/tests/rdpmc.c
@@ -13,7 +13,7 @@
13#include "tests/tests.h" 13#include "tests/tests.h"
14#include "cloexec.h" 14#include "cloexec.h"
15#include "event.h" 15#include "event.h"
16#include "util.h" 16#include "util.h" // page_size
17#include "arch-tests.h" 17#include "arch-tests.h"
18 18
19static u64 rdpmc(unsigned int counter) 19static u64 rdpmc(unsigned int counter)
diff --git a/tools/perf/arch/x86/util/archinsn.c b/tools/perf/arch/x86/util/archinsn.c
index 9876c7a7ed7c..3e6791531ca5 100644
--- a/tools/perf/arch/x86/util/archinsn.c
+++ b/tools/perf/arch/x86/util/archinsn.c
@@ -1,6 +1,7 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2#include "../../../../arch/x86/include/asm/insn.h" 2#include "../../../../arch/x86/include/asm/insn.h"
3#include "archinsn.h" 3#include "archinsn.h"
4#include "event.h"
4#include "machine.h" 5#include "machine.h"
5#include "thread.h" 6#include "thread.h"
6#include "symbol.h" 7#include "symbol.h"
diff --git a/tools/perf/arch/x86/util/event.c b/tools/perf/arch/x86/util/event.c
index a3a0b6884779..d357c625c09f 100644
--- a/tools/perf/arch/x86/util/event.c
+++ b/tools/perf/arch/x86/util/event.c
@@ -3,6 +3,8 @@
3#include <linux/string.h> 3#include <linux/string.h>
4#include <linux/zalloc.h> 4#include <linux/zalloc.h>
5 5
6#include "../../util/event.h"
7#include "../../util/synthetic-events.h"
6#include "../../util/machine.h" 8#include "../../util/machine.h"
7#include "../../util/tool.h" 9#include "../../util/tool.h"
8#include "../../util/map.h" 10#include "../../util/map.h"
diff --git a/tools/perf/arch/x86/util/intel-bts.c b/tools/perf/arch/x86/util/intel-bts.c
index d263430c045f..090d90e093df 100644
--- a/tools/perf/arch/x86/util/intel-bts.c
+++ b/tools/perf/arch/x86/util/intel-bts.c
@@ -22,7 +22,7 @@
22#include "../../util/tsc.h" 22#include "../../util/tsc.h"
23#include "../../util/auxtrace.h" 23#include "../../util/auxtrace.h"
24#include "../../util/intel-bts.h" 24#include "../../util/intel-bts.h"
25#include "../../util/util.h" 25#include "../../util/util.h" // page_size
26 26
27#define KiB(x) ((x) * 1024) 27#define KiB(x) ((x) * 1024)
28#define MiB(x) ((x) * 1024 * 1024) 28#define MiB(x) ((x) * 1024 * 1024)
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
index cb7cf16af79c..3d041b89f018 100644
--- a/tools/perf/arch/x86/util/intel-pt.c
+++ b/tools/perf/arch/x86/util/intel-pt.c
@@ -26,7 +26,7 @@
26#include "../../util/record.h" 26#include "../../util/record.h"
27#include "../../util/target.h" 27#include "../../util/target.h"
28#include "../../util/tsc.h" 28#include "../../util/tsc.h"
29#include "../../util/util.h" 29#include "../../util/util.h" // page_size
30#include "../../util/intel-pt.h" 30#include "../../util/intel-pt.h"
31 31
32#define KiB(x) ((x) * 1024) 32#define KiB(x) ((x) * 1024)
diff --git a/tools/perf/arch/x86/util/machine.c b/tools/perf/arch/x86/util/machine.c
index 1e9ec783b9a1..f0c289862f9f 100644
--- a/tools/perf/arch/x86/util/machine.c
+++ b/tools/perf/arch/x86/util/machine.c
@@ -1,9 +1,10 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2#include <linux/types.h> 2#include <linux/types.h>
3#include <linux/string.h> 3#include <linux/string.h>
4#include <limits.h>
4#include <stdlib.h> 5#include <stdlib.h>
5 6
6#include "../../util/util.h" 7#include "../../util/util.h" // page_size
7#include "../../util/machine.h" 8#include "../../util/machine.h"
8#include "../../util/map.h" 9#include "../../util/map.h"
9#include "../../util/symbol.h" 10#include "../../util/symbol.h"
diff --git a/tools/perf/arch/x86/util/tsc.c b/tools/perf/arch/x86/util/tsc.c
index c5197a15119b..2f55afb14e1f 100644
--- a/tools/perf/arch/x86/util/tsc.c
+++ b/tools/perf/arch/x86/util/tsc.c
@@ -8,6 +8,8 @@
8#include <linux/types.h> 8#include <linux/types.h>
9#include <asm/barrier.h> 9#include <asm/barrier.h>
10#include "../../../util/debug.h" 10#include "../../../util/debug.h"
11#include "../../../util/event.h"
12#include "../../../util/synthetic-events.h"
11#include "../../../util/tsc.h" 13#include "../../../util/tsc.h"
12 14
13int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc, 15int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc,