* [PATCH 19/54] perf pmu: Support wildcards on pmu name in dynamic pmu events
2018-03-08 19:49 [GIT PULL 00/54] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2018-03-08 19:49 ` Arnaldo Carvalho de Melo
2018-03-08 19:49 ` [PATCH 20/54] perf pmu: Display pmu name when printing unmerged events in stat Arnaldo Carvalho de Melo
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-03-08 19:49 UTC (permalink / raw)
To: linux-arm-kernel
From: Agustin Vega-Frias <agustinv@codeaurora.org>
Starting on v4.12 event parsing code for dynamic pmu events already
supports prefix-based matching of multiple pmus when creating dynamic
events. E.g., in a system with the following dynamic pmus:
mypmu_0
mypmu_1
mypmu_2
mypmu_4
passing mypmu/<config>/ as an event spec will result in the creation of
the event in all of the pmus. This change expands this matching through
the use of fnmatch so glob-like expressions can be used to create events
in multiple pmus. E.g., in the system described above if a user only
wants to create the event in mypmu_0 and mypmu_1, mypmu_[01]/<config>/
can be passed.
Signed-off-by: Agustin Vega-Frias <agustinv@codeaurora.org>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Timur Tabi <timur@codeaurora.org>
Change-Id: Icb25653fc5d5239c20f3bffdfdf4ab4c9c9bb20b
Link: http://lkml.kernel.org/r/1520454947-16977-1-git-send-email-agustinv at codeaurora.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-list.txt | 8 +++++++-
tools/perf/Documentation/perf-stat.txt | 13 +++++++++++++
tools/perf/util/parse-events.l | 2 +-
tools/perf/util/parse-events.y | 14 ++++++++++++--
4 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt
index e2a897ae3596..2549c34a7895 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -141,7 +141,13 @@ on the first memory controller on socket 0 of a Intel Xeon system
Each memory controller has its own PMU. Measuring the complete system
bandwidth would require specifying all imc PMUs (see perf list output),
-and adding the values together.
+and adding the values together. To simplify creation of multiple events,
+prefix and glob matching is supported in the PMU name, and the prefix
+'uncore_' is also ignored when performing the match. So the command above
+can be expanded to all memory controllers by using the syntaxes:
+
+ perf stat -C 0 -a imc/cas_count_read/,imc/cas_count_write/ -I 1000 ...
+ perf stat -C 0 -a *imc*/cas_count_read/,*imc*/cas_count_write/ -I 1000 ...
This example measures the combined core power every second
diff --git a/tools/perf/Documentation/perf-stat.txt b/tools/perf/Documentation/perf-stat.txt
index 2b38e222016a..628026dbedc5 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -49,6 +49,13 @@ report::
parameters are defined by corresponding entries in
/sys/bus/event_source/devices/<pmu>/format/*
+ Note that the last two syntaxes support prefix and glob matching in
+ the PMU name to simplify creation of events accross multiple instances
+ of the same type of PMU in large systems (e.g. memory controller PMUs).
+ Multiple PMU instances are typical for uncore PMUs, so the prefix
+ 'uncore_' is also ignored when performing this match.
+
+
-i::
--no-inherit::
child tasks do not inherit counters
@@ -260,6 +267,12 @@ taskset.
--no-merge::
Do not merge results from same PMUs.
+When multiple events are created from a single event alias, stat will,
+by default, aggregate the event counts and show the result in a single
+row. This option disables that behavior and shows the individual events
+and counts. Aliases are listed immediately after the Kernel PMU events
+by perf list.
+
--smi-cost::
Measure SMI cost if msr/aperf/ and msr/smi/ events are supported.
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 655ecff636a8..a1a01b1ac8b8 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -175,7 +175,7 @@ bpf_source [^,{}]+\.c[a-zA-Z0-9._]*
num_dec [0-9]+
num_hex 0x[a-fA-F0-9]+
num_raw_hex [a-fA-F0-9]+
-name [a-zA-Z_*?][a-zA-Z0-9_*?.]*
+name [a-zA-Z_*?\[\]][a-zA-Z0-9_*?.\[\]]*
name_minus [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
drv_cfg_term [a-zA-Z0-9_\.]+(=[a-zA-Z0-9_*?\.:]+)?
/* If you add a modifier you need to update check_modifier() */
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index e81a20ea8d7d..dedf184b5bed 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -8,6 +8,7 @@
#define YYDEBUG 1
+#include <fnmatch.h>
#include <linux/compiler.h>
#include <linux/list.h>
#include <linux/types.h>
@@ -234,6 +235,10 @@ PE_NAME opt_event_config
if (parse_events_add_pmu(_parse_state, list, $1, $2)) {
struct perf_pmu *pmu = NULL;
int ok = 0;
+ char *pattern;
+
+ if (asprintf(&pattern, "%s*", $1) < 0)
+ YYABORT;
while ((pmu = perf_pmu__scan(pmu)) != NULL) {
char *name = pmu->name;
@@ -241,14 +246,19 @@ PE_NAME opt_event_config
if (!strncmp(name, "uncore_", 7) &&
strncmp($1, "uncore_", 7))
name += 7;
- if (!strncmp($1, name, strlen($1))) {
- if (parse_events_copy_term_list(orig_terms, &terms))
+ if (!fnmatch(pattern, name, 0)) {
+ if (parse_events_copy_term_list(orig_terms, &terms)) {
+ free(pattern);
YYABORT;
+ }
if (!parse_events_add_pmu(_parse_state, list, pmu->name, terms))
ok++;
parse_events_terms__delete(terms);
}
}
+
+ free(pattern);
+
if (!ok)
YYABORT;
}
--
2.14.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 20/54] perf pmu: Display pmu name when printing unmerged events in stat
2018-03-08 19:49 [GIT PULL 00/54] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-03-08 19:49 ` [PATCH 19/54] perf pmu: Support wildcards on pmu name in dynamic pmu events Arnaldo Carvalho de Melo
@ 2018-03-08 19:49 ` Arnaldo Carvalho de Melo
2018-03-08 19:49 ` [PATCH 21/54] perf pmu: Auto-merge PMU events created by prefix or glob match Arnaldo Carvalho de Melo
2018-03-09 7:29 ` [GIT PULL 00/54] perf/core improvements and fixes Ingo Molnar
3 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-03-08 19:49 UTC (permalink / raw)
To: linux-arm-kernel
From: Agustin Vega-Frias <agustinv@codeaurora.org>
To simplify creation of events accross multiple instances of the same
type of PMU stat supports two methods for creating multiple events from
a single event specification:
1. A prefix or glob can be used in the PMU name.
2. Aliases, which are listed immediately after the Kernel PMU events
by perf list, are used.
When the --no-merge option is passed and these events are displayed
individually the PMU name is lost and it's not possible to see which
count corresponds to which pmu:
$ perf stat -a -e l3cache/read-miss/ --no-merge ls > /dev/null
Performance counter stats for 'system wide':
67 l3cache/read-miss/
67 l3cache/read-miss/
63 l3cache/read-miss/
60 l3cache/read-miss/
0.001675706 seconds time elapsed
$ perf stat -a -e l3cache_read_miss --no-merge ls > /dev/null
Performance counter stats for 'system wide':
12 l3cache_read_miss
17 l3cache_read_miss
10 l3cache_read_miss
8 l3cache_read_miss
0.001661305 seconds time elapsed
This change adds the original pmu name to the event. For dynamic pmu
events the pmu name is restored in the event name:
$ perf stat -a -e l3cache/read-miss/ --no-merge ls > /dev/null
Performance counter stats for 'system wide':
63 l3cache_0_3/read-miss/
74 l3cache_0_1/read-miss/
64 l3cache_0_2/read-miss/
74 l3cache_0_0/read-miss/
0.001675706 seconds time elapsed
For alias events the name is added after the event name:
$ perf stat -a -e l3cache_read_miss --no-merge ls > /dev/null
Performance counter stats for 'system wide':
10 l3cache_read_miss [l3cache_0_3]
12 l3cache_read_miss [l3cache_0_1]
10 l3cache_read_miss [l3cache_0_2]
17 l3cache_read_miss [l3cache_0_0]
0.001661305 seconds time elapsed
Signed-off-by: Agustin Vega-Frias <agustinv@codeaurora.org>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Timur Tabi <timur@codeaurora.org>
Cc: linux-arm-kernel at lists.infradead.org
Change-Id: I8056b9eda74bda33e95065056167ad96e97cb1fb
Link: http://lkml.kernel.org/r/1520345084-42646-3-git-send-email-agustinv at codeaurora.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 29 ++++++++++++++++++++++++++++-
tools/perf/util/evsel.c | 1 +
tools/perf/util/evsel.h | 1 +
tools/perf/util/parse-events.c | 8 +++++++-
4 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 3a022b3e5c02..0fa9ea3a6d92 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1251,6 +1251,31 @@ static void aggr_update_shadow(void)
}
}
+static void uniquify_event_name(struct perf_evsel *counter)
+{
+ char *new_name;
+ char *config;
+
+ if (!counter->pmu_name || !strncmp(counter->name, counter->pmu_name,
+ strlen(counter->pmu_name)))
+ return;
+
+ config = strchr(counter->name, '/');
+ if (config) {
+ if (asprintf(&new_name,
+ "%s%s", counter->pmu_name, config) > 0) {
+ free(counter->name);
+ counter->name = new_name;
+ }
+ } else {
+ if (asprintf(&new_name,
+ "%s [%s]", counter->name, counter->pmu_name) > 0) {
+ free(counter->name);
+ counter->name = new_name;
+ }
+ }
+}
+
static void collect_all_aliases(struct perf_evsel *counter,
void (*cb)(struct perf_evsel *counter, void *data,
bool first),
@@ -1279,7 +1304,9 @@ static bool collect_data(struct perf_evsel *counter,
if (counter->merged_stat)
return false;
cb(counter, data, true);
- if (!no_merge && counter->auto_merge_stats)
+ if (no_merge)
+ uniquify_event_name(counter);
+ else if (counter->auto_merge_stats)
collect_all_aliases(counter, cb, data);
return true;
}
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index f1f883bb41a8..e937894654b2 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -244,6 +244,7 @@ void perf_evsel__init(struct perf_evsel *evsel,
evsel->metric_name = NULL;
evsel->metric_events = NULL;
evsel->collect_stat = false;
+ evsel->pmu_name = NULL;
}
struct perf_evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx)
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 92ba001b627f..55ae1cda7396 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -142,6 +142,7 @@ struct perf_evsel {
struct perf_evsel **metric_events;
bool collect_stat;
bool weak_group;
+ const char *pmu_name;
};
union u64_swap {
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 34589c427e52..bafc91edcb44 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1247,7 +1247,12 @@ static int __parse_events_add_pmu(struct parse_events_state *parse_state,
if (!head_config) {
attr.type = pmu->type;
evsel = __add_event(list, &parse_state->idx, &attr, NULL, pmu, NULL, auto_merge_stats);
- return evsel ? 0 : -ENOMEM;
+ if (evsel) {
+ evsel->pmu_name = name;
+ return 0;
+ } else {
+ return -ENOMEM;
+ }
}
if (perf_pmu__check_alias(pmu, head_config, &info))
@@ -1276,6 +1281,7 @@ static int __parse_events_add_pmu(struct parse_events_state *parse_state,
evsel->snapshot = info.snapshot;
evsel->metric_expr = info.metric_expr;
evsel->metric_name = info.metric_name;
+ evsel->pmu_name = name;
}
return evsel ? 0 : -ENOMEM;
--
2.14.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 21/54] perf pmu: Auto-merge PMU events created by prefix or glob match
2018-03-08 19:49 [GIT PULL 00/54] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-03-08 19:49 ` [PATCH 19/54] perf pmu: Support wildcards on pmu name in dynamic pmu events Arnaldo Carvalho de Melo
2018-03-08 19:49 ` [PATCH 20/54] perf pmu: Display pmu name when printing unmerged events in stat Arnaldo Carvalho de Melo
@ 2018-03-08 19:49 ` Arnaldo Carvalho de Melo
2018-03-09 7:29 ` [GIT PULL 00/54] perf/core improvements and fixes Ingo Molnar
3 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-03-08 19:49 UTC (permalink / raw)
To: linux-arm-kernel
From: Agustin Vega-Frias <agustinv@codeaurora.org>
Auto-merge for these events was disabled when auto-merging of non-alias
events was disabled in commit 63ce844 (perf stat: Only auto-merge events
that are PMU aliases).
Non-merging of legacy events is preserved:
$ perf stat -ag -e cache-misses,cache-misses sleep 1
Performance counter stats for 'system wide':
86,323 cache-misses
86,323 cache-misses
1.002623307 seconds time elapsed
But prefix or glob matching auto-merges the events created:
$ perf stat -a -e l3cache/read-miss/ sleep 1
Performance counter stats for 'system wide':
328 l3cache/read-miss/
1.002627008 seconds time elapsed
$ perf stat -a -e l3cache_0_[01]/read-miss/ sleep 1
Performance counter stats for 'system wide':
172 l3cache/read-miss/
1.002627008 seconds time elapsed
As with events created with aliases, auto-merging can be suppressed with
the --no-merge option:
$ perf stat -a -e l3cache/read-miss/ --no-merge sleep 1
Performance counter stats for 'system wide':
67 l3cache/read-miss/
67 l3cache/read-miss/
63 l3cache/read-miss/
60 l3cache/read-miss/
1.002622192 seconds time elapsed
Signed-off-by: Agustin Vega-Frias <agustinv@codeaurora.org>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Timur Tabi <timur@codeaurora.org>
Cc: linux-arm-kernel at lists.infradead.org
Change-Id: I0a47eed54c05e1982ca964d743b37f50f60c508c
Link: http://lkml.kernel.org/r/1520345084-42646-4-git-send-email-agustinv at codeaurora.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-stat.txt | 14 +++++++++-----
tools/perf/util/parse-events.c | 13 +++----------
tools/perf/util/parse-events.h | 2 +-
tools/perf/util/parse-events.y | 4 ++--
4 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/tools/perf/Documentation/perf-stat.txt b/tools/perf/Documentation/perf-stat.txt
index 628026dbedc5..f15b306be183 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -267,11 +267,15 @@ taskset.
--no-merge::
Do not merge results from same PMUs.
-When multiple events are created from a single event alias, stat will,
-by default, aggregate the event counts and show the result in a single
-row. This option disables that behavior and shows the individual events
-and counts. Aliases are listed immediately after the Kernel PMU events
-by perf list.
+When multiple events are created from a single event specification,
+stat will, by default, aggregate the event counts and show the result
+in a single row. This option disables that behavior and shows
+the individual events and counts.
+
+Multiple events are created from a single event specification when:
+1. Prefix or glob matching is used for the PMU name.
+2. Aliases, which are listed immediately after the Kernel PMU events
+ by perf list, are used.
--smi-cost::
Measure SMI cost if msr/aperf/ and msr/smi/ events are supported.
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index bafc91edcb44..4e80ca320399 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1217,7 +1217,7 @@ int parse_events_add_numeric(struct parse_events_state *parse_state,
get_config_name(head_config), &config_terms);
}
-static int __parse_events_add_pmu(struct parse_events_state *parse_state,
+int parse_events_add_pmu(struct parse_events_state *parse_state,
struct list_head *list, char *name,
struct list_head *head_config, bool auto_merge_stats)
{
@@ -1287,13 +1287,6 @@ static int __parse_events_add_pmu(struct parse_events_state *parse_state,
return evsel ? 0 : -ENOMEM;
}
-int parse_events_add_pmu(struct parse_events_state *parse_state,
- struct list_head *list, char *name,
- struct list_head *head_config)
-{
- return __parse_events_add_pmu(parse_state, list, name, head_config, false);
-}
-
int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
char *str, struct list_head **listp)
{
@@ -1323,8 +1316,8 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
return -1;
list_add_tail(&term->list, head);
- if (!__parse_events_add_pmu(parse_state, list,
- pmu->name, head, true)) {
+ if (!parse_events_add_pmu(parse_state, list,
+ pmu->name, head, true)) {
pr_debug("%s -> %s/%s/\n", str,
pmu->name, alias->str);
ok++;
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 88108cd11b4c..5015cfd58277 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -167,7 +167,7 @@ int parse_events_add_breakpoint(struct list_head *list, int *idx,
void *ptr, char *type, u64 len);
int parse_events_add_pmu(struct parse_events_state *parse_state,
struct list_head *list, char *name,
- struct list_head *head_config);
+ struct list_head *head_config, bool auto_merge_stats);
int parse_events_multi_pmu_add(struct parse_events_state *parse_state,
char *str,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index dedf184b5bed..7afeb80cc39e 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -232,7 +232,7 @@ PE_NAME opt_event_config
YYABORT;
ALLOC_LIST(list);
- if (parse_events_add_pmu(_parse_state, list, $1, $2)) {
+ if (parse_events_add_pmu(_parse_state, list, $1, $2, false)) {
struct perf_pmu *pmu = NULL;
int ok = 0;
char *pattern;
@@ -251,7 +251,7 @@ PE_NAME opt_event_config
free(pattern);
YYABORT;
}
- if (!parse_events_add_pmu(_parse_state, list, pmu->name, terms))
+ if (!parse_events_add_pmu(_parse_state, list, pmu->name, terms, true))
ok++;
parse_events_terms__delete(terms);
}
--
2.14.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [GIT PULL 00/54] perf/core improvements and fixes
2018-03-08 19:49 [GIT PULL 00/54] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2018-03-08 19:49 ` [PATCH 21/54] perf pmu: Auto-merge PMU events created by prefix or glob match Arnaldo Carvalho de Melo
@ 2018-03-09 7:29 ` Ingo Molnar
3 siblings, 0 replies; 5+ messages in thread
From: Ingo Molnar @ 2018-03-09 7:29 UTC (permalink / raw)
To: linux-arm-kernel
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 3f986eefc89c528bf2d398a6dc3637b743a7139e:
>
> Merge branch 'perf/urgent' into perf/core, to resolve conflict (2018-03-07 09:23:12 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.17-20180308
>
> for you to fetch changes up to 2427b432e63b4b911100f717c48289195b7a7d62:
>
> perf tools: Update quipper information (2018-03-08 11:30:54 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> - Support to display the IPC/Cycle in 'annotate' TUI, for systems
> where this info can be obtained, like Intel's >= Skylake (Jin Yao)
>
> - Support wildcards on PMU name in dynamic PMU events (Agustin Vega-Frias)
>
> - Display pmu name when printing unmerged events in stat (Agustin Vega-Frias)
>
> - Auto-merge PMU events created by prefix or glob match (Agustin Vega-Frias)
>
> - Fix s390 'call' operations target function annotation (Thomas Richter)
>
> - Handle s390 PC relative load and store instruction in the augmented
> 'annotate', code, used so far in the TUI modes of 'perf report' and
> 'perf annotate' (Thomas Richter)
>
> - Provide libtraceevent with a kernel symbol resolver, so that
> symbols in tracepoint fields can be resolved when showing them in
> tools such as 'perf report' (Wang YanQing)
>
> - Refactor the cgroups code to look more like other code in tools/perf,
> using cgroup__{put,get} for refcount operations instead of its
> open-coded equivalent, breaking larger functions, etc (Arnaldo Carvalho de Melo)
>
> - Implement support for the -G/--cgroup target in 'perf trace', allowing
> strace like tracing (plus other events, backtraces, etc) for cgroups
> (Arnaldo Carvalho de Melo)
>
> - Update thread shortname in 'perf sched map' when the thread's COMM
> changes (Changbin Du)
>
> - refcount 'struct mem_info', for better sharing it over several
> users, avoid duplicating structs and fixing crashes related to
> use after free (Jiri Olsa)
>
> - Display perf.data version, offsets in 'perf report --header' (Jiri Olsa)
>
> - Record the machine's memory topology information in a perf.data
> feature section, to be used by tools such as 'perf c2c' (Jiri Olsa)
>
> - Fix output of forced groups in the header for 'perf report' --stdio
> and --tui (Jiri Olsa)
>
> - Better support llvm, clang, cxx make tests in the build process (Jiri Olsa)
>
> - Streamline the 'struct perf_mmap' methods, storing some info in the
> struct instead of passing it via various methods, shortening its
> signatures (Kan Liang)
>
> - Update the quipper perf.data parser library site information (Stephane Eranian)
>
> - Correct perf's man pages title markers for asciidoctor (Takashi Iwai)
>
> - Intel PT fixes and refactorings paving the way for implementing
> support for AUX area sampling (Adrian Hunter)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (13):
> perf record: Combine some auxtrace initialization into a single function
> perf auxtrace: Add missing parameters from kernel-doc comments
> perf auxtrace: Rename some buffer-queuing functions
> perf auxtrace: Make auxtrace_queues__add_buffer() return buffer_ptr
> perf intel-pt: Fix overlap detection to identify consecutive buffers correctly
> perf intel-pt: Fix sync_switch
> perf intel-pt: Fix error recovery from missing TIP packet
> perf intel-pt: Fix timestamp following overflow
> perf intel-pt/bts: In auxtrace_record__init_intel() evlist is never NULL
> perf intel-pt: Get rid of intel_pt_use_buffer_pid_tid()
> perf intel-pt: Tidy old_buffer handling in intel_pt_get_trace()
> perf intel-pt: Remove a check for sampling mode
> perf intel-pt: Adjust overlap-checking to support sampling mode
>
> Agustin Vega-Frias (3):
> perf pmu: Support wildcards on pmu name in dynamic pmu events
> perf pmu: Display pmu name when printing unmerged events in stat
> perf pmu: Auto-merge PMU events created by prefix or glob match
>
> Arnaldo Carvalho de Melo (11):
> perf cgroup: Remove misplaced __maybe_unused
> perf cgroup: Rename 'struct cgroup_sel' to 'struct cgroup'
> perf cgroup: Introduce cgroup__delete()
> perf cgroup: Rename close_cgroup() to cgroup__put()
> perf cgroup: Introduce cgroup__get()
> perf cgroup: Introduce find_cgroup() method
> perf cgroup: Introduce cgroup__new() out of open coded equivalent
> perf cgroup: Add evlist__findnew_cgroup()
> perf cgroup: Add evlist__add_default_cgroup()
> perf cgroup: Make the cgroup name be const char *
> perf trace: Support setting cgroups as targets
>
> Changbin Du (2):
> perf sched: Move thread::shortname to thread_runtime
> perf sched map: Re-annotate shortname if thread comm changed
>
> Jin Yao (1):
> perf annotate: Support to display the IPC/Cycle in TUI mode
>
> Jiri Olsa (11):
> perf report: Fix the output for stdio events list
> perf report: Display perf.data header info
> perf record: Move machine variable down the function
> perf record: Remove progname from struct record
> perf tools: Add refcnt into struct mem_info
> perf c2c: Use mem_info refcnt logic
> perf tools: Add MEM_TOPOLOGY feature to perf data file
> perf tools: Update tags with .cpp files
> perf build: Add llvm/clang/cxx make tests into FEATURE_TESTS_EXTRA
> perf build: Add llvm/clang make targets to FILES
> perf build: Force llvm/clang test compile output to .make.output
>
> Kan Liang (8):
> perf evlist: Store 'overwrite' in struct perf_mmap
> perf mmap: Store mmap scope in struct perf_mmap()
> perf mmap: Use the stored scope data in perf_mmap__push()
> perf mmap: Use the stored data in perf_mmap__read_event()
> perf mmap: Use stored 'overwrite' in perf_mmap__consume()
> perf mmap: Simplify perf_mmap__consume()
> perf mmap: Simplify perf_mmap__read_event()
> perf mmap: Simplify perf_mmap__read_init()
>
> Stephane Eranian (1):
> perf tools: Update quipper information
>
> Takashi Iwai (1):
> perf tools: Correct title markers for asciidoctor
>
> Thomas Richter (2):
> perf annotate: Fix s390 target function disassembly
> perf annotate: Handle s390 PC relative load and store instruction.
>
> Wang YanQing (1):
> perf report: Provide libtraceevent with a kernel symbol resolver
>
> tools/build/Makefile.feature | 6 +-
> tools/build/feature/Makefile | 14 +-
> tools/include/linux/bitmap.h | 2 +-
> tools/perf/Documentation/perf-data.txt | 2 +-
> tools/perf/Documentation/perf-ftrace.txt | 2 +-
> tools/perf/Documentation/perf-kallsyms.txt | 2 +-
> tools/perf/Documentation/perf-list.txt | 8 +-
> tools/perf/Documentation/perf-sched.txt | 2 +-
> tools/perf/Documentation/perf-script-perl.txt | 2 +-
> tools/perf/Documentation/perf-stat.txt | 17 ++
> tools/perf/Documentation/perf-trace.txt | 25 ++
> tools/perf/Documentation/perf.data-file-format.txt | 7 +-
> tools/perf/Makefile.perf | 6 +-
> tools/perf/arch/s390/annotate/instructions.c | 116 +++++++-
> tools/perf/arch/x86/tests/perf-time-to-tsc.c | 7 +-
> tools/perf/arch/x86/util/auxtrace.c | 14 +-
> tools/perf/builtin-annotate.c | 88 +++++-
> tools/perf/builtin-c2c.c | 24 +-
> tools/perf/builtin-kvm.c | 9 +-
> tools/perf/builtin-record.c | 45 +--
> tools/perf/builtin-report.c | 26 +-
> tools/perf/builtin-sched.c | 133 ++++++---
> tools/perf/builtin-stat.c | 29 +-
> tools/perf/builtin-top.c | 7 +-
> tools/perf/builtin-trace.c | 57 +++-
> tools/perf/tests/backward-ring-buffer.c | 5 +-
> tools/perf/tests/bpf.c | 5 +-
> tools/perf/tests/code-reading.c | 7 +-
> tools/perf/tests/keep-tracking.c | 7 +-
> tools/perf/tests/mmap-basic.c | 7 +-
> tools/perf/tests/openat-syscall-tp-fields.c | 7 +-
> tools/perf/tests/perf-record.c | 7 +-
> tools/perf/tests/sw-clock.c | 7 +-
> tools/perf/tests/switch-tracking.c | 7 +-
> tools/perf/tests/task-exit.c | 7 +-
> tools/perf/ui/browsers/hists.c | 5 +-
> tools/perf/util/annotate.c | 2 +-
> tools/perf/util/auxtrace.c | 37 ++-
> tools/perf/util/auxtrace.h | 2 +
> tools/perf/util/cgroup.c | 111 +++++---
> tools/perf/util/cgroup.h | 13 +-
> tools/perf/util/env.h | 9 +
> tools/perf/util/evlist.c | 8 +-
> tools/perf/util/evsel.c | 23 +-
> tools/perf/util/evsel.h | 6 +-
> tools/perf/util/header.c | 312 ++++++++++++++++++++-
> tools/perf/util/header.h | 1 +
> tools/perf/util/hist.c | 4 +-
> .../perf/util/intel-pt-decoder/intel-pt-decoder.c | 64 ++---
> .../perf/util/intel-pt-decoder/intel-pt-decoder.h | 2 +-
> tools/perf/util/intel-pt.c | 110 ++++----
> tools/perf/util/machine.c | 2 +-
> tools/perf/util/mmap.c | 63 ++---
> tools/perf/util/mmap.h | 16 +-
> tools/perf/util/parse-events.c | 21 +-
> tools/perf/util/parse-events.h | 2 +-
> tools/perf/util/parse-events.l | 2 +-
> tools/perf/util/parse-events.y | 18 +-
> tools/perf/util/python.c | 7 +-
> tools/perf/util/symbol.c | 22 ++
> tools/perf/util/symbol.h | 19 +-
> tools/perf/util/thread.h | 1 -
> 62 files changed, 1197 insertions(+), 401 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 5+ messages in thread