Commit cefec668 authored by Ingo Molnar's avatar Ingo Molnar

Merge tag 'perf-urgent-for-mingo-4.12-20170504' of...

Merge tag 'perf-urgent-for-mingo-4.12-20170504' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent

Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

User visible changes:

- Fix AArch64 objdump disasm comment char in 'perf annotate' (Kim Phillips)

- Fix documentation spelling mistakes (Kim Phillips)

- Don't fail 'perf test kmod-path' if compressed modules aren't
  supported (Kim Phillips)

Infrastructure changes:

- Fix sched_getcpu() feature test when included in test-all.c redefining
  _GNU_SOURCE (Arnaldo Carvalho de Melo)
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents 12c1c2fd 1e6e7eae
#ifndef _GNU_SOURCE
#define _GNU_SOURCE #define _GNU_SOURCE
#endif
#include <sched.h> #include <sched.h>
int main(void) int main(void)
......
...@@ -76,7 +76,7 @@ REPORT OPTIONS ...@@ -76,7 +76,7 @@ REPORT OPTIONS
-c:: -c::
--coalesce:: --coalesce::
Specify sorintg fields for single cacheline display. Specify sorting fields for single cacheline display.
Following fields are available: tid,pid,iaddr,dso Following fields are available: tid,pid,iaddr,dso
(see COALESCE) (see COALESCE)
...@@ -106,7 +106,7 @@ REPORT OPTIONS ...@@ -106,7 +106,7 @@ REPORT OPTIONS
-d:: -d::
--display:: --display::
Siwtch to HITM type (rmt, lcl) to display and sort on. Total HITMs as default. Switch to HITM type (rmt, lcl) to display and sort on. Total HITMs as default.
C2C RECORD C2C RECORD
---------- ----------
......
...@@ -225,7 +225,7 @@ OPTIONS ...@@ -225,7 +225,7 @@ OPTIONS
the libunwind or libdw library) should be used instead. the libunwind or libdw library) should be used instead.
Using the "lbr" method doesn't require any compiler options. It Using the "lbr" method doesn't require any compiler options. It
will produce call graphs from the hardware LBR registers. The will produce call graphs from the hardware LBR registers. The
main limition is that it is only available on new Intel main limitation is that it is only available on new Intel
platforms, such as Haswell. It can only get user call chain. It platforms, such as Haswell. It can only get user call chain. It
doesn't work with branch stack sampling at the same time. doesn't work with branch stack sampling at the same time.
......
...@@ -182,7 +182,7 @@ OPTIONS ...@@ -182,7 +182,7 @@ OPTIONS
--parent=<regex>:: --parent=<regex>::
A regex filter to identify parent. The parent is a caller of this A regex filter to identify parent. The parent is a caller of this
function and searched through the callchain, thus it requires callchain function and searched through the callchain, thus it requires callchain
information recorded. The pattern is in the exteneded regex format and information recorded. The pattern is in the extended regex format and
defaults to "\^sys_|^do_page_fault", see '--sort parent'. defaults to "\^sys_|^do_page_fault", see '--sort parent'.
-x:: -x::
...@@ -207,8 +207,8 @@ OPTIONS ...@@ -207,8 +207,8 @@ OPTIONS
-g:: -g::
--call-graph=<print_type,threshold[,print_limit],order,sort_key[,branch],value>:: --call-graph=<print_type,threshold[,print_limit],order,sort_key[,branch],value>::
Display call chains using type, min percent threshold, print limit, Display call chains using type, min percent threshold, print limit,
call order, sort key, optional branch and value. Note that ordering of call order, sort key, optional branch and value. Note that ordering
parameters is not fixed so any parement can be given in an arbitraty order. is not fixed so any parameter can be given in an arbitrary order.
One exception is the print_limit which should be preceded by threshold. One exception is the print_limit which should be preceded by threshold.
print_type can be either: print_type can be either:
......
...@@ -270,7 +270,7 @@ When the event stream contains multiple events each event is identified ...@@ -270,7 +270,7 @@ When the event stream contains multiple events each event is identified
by an ID. This can be either through the PERF_SAMPLE_ID or the by an ID. This can be either through the PERF_SAMPLE_ID or the
PERF_SAMPLE_IDENTIFIER header. The PERF_SAMPLE_IDENTIFIER header is PERF_SAMPLE_IDENTIFIER header. The PERF_SAMPLE_IDENTIFIER header is
at a fixed offset from the event header, which allows reliable at a fixed offset from the event header, which allows reliable
parsing of the header. Relying on ID may be ambigious. parsing of the header. Relying on ID may be ambiguous.
IDENTIFIER is only supported by newer Linux kernels. IDENTIFIER is only supported by newer Linux kernels.
Perf record specific events: Perf record specific events:
...@@ -288,7 +288,7 @@ struct attr_event { ...@@ -288,7 +288,7 @@ struct attr_event {
uint64_t id[]; uint64_t id[];
}; };
PERF_RECORD_HEADER_EVENT_TYPE = 65, /* depreceated */ PERF_RECORD_HEADER_EVENT_TYPE = 65, /* deprecated */
#define MAX_EVENT_NAME 64 #define MAX_EVENT_NAME 64
......
...@@ -23,7 +23,7 @@ For memory address profiling, try: perf mem record / perf mem report ...@@ -23,7 +23,7 @@ For memory address profiling, try: perf mem record / perf mem report
For tracepoint events, try: perf report -s trace_fields For tracepoint events, try: perf report -s trace_fields
To record callchains for each sample: perf record -g To record callchains for each sample: perf record -g
To record every process run by a user: perf record -u <user> To record every process run by a user: perf record -u <user>
Skip collecing build-id when recording: perf record -B Skip collecting build-id when recording: perf record -B
To change sampling frequency to 100 Hz: perf record -F 100 To change sampling frequency to 100 Hz: perf record -F 100
See assembly instructions with percentage: perf annotate <symbol> See assembly instructions with percentage: perf annotate <symbol>
If you prefer Intel style assembly, try: perf annotate -M intel If you prefer Intel style assembly, try: perf annotate -M intel
......
...@@ -50,7 +50,7 @@ static int arm64__annotate_init(struct arch *arch) ...@@ -50,7 +50,7 @@ static int arm64__annotate_init(struct arch *arch)
arch->initialized = true; arch->initialized = true;
arch->priv = arm; arch->priv = arm;
arch->associate_instruction_ops = arm64__associate_instruction_ops; arch->associate_instruction_ops = arm64__associate_instruction_ops;
arch->objdump.comment_char = ';'; arch->objdump.comment_char = '/';
arch->objdump.skip_functions_char = '+'; arch->objdump.skip_functions_char = '+';
return 0; return 0;
......
...@@ -61,6 +61,7 @@ int test__kmod_path__parse(int subtest __maybe_unused) ...@@ -61,6 +61,7 @@ int test__kmod_path__parse(int subtest __maybe_unused)
M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_KERNEL, true); M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_KERNEL, true);
M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_USER, false); M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_USER, false);
#ifdef HAVE_ZLIB_SUPPORT
/* path alloc_name alloc_ext kmod comp name ext */ /* path alloc_name alloc_ext kmod comp name ext */
T("/xxxx/xxxx/x.ko.gz", true , true , true, true, "[x]", "gz"); T("/xxxx/xxxx/x.ko.gz", true , true , true, true, "[x]", "gz");
T("/xxxx/xxxx/x.ko.gz", false , true , true, true, NULL , "gz"); T("/xxxx/xxxx/x.ko.gz", false , true , true, true, NULL , "gz");
...@@ -96,6 +97,7 @@ int test__kmod_path__parse(int subtest __maybe_unused) ...@@ -96,6 +97,7 @@ int test__kmod_path__parse(int subtest __maybe_unused)
M("x.ko.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true); M("x.ko.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);
M("x.ko.gz", PERF_RECORD_MISC_KERNEL, true); M("x.ko.gz", PERF_RECORD_MISC_KERNEL, true);
M("x.ko.gz", PERF_RECORD_MISC_USER, false); M("x.ko.gz", PERF_RECORD_MISC_USER, false);
#endif
/* path alloc_name alloc_ext kmod comp name ext */ /* path alloc_name alloc_ext kmod comp name ext */
T("[test_module]", true , true , true, false, "[test_module]", NULL); T("[test_module]", true , true , true, false, "[test_module]", NULL);
......
...@@ -229,7 +229,7 @@ struct build_id_event { ...@@ -229,7 +229,7 @@ struct build_id_event {
enum perf_user_event_type { /* above any possible kernel type */ enum perf_user_event_type { /* above any possible kernel type */
PERF_RECORD_USER_TYPE_START = 64, PERF_RECORD_USER_TYPE_START = 64,
PERF_RECORD_HEADER_ATTR = 64, PERF_RECORD_HEADER_ATTR = 64,
PERF_RECORD_HEADER_EVENT_TYPE = 65, /* depreceated */ PERF_RECORD_HEADER_EVENT_TYPE = 65, /* deprecated */
PERF_RECORD_HEADER_TRACING_DATA = 66, PERF_RECORD_HEADER_TRACING_DATA = 66,
PERF_RECORD_HEADER_BUILD_ID = 67, PERF_RECORD_HEADER_BUILD_ID = 67,
PERF_RECORD_FINISHED_ROUND = 68, PERF_RECORD_FINISHED_ROUND = 68,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment