linux_dsm_epyc7002/tools/perf/util
Alexey Budankov 2566349648 perf record: Enable LBR callstack capture jointly with thread stack
Enable '-j stack' applicability together with '--call-graph dwarf'
option so thread stack data and LBR call stack could be captured
jointly:

  $ perf record -g --call-graph dwarf,1024 -j stack,u -- stack_test

Collected LBR call stack can be used to augment DWARF call stack
calculated from the raw thread stack data and to provide more
comprehensive call stack information for cases when collected SIZE is
not enough to cover complete thread stack.

Such cases are typical for workloads that allocate large arrays of data
on its threads stacks or the possible SIZE to collect can't be large
enough due to workload nature or system configuration and this is where
hardware captured LBR call stacks can provide missing stack frames.
Possible DWARF plus LBR call stacks consolidation algorithm description
follows.

With this patch set perf report command UI currently ignores collected
LBR call stack data and still provides DWARF based call stacks
information.

  ===========================================================================

  Overview:

   Legend:

   THS - thread stack
   CTX - thread register context
   SWS - software stack
   SSF - skipped stack frames
   PSS - Perf sample stack

   ip,sp,bp - HW registers values
   d        - allocated stack regions
   kip      - ip address in the kernel space
   K        - captured thread stack size

        THS

       -----
       |   |<-stack bottom
        ...
       |---|
       |ip4|
       |---|         PSS = SWS(THS(K))
       |   |
   --> |   |
   |   |d3 |                  user/
   |   |---|         user PSS kernel PSS
   |   |ip3|         ------   ------
   |   |---|         |SSF |   |SSF |
   |   |   |          ....     ....
   |   |   |         ------   ------
   |   |d2 |         | -1 |   | -1 |
       |---|   user  ------   ------
   K   |ip2|   CTX   |ip3 |   |ip3 |
       |---|         |----|   |----|
   |   |d1 |   ...   |ip2 | , |ip2 |
   |   |---|  |---|  |----|   |----|
   |   |ip1|  |bp0|  |ip1 |   |ip1 |
   |   |---|  |---|  |----|   |----|
   |   |   |  |ip0|->|ip0 |   |ip0 |<-user stack top
   |   |   |  |---|  ------   ------
   |   |   |<-|sp0|<-stack    |kip0|<-kernel stack bottom
   --> -----  -----   top     |----|
                              |kip1|
                              |----|
		              |kip2|
		              |----|
                               ....
			      |    |<-kernel stack top
                              ------

  Algorithm details:

   Legend:

   HWS - hardware stack
   K-SWS - kernel software stack

			 BRANCH
			 TABLE

		 HWS      ip   ip
			  from to
		 ------  -----------
		 |ip7`|  |ip7`|    |
		 |----|  |----|----|
		 |ip6`|  |ip6`|    |
	user PSS |----|  |----|----|
		 |ip5`|  |ip5`|    |
	------   |----|  |----|----|
	| -1 |   |ip4`|  |ip4`|    |
	------   |----|  |----|----|
	|ip3 |~~~|ip3`|  |ip3`|    |
	|----|   |----|  |----|----|
	|ip2 |~~~|ip2`|  |ip2`|    |
	|----| 	 |----|  |----|----|
	|ip1 |~~~|ip1`|  |ip1`|ip0`|
	|----| 	 |----|  -----------
	|ip0 |~~~|ip0`|<---------'
	------   ------

	1. if (sym(ipj) == sym(ipj`)), j=0-3 ===> user PSS
	2. ipj`                      , j=4-7 ===> user PSS

  Augmented PSS = A_SWS(SWS(THS(K)), HWS):

	         user/
       user PSS  kernel PSS

	------   ------
	|ip7`|   |ip7`|<-user PSS bottom
	|----|   |----|
	|ip6`|   |ip6`|
	|----|   |----|
    HWS	|ip5`|   |ip5`|
	|----|   |----|
	|ip4`|   |ip4`|
	------   ------
	|ip3 |   |ip3 |
	|----|   |----|
    SWS |ip2 |   |ip2 |
	|----|   |----|
	|ip1 |   |ip1 |
	|----|   |----|
	|ip0 |   |ip0 |<-user PSS top
	------   ------
		 |kip0|<-kernel PSS bottom
		 |----|
		 |kip1|
	   K-SWS |----|
		 |kip2|
		 |----|
		 |kip3|<-kernel PSS top
		 ------

                  APSS

Committer testing:

Before:

  # perf record -g --call-graph dwarf,1024 -j stack,u ls > /dev/null
  unknown branch filter stack, check man page

   Usage: perf record [<options>] [<command>]
      or: perf record [<options>] -- <command> [<options>]

      -j, --branch-filter <branch filter mask>
                            branch stack filter modes
  # perf record -g --call-graph dwarf,1024 -j u ls > /dev/null
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.054 MB perf.data (12 samples) ]
  # perf evlist -v
  cycles: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CALLCHAIN|PERIOD|BRANCH_STACK|REGS_USER|STACK_USER|DATA_SRC, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, mmap_data: 1, sample_id_all: 1, exclude_guest: 1, exclude_callchain_user: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1, branch_sample_type: ANY, sample_regs_user: 0xff0fff, sample_stack_user: 1024
   #

After:

  # perf record -g --call-graph dwarf,1024 -j stack,u ls > /dev/null
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.044 MB perf.data (11 samples) ]
  [root@quaco ~]# perf evlist -v
  cycles: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CALLCHAIN|PERIOD|BRANCH_STACK|REGS_USER|STACK_USER|DATA_SRC, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, mmap_data: 1, sample_id_all: 1, exclude_guest: 1, exclude_callchain_user: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1, branch_sample_type: USER|CALL_STACK, sample_regs_user: 0xff0fff, sample_stack_user: 1024
  #

Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/e9e00090-66fb-d2a4-c90f-1d12344f7788@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2019-08-20 12:18:58 -03:00
..
c++ perf clang: Remove needless extra semicolon 2019-03-06 09:47:48 -03:00
cs-etm-decoder tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
include perf tools: Remove old baggage that is util/include/linux/ctype.h 2019-06-25 18:31:12 -03:00
intel-pt-decoder tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
libunwind
scripting-engines libperf: Add threads to struct perf_evsel 2019-07-29 18:34:45 -03:00
annotate.c Merge remote-tracking branch 'torvalds/master' into perf/core 2019-08-12 16:25:00 -03:00
annotate.h libperf: Add nr_entries to struct perf_evlist 2019-07-29 18:34:45 -03:00
archinsn.h perf script: Support insn output for normal samples 2019-03-11 11:56:02 -03:00
arm-spe-pkt-decoder.c
arm-spe-pkt-decoder.h
arm-spe.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
arm-spe.h
auxtrace.c perf tools: Add itrace option 'o' to synthesize aux-output events 2019-08-14 10:59:59 -03:00
auxtrace.h perf tools: Add itrace option 'o' to synthesize aux-output events 2019-08-14 10:59:59 -03:00
block-range.c perf block-range: Add missing headers 2019-01-25 15:12:09 +01:00
block-range.h perf block-range: Add missing headers 2019-01-25 15:12:09 +01:00
bpf_map.c perf bpf: Add bpf_map dumper 2019-02-19 16:11:56 -03:00
bpf_map.h perf bpf: Add bpf_map dumper 2019-02-19 16:11:56 -03:00
bpf-event.c perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
bpf-event.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
bpf-loader.c libperf: Move fd array from perf's evsel to lobperf's perf_evsel class 2019-07-29 18:34:46 -03:00
bpf-loader.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
bpf-prologue.c docs: Fix some broken references 2018-06-15 18:10:01 -03:00
bpf-prologue.h
branch.c
branch.h perf tools: Move branch structs to branch.h 2019-01-25 15:12:08 +01:00
Build perf evswitch: Move switch logic to use in other tools 2019-08-15 12:24:31 -03:00
build-id.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
build-id.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
cache.h
call-path.c perf tools: Use list_del_init() more thorougly 2019-07-09 10:13:27 -03:00
call-path.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
callchain.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
callchain.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
cap.c perf tools: Add helpers to use capabilities if present 2019-08-14 10:48:39 -03:00
cap.h perf tools: Add CAP_SYSLOG define for older systems 2019-08-14 10:59:59 -03:00
cgroup.c libperf: Include perf_evlist in evlist object 2019-07-29 18:34:44 -03:00
cgroup.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
cloexec.c perf tools: Remove needless asm/unistd.h include fixing build in some places 2019-05-02 16:00:20 -04:00
cloexec.h
color_config.c perf utils: Move perf_config using routines from color.c to separate object 2019-01-21 17:38:56 -03:00
color.c perf utils: Move perf_config using routines from color.c to separate object 2019-01-21 17:38:56 -03:00
color.h perf color: Add missing stdarg.g to color.h 2019-01-25 15:12:08 +01:00
comm.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
comm.h perf comm: Remove needless headers from comm.h 2019-01-25 15:12:09 +01:00
compress.h perf report: Implement perf.data record decompression 2019-05-15 16:36:49 -03:00
config.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
config.h perf config: Call perf_config__init() lazily 2018-05-16 16:11:09 -03:00
counts.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
counts.h libperf: Adopt perf_evsel__read() function from tools/perf 2019-07-29 18:34:46 -03:00
cpu-set-sched.h perf tools: Add fallback versions for CPU_{OR,EQUAL}() 2019-02-06 10:00:39 -03:00
cpumap.c Merge remote-tracking branch 'torvalds/master' into perf/core 2019-08-12 16:25:00 -03:00
cpumap.h libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
cputopo.c libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
cputopo.h perf header: Add die information in CPU topology 2019-06-10 15:50:02 -03:00
cs-etm.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
cs-etm.h perf cs-etm: Remove duplicate GENMASK() define, use linux/bits.h instead 2019-06-10 16:20:11 -03:00
data-convert-bt.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
data-convert-bt.h
data-convert.h
data.c perf tools: Use zfree() where applicable 2019-07-09 10:13:27 -03:00
data.h perf record: Allow to limit number of reported perf.data files 2019-03-19 11:56:20 -03:00
db-export.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
db-export.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
debug.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
debug.h
demangle-java.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
demangle-java.h
demangle-rust.c
demangle-rust.h
dso.c perf tools: Use list_del_init() more thorougly 2019-07-09 10:13:27 -03:00
dso.h perf symbols: Introduce DSO_BINARY_TYPE__BPF_PROG_INFO 2019-03-19 16:52:07 -03:00
dump-insn.c perf script: Fix LBR skid dump problems in brstackinsn 2018-12-28 16:33:02 -03:00
dump-insn.h perf script: Fix LBR skid dump problems in brstackinsn 2018-12-28 16:33:02 -03:00
dwarf-aux.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
dwarf-aux.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dwarf-regs.c
env.c libperf: Add perf_cpu_map__get()/perf_cpu_map__put() 2019-07-29 18:34:44 -03:00
env.h perf cpu_map: Rename struct cpu_map to struct perf_cpu_map 2019-07-29 18:34:42 -03:00
event.c libperf: Add perf_thread_map__get()/perf_thread_map__put() 2019-07-29 18:34:44 -03:00
event.h perf tools: Add helpers to use capabilities if present 2019-08-14 10:48:39 -03:00
evlist.c libperf: Adopt perf_evsel__enable()/disable()/apply_filter() functions 2019-07-29 18:34:46 -03:00
evlist.h libperf: Add perf_evlist__set_maps() function 2019-07-29 18:34:45 -03:00
evsel_fprintf.c libperf: Move nr_members from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:46 -03:00
evsel.c perf evsel: Provide meaningful warning when trying to use 'aux_output' on older kernels 2019-08-14 10:59:59 -03:00
evsel.h perf evsel: Add comment for 'idx' member in 'struct perf_sample_id 2019-08-20 12:17:45 -03:00
evswitch.c perf evswitch: Add hint when not finding specified on/off events 2019-08-15 12:26:13 -03:00
evswitch.h perf evswitch: Introduce init() method to set the on/off evsels from the command line 2019-08-15 12:25:55 -03:00
expr.h
expr.y
find-map.c perf tools: Make find_vdso_map() more modular 2019-01-08 13:28:13 -03:00
genelf_debug.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 479 2019-06-19 17:09:51 +02:00
genelf.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 251 2019-06-05 17:30:26 +02:00
genelf.h perf jitdump: Add Sparc support. 2018-10-18 11:16:38 -03:00
generate-cmdlist.sh perf tools: Rename HAVE_SYSCALL_TABLE to HAVE_SYSCALL_TABLE_SUPPORT 2018-04-12 10:33:31 -03:00
get_current_dir_name.c perf tools: Move get_current_dir_name() cond prototype out of util.h 2019-07-09 10:13:26 -03:00
get_current_dir_name.h perf tools: Move get_current_dir_name() cond prototype out of util.h 2019-07-09 10:13:26 -03:00
group.h
header.c perf record: Support aarch64 random socket_id assignment 2019-08-14 11:00:00 -03:00
header.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
help-unknown-cmd.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
help-unknown-cmd.h
hist.c perf hist: Remove dummy entries when finding real ones. 2019-08-12 16:26:02 -03:00
hist.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
intel-bts.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
intel-bts.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
intel-pt.c perf intel-pt: Process options for PEBS event synthesis 2019-08-14 10:59:59 -03:00
intel-pt.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
intlist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 305 2019-06-05 17:37:04 +02:00
intlist.h perf util: Use cached rbtree for rblists 2019-01-25 15:12:10 +01:00
jit.h
jitdump.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
jitdump.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 480 2019-06-19 17:09:51 +02:00
kvm-stat.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
levenshtein.c
levenshtein.h
llvm-utils.c perf tools: Use zfree() where applicable 2019-07-09 10:13:27 -03:00
llvm-utils.h perf llvm: Allow passing options to llc in addition to clang 2018-08-20 08:54:58 -03:00
lzma.c perf tools: Add lzma_is_compressed function 2018-08-20 08:54:59 -03:00
machine.c Merge remote-tracking branch 'torvalds/master' into perf/core 2019-08-12 16:25:00 -03:00
machine.h Merge remote-tracking branch 'torvalds/master' into perf/core 2019-08-12 16:25:00 -03:00
map_groups.h perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
map_symbol.h perf symbols: Introduce map_symbol.h 2019-02-06 10:00:38 -03:00
map.c perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
map.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
mem2node.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
mem2node.h
mem-events.c perf mem/c2c: Fix perf_mem_events to support powerpc 2019-02-04 11:32:14 -03:00
mem-events.h
memswap.c
memswap.h
metricgroup.c perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
metricgroup.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
mmap.c perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
mmap.h perf record: Implement compression for AIO trace streaming 2019-05-15 16:36:49 -03:00
namespaces.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
namespaces.h perf namespaces: Move the conditional setns() prototype to namespaces.h 2019-07-09 10:13:26 -03:00
ordered-events.c perf tools: Use list_del_init() more thorougly 2019-07-09 10:13:27 -03:00
ordered-events.h perf ordered_events: Add first_time() method 2018-12-17 15:02:17 -03:00
parse-branch-options.c perf record: Enable LBR callstack capture jointly with thread stack 2019-08-20 12:18:58 -03:00
parse-branch-options.h
parse-events.c perf tools: Add aux-output config term 2019-08-14 10:59:59 -03:00
parse-events.h perf tools: Add aux-output config term 2019-08-14 10:59:59 -03:00
parse-events.l perf tools: Add aux-output config term 2019-08-14 10:59:59 -03:00
parse-events.y perf parse-events: Remove unused variable: error 2019-07-09 10:13:27 -03:00
parse-regs-options.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
parse-regs-options.h perf parse-regs: Split parse_regs 2019-05-15 16:36:49 -03:00
path.c
path.h
perf_regs.c perf parse-regs: Add generic support for arch__intr/user_reg_mask() 2019-05-16 14:17:12 -03:00
perf_regs.h perf record: Allow mixing --user-regs with --call-graph=dwarf 2019-06-05 09:47:54 -03:00
perf-hooks-list.h
perf-hooks.c
perf-hooks.h
PERF-VERSION-GEN perf version: Append 12 git SHA chars to the version string 2019-05-28 18:37:44 -03:00
pmu.c libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
pmu.h perf cpu_map: Rename struct cpu_map to struct perf_cpu_map 2019-07-29 18:34:42 -03:00
pmu.l
pmu.y
print_binary.c tools perf: Move from sane_ctype.h obtained from git to the Linux's original 2019-06-25 21:02:47 -03:00
print_binary.h
probe-event.c perf/urgent fixes: 2019-07-23 23:41:33 +02:00
probe-event.h perf-probe: Add user memory access attribute support 2019-05-25 23:04:42 -04:00
probe-file.c The main changes in this release include: 2019-07-18 11:51:00 -07:00
probe-file.h perf-probe: Add user memory access attribute support 2019-05-25 23:04:42 -04:00
probe-finder.c The main changes in this release include: 2019-07-18 11:51:00 -07:00
probe-finder.h tools perf: Move from sane_ctype.h obtained from git to the Linux's original 2019-06-25 21:02:47 -03:00
pstack.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
pstack.h
python-ext-sources perf tools: Add helpers to use capabilities if present 2019-08-14 10:48:39 -03:00
python.c libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
rb_resort.h perf util: Use cached rbtree for rblists 2019-01-25 15:12:10 +01:00
rblist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 305 2019-06-05 17:37:04 +02:00
rblist.h perf util: Use cached rbtree for rblists 2019-01-25 15:12:10 +01:00
record.c libperf: Add cpus to struct perf_evlist 2019-07-29 18:34:45 -03:00
rlimit.c perf tools: Introduce rlimit__bump_memlock() helper 2019-07-09 14:59:11 -03:00
rlimit.h perf tools: Introduce rlimit__bump_memlock() helper 2019-07-09 14:59:11 -03:00
rwsem.c
rwsem.h
s390-cpumcf-kernel.h perf report: Display arch specific diagnostic counter sets, starting with s390 2019-01-21 17:00:48 -03:00
s390-cpumsf-kernel.h perf report: Add raw report support for s390 auxiliary trace 2018-08-08 15:26:48 -03:00
s390-cpumsf.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
s390-cpumsf.h perf auxtrace: Support for perf report -D for s390 2018-08-03 10:34:18 -03:00
s390-sample-raw.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
sample-raw.c perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
sample-raw.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
session.c perf session: Avoid infinite loop when seeing invalid header.size 2019-08-12 16:26:02 -03:00
session.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
setns.c perf namespaces: Move the conditional setns() prototype to namespaces.h 2019-07-09 10:13:26 -03:00
setup.py perf tools: Add helpers to use capabilities if present 2019-08-14 10:48:39 -03:00
smt.c perf tools: Apply new CPU topology sysfs attributes 2019-06-10 16:20:11 -03:00
smt.h
sort.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
sort.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
srccode.c perf tools: Use list_del_init() more thorougly 2019-07-09 10:13:27 -03:00
srccode.h perf srccode: Move struct definition from map.h to srccode.h 2019-02-06 10:00:38 -03:00
srcline.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
srcline.h perf callchain: Use cached rbtrees 2019-01-25 15:12:09 +01:00
stat-display.c libperf: Move nr_members from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:46 -03:00
stat-shadow.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
stat.c libperf: Move nr_members from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:46 -03:00
stat.h libperf: Adopt xyarray class from perf 2019-07-29 18:34:45 -03:00
strbuf.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
strbuf.h
strfilter.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
strfilter.h
string2.h tools lib: Move argv_{split,free} from tools/perf/util/ 2019-07-01 22:50:40 -03:00
string.c tools lib: Move argv_{split,free} from tools/perf/util/ 2019-07-01 22:50:40 -03:00
strlist.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
strlist.h perf util: Use cached rbtree for rblists 2019-01-25 15:12:10 +01:00
svghelper.c libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions 2019-07-29 18:34:45 -03:00
svghelper.h
symbol_conf.h perf diff: Print the basic block cycles diff 2019-07-02 13:20:51 -03:00
symbol_fprintf.c perf symbols: Use cached rbtrees 2019-01-25 15:12:10 +01:00
symbol-elf.c perf tools: Use list_del_init() more thorougly 2019-07-09 10:13:27 -03:00
symbol-minimal.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
symbol.c perf annotate: Fix s390 gap between kernel end and module start 2019-08-08 15:41:25 -03:00
symbol.h perf annotate: Fix s390 gap between kernel end and module start 2019-08-08 15:41:25 -03:00
syscalltbl.c perf trace: Preallocate the syscall table 2019-07-29 18:34:42 -03:00
syscalltbl.h perf trace: Preallocate the syscall table 2019-07-29 18:34:42 -03:00
target.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
target.h
term.c
term.h
thread_map.c libperf: Add perf_thread_map__get()/perf_thread_map__put() 2019-07-29 18:34:44 -03:00
thread_map.h libperf: Add perf_thread_map__get()/perf_thread_map__put() 2019-07-29 18:34:44 -03:00
thread-stack.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
thread-stack.h perf/core improvements and fixes: 2019-06-17 20:48:14 +02:00
thread.c perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
thread.h perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
time-utils.c perf time-utils: Use skip_spaces() 2019-06-25 21:39:18 -03:00
time-utils.h perf time-utils: Add utility function to print time stamps in nanoseconds 2019-03-11 11:56:02 -03:00
tool.h perf evlist: Rename struct perf_evlist to struct evlist 2019-07-29 18:34:42 -03:00
top.c libperf: Add cpus to struct perf_evlist 2019-07-29 18:34:45 -03:00
top.h perf top: Add --switch-on/--switch-off events 2019-08-15 16:03:26 -03:00
trace-event-info.c libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel 2019-07-29 18:34:45 -03:00
trace-event-parse.c tools perf: Move from sane_ctype.h obtained from git to the Linux's original 2019-06-25 21:02:47 -03:00
trace-event-read.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 393 2019-06-05 17:37:11 +02:00
trace-event-scripting.c perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
trace-event.c tools tools, tools lib traceevent: Make traceevent APIs more consistent 2019-04-01 15:18:09 -03:00
trace-event.h perf evsel: Rename struct perf_evsel to struct evsel 2019-07-29 18:34:42 -03:00
trigger.h
tsc.c
tsc.h
units.c
units.h
unwind-libdw.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
unwind-libdw.h
unwind-libunwind-local.c perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
unwind-libunwind.c perf unwind: Remove unnecessary test 2019-08-16 12:30:14 -03:00
unwind.h perf unwind: Fix libunwind when tid != pid 2019-08-16 12:25:57 -03:00
usage.c perf tools: Add missing headers, mostly stdlib.h 2019-07-09 10:13:22 -03:00
util-cxx.h
util.c perf tools: Add helpers to use capabilities if present 2019-08-14 10:48:39 -03:00
util.h libperf: Adopt the readn()/writen() functions from tools/perf 2019-07-29 18:34:46 -03:00
values.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
values.h
vdso.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
vdso.h
xyarray.c tools lib: Adopt zalloc()/zfree() from tools/perf 2019-07-09 10:13:26 -03:00
zlib.c perf tools: Remove duplicate headers 2019-01-21 15:15:57 -03:00
zstd.c perf session: Fix loading of compressed data split across adjacent records 2019-07-23 09:04:03 -03:00