WSL2-Linux-Kernel/tools/perf/util
Ravi Bangoria dbdebdc538 perf annotate: Initial PowerPC support
Support the PowerPC architecture using the ins_ops association
method.

Committer notes:

Testing it with a perf.data file collected on a PowerPC machine and
cross-annotated on a x86_64 workstation, using the associated vmlinux
file:

$ perf report -i perf.data.f22vm.powerdev --vmlinux vmlinux.powerpc
  .ktime_get  vmlinux.powerpc
        │      clrldi r9,r28,63
   8.57 │   ┌──bne    e0                   <- TUI cursor positioned here
        │54:│  lwsync
   2.86 │   │  std    r2,40(r1)
        │   │  ld     r9,144(r31)
        │   │  ld     r3,136(r31)
        │   │  ld     r30,184(r31)
        │   │  ld     r10,0(r9)
        │   │  mtctr  r10
        │   │  ld     r2,8(r9)
   8.57 │   │→ bctrl
        │   │  ld     r2,40(r1)
        │   │  ld     r10,160(r31)
        │   │  ld     r5,152(r31)
        │   │  lwz    r7,168(r31)
        │   │  ld     r9,176(r31)
   8.57 │   │  lwz    r6,172(r31)
        │   │  lwsync
   2.86 │   │  lwz    r8,128(r31)
        │   │  cmpw   cr7,r8,r28
   2.86 │   │↑ bne    48
        │   │  subf   r10,r10,r3
        │   │  mr     r3,r29
        │   │  and    r10,r10,r5
   2.86 │   │  mulld  r10,r10,r7
        │   │  add    r9,r10,r9
        │   │  srd    r9,r9,r6
        │   │  add    r9,r9,r30
        │   │  std    r9,0(r29)
        │   │  addi   r1,r1,144
        │   │  ld     r0,16(r1)
        │   │  ld     r28,-32(r1)
        │   │  ld     r29,-24(r1)
        │   │  ld     r30,-16(r1)
        │   │  mtlr   r0
        │   │  ld     r31,-8(r1)
        │   │← blr
   5.71 │e0:└─→mr     r1,r1
  11.43 │      mr     r2,r2
  11.43 │      lwz    r28,128(r31)
  Press 'h' for help on key bindings

  $ perf report -i perf.data.f22vm.powerdev --header-only
  # ========
  # captured on: Thu Nov 24 12:40:38 2016
  # hostname : pdev-f22-qemu
  # os release : 4.4.10-200.fc22.ppc64
  # perf version : 4.9.rc1.g6298ce
  # arch : ppc64
  # nrcpus online : 48
  # nrcpus avail : 48
  # cpudesc : POWER7 (architected), altivec supported
  # cpuid : 74,513
  # total memory : 4158976 kB
  # cmdline : /home/ravi/Workspace/linux/tools/perf/perf record -a
  # event : name = cycles:ppp, , size = 112, { sample_period, sample_freq } = 4000, sample_type = IP|TID|TIME|CPU|PERIOD, disabled = 1, inherit = 1, mmap = 1, comm = 1, freq = 1, task = 1, precise_ip = 3, sample_id_all = 1, exclude_guest = 1, mmap2 = 1, comm_exec = 1
  # HEADER_CPU_TOPOLOGY info available, use -I to display
  # HEADER_NUMA_TOPOLOGY info available, use -I to display
  # pmu mappings: cpu = 4, software = 1, tracepoint = 2, breakpoint = 5
  # missing features: HEADER_TRACING_DATA HEADER_BRANCH_STACK HEADER_GROUP_DESC HEADER_AUXTRACE HEADER_STAT HEADER_CACHE
  # ========
  #
  $

Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Kim Phillips <kim.phillips@arm.com>
Link: http://lkml.kernel.org/n/tip-tbjnp40ddoxxl474uvhwi6g4@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-11-25 10:38:56 -03:00
..
include perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
intel-pt-decoder perf intel-pt/bts: Report instruction bytes and length in sample 2016-10-24 10:31:32 -03:00
libunwind perf unwind: Fix wrongly used regs for aarch64 unwind 2016-06-23 10:30:31 -03:00
scripting-engines tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
Build perf jit: Enable jitdump support without dwarf 2016-10-24 11:07:37 -03:00
PERF-VERSION-GEN
alias.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
annotate.c perf annotate: Initial PowerPC support 2016-11-25 10:38:56 -03:00
annotate.h perf annotate: Remove duplicate 'name' field from disasm_line 2016-11-25 10:24:16 -03:00
auxtrace.c perf record: Add support for using symbols in address filters 2016-09-29 11:17:02 -03:00
auxtrace.h perf record: Add support for using symbols in address filters 2016-09-29 11:17:02 -03:00
block-range.c perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
block-range.h perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
bpf-loader.c perf tools: Fix typo "No enough" to "Not enough" 2016-10-24 11:07:42 -03:00
bpf-loader.h perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event() 2016-07-13 23:09:03 -03:00
bpf-prologue.c
bpf-prologue.h
build-id.c perf probe: Increase debug level of SDT debug messages 2016-09-29 11:17:02 -03:00
build-id.h perf probe: Support @BUILDID or @FILE suffix for SDT events 2016-07-13 23:09:08 -03:00
cache.h perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
call-path.c perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
call-path.h perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
callchain.c perf report: Calculate and return the branch flag counting 2016-11-14 13:25:58 -03:00
callchain.h perf report: Calculate and return the branch flag counting 2016-11-14 13:25:58 -03:00
cgroup.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
cgroup.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
cloexec.c perf tools: Introduce weak alternative to sched_getcpu() 2016-07-12 15:20:34 -03:00
cloexec.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
color.c perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
color.h
comm.c
comm.h
config.c perf config: Mark where are config items from (user or system) 2016-11-14 13:10:37 -03:00
config.h perf config: Mark where are config items from (user or system) 2016-11-14 13:10:37 -03:00
counts.c
counts.h
cpumap.c perf cpu_map: Add more helpers 2016-07-18 19:42:47 -03:00
cpumap.h perf cpu_map: Add more helpers 2016-07-18 19:42:47 -03:00
cs-etm.h perf tools: Add coresight etm PMU record capabilities 2016-09-22 12:19:40 -03:00
ctype.c perf ui/stdio: Align column header for hierarchy output 2016-02-24 20:21:12 -03:00
data-convert-bt.c perf data: Fix building in 32 bit platform with libbabeltrace 2016-09-28 10:38:20 -03:00
data-convert-bt.h perf data ctf: Pass convert options through opts structure 2016-06-28 10:54:55 -03:00
data-convert.h perf data ctf: Add 'all' option 2016-06-28 10:54:56 -03:00
data.c tools: Introduce str_error_r() 2016-07-12 15:19:47 -03:00
data.h perf data: Add perf_data_file__switch() helper 2016-04-14 08:57:54 -03:00
db-export.c perf thread: Adopt get_main_thread from db-export.c 2016-05-30 12:41:43 -03:00
db-export.h perf script: Add call path id to exported sample in db export 2016-05-06 13:00:53 -03:00
debug.c tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
debug.h tools: Introduce str_error_r() 2016-07-12 15:19:47 -03:00
demangle-java.c perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-java.h perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-rust.c perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
demangle-rust.h perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
drv_configs.c perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
drv_configs.h perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
dso.c perf symbols: Do not open device files 2016-09-20 16:20:21 -03:00
dso.h perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
dwarf-aux.c perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-aux.h perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-regs.c perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
env.c perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
env.h perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
event.c perf tools: Fix MMAP event synthesis broken by MAP_HUGETLB change 2016-09-28 10:21:15 -03:00
event.h perf intel-pt/bts: Report instruction bytes and length in sample 2016-10-24 10:31:32 -03:00
evlist.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
evlist.h perf evlist: Make {pause,resume} internal helpers 2016-07-15 17:27:50 -03:00
evsel.c perf tools: Show event fd in debug output 2016-11-23 10:44:03 -03:00
evsel.h perf evsel: Support printing callchains with arrows 2016-11-23 10:44:07 -03:00
evsel_fprintf.c perf evsel: Support printing callchains with arrows 2016-11-23 10:44:07 -03:00
find-vdso-map.c
genelf.c perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
genelf.h perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
genelf_debug.c perf jit: add source line info support 2016-02-05 12:33:09 -03:00
generate-cmdlist.sh perf tools: Do not show trace command if it's not compiled in 2016-01-08 12:46:17 -03:00
group.h perf stat: Basic support for TopDown in perf stat 2016-06-06 17:04:15 -03:00
header.c perf header: Display feature name on write failure 2016-10-24 11:07:34 -03:00
header.h perf pmu: Use pmu_events table to create aliases 2016-10-03 19:58:00 -03:00
help-unknown-cmd.c perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
help-unknown-cmd.h
hist.c Merge branch 'linus' into perf/core, to pick up fixes 2016-11-24 05:09:08 +01:00
hist.h perf c2c report: Limit the cachelines table entries 2016-10-21 10:31:57 -03:00
intel-bts.c perf intel-pt/bts: Report instruction bytes and length in sample 2016-10-24 10:31:32 -03:00
intel-bts.h
intel-pt.c perf intel-pt/bts: Report instruction bytes and length in sample 2016-10-24 10:31:32 -03:00
intel-pt.h perf intel-pt: Record address filter in AUXTRACE_INFO event 2016-09-29 11:17:05 -03:00
intlist.c
intlist.h perf intlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:39:19 -03:00
jit.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
jitdump.c perf jit: Check JITHEADER_VERSION 2016-10-24 11:07:40 -03:00
jitdump.h perf jit: Add unwinding support 2016-10-24 11:07:39 -03:00
kvm-stat.h perf kvm/powerpc: Port perf kvm stat to powerpc 2016-01-29 17:49:54 -03:00
levenshtein.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
levenshtein.h
llvm-utils.c perf tools: Fix typo "No enough" to "Not enough" 2016-10-24 11:07:42 -03:00
llvm-utils.h perf llvm: Allow dump llvm output object file using llvm.dump-obj 2016-06-21 13:18:34 -03:00
lzma.c perf tools: Fix error handling of lzma decompression 2016-08-24 11:20:58 -03:00
machine.c perf report: Add branch flag to callchain cursor node 2016-11-14 13:15:56 -03:00
machine.h perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
map.c perf hists browser: Dynamically change verbosity level 2016-10-24 11:07:42 -03:00
map.h perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
mem-events.c perf c2c report: Add struct c2c_stats::tot_hitm field 2016-11-23 10:44:05 -03:00
mem-events.h perf c2c report: Add struct c2c_stats::tot_hitm field 2016-11-23 10:44:05 -03:00
ordered-events.c perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
ordered-events.h perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
parse-branch-options.c perf tools: Add missing object file to the python binding linkage list 2016-10-28 11:29:45 -02:00
parse-branch-options.h perf tools: Implement branch_type event parameter 2016-10-24 11:07:35 -03:00
parse-events.c perf tools: Implement branch_type event parameter 2016-10-24 11:07:35 -03:00
parse-events.h perf list: Support long jevents descriptions 2016-10-03 21:35:47 -03:00
parse-events.l perf jevents: Handle events including .c and .o 2016-10-17 11:24:18 -03:00
parse-events.y perf tools: Add infrastructure for PMU specific configuration 2016-09-13 17:09:11 -03:00
parse-regs-options.c
parse-regs-options.h
path.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
perf_regs.c perf tools: Fix perf regs mask generation 2016-05-11 21:54:06 +10:00
perf_regs.h
pmu.c perf list: Support matching by topic 2016-10-28 11:29:42 -02:00
pmu.h perf list jevents: Add support for event list topics 2016-10-03 21:35:47 -03:00
pmu.l
pmu.y
probe-event.c perf probe: Check if *ptr2 is zero and not ptr2 2016-10-03 11:24:12 -03:00
probe-event.h perf probe: Add helper function to check if probe with variable 2016-09-01 12:42:25 -03:00
probe-file.c perf probe: Increase debug level of SDT debug messages 2016-09-29 11:17:02 -03:00
probe-file.h perf probe: Add supported for type casting by the running kernel 2016-08-23 17:03:31 -03:00
probe-finder.c perf probe: Skip if the function address is 0 2016-09-29 11:17:07 -03:00
probe-finder.h perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
pstack.c
pstack.h
python-ext-sources perf tools: Add missing object file to the python binding linkage list 2016-10-28 11:29:45 -02:00
python.c perf tools: Make is_printable_array global 2016-07-18 19:49:47 -03:00
quote.c perf tools: Normalize sq_quote_argv() error reporting 2016-10-24 11:07:44 -03:00
quote.h perf quote: Disentangle headers 2016-07-12 15:19:55 -03:00
rb_resort.h perf rb_resort: Rename for_each() macros to for_each_entry() 2016-06-23 11:35:07 -03:00
rblist.c
rblist.h
record.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
session.c perf report: Move captured info to generic header info 2016-10-24 11:07:33 -03:00
session.h perf evsel: Move some methods from session.[ch] to evsel.[ch] 2016-04-13 10:11:52 -03:00
setup.py perf tools: Fix python extension build 2016-02-29 11:18:25 -03:00
sort.c perf c2c report: Add src line sort key 2016-10-19 13:18:31 -03:00
sort.h perf c2c report: Add src line sort key 2016-10-19 13:18:31 -03:00
srcline.c
stat-shadow.c perf stat: Add computation of TopDown formulas 2016-06-06 17:04:16 -03:00
stat.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
stat.h perf stat: Add computation of TopDown formulas 2016-06-06 17:04:16 -03:00
strbuf.c perf strbuf: Add missing headers 2016-07-12 15:19:55 -03:00
strbuf.h perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
strfilter.c
strfilter.h
string.c perf list: Make vendor event matching case insensitive 2016-10-24 11:07:46 -03:00
strlist.c perf tools: Add file_only config option to strlist 2016-01-12 12:42:07 -03:00
strlist.h perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
svghelper.c perf timechart: Use NSEC_PER_U?SEC 2016-08-23 15:37:33 -03:00
svghelper.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
symbol-elf.c perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
symbol-minimal.c perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
symbol.c perf symbols: Add dso__last_symbol() 2016-09-29 11:17:01 -03:00
symbol.h perf symbols: Print symbol offsets conditionally 2016-11-23 10:44:06 -03:00
symbol_fprintf.c perf symbols: Print symbol offsets conditionally 2016-11-23 10:44:06 -03:00
syscalltbl.c perf tools: Build syscall table .c header from kernel's syscall_64.tbl 2016-04-08 09:58:14 -03:00
syscalltbl.h perf tools: Allow generating per-arch syscall table arrays 2016-04-08 09:58:14 -03:00
target.c perf target: str_error_r() always returns the buffer it receives 2016-07-29 11:54:35 -03:00
target.h
term.c
term.h
thread-stack.c perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread-stack.h perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
thread.h perf unwind: Move unwind__prepare_access from thread_new into thread__insert_map 2016-06-07 12:08:52 -03:00
thread_map.c perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
thread_map.h perf thread_map: Make new_by_tid_str constructor public 2016-04-13 10:11:51 -03:00
tool.h perf tools: Add time conversion event 2016-03-31 10:52:24 -03:00
top.c
top.h perf top: Use machine->kptr_restrict_warned 2016-05-20 11:43:55 -03:00
trace-event-info.c
trace-event-parse.c
trace-event-read.c
trace-event-scripting.c perf scripting: Don't die if scripting can't be setup, disable it 2016-10-28 11:29:44 -02:00
trace-event.c perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trace-event.h perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trigger.h perf tools: Introduce trigger class 2016-04-28 09:58:58 -03:00
tsc.c perf tools: Use 64-bit shifts with (TSC) time conversion 2016-03-08 10:11:18 +01:00
tsc.h perf jit: Add support for using TSC as a timestamp 2016-04-01 18:42:55 -03:00
unwind-libdw.c perf unwind: Use addr_location::addr instead of ip for entries 2016-08-16 15:23:29 -03:00
unwind-libdw.h
unwind-libunwind-local.c perf jit: Do not assume pgoff is zero 2016-10-24 11:07:39 -03:00
unwind-libunwind.c perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
unwind.h perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
usage.c perf tools: Simplify die() mechanism 2016-03-23 12:32:31 -03:00
util.c perf tools: Introduce timestamp__scnprintf_usec() 2016-10-28 11:29:40 -02:00
util.h perf tools: Introduce timestamp__scnprintf_usec() 2016-10-28 11:29:40 -02:00
values.c perf tools: Use normal error reporting when processing PERF_RECORD_READ events 2016-10-24 11:07:44 -03:00
values.h perf tools: Use normal error reporting when processing PERF_RECORD_READ events 2016-10-24 11:07:44 -03:00
vdso.c perf tools: Find right DSO taking into account if binary is 32 or 64-bit 2016-06-23 10:25:58 -03:00
vdso.h
xyarray.c
xyarray.h
zlib.c