linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL 00/12] perf/core improvements and fixes
@ 2016-05-17  2:45 Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 01/12] perf stat: Avoid fractional digits for integer scales Arnaldo Carvalho de Melo
                   ` (12 more replies)
  0 siblings, 13 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov,
	Ananth N Mavinakayanahalli, Andi Kleen, Brendan Gregg,
	David Ahern, Ekaterina Tumanova, Frederic Weisbecker, He Kuang,
	Hemant Kumar, Jiri Olsa, Josh Poimboeuf, Kan Liang,
	Linus Torvalds, Masami Hiramatsu, Milian Wolff, Namhyung Kim,
	Pekka Enberg, Peter Zijlstra, Stephane Eranian,
	Sukadev Bhattiprolu, Thomas Gleixner, Vince Weaver, Wang Nan,
	Zefan Li

From: Arnaldo Carvalho de Melo <acme@redhat.com>

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 3f56e687a138481894a1088d5aa7d41951bdb020:

  perf/core: Disable the event on a truncated AUX record (2016-05-12 10:14:55 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160516

for you to fetch changes up to a29d5c9b8167dbc21a7ca8c0302e3799f9063b4e:

  perf tools: Separate accounting of contexts and real addresses in a stack trace (2016-05-16 23:11:54 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Honour the kernel.perf_event_max_stack knob more precisely by not counting
  PERF_CONTEXT_{KERNEL,USER} when deciding when to stop adding entries to
  the perf_sample->ip_callchain[] array (Arnaldo Carvalho de Melo)

- Fix identation of 'stalled-backend-cycles' in 'perf stat' (Namhyung Kim)

- Update runtime using 'cpu-clock' event in 'perf stat' (Namhyung Kim)

- Use 'cpu-clock' for cpu targets in 'perf stat' (Namhyung Kim)

- Avoid fractional digits for integer scales in 'perf stat' (Andi Kleen)

- Store vdso buildid unconditionally, as it appears in callchains and
  we're not checking those when creating the build-id table, so we
  end up not being able to resolve VDSO symbols when doing analysis
  on a different machine than the one where recording was done, possibly
  of a different arch even (arm -> x86_64) (He Kuang)

Infrastructure:

- Generalize max_stack sysctl handler, will be used for configuring
  multiple kernel knobs related to callchains (Arnaldo Carvalho de Melo)

Cleanups:

- Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE, to stop using
  open coded strings (Masami Hiramatsu)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (1):
      perf stat: Avoid fractional digits for integer scales

Arnaldo Carvalho de Melo (6):
      perf core: Generalize max_stack sysctl handler
      perf core: Pass max stack as a perf_callchain_entry context
      perf core: Add a 'nr' field to perf_event_callchain_context
      perf core: Add perf_callchain_store_context() helper
      perf core: Separate accounting of contexts and real addresses in a stack trace
      perf tools: Separate accounting of contexts and real addresses in a stack trace

He Kuang (1):
      perf symbols: Store vdso buildid unconditionally

Masami Hiramatsu (1):
      perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE

Namhyung Kim (3):
      perf stat: Fix indentation of stalled backend cycle
      perf stat: Update runtime using cpu-clock event
      perf stat: Use cpu-clock event for cpu targets

 Documentation/sysctl/kernel.txt    | 14 ++++++++++++++
 arch/arc/kernel/perf_event.c       |  6 +++---
 arch/arm/kernel/perf_callchain.c   | 10 +++++-----
 arch/arm64/kernel/perf_callchain.c | 14 +++++++-------
 arch/metag/kernel/perf_callchain.c | 10 +++++-----
 arch/mips/kernel/perf_event.c      | 12 ++++++------
 arch/powerpc/perf/callchain.c      | 20 ++++++++++----------
 arch/s390/kernel/perf_event.c      |  4 ++--
 arch/sh/kernel/perf_callchain.c    |  4 ++--
 arch/sparc/kernel/perf_event.c     | 14 +++++++-------
 arch/tile/kernel/perf_event.c      |  6 +++---
 arch/x86/events/core.c             | 14 +++++++-------
 arch/xtensa/kernel/perf_event.c    | 10 +++++-----
 include/linux/perf_event.h         | 34 +++++++++++++++++++++++++++++-----
 include/uapi/linux/perf_event.h    |  1 +
 kernel/bpf/stackmap.c              |  3 ++-
 kernel/events/callchain.c          | 36 ++++++++++++++++++++++++------------
 kernel/sysctl.c                    | 11 ++++++++++-
 tools/perf/builtin-buildid-cache.c |  8 ++++----
 tools/perf/builtin-stat.c          | 22 +++++++++++++---------
 tools/perf/perf.c                  |  3 +++
 tools/perf/util/annotate.c         |  2 +-
 tools/perf/util/build-id.c         |  2 +-
 tools/perf/util/dso.c              |  3 ++-
 tools/perf/util/machine.c          | 28 ++++++++++++++++++----------
 tools/perf/util/stat-shadow.c      |  8 +++++---
 tools/perf/util/symbol.c           | 10 +++++-----
 tools/perf/util/symbol.h           |  3 +++
 tools/perf/util/util.c             |  3 ++-
 tools/perf/util/util.h             |  3 ++-
 30 files changed, 201 insertions(+), 117 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH 01/12] perf stat: Avoid fractional digits for integer scales
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 02/12] perf symbols: Store vdso buildid unconditionally Arnaldo Carvalho de Melo
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Andi Kleen, Peter Zijlstra, Arnaldo Carvalho de Melo

From: Andi Kleen <ak@linux.intel.com>

When the scaling factor is a full integer don't display fractional
digits. This avoids unnecessary .00 output for topdown metrics with
scale factors.

v2: Remove redundant check.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1462489447-31832-7-git-send-email-andi@firstfloor.org
[ Rename 'round' to 'stat_round' as 'round' is defined in math.h,
  included by this patch, and this breaks the build on ubuntu 12.04 ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-stat.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 5645a8361de6..16a923c1633b 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -66,6 +66,7 @@
 #include <stdlib.h>
 #include <sys/prctl.h>
 #include <locale.h>
+#include <math.h>
 
 #define DEFAULT_SEPARATOR	" "
 #define CNTR_NOT_SUPPORTED	"<not supported>"
@@ -986,12 +987,12 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
 	const char *fmt;
 
 	if (csv_output) {
-		fmt = sc != 1.0 ?  "%.2f%s" : "%.0f%s";
+		fmt = floor(sc) != sc ?  "%.2f%s" : "%.0f%s";
 	} else {
 		if (big_num)
-			fmt = sc != 1.0 ? "%'18.2f%s" : "%'18.0f%s";
+			fmt = floor(sc) != sc ? "%'18.2f%s" : "%'18.0f%s";
 		else
-			fmt = sc != 1.0 ? "%18.2f%s" : "%18.0f%s";
+			fmt = floor(sc) != sc ? "%18.2f%s" : "%18.0f%s";
 	}
 
 	aggr_printout(evsel, id, nr);
@@ -1995,7 +1996,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
 				    union perf_event *event,
 				    struct perf_session *session)
 {
-	struct stat_round_event *round = &event->stat_round;
+	struct stat_round_event *stat_round = &event->stat_round;
 	struct perf_evsel *counter;
 	struct timespec tsh, *ts = NULL;
 	const char **argv = session->header.env.cmdline_argv;
@@ -2004,12 +2005,12 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
 	evlist__for_each(evsel_list, counter)
 		perf_stat_process_counter(&stat_config, counter);
 
-	if (round->type == PERF_STAT_ROUND_TYPE__FINAL)
-		update_stats(&walltime_nsecs_stats, round->time);
+	if (stat_round->type == PERF_STAT_ROUND_TYPE__FINAL)
+		update_stats(&walltime_nsecs_stats, stat_round->time);
 
-	if (stat_config.interval && round->time) {
-		tsh.tv_sec  = round->time / NSECS_PER_SEC;
-		tsh.tv_nsec = round->time % NSECS_PER_SEC;
+	if (stat_config.interval && stat_round->time) {
+		tsh.tv_sec  = stat_round->time / NSECS_PER_SEC;
+		tsh.tv_nsec = stat_round->time % NSECS_PER_SEC;
 		ts = &tsh;
 	}
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 02/12] perf symbols: Store vdso buildid unconditionally
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 01/12] perf stat: Avoid fractional digits for integer scales Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 03/12] perf stat: Fix indentation of stalled backend cycle Arnaldo Carvalho de Melo
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, He Kuang, Adrian Hunter, Alexander Shishkin,
	Andi Kleen, David Ahern, Ekaterina Tumanova, Jiri Olsa,
	Josh Poimboeuf, Kan Liang, Masami Hiramatsu, Namhyung Kim,
	Pekka Enberg, Peter Zijlstra, Stephane Eranian,
	Sukadev Bhattiprolu, Wang Nan, Arnaldo Carvalho de Melo

From: He Kuang <hekuang@huawei.com>

When unwinding callchains on a different machine, vdso info should be
available so the unwind process won't be interrupted if address falls
into vdso region. But in most cases, the addresses of sample events are
not in vdso range, the buildid of a zero hit vdso won't be stored into
perf.data.

This patch stores vdso buildid regardless of whether the vdso is hit or
not.

Signed-off-by: He Kuang <hekuang@huawei.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1463042596-61703-3-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/build-id.c | 2 +-
 tools/perf/util/dso.c      | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index bff425e1232c..67e5966503b2 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -256,7 +256,7 @@ static int machine__write_buildid_table(struct machine *machine, int fd)
 		size_t name_len;
 		bool in_kernel = false;
 
-		if (!pos->hit)
+		if (!pos->hit && !dso__is_vdso(pos))
 			continue;
 
 		if (dso__is_vdso(pos)) {
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index 3357479082ca..75b75615e2f8 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -7,6 +7,7 @@
 #include "auxtrace.h"
 #include "util.h"
 #include "debug.h"
+#include "vdso.h"
 
 char dso__symtab_origin(const struct dso *dso)
 {
@@ -1169,7 +1170,7 @@ bool __dsos__read_build_ids(struct list_head *head, bool with_hits)
 	struct dso *pos;
 
 	list_for_each_entry(pos, head, node) {
-		if (with_hits && !pos->hit)
+		if (with_hits && !pos->hit && !dso__is_vdso(pos))
 			continue;
 		if (pos->has_build_id) {
 			have_build_id = true;
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 03/12] perf stat: Fix indentation of stalled backend cycle
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 01/12] perf stat: Avoid fractional digits for integer scales Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 02/12] perf symbols: Store vdso buildid unconditionally Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 04/12] perf stat: Update runtime using cpu-clock event Arnaldo Carvalho de Melo
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, Andi Kleen, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

The commit 140aeadc1fb5 ("perf stat: Abstract stat metrics printing")
changed how shadow metrics are printed, but it missed to update the
width of the stalled backend cycles event to 7.2% like others.  This
resulted in misaligned output like below:

  Performance counter stats for 'pwd':

          0.638313      task-clock (msec)         #    0.567 CPUs utilized
                 0      context-switches          #    0.000 K/sec
                 0      cpu-migrations            #    0.000 K/sec
                54      page-faults               #    0.085 M/sec
           885,600      cycles                    #    1.387 GHz
           558,438      stalled-cycles-frontend   #   63.06% frontend cycles idle
           431,355      stalled-cycles-backend    #  48.71% backend cycles idle
           674,956      instructions              #    0.76  insn per cycle
                                                  #    0.83  stalled cycles per insn
           130,380      branches                  #  204.257 M/sec
     <not counted>      branch-misses

       0.001125426 seconds time elapsed

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: 140aeadc1fb5 ("perf stat: Abstract stat metrics printing")
Link: http://lkml.kernel.org/r/1463119263-5569-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/stat-shadow.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index fdb71961143e..61200fcac5ef 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -188,7 +188,7 @@ static void print_stalled_cycles_backend(int cpu,
 
 	color = get_ratio_color(GRC_STALLED_CYCLES_BE, ratio);
 
-	out->print_metric(out->ctx, color, "%6.2f%%", "backend cycles idle", ratio);
+	out->print_metric(out->ctx, color, "%7.2f%%", "backend cycles idle", ratio);
 }
 
 static void print_branch_misses(int cpu,
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 04/12] perf stat: Update runtime using cpu-clock event
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 03/12] perf stat: Fix indentation of stalled backend cycle Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 05/12] perf stat: Use cpu-clock event for cpu targets Arnaldo Carvalho de Melo
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, Andi Kleen, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

Currently only the task-clock event updates the runtime_nsec so it
cannot show the metric when using cpu-clock events.  However cpu clock
works basically same as task-clock, so no need to not update the runtime
IMHO.

Before:

  # perf stat -a -e cpu-clock,context-switches,page-faults,cycles sleep 0.1

    Performance counter stats for 'system wide':

         1217.759506      cpu-clock (msec)
                  93      context-switches
                  61      page-faults
          18,958,022      cycles

         0.101393794 seconds time elapsed

After:

   Performance counter stats for 'system wide':

         1220.471884      cpu-clock (msec)          #   12.013 CPUs utilized
                 118      context-switches          #    0.097 K/sec
                  59      page-faults               #    0.048 K/sec
          17,941,247      cycles                    #    0.015 GHz

         0.101594777 seconds time elapsed

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1463119263-5569-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/stat-shadow.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index 61200fcac5ef..aa9efe08762b 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -94,7 +94,8 @@ void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 *count,
 {
 	int ctx = evsel_context(counter);
 
-	if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK))
+	if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK) ||
+	    perf_evsel__match(counter, SOFTWARE, SW_CPU_CLOCK))
 		update_stats(&runtime_nsecs_stats[cpu], count[0]);
 	else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES))
 		update_stats(&runtime_cycles_stats[ctx][cpu], count[0]);
@@ -444,7 +445,8 @@ void perf_stat__print_shadow_stats(struct perf_evsel *evsel,
 			ratio = total / avg;
 
 		print_metric(ctxp, NULL, "%8.0f", "cycles / elision", ratio);
-	} else if (perf_evsel__match(evsel, SOFTWARE, SW_TASK_CLOCK)) {
+	} else if (perf_evsel__match(evsel, SOFTWARE, SW_TASK_CLOCK) ||
+		   perf_evsel__match(evsel, SOFTWARE, SW_CPU_CLOCK)) {
 		if ((ratio = avg_stats(&walltime_nsecs_stats)) != 0)
 			print_metric(ctxp, NULL, "%8.3f", "CPUs utilized",
 				     avg / ratio);
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 05/12] perf stat: Use cpu-clock event for cpu targets
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 04/12] perf stat: Update runtime using cpu-clock event Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 06/12] perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE Arnaldo Carvalho de Melo
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, Andi Kleen, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

Currently 'perf stat' always counts task-clock event by default.  But
it's somewhat confusing for system-wide targets (especially with 'sleep
N' as the 'sleep' task just sleeps and doesn't use cputime).  Changing
to cpu-clock event instead for that case makes more sense IMHO.

Before:
  # perf stat -a sleep 0.1

   Performance counter stats for 'system wide':

        403.038603      task-clock (msec)     #    4.001 CPUs utilized
               150      context-switches      #    0.372 K/sec
                 7      cpu-migrations        #    0.017 K/sec
                71      page-faults           #    0.176 K/sec
        23,705,169      cycles                #    0.059 GHz
        15,888,166      instructions          #    0.67  insn per cycle
         3,326,078      branches              #    8.253 M/sec
            87,643      branch-misses         #    2.64% of all branches

       0.100737009 seconds time elapsed

  #

After:

  # perf stat -a sleep 0.1

   Performance counter stats for 'system wide':

        404.271182      cpu-clock (msec)      #    4.000 CPUs utilized
               143      context-switches      #    0.354 K/sec
                13      cpu-migrations        #    0.032 K/sec
                73      page-faults           #    0.181 K/sec
        22,119,220      cycles                #    0.055 GHz
        13,622,065      instructions          #    0.62  insn per cycle
         2,918,769      branches              #    7.220 M/sec
            85,033      branch-misses         #    2.91% of all branches

       0.101073089 seconds time elapsed

  #

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1463119263-5569-3-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-stat.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 16a923c1633b..efdd23221c16 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1905,6 +1905,9 @@ static int add_default_attributes(void)
 	}
 
 	if (!evsel_list->nr_entries) {
+		if (target__has_cpu(&target))
+			default_attrs0[0].config = PERF_COUNT_SW_CPU_CLOCK;
+
 		if (perf_evlist__add_default_attrs(evsel_list, default_attrs0) < 0)
 			return -1;
 		if (pmu_have_event("cpu", "stalled-cycles-frontend")) {
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 06/12] perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 05/12] perf stat: Use cpu-clock event for cpu targets Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 07/12] perf core: Generalize max_stack sysctl handler Arnaldo Carvalho de Melo
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Masami Hiramatsu, Ananth N Mavinakayanahalli,
	Brendan Gregg, Hemant Kumar, Namhyung Kim, Peter Zijlstra,
	Arnaldo Carvalho de Melo

From: Masami Hiramatsu <mhiramat@kernel.org>

Instead of using a raw string, use DSO__NAME_KALLSYMS and
DSO__NAME_KCORE macros for kallsyms and kcore.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20160515031935.4017.50971.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-buildid-cache.c |  8 ++++----
 tools/perf/util/annotate.c         |  2 +-
 tools/perf/util/machine.c          |  2 +-
 tools/perf/util/symbol.c           | 10 +++++-----
 tools/perf/util/symbol.h           |  3 +++
 5 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/tools/perf/builtin-buildid-cache.c b/tools/perf/builtin-buildid-cache.c
index 632efc6b79a0..d75bded21fe0 100644
--- a/tools/perf/builtin-buildid-cache.c
+++ b/tools/perf/builtin-buildid-cache.c
@@ -119,8 +119,8 @@ static int build_id_cache__add_kcore(const char *filename, bool force)
 	if (build_id_cache__kcore_buildid(from_dir, sbuildid) < 0)
 		return -1;
 
-	scnprintf(to_dir, sizeof(to_dir), "%s/[kernel.kcore]/%s",
-		  buildid_dir, sbuildid);
+	scnprintf(to_dir, sizeof(to_dir), "%s/%s/%s",
+		  buildid_dir, DSO__NAME_KCORE, sbuildid);
 
 	if (!force &&
 	    !build_id_cache__kcore_existing(from_dir, to_dir, sizeof(to_dir))) {
@@ -131,8 +131,8 @@ static int build_id_cache__add_kcore(const char *filename, bool force)
 	if (build_id_cache__kcore_dir(dir, sizeof(dir)))
 		return -1;
 
-	scnprintf(to_dir, sizeof(to_dir), "%s/[kernel.kcore]/%s/%s",
-		  buildid_dir, sbuildid, dir);
+	scnprintf(to_dir, sizeof(to_dir), "%s/%s/%s/%s",
+		  buildid_dir, DSO__NAME_KCORE, sbuildid, dir);
 
 	if (mkdir_p(to_dir, 0755))
 		return -1;
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 4db73d5a0dbc..b811924e5e1b 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1122,7 +1122,7 @@ int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)
 	} else if (dso__is_kcore(dso)) {
 		goto fallback;
 	} else if (readlink(symfs_filename, command, sizeof(command)) < 0 ||
-		   strstr(command, "[kernel.kallsyms]") ||
+		   strstr(command, DSO__NAME_KALLSYMS) ||
 		   access(symfs_filename, R_OK)) {
 		free(filename);
 fallback:
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 639a2903065e..18dd96bdde05 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -709,7 +709,7 @@ static struct dso *machine__get_kernel(struct machine *machine)
 	if (machine__is_host(machine)) {
 		vmlinux_name = symbol_conf.vmlinux_name;
 		if (!vmlinux_name)
-			vmlinux_name = "[kernel.kallsyms]";
+			vmlinux_name = DSO__NAME_KALLSYMS;
 
 		kernel = machine__findnew_kernel(machine, vmlinux_name,
 						 "[kernel]", DSO_TYPE_KERNEL);
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 7fb33304fb4e..2252b545ff43 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1662,8 +1662,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
 
 	build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id);
 
-	scnprintf(path, sizeof(path), "%s/[kernel.kcore]/%s", buildid_dir,
-		  sbuild_id);
+	scnprintf(path, sizeof(path), "%s/%s/%s", buildid_dir,
+		  DSO__NAME_KCORE, sbuild_id);
 
 	/* Use /proc/kallsyms if possible */
 	if (is_host) {
@@ -1699,8 +1699,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
 	if (!find_matching_kcore(map, path, sizeof(path)))
 		return strdup(path);
 
-	scnprintf(path, sizeof(path), "%s/[kernel.kallsyms]/%s",
-		  buildid_dir, sbuild_id);
+	scnprintf(path, sizeof(path), "%s/%s/%s",
+		  buildid_dir, DSO__NAME_KALLSYMS, sbuild_id);
 
 	if (access(path, F_OK)) {
 		pr_err("No kallsyms or vmlinux with build-id %s was found\n",
@@ -1769,7 +1769,7 @@ do_kallsyms:
 
 	if (err > 0 && !dso__is_kcore(dso)) {
 		dso->binary_type = DSO_BINARY_TYPE__KALLSYMS;
-		dso__set_long_name(dso, "[kernel.kallsyms]", false);
+		dso__set_long_name(dso, DSO__NAME_KALLSYMS, false);
 		map__fixup_start(map);
 		map__fixup_end(map);
 	}
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 2b5e4ed76fcb..25f2fd672c2e 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -44,6 +44,9 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
 #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
 #endif
 
+#define DSO__NAME_KALLSYMS	"[kernel.kallsyms]"
+#define DSO__NAME_KCORE		"[kernel.kcore]"
+
 /** struct symbol - symtab entry
  *
  * @ignore - resolvable but tools ignore it (e.g. idle routines)
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 07/12] perf core: Generalize max_stack sysctl handler
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (5 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 06/12] perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 08/12] perf core: Pass max stack as a perf_callchain_entry context Arnaldo Carvalho de Melo
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Peter Zijlstra

From: Arnaldo Carvalho de Melo <acme@redhat.com>

So that it can be used for other stack related knobs, such as the
upcoming one to tweak the max number of of contexts per stack sample.

In all those cases we can only change the value if there are no perf
sessions collecting stacks, so they need to grab that mutex, etc.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/n/tip-8t3fk94wuzp8m2z1n4gc0s17@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 kernel/events/callchain.c | 5 +++--
 kernel/sysctl.c           | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index b9325e7dcba1..7fc89939ede9 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -228,7 +228,8 @@ exit_put:
 int perf_event_max_stack_handler(struct ctl_table *table, int write,
 				 void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-	int new_value = sysctl_perf_event_max_stack, ret;
+	int *value = table->data;
+	int new_value = *value, ret;
 	struct ctl_table new_table = *table;
 
 	new_table.data = &new_value;
@@ -240,7 +241,7 @@ int perf_event_max_stack_handler(struct ctl_table *table, int write,
 	if (atomic_read(&nr_callchain_events))
 		ret = -EBUSY;
 	else
-		sysctl_perf_event_max_stack = new_value;
+		*value = new_value;
 
 	mutex_unlock(&callchain_mutex);
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index c8b318663525..0ec6907a16b3 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1149,7 +1149,7 @@ static struct ctl_table kern_table[] = {
 	},
 	{
 		.procname	= "perf_event_max_stack",
-		.data		= NULL, /* filled in by handler */
+		.data		= &sysctl_perf_event_max_stack,
 		.maxlen		= sizeof(sysctl_perf_event_max_stack),
 		.mode		= 0644,
 		.proc_handler	= perf_event_max_stack_handler,
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 08/12] perf core: Pass max stack as a perf_callchain_entry context
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (6 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 07/12] perf core: Generalize max_stack sysctl handler Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 09/12] perf core: Add a 'nr' field to perf_event_callchain_context Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Brendan Gregg,
	David Ahern, Frederic Weisbecker, He Kuang, Jiri Olsa,
	Linus Torvalds, Masami Hiramatsu, Milian Wolff, Namhyung Kim,
	Peter Zijlstra, Stephane Eranian, Thomas Gleixner, Vince Weaver,
	Wang Nan, Zefan Li

From: Arnaldo Carvalho de Melo <acme@redhat.com>

This makes perf_callchain_{user,kernel}() receive the max stack
as context for the perf_callchain_entry, instead of accessing
the global sysctl_perf_event_max_stack.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Zefan Li <lizefan@huawei.com>
Link: http://lkml.kernel.org/n/tip-kolmn1yo40p7jhswxwrc7rrd@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 arch/arc/kernel/perf_event.c       |  6 +++---
 arch/arm/kernel/perf_callchain.c   | 10 +++++-----
 arch/arm64/kernel/perf_callchain.c | 14 +++++++-------
 arch/metag/kernel/perf_callchain.c | 10 +++++-----
 arch/mips/kernel/perf_event.c      | 12 ++++++------
 arch/powerpc/perf/callchain.c      | 14 +++++++-------
 arch/s390/kernel/perf_event.c      |  4 ++--
 arch/sh/kernel/perf_callchain.c    |  4 ++--
 arch/sparc/kernel/perf_event.c     | 14 +++++++-------
 arch/tile/kernel/perf_event.c      |  6 +++---
 arch/x86/events/core.c             | 14 +++++++-------
 arch/xtensa/kernel/perf_event.c    | 10 +++++-----
 include/linux/perf_event.h         | 16 +++++++++++-----
 kernel/bpf/stackmap.c              |  3 ++-
 kernel/events/callchain.c          | 20 ++++++++++++--------
 15 files changed, 84 insertions(+), 73 deletions(-)

diff --git a/arch/arc/kernel/perf_event.c b/arch/arc/kernel/perf_event.c
index 8b134cfe5e1f..6fd48021324b 100644
--- a/arch/arc/kernel/perf_event.c
+++ b/arch/arc/kernel/perf_event.c
@@ -48,7 +48,7 @@ struct arc_callchain_trace {
 static int callchain_trace(unsigned int addr, void *data)
 {
 	struct arc_callchain_trace *ctrl = data;
-	struct perf_callchain_entry *entry = ctrl->perf_stuff;
+	struct perf_callchain_entry_ctx *entry = ctrl->perf_stuff;
 	perf_callchain_store(entry, addr);
 
 	if (ctrl->depth++ < 3)
@@ -58,7 +58,7 @@ static int callchain_trace(unsigned int addr, void *data)
 }
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	struct arc_callchain_trace ctrl = {
 		.depth = 0,
@@ -69,7 +69,7 @@ perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
 }
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	/*
 	 * User stack can't be unwound trivially with kernel dwarf unwinder
diff --git a/arch/arm/kernel/perf_callchain.c b/arch/arm/kernel/perf_callchain.c
index 27563befa8a2..bc552e813e7b 100644
--- a/arch/arm/kernel/perf_callchain.c
+++ b/arch/arm/kernel/perf_callchain.c
@@ -31,7 +31,7 @@ struct frame_tail {
  */
 static struct frame_tail __user *
 user_backtrace(struct frame_tail __user *tail,
-	       struct perf_callchain_entry *entry)
+	       struct perf_callchain_entry_ctx *entry)
 {
 	struct frame_tail buftail;
 	unsigned long err;
@@ -59,7 +59,7 @@ user_backtrace(struct frame_tail __user *tail,
 }
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	struct frame_tail __user *tail;
 
@@ -75,7 +75,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
 
 	tail = (struct frame_tail __user *)regs->ARM_fp - 1;
 
-	while ((entry->nr < sysctl_perf_event_max_stack) &&
+	while ((entry->entry->nr < entry->max_stack) &&
 	       tail && !((unsigned long)tail & 0x3))
 		tail = user_backtrace(tail, entry);
 }
@@ -89,13 +89,13 @@ static int
 callchain_trace(struct stackframe *fr,
 		void *data)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 	perf_callchain_store(entry, fr->pc);
 	return 0;
 }
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	struct stackframe fr;
 
diff --git a/arch/arm64/kernel/perf_callchain.c b/arch/arm64/kernel/perf_callchain.c
index 32c3c6e70119..0d60150057cf 100644
--- a/arch/arm64/kernel/perf_callchain.c
+++ b/arch/arm64/kernel/perf_callchain.c
@@ -31,7 +31,7 @@ struct frame_tail {
  */
 static struct frame_tail __user *
 user_backtrace(struct frame_tail __user *tail,
-	       struct perf_callchain_entry *entry)
+	       struct perf_callchain_entry_ctx *entry)
 {
 	struct frame_tail buftail;
 	unsigned long err;
@@ -76,7 +76,7 @@ struct compat_frame_tail {
 
 static struct compat_frame_tail __user *
 compat_user_backtrace(struct compat_frame_tail __user *tail,
-		      struct perf_callchain_entry *entry)
+		      struct perf_callchain_entry_ctx *entry)
 {
 	struct compat_frame_tail buftail;
 	unsigned long err;
@@ -106,7 +106,7 @@ compat_user_backtrace(struct compat_frame_tail __user *tail,
 }
 #endif /* CONFIG_COMPAT */
 
-void perf_callchain_user(struct perf_callchain_entry *entry,
+void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 			 struct pt_regs *regs)
 {
 	if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
@@ -122,7 +122,7 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
 
 		tail = (struct frame_tail __user *)regs->regs[29];
 
-		while (entry->nr < sysctl_perf_event_max_stack &&
+		while (entry->entry->nr < entry->max_stack &&
 		       tail && !((unsigned long)tail & 0xf))
 			tail = user_backtrace(tail, entry);
 	} else {
@@ -132,7 +132,7 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
 
 		tail = (struct compat_frame_tail __user *)regs->compat_fp - 1;
 
-		while ((entry->nr < sysctl_perf_event_max_stack) &&
+		while ((entry->entry->nr < entry->max_stack) &&
 			tail && !((unsigned long)tail & 0x3))
 			tail = compat_user_backtrace(tail, entry);
 #endif
@@ -146,12 +146,12 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
  */
 static int callchain_trace(struct stackframe *frame, void *data)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 	perf_callchain_store(entry, frame->pc);
 	return 0;
 }
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 			   struct pt_regs *regs)
 {
 	struct stackframe frame;
diff --git a/arch/metag/kernel/perf_callchain.c b/arch/metag/kernel/perf_callchain.c
index 252abc12a5a3..b3261a98b15b 100644
--- a/arch/metag/kernel/perf_callchain.c
+++ b/arch/metag/kernel/perf_callchain.c
@@ -29,7 +29,7 @@ static bool is_valid_call(unsigned long calladdr)
 
 static struct metag_frame __user *
 user_backtrace(struct metag_frame __user *user_frame,
-	       struct perf_callchain_entry *entry)
+	       struct perf_callchain_entry_ctx *entry)
 {
 	struct metag_frame frame;
 	unsigned long calladdr;
@@ -56,7 +56,7 @@ user_backtrace(struct metag_frame __user *user_frame,
 }
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	unsigned long sp = regs->ctx.AX[0].U0;
 	struct metag_frame __user *frame;
@@ -65,7 +65,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
 
 	--frame;
 
-	while ((entry->nr < sysctl_perf_event_max_stack) && frame)
+	while ((entry->entry->nr < entry->max_stack) && frame)
 		frame = user_backtrace(frame, entry);
 }
 
@@ -78,13 +78,13 @@ static int
 callchain_trace(struct stackframe *fr,
 		void *data)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 	perf_callchain_store(entry, fr->pc);
 	return 0;
 }
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	struct stackframe fr;
 
diff --git a/arch/mips/kernel/perf_event.c b/arch/mips/kernel/perf_event.c
index 5021c546ad07..22395c7d7030 100644
--- a/arch/mips/kernel/perf_event.c
+++ b/arch/mips/kernel/perf_event.c
@@ -25,8 +25,8 @@
  * the user stack callchains, we will add it here.
  */
 
-static void save_raw_perf_callchain(struct perf_callchain_entry *entry,
-	unsigned long reg29)
+static void save_raw_perf_callchain(struct perf_callchain_entry_ctx *entry,
+				    unsigned long reg29)
 {
 	unsigned long *sp = (unsigned long *)reg29;
 	unsigned long addr;
@@ -35,14 +35,14 @@ static void save_raw_perf_callchain(struct perf_callchain_entry *entry,
 		addr = *sp++;
 		if (__kernel_text_address(addr)) {
 			perf_callchain_store(entry, addr);
-			if (entry->nr >= sysctl_perf_event_max_stack)
+			if (entry->entry->nr >= entry->max_stack)
 				break;
 		}
 	}
 }
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
-		      struct pt_regs *regs)
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
+			   struct pt_regs *regs)
 {
 	unsigned long sp = regs->regs[29];
 #ifdef CONFIG_KALLSYMS
@@ -59,7 +59,7 @@ void perf_callchain_kernel(struct perf_callchain_entry *entry,
 	}
 	do {
 		perf_callchain_store(entry, pc);
-		if (entry->nr >= sysctl_perf_event_max_stack)
+		if (entry->entry->nr >= entry->max_stack)
 			break;
 		pc = unwind_stack(current, &sp, pc, &ra);
 	} while (pc);
diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index 22d9015c1acc..c9260c1dfdbc 100644
--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -47,7 +47,7 @@ static int valid_next_sp(unsigned long sp, unsigned long prev_sp)
 }
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	unsigned long sp, next_sp;
 	unsigned long next_ip;
@@ -232,7 +232,7 @@ static int sane_signal_64_frame(unsigned long sp)
 		puc == (unsigned long) &sf->uc;
 }
 
-static void perf_callchain_user_64(struct perf_callchain_entry *entry,
+static void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 				   struct pt_regs *regs)
 {
 	unsigned long sp, next_sp;
@@ -247,7 +247,7 @@ static void perf_callchain_user_64(struct perf_callchain_entry *entry,
 	sp = regs->gpr[1];
 	perf_callchain_store(entry, next_ip);
 
-	while (entry->nr < sysctl_perf_event_max_stack) {
+	while (entry->entry->nr < entry->max_stack) {
 		fp = (unsigned long __user *) sp;
 		if (!valid_user_sp(sp, 1) || read_user_stack_64(fp, &next_sp))
 			return;
@@ -319,7 +319,7 @@ static int read_user_stack_32(unsigned int __user *ptr, unsigned int *ret)
 	return rc;
 }
 
-static inline void perf_callchain_user_64(struct perf_callchain_entry *entry,
+static inline void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 					  struct pt_regs *regs)
 {
 }
@@ -439,7 +439,7 @@ static unsigned int __user *signal_frame_32_regs(unsigned int sp,
 	return mctx->mc_gregs;
 }
 
-static void perf_callchain_user_32(struct perf_callchain_entry *entry,
+static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
 				   struct pt_regs *regs)
 {
 	unsigned int sp, next_sp;
@@ -453,7 +453,7 @@ static void perf_callchain_user_32(struct perf_callchain_entry *entry,
 	sp = regs->gpr[1];
 	perf_callchain_store(entry, next_ip);
 
-	while (entry->nr < sysctl_perf_event_max_stack) {
+	while (entry->entry->nr < entry->max_stack) {
 		fp = (unsigned int __user *) (unsigned long) sp;
 		if (!valid_user_sp(sp, 0) || read_user_stack_32(fp, &next_sp))
 			return;
@@ -487,7 +487,7 @@ static void perf_callchain_user_32(struct perf_callchain_entry *entry,
 }
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	if (current_is_64bit())
 		perf_callchain_user_64(entry, regs);
diff --git a/arch/s390/kernel/perf_event.c b/arch/s390/kernel/perf_event.c
index c3e4099b60a5..87035fa58bbe 100644
--- a/arch/s390/kernel/perf_event.c
+++ b/arch/s390/kernel/perf_event.c
@@ -224,13 +224,13 @@ arch_initcall(service_level_perf_register);
 
 static int __perf_callchain_kernel(void *data, unsigned long address)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 
 	perf_callchain_store(entry, address);
 	return 0;
 }
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 			   struct pt_regs *regs)
 {
 	if (user_mode(regs))
diff --git a/arch/sh/kernel/perf_callchain.c b/arch/sh/kernel/perf_callchain.c
index cc80b614b5fa..fa2c0cd23eaa 100644
--- a/arch/sh/kernel/perf_callchain.c
+++ b/arch/sh/kernel/perf_callchain.c
@@ -21,7 +21,7 @@ static int callchain_stack(void *data, char *name)
 
 static void callchain_address(void *data, unsigned long addr, int reliable)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 
 	if (reliable)
 		perf_callchain_store(entry, addr);
@@ -33,7 +33,7 @@ static const struct stacktrace_ops callchain_ops = {
 };
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	perf_callchain_store(entry, regs->pc);
 
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index a4b8b5aed21c..bcc5376db74b 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -1711,7 +1711,7 @@ static int __init init_hw_perf_events(void)
 }
 pure_initcall(init_hw_perf_events);
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 			   struct pt_regs *regs)
 {
 	unsigned long ksp, fp;
@@ -1756,7 +1756,7 @@ void perf_callchain_kernel(struct perf_callchain_entry *entry,
 			}
 		}
 #endif
-	} while (entry->nr < sysctl_perf_event_max_stack);
+	} while (entry->entry->nr < entry->max_stack);
 }
 
 static inline int
@@ -1769,7 +1769,7 @@ valid_user_frame(const void __user *fp, unsigned long size)
 	return (__range_not_ok(fp, size, TASK_SIZE) == 0);
 }
 
-static void perf_callchain_user_64(struct perf_callchain_entry *entry,
+static void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 				   struct pt_regs *regs)
 {
 	unsigned long ufp;
@@ -1790,10 +1790,10 @@ static void perf_callchain_user_64(struct perf_callchain_entry *entry,
 		pc = sf.callers_pc;
 		ufp = (unsigned long)sf.fp + STACK_BIAS;
 		perf_callchain_store(entry, pc);
-	} while (entry->nr < sysctl_perf_event_max_stack);
+	} while (entry->entry->nr < entry->max_stack);
 }
 
-static void perf_callchain_user_32(struct perf_callchain_entry *entry,
+static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
 				   struct pt_regs *regs)
 {
 	unsigned long ufp;
@@ -1822,11 +1822,11 @@ static void perf_callchain_user_32(struct perf_callchain_entry *entry,
 			ufp = (unsigned long)sf.fp;
 		}
 		perf_callchain_store(entry, pc);
-	} while (entry->nr < sysctl_perf_event_max_stack);
+	} while (entry->entry->nr < entry->max_stack);
 }
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	u64 saved_fault_address = current_thread_info()->fault_address;
 	u8 saved_fault_code = get_thread_fault_code();
diff --git a/arch/tile/kernel/perf_event.c b/arch/tile/kernel/perf_event.c
index 8767060d70fb..6394c1ccb68e 100644
--- a/arch/tile/kernel/perf_event.c
+++ b/arch/tile/kernel/perf_event.c
@@ -941,7 +941,7 @@ arch_initcall(init_hw_perf_events);
 /*
  * Tile specific backtracing code for perf_events.
  */
-static inline void perf_callchain(struct perf_callchain_entry *entry,
+static inline void perf_callchain(struct perf_callchain_entry_ctx *entry,
 		    struct pt_regs *regs)
 {
 	struct KBacktraceIterator kbt;
@@ -992,13 +992,13 @@ static inline void perf_callchain(struct perf_callchain_entry *entry,
 	}
 }
 
-void perf_callchain_user(struct perf_callchain_entry *entry,
+void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 		    struct pt_regs *regs)
 {
 	perf_callchain(entry, regs);
 }
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 		      struct pt_regs *regs)
 {
 	perf_callchain(entry, regs);
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 5e5e76a52f58..07f2b01cfb72 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -2202,7 +2202,7 @@ static int backtrace_stack(void *data, char *name)
 
 static int backtrace_address(void *data, unsigned long addr, int reliable)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 
 	return perf_callchain_store(entry, addr);
 }
@@ -2214,7 +2214,7 @@ static const struct stacktrace_ops backtrace_ops = {
 };
 
 void
-perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) {
 		/* TODO: We don't support guest os callchain now */
@@ -2268,7 +2268,7 @@ static unsigned long get_segment_base(unsigned int segment)
 #include <asm/compat.h>
 
 static inline int
-perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
+perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *entry)
 {
 	/* 32-bit process in 64-bit kernel. */
 	unsigned long ss_base, cs_base;
@@ -2283,7 +2283,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
 
 	fp = compat_ptr(ss_base + regs->bp);
 	pagefault_disable();
-	while (entry->nr < sysctl_perf_event_max_stack) {
+	while (entry->entry->nr < entry->max_stack) {
 		unsigned long bytes;
 		frame.next_frame     = 0;
 		frame.return_address = 0;
@@ -2309,14 +2309,14 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
 }
 #else
 static inline int
-perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
+perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *entry)
 {
     return 0;
 }
 #endif
 
 void
-perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs)
 {
 	struct stack_frame frame;
 	const void __user *fp;
@@ -2343,7 +2343,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
 		return;
 
 	pagefault_disable();
-	while (entry->nr < sysctl_perf_event_max_stack) {
+	while (entry->entry->nr < entry->max_stack) {
 		unsigned long bytes;
 		frame.next_frame	     = NULL;
 		frame.return_address = 0;
diff --git a/arch/xtensa/kernel/perf_event.c b/arch/xtensa/kernel/perf_event.c
index a6b00b3af429..ef90479e0397 100644
--- a/arch/xtensa/kernel/perf_event.c
+++ b/arch/xtensa/kernel/perf_event.c
@@ -323,23 +323,23 @@ static void xtensa_pmu_read(struct perf_event *event)
 
 static int callchain_trace(struct stackframe *frame, void *data)
 {
-	struct perf_callchain_entry *entry = data;
+	struct perf_callchain_entry_ctx *entry = data;
 
 	perf_callchain_store(entry, frame->pc);
 	return 0;
 }
 
-void perf_callchain_kernel(struct perf_callchain_entry *entry,
+void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 			   struct pt_regs *regs)
 {
-	xtensa_backtrace_kernel(regs, sysctl_perf_event_max_stack,
+	xtensa_backtrace_kernel(regs, entry->max_stack,
 				callchain_trace, NULL, entry);
 }
 
-void perf_callchain_user(struct perf_callchain_entry *entry,
+void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 			 struct pt_regs *regs)
 {
-	xtensa_backtrace_user(regs, sysctl_perf_event_max_stack,
+	xtensa_backtrace_user(regs, entry->max_stack,
 			      callchain_trace, entry);
 }
 
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 9e1c3ada91c4..dbd18246b36e 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -61,6 +61,11 @@ struct perf_callchain_entry {
 	__u64				ip[0]; /* /proc/sys/kernel/perf_event_max_stack */
 };
 
+struct perf_callchain_entry_ctx {
+	struct perf_callchain_entry *entry;
+	u32			    max_stack;
+};
+
 struct perf_raw_record {
 	u32				size;
 	void				*data;
@@ -1063,19 +1068,20 @@ extern void perf_event_fork(struct task_struct *tsk);
 /* Callchains */
 DECLARE_PER_CPU(struct perf_callchain_entry, perf_callchain_entry);
 
-extern void perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs);
-extern void perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs);
+extern void perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs);
+extern void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs);
 extern struct perf_callchain_entry *
 get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
-		   bool crosstask, bool add_mark);
+		   u32 max_stack, bool crosstask, bool add_mark);
 extern int get_callchain_buffers(void);
 extern void put_callchain_buffers(void);
 
 extern int sysctl_perf_event_max_stack;
 
-static inline int perf_callchain_store(struct perf_callchain_entry *entry, u64 ip)
+static inline int perf_callchain_store(struct perf_callchain_entry_ctx *ctx, u64 ip)
 {
-	if (entry->nr < sysctl_perf_event_max_stack) {
+	struct perf_callchain_entry *entry = ctx->entry;
+	if (entry->nr < ctx->max_stack) {
 		entry->ip[entry->nr++] = ip;
 		return 0;
 	} else {
diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c
index f5a19548be12..a82d7605db3f 100644
--- a/kernel/bpf/stackmap.c
+++ b/kernel/bpf/stackmap.c
@@ -136,7 +136,8 @@ static u64 bpf_get_stackid(u64 r1, u64 r2, u64 flags, u64 r4, u64 r5)
 			       BPF_F_FAST_STACK_CMP | BPF_F_REUSE_STACKID)))
 		return -EINVAL;
 
-	trace = get_perf_callchain(regs, init_nr, kernel, user, false, false);
+	trace = get_perf_callchain(regs, init_nr, kernel, user,
+				   sysctl_perf_event_max_stack, false, false);
 
 	if (unlikely(!trace))
 		/* couldn't fetch the stack trace */
diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index 7fc89939ede9..af95ad92893a 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -32,12 +32,12 @@ static DEFINE_MUTEX(callchain_mutex);
 static struct callchain_cpus_entries *callchain_cpus_entries;
 
 
-__weak void perf_callchain_kernel(struct perf_callchain_entry *entry,
+__weak void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 				  struct pt_regs *regs)
 {
 }
 
-__weak void perf_callchain_user(struct perf_callchain_entry *entry,
+__weak void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 				struct pt_regs *regs)
 {
 }
@@ -176,14 +176,15 @@ perf_callchain(struct perf_event *event, struct pt_regs *regs)
 	if (!kernel && !user)
 		return NULL;
 
-	return get_perf_callchain(regs, 0, kernel, user, crosstask, true);
+	return get_perf_callchain(regs, 0, kernel, user, sysctl_perf_event_max_stack, crosstask, true);
 }
 
 struct perf_callchain_entry *
 get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
-		   bool crosstask, bool add_mark)
+		   u32 max_stack, bool crosstask, bool add_mark)
 {
 	struct perf_callchain_entry *entry;
+	struct perf_callchain_entry_ctx ctx;
 	int rctx;
 
 	entry = get_callchain_entry(&rctx);
@@ -193,12 +194,15 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 	if (!entry)
 		goto exit_put;
 
+	ctx.entry     = entry;
+	ctx.max_stack = max_stack;
+
 	entry->nr = init_nr;
 
 	if (kernel && !user_mode(regs)) {
 		if (add_mark)
-			perf_callchain_store(entry, PERF_CONTEXT_KERNEL);
-		perf_callchain_kernel(entry, regs);
+			perf_callchain_store(&ctx, PERF_CONTEXT_KERNEL);
+		perf_callchain_kernel(&ctx, regs);
 	}
 
 	if (user) {
@@ -214,8 +218,8 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 				goto exit_put;
 
 			if (add_mark)
-				perf_callchain_store(entry, PERF_CONTEXT_USER);
-			perf_callchain_user(entry, regs);
+				perf_callchain_store(&ctx, PERF_CONTEXT_USER);
+			perf_callchain_user(&ctx, regs);
 		}
 	}
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 09/12] perf core: Add a 'nr' field to perf_event_callchain_context
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (7 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 08/12] perf core: Pass max stack as a perf_callchain_entry context Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 10/12] perf core: Add perf_callchain_store_context() helper Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Peter Zijlstra

From: Arnaldo Carvalho de Melo <acme@redhat.com>

We will use it to count how many addresses are in the entry->ip[] array,
excluding PERF_CONTEXT_{KERNEL,USER,etc} entries, so that we can really
return the number of entries specified by the user via the relevant
sysctl, kernel.perf_event_max_contexts, or via the per event
perf_event_attr.sample_max_stack knob.

This way we keep the perf_sample->ip_callchain->nr meaning, that is the
number of entries, be it real addresses or PERF_CONTEXT_ entries, while
honouring the max_stack knobs, i.e. the end result will be max_stack
entries if we have at least that many entries in a given stack trace.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/n/tip-s8teto51tdqvlfhefndtat9r@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 arch/arm/kernel/perf_callchain.c   | 2 +-
 arch/arm64/kernel/perf_callchain.c | 4 ++--
 arch/metag/kernel/perf_callchain.c | 2 +-
 arch/mips/kernel/perf_event.c      | 4 ++--
 arch/powerpc/perf/callchain.c      | 4 ++--
 arch/sparc/kernel/perf_event.c     | 6 +++---
 arch/x86/events/core.c             | 4 ++--
 include/linux/perf_event.h         | 6 ++++--
 kernel/events/callchain.c          | 3 +--
 9 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/arch/arm/kernel/perf_callchain.c b/arch/arm/kernel/perf_callchain.c
index bc552e813e7b..22bf1f64d99a 100644
--- a/arch/arm/kernel/perf_callchain.c
+++ b/arch/arm/kernel/perf_callchain.c
@@ -75,7 +75,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
 
 	tail = (struct frame_tail __user *)regs->ARM_fp - 1;
 
-	while ((entry->entry->nr < entry->max_stack) &&
+	while ((entry->nr < entry->max_stack) &&
 	       tail && !((unsigned long)tail & 0x3))
 		tail = user_backtrace(tail, entry);
 }
diff --git a/arch/arm64/kernel/perf_callchain.c b/arch/arm64/kernel/perf_callchain.c
index 0d60150057cf..713ca824f266 100644
--- a/arch/arm64/kernel/perf_callchain.c
+++ b/arch/arm64/kernel/perf_callchain.c
@@ -122,7 +122,7 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 
 		tail = (struct frame_tail __user *)regs->regs[29];
 
-		while (entry->entry->nr < entry->max_stack &&
+		while (entry->nr < entry->max_stack &&
 		       tail && !((unsigned long)tail & 0xf))
 			tail = user_backtrace(tail, entry);
 	} else {
@@ -132,7 +132,7 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
 
 		tail = (struct compat_frame_tail __user *)regs->compat_fp - 1;
 
-		while ((entry->entry->nr < entry->max_stack) &&
+		while ((entry->nr < entry->max_stack) &&
 			tail && !((unsigned long)tail & 0x3))
 			tail = compat_user_backtrace(tail, entry);
 #endif
diff --git a/arch/metag/kernel/perf_callchain.c b/arch/metag/kernel/perf_callchain.c
index b3261a98b15b..3e8e048040df 100644
--- a/arch/metag/kernel/perf_callchain.c
+++ b/arch/metag/kernel/perf_callchain.c
@@ -65,7 +65,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
 
 	--frame;
 
-	while ((entry->entry->nr < entry->max_stack) && frame)
+	while ((entry->nr < entry->max_stack) && frame)
 		frame = user_backtrace(frame, entry);
 }
 
diff --git a/arch/mips/kernel/perf_event.c b/arch/mips/kernel/perf_event.c
index 22395c7d7030..d64056e0bb56 100644
--- a/arch/mips/kernel/perf_event.c
+++ b/arch/mips/kernel/perf_event.c
@@ -35,7 +35,7 @@ static void save_raw_perf_callchain(struct perf_callchain_entry_ctx *entry,
 		addr = *sp++;
 		if (__kernel_text_address(addr)) {
 			perf_callchain_store(entry, addr);
-			if (entry->entry->nr >= entry->max_stack)
+			if (entry->nr >= entry->max_stack)
 				break;
 		}
 	}
@@ -59,7 +59,7 @@ void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 	}
 	do {
 		perf_callchain_store(entry, pc);
-		if (entry->entry->nr >= entry->max_stack)
+		if (entry->nr >= entry->max_stack)
 			break;
 		pc = unwind_stack(current, &sp, pc, &ra);
 	} while (pc);
diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index c9260c1dfdbc..f68f213dc36c 100644
--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -247,7 +247,7 @@ static void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 	sp = regs->gpr[1];
 	perf_callchain_store(entry, next_ip);
 
-	while (entry->entry->nr < entry->max_stack) {
+	while (entry->nr < entry->max_stack) {
 		fp = (unsigned long __user *) sp;
 		if (!valid_user_sp(sp, 1) || read_user_stack_64(fp, &next_sp))
 			return;
@@ -453,7 +453,7 @@ static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
 	sp = regs->gpr[1];
 	perf_callchain_store(entry, next_ip);
 
-	while (entry->entry->nr < entry->max_stack) {
+	while (entry->nr < entry->max_stack) {
 		fp = (unsigned int __user *) (unsigned long) sp;
 		if (!valid_user_sp(sp, 0) || read_user_stack_32(fp, &next_sp))
 			return;
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index bcc5376db74b..710f3278d448 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -1756,7 +1756,7 @@ void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
 			}
 		}
 #endif
-	} while (entry->entry->nr < entry->max_stack);
+	} while (entry->nr < entry->max_stack);
 }
 
 static inline int
@@ -1790,7 +1790,7 @@ static void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 		pc = sf.callers_pc;
 		ufp = (unsigned long)sf.fp + STACK_BIAS;
 		perf_callchain_store(entry, pc);
-	} while (entry->entry->nr < entry->max_stack);
+	} while (entry->nr < entry->max_stack);
 }
 
 static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
@@ -1822,7 +1822,7 @@ static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
 			ufp = (unsigned long)sf.fp;
 		}
 		perf_callchain_store(entry, pc);
-	} while (entry->entry->nr < entry->max_stack);
+	} while (entry->nr < entry->max_stack);
 }
 
 void
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 07f2b01cfb72..5de96a18cd9c 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -2283,7 +2283,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent
 
 	fp = compat_ptr(ss_base + regs->bp);
 	pagefault_disable();
-	while (entry->entry->nr < entry->max_stack) {
+	while (entry->nr < entry->max_stack) {
 		unsigned long bytes;
 		frame.next_frame     = 0;
 		frame.return_address = 0;
@@ -2343,7 +2343,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
 		return;
 
 	pagefault_disable();
-	while (entry->entry->nr < entry->max_stack) {
+	while (entry->nr < entry->max_stack) {
 		unsigned long bytes;
 		frame.next_frame	     = NULL;
 		frame.return_address = 0;
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index dbd18246b36e..3803bb1a862b 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -64,6 +64,7 @@ struct perf_callchain_entry {
 struct perf_callchain_entry_ctx {
 	struct perf_callchain_entry *entry;
 	u32			    max_stack;
+	u32			    nr;
 };
 
 struct perf_raw_record {
@@ -1080,9 +1081,10 @@ extern int sysctl_perf_event_max_stack;
 
 static inline int perf_callchain_store(struct perf_callchain_entry_ctx *ctx, u64 ip)
 {
-	struct perf_callchain_entry *entry = ctx->entry;
-	if (entry->nr < ctx->max_stack) {
+	if (ctx->nr < ctx->max_stack) {
+		struct perf_callchain_entry *entry = ctx->entry;
 		entry->ip[entry->nr++] = ip;
+		++ctx->nr;
 		return 0;
 	} else {
 		return -1; /* no more room, stop walking the stack */
diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index af95ad92893a..8774ff86debb 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -196,8 +196,7 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 
 	ctx.entry     = entry;
 	ctx.max_stack = max_stack;
-
-	entry->nr = init_nr;
+	ctx.nr	      = entry->nr = init_nr;
 
 	if (kernel && !user_mode(regs)) {
 		if (add_mark)
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 10/12] perf core: Add perf_callchain_store_context() helper
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (8 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 09/12] perf core: Add a 'nr' field to perf_event_callchain_context Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 11/12] perf core: Separate accounting of contexts and real addresses in a stack trace Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Peter Zijlstra

From: Arnaldo Carvalho de Melo <acme@redhat.com>

We need have different helpers to account how many contexts we have in
the sample and for real addresses, so do it now as a prep patch, to
ease review.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/n/tip-q964tnyuqrxw5gld18vizs3c@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 arch/powerpc/perf/callchain.c | 6 +++---
 include/linux/perf_event.h    | 2 ++
 kernel/events/callchain.c     | 4 ++--
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index f68f213dc36c..f62597dbd757 100644
--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -76,7 +76,7 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
 			next_ip = regs->nip;
 			lr = regs->link;
 			level = 0;
-			perf_callchain_store(entry, PERF_CONTEXT_KERNEL);
+			perf_callchain_store_context(entry, PERF_CONTEXT_KERNEL);
 
 		} else {
 			if (level == 0)
@@ -274,7 +274,7 @@ static void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 			    read_user_stack_64(&uregs[PT_R1], &sp))
 				return;
 			level = 0;
-			perf_callchain_store(entry, PERF_CONTEXT_USER);
+			perf_callchain_store_context(entry, PERF_CONTEXT_USER);
 			perf_callchain_store(entry, next_ip);
 			continue;
 		}
@@ -473,7 +473,7 @@ static void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
 			    read_user_stack_32(&uregs[PT_R1], &sp))
 				return;
 			level = 0;
-			perf_callchain_store(entry, PERF_CONTEXT_USER);
+			perf_callchain_store_context(entry, PERF_CONTEXT_USER);
 			perf_callchain_store(entry, next_ip);
 			continue;
 		}
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 3803bb1a862b..2024b14cc2b1 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1079,6 +1079,8 @@ extern void put_callchain_buffers(void);
 
 extern int sysctl_perf_event_max_stack;
 
+#define perf_callchain_store_context(ctx, context) perf_callchain_store(ctx, context)
+
 static inline int perf_callchain_store(struct perf_callchain_entry_ctx *ctx, u64 ip)
 {
 	if (ctx->nr < ctx->max_stack) {
diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index 8774ff86debb..ca645736a983 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -200,7 +200,7 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 
 	if (kernel && !user_mode(regs)) {
 		if (add_mark)
-			perf_callchain_store(&ctx, PERF_CONTEXT_KERNEL);
+			perf_callchain_store_context(&ctx, PERF_CONTEXT_KERNEL);
 		perf_callchain_kernel(&ctx, regs);
 	}
 
@@ -217,7 +217,7 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 				goto exit_put;
 
 			if (add_mark)
-				perf_callchain_store(&ctx, PERF_CONTEXT_USER);
+				perf_callchain_store_context(&ctx, PERF_CONTEXT_USER);
 			perf_callchain_user(&ctx, regs);
 		}
 	}
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 11/12] perf core: Separate accounting of contexts and real addresses in a stack trace
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (9 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 10/12] perf core: Add perf_callchain_store_context() helper Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-17  2:45 ` [PATCH 12/12] perf tools: " Arnaldo Carvalho de Melo
  2016-05-20  6:23 ` [GIT PULL 00/12] perf/core improvements and fixes Ingo Molnar
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Brendan Gregg,
	David Ahern, Frederic Weisbecker, He Kuang, Jiri Olsa,
	Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra,
	Stephane Eranian, Thomas Gleixner, Vince Weaver, Wang Nan,
	Zefan Li

From: Arnaldo Carvalho de Melo <acme@redhat.com>

The perf_sample->ip_callchain->nr value includes all the entries in the
ip_callchain->ip[] array, real addresses and PERF_CONTEXT_{KERNEL,USER,etc},
while what the user expects is that what is in the kernel.perf_event_max_stack
sysctl or in the upcoming per event perf_event_attr.sample_max_stack knob be
honoured in terms of IP addresses in the stack trace.

So allocate a bunch of extra entries for contexts, and do the accounting
via perf_callchain_entry_ctx struct members.

A new sysctl, kernel.perf_event_max_contexts_per_stack is also
introduced for investigating possible bugs in the callchain
implementation by some arch.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Zefan Li <lizefan@huawei.com>
Link: http://lkml.kernel.org/n/tip-3b4wnqk340c4sg4gwkfdi9yk@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 Documentation/sysctl/kernel.txt | 14 ++++++++++++++
 include/linux/perf_event.h      | 18 ++++++++++++++++--
 include/uapi/linux/perf_event.h |  1 +
 kernel/events/callchain.c       | 10 +++++++++-
 kernel/sysctl.c                 |  9 +++++++++
 5 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index daabdd7ee543..a3683ce2a2f3 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -61,6 +61,7 @@ show up in /proc/sys/kernel:
 - perf_cpu_time_max_percent
 - perf_event_paranoid
 - perf_event_max_stack
+- perf_event_max_contexts_per_stack
 - pid_max
 - powersave-nap               [ PPC only ]
 - printk
@@ -668,6 +669,19 @@ The default value is 127.
 
 ==============================================================
 
+perf_event_max_contexts_per_stack:
+
+Controls maximum number of stack frame context entries for
+(attr.sample_type & PERF_SAMPLE_CALLCHAIN) configured events, for
+instance, when using 'perf record -g' or 'perf trace --call-graph fp'.
+
+This can only be done when no events are in use that have callchains
+enabled, otherwise writing to this file will return -EBUSY.
+
+The default value is 8.
+
+==============================================================
+
 pid_max:
 
 PID allocation wrap value.  When the kernel's next PID value
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 2024b14cc2b1..6b87be908790 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -65,6 +65,8 @@ struct perf_callchain_entry_ctx {
 	struct perf_callchain_entry *entry;
 	u32			    max_stack;
 	u32			    nr;
+	short			    contexts;
+	bool			    contexts_maxed;
 };
 
 struct perf_raw_record {
@@ -1078,12 +1080,24 @@ extern int get_callchain_buffers(void);
 extern void put_callchain_buffers(void);
 
 extern int sysctl_perf_event_max_stack;
+extern int sysctl_perf_event_max_contexts_per_stack;
 
-#define perf_callchain_store_context(ctx, context) perf_callchain_store(ctx, context)
+static inline int perf_callchain_store_context(struct perf_callchain_entry_ctx *ctx, u64 ip)
+{
+	if (ctx->contexts < sysctl_perf_event_max_contexts_per_stack) {
+		struct perf_callchain_entry *entry = ctx->entry;
+		entry->ip[entry->nr++] = ip;
+		++ctx->contexts;
+		return 0;
+	} else {
+		ctx->contexts_maxed = true;
+		return -1; /* no more room, stop walking the stack */
+	}
+}
 
 static inline int perf_callchain_store(struct perf_callchain_entry_ctx *ctx, u64 ip)
 {
-	if (ctx->nr < ctx->max_stack) {
+	if (ctx->nr < ctx->max_stack && !ctx->contexts_maxed) {
 		struct perf_callchain_entry *entry = ctx->entry;
 		entry->ip[entry->nr++] = ip;
 		++ctx->nr;
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index 43fc8d213472..36ce552cf6a9 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -862,6 +862,7 @@ enum perf_event_type {
 };
 
 #define PERF_MAX_STACK_DEPTH		127
+#define PERF_MAX_CONTEXTS_PER_STACK	  8
 
 enum perf_callchain_context {
 	PERF_CONTEXT_HV			= (__u64)-32,
diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index ca645736a983..179ef4640964 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -19,11 +19,13 @@ struct callchain_cpus_entries {
 };
 
 int sysctl_perf_event_max_stack __read_mostly = PERF_MAX_STACK_DEPTH;
+int sysctl_perf_event_max_contexts_per_stack __read_mostly = PERF_MAX_CONTEXTS_PER_STACK;
 
 static inline size_t perf_callchain_entry__sizeof(void)
 {
 	return (sizeof(struct perf_callchain_entry) +
-		sizeof(__u64) * sysctl_perf_event_max_stack);
+		sizeof(__u64) * (sysctl_perf_event_max_stack +
+				 sysctl_perf_event_max_contexts_per_stack));
 }
 
 static DEFINE_PER_CPU(int, callchain_recursion[PERF_NR_CONTEXTS]);
@@ -197,6 +199,8 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,
 	ctx.entry     = entry;
 	ctx.max_stack = max_stack;
 	ctx.nr	      = entry->nr = init_nr;
+	ctx.contexts       = 0;
+	ctx.contexts_maxed = false;
 
 	if (kernel && !user_mode(regs)) {
 		if (add_mark)
@@ -228,6 +232,10 @@ exit_put:
 	return entry;
 }
 
+/*
+ * Used for sysctl_perf_event_max_stack and
+ * sysctl_perf_event_max_contexts_per_stack.
+ */
 int perf_event_max_stack_handler(struct ctl_table *table, int write,
 				 void __user *buffer, size_t *lenp, loff_t *ppos)
 {
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 0ec6907a16b3..bec4c11c47d6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1156,6 +1156,15 @@ static struct ctl_table kern_table[] = {
 		.extra1		= &zero,
 		.extra2		= &six_hundred_forty_kb,
 	},
+	{
+		.procname	= "perf_event_max_contexts_per_stack",
+		.data		= &sysctl_perf_event_max_contexts_per_stack,
+		.maxlen		= sizeof(sysctl_perf_event_max_contexts_per_stack),
+		.mode		= 0644,
+		.proc_handler	= perf_event_max_stack_handler,
+		.extra1		= &zero,
+		.extra2		= &one_thousand,
+	},
 #endif
 #ifdef CONFIG_KMEMCHECK
 	{
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH 12/12] perf tools: Separate accounting of contexts and real addresses in a stack trace
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (10 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 11/12] perf core: Separate accounting of contexts and real addresses in a stack trace Arnaldo Carvalho de Melo
@ 2016-05-17  2:45 ` Arnaldo Carvalho de Melo
  2016-05-20  6:23 ` [GIT PULL 00/12] perf/core improvements and fixes Ingo Molnar
  12 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-17  2:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Brendan Gregg,
	David Ahern, Frederic Weisbecker, He Kuang, Jiri Olsa,
	Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra,
	Stephane Eranian, Thomas Gleixner, Vince Weaver, Wang Nan,
	Zefan Li

From: Arnaldo Carvalho de Melo <acme@redhat.com>

The perf_sample->ip_callchain->nr value includes all the entries in the
ip_callchain->ip[] array, real addresses and PERF_CONTEXT_{KERNEL,USER,etc},
while what the user expects is that what is in the kernel.perf_event_max_stack
sysctl or in the upcoming per event perf_event_attr.sample_max_stack knob be
honoured in terms of IP addresses in the stack trace.

So match the kernel support and validate chain->nr taking into account
both kernel.perf_event_max_stack and kernel.perf_event_max_contexts_per_stack.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Zefan Li <lizefan@huawei.com>
Link: http://lkml.kernel.org/n/tip-mgx0jpzfdq4uq4abfa40byu0@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/perf.c         |  3 +++
 tools/perf/util/machine.c | 26 +++++++++++++++++---------
 tools/perf/util/util.c    |  3 ++-
 tools/perf/util/util.h    |  3 ++-
 4 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index 797000842d40..15982cee5ef3 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -549,6 +549,9 @@ int main(int argc, const char **argv)
 	if (sysctl__read_int("kernel/perf_event_max_stack", &value) == 0)
 		sysctl_perf_event_max_stack = value;
 
+	if (sysctl__read_int("kernel/perf_event_max_contexts_per_stack", &value) == 0)
+		sysctl_perf_event_max_contexts_per_stack = value;
+
 	cmd = extract_argv0_path(argv[0]);
 	if (!cmd)
 		cmd = "perf-help";
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 18dd96bdde05..7ba9fadb68af 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1811,9 +1811,9 @@ static int thread__resolve_callchain_sample(struct thread *thread,
 {
 	struct branch_stack *branch = sample->branch_stack;
 	struct ip_callchain *chain = sample->callchain;
-	int chain_nr = min(max_stack, (int)chain->nr);
+	int chain_nr = chain->nr;
 	u8 cpumode = PERF_RECORD_MISC_USER;
-	int i, j, err;
+	int i, j, err, nr_entries, nr_contexts;
 	int skip_idx = -1;
 	int first_call = 0;
 
@@ -1828,7 +1828,7 @@ static int thread__resolve_callchain_sample(struct thread *thread,
 	 * Based on DWARF debug information, some architectures skip
 	 * a callchain entry saved by the kernel.
 	 */
-	if (chain->nr < sysctl_perf_event_max_stack)
+	if (chain_nr < sysctl_perf_event_max_stack)
 		skip_idx = arch_skip_callchain_idx(thread, chain);
 
 	/*
@@ -1889,12 +1889,8 @@ static int thread__resolve_callchain_sample(struct thread *thread,
 	}
 
 check_calls:
-	if (chain->nr > sysctl_perf_event_max_stack && (int)chain->nr > max_stack) {
-		pr_warning("corrupted callchain. skipping...\n");
-		return 0;
-	}
-
-	for (i = first_call; i < chain_nr; i++) {
+	for (i = first_call, nr_entries = 0, nr_contexts = 0;
+	     i < chain_nr && nr_entries < max_stack; i++) {
 		u64 ip;
 
 		if (callchain_param.order == ORDER_CALLEE)
@@ -1908,6 +1904,14 @@ check_calls:
 #endif
 		ip = chain->ips[j];
 
+		if (ip >= PERF_CONTEXT_MAX) {
+			if (++nr_contexts > sysctl_perf_event_max_contexts_per_stack)
+				goto out_corrupted_callchain;
+		} else {
+			if (++nr_entries > sysctl_perf_event_max_stack)
+				goto out_corrupted_callchain;
+		}
+
 		err = add_callchain_ip(thread, cursor, parent, root_al, &cpumode, ip);
 
 		if (err)
@@ -1915,6 +1919,10 @@ check_calls:
 	}
 
 	return 0;
+
+out_corrupted_callchain:
+	pr_warning("corrupted callchain. skipping...\n");
+	return 0;
 }
 
 static int unwind_entry(struct unwind_entry *entry, void *arg)
diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index eab077ad6ca9..23504ad5d6dd 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -33,7 +33,8 @@ struct callchain_param	callchain_param = {
 unsigned int page_size;
 int cacheline_size;
 
-unsigned int sysctl_perf_event_max_stack = PERF_MAX_STACK_DEPTH;
+int sysctl_perf_event_max_stack = PERF_MAX_STACK_DEPTH;
+int sysctl_perf_event_max_contexts_per_stack = PERF_MAX_CONTEXTS_PER_STACK;
 
 bool test_attr__enabled;
 
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 7651633a8dc7..1e8c3167b9fb 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -261,7 +261,8 @@ void sighandler_dump_stack(int sig);
 
 extern unsigned int page_size;
 extern int cacheline_size;
-extern unsigned int sysctl_perf_event_max_stack;
+extern int sysctl_perf_event_max_stack;
+extern int sysctl_perf_event_max_contexts_per_stack;
 
 struct parse_tag {
 	char tag;
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (11 preceding siblings ...)
  2016-05-17  2:45 ` [PATCH 12/12] perf tools: " Arnaldo Carvalho de Melo
@ 2016-05-20  6:23 ` Ingo Molnar
  12 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2016-05-20  6:23 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov,
	Ananth N Mavinakayanahalli, Andi Kleen, Brendan Gregg,
	David Ahern, Ekaterina Tumanova, Frederic Weisbecker, He Kuang,
	Hemant Kumar, Jiri Olsa, Josh Poimboeuf, Kan Liang,
	Linus Torvalds, Masami Hiramatsu, Milian Wolff, Namhyung Kim,
	Pekka Enberg, Peter Zijlstra, Stephane Eranian,
	Sukadev Bhattiprolu, Thomas Gleixner, Vince Weaver, Wang Nan,
	Zefan Li


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 3f56e687a138481894a1088d5aa7d41951bdb020:
> 
>   perf/core: Disable the event on a truncated AUX record (2016-05-12 10:14:55 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160516
> 
> for you to fetch changes up to a29d5c9b8167dbc21a7ca8c0302e3799f9063b4e:
> 
>   perf tools: Separate accounting of contexts and real addresses in a stack trace (2016-05-16 23:11:54 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Honour the kernel.perf_event_max_stack knob more precisely by not counting
>   PERF_CONTEXT_{KERNEL,USER} when deciding when to stop adding entries to
>   the perf_sample->ip_callchain[] array (Arnaldo Carvalho de Melo)
> 
> - Fix identation of 'stalled-backend-cycles' in 'perf stat' (Namhyung Kim)
> 
> - Update runtime using 'cpu-clock' event in 'perf stat' (Namhyung Kim)
> 
> - Use 'cpu-clock' for cpu targets in 'perf stat' (Namhyung Kim)
> 
> - Avoid fractional digits for integer scales in 'perf stat' (Andi Kleen)
> 
> - Store vdso buildid unconditionally, as it appears in callchains and
>   we're not checking those when creating the build-id table, so we
>   end up not being able to resolve VDSO symbols when doing analysis
>   on a different machine than the one where recording was done, possibly
>   of a different arch even (arm -> x86_64) (He Kuang)
> 
> Infrastructure:
> 
> - Generalize max_stack sysctl handler, will be used for configuring
>   multiple kernel knobs related to callchains (Arnaldo Carvalho de Melo)
> 
> Cleanups:
> 
> - Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE, to stop using
>   open coded strings (Masami Hiramatsu)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andi Kleen (1):
>       perf stat: Avoid fractional digits for integer scales
> 
> Arnaldo Carvalho de Melo (6):
>       perf core: Generalize max_stack sysctl handler
>       perf core: Pass max stack as a perf_callchain_entry context
>       perf core: Add a 'nr' field to perf_event_callchain_context
>       perf core: Add perf_callchain_store_context() helper
>       perf core: Separate accounting of contexts and real addresses in a stack trace
>       perf tools: Separate accounting of contexts and real addresses in a stack trace
> 
> He Kuang (1):
>       perf symbols: Store vdso buildid unconditionally
> 
> Masami Hiramatsu (1):
>       perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE
> 
> Namhyung Kim (3):
>       perf stat: Fix indentation of stalled backend cycle
>       perf stat: Update runtime using cpu-clock event
>       perf stat: Use cpu-clock event for cpu targets
> 
>  Documentation/sysctl/kernel.txt    | 14 ++++++++++++++
>  arch/arc/kernel/perf_event.c       |  6 +++---
>  arch/arm/kernel/perf_callchain.c   | 10 +++++-----
>  arch/arm64/kernel/perf_callchain.c | 14 +++++++-------
>  arch/metag/kernel/perf_callchain.c | 10 +++++-----
>  arch/mips/kernel/perf_event.c      | 12 ++++++------
>  arch/powerpc/perf/callchain.c      | 20 ++++++++++----------
>  arch/s390/kernel/perf_event.c      |  4 ++--
>  arch/sh/kernel/perf_callchain.c    |  4 ++--
>  arch/sparc/kernel/perf_event.c     | 14 +++++++-------
>  arch/tile/kernel/perf_event.c      |  6 +++---
>  arch/x86/events/core.c             | 14 +++++++-------
>  arch/xtensa/kernel/perf_event.c    | 10 +++++-----
>  include/linux/perf_event.h         | 34 +++++++++++++++++++++++++++++-----
>  include/uapi/linux/perf_event.h    |  1 +
>  kernel/bpf/stackmap.c              |  3 ++-
>  kernel/events/callchain.c          | 36 ++++++++++++++++++++++++------------
>  kernel/sysctl.c                    | 11 ++++++++++-
>  tools/perf/builtin-buildid-cache.c |  8 ++++----
>  tools/perf/builtin-stat.c          | 22 +++++++++++++---------
>  tools/perf/perf.c                  |  3 +++
>  tools/perf/util/annotate.c         |  2 +-
>  tools/perf/util/build-id.c         |  2 +-
>  tools/perf/util/dso.c              |  3 ++-
>  tools/perf/util/machine.c          | 28 ++++++++++++++++++----------
>  tools/perf/util/stat-shadow.c      |  8 +++++---
>  tools/perf/util/symbol.c           | 10 +++++-----
>  tools/perf/util/symbol.h           |  3 +++
>  tools/perf/util/util.c             |  3 ++-
>  tools/perf/util/util.h             |  3 ++-
>  30 files changed, 201 insertions(+), 117 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2018-10-09  0:54 Arnaldo Carvalho de Melo
@ 2018-10-09  5:24 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2018-10-09  5:24 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Sverdlin, David Ahern, Eduardo Habkost, Heiko Carstens,
	Hendrik Brueckner, Jiri Olsa, Joe Lawrence, linux trace devel,
	Martin Schwidefsky, Namhyung Kim, Ravi Bangoria,
	Sanskriti Sharma, Steven Rostedt, Thomas Richter,
	Tzvetomir Stoyanov, Wang Nan, Arnaldo Carvalho de Melo


* 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 7c5314b88da6d5af98239786772a1c44cc5eb67d:
> 
>   perf/x86/intel: Add quirk for Goldmont Plus (2018-10-02 10:14:33 +0200)
> 
> 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.20-20181008
> 
> for you to fetch changes up to bb3dd7e7c4d5e024d607c0ec06c2a2fb9408cc99:
> 
>   tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file (2018-10-08 15:05:37 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Fix building the python bindings with python3, which fixes some
>   problems with building with clang on Clear Linux (Eduardo Habkost)
> 
> . Fix coverity warnings, fixing up some error paths and plugging
>   some temporary small buffer leaks (Sanskriti Sharma)
> 
> . Adopt a wrapper for strerror_r() for the same reasons as recently
>   for libbpf (Steven Rostedt)
> 
> . S390 does not support watchpoints in 'perf test 22', check if
>   that test is supported by the arch. (Thomas Richter)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
>       tools include: Adopt linux/bits.h
>       perf auxtrace: Include missing asm/bitsperlong.h to get BITS_PER_LONG
> 
> Eduardo Habkost (2):
>       perf python: Make clang_has_option() work on Python 3
>       perf python: More portable way to make CFLAGS work with clang
> 
> Sanskriti Sharma (5):
>       perf strbuf: Match va_{add,copy} with va_end
>       perf tools: Cleanup trace-event-info 'tdata' leak
>       perf tools: Free 'printk' string in parse_ftrace_printk()
>       perf tools: Avoid double free in read_event_file()
>       perf tools: Free temporary 'sys' string in read_event_files()
> 
> Steven Rostedt (VMware) (1):
>       tools lib traceevent: Separate out tep_strerror() for strerror_r() issues
> 
> Thomas Richter (1):
>       perf test: S390 does not support watchpoints in test 22
> 
> Tzvetomir Stoyanov (1):
>       tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file
> 
>  tools/include/linux/bitops.h             |   7 +-
>  tools/include/linux/bits.h               |  26 +++
>  tools/lib/traceevent/Build               |   2 +
>  tools/lib/traceevent/event-parse-api.c   | 275 +++++++++++++++++++++++++++++++
>  tools/lib/traceevent/event-parse-local.h |  92 +++++++++++
>  tools/lib/traceevent/event-parse.c       |  32 +---
>  tools/lib/traceevent/event-parse.h       | 228 ++++---------------------
>  tools/lib/traceevent/event-plugin.c      |   1 +
>  tools/lib/traceevent/parse-filter.c      |   1 +
>  tools/lib/traceevent/tep_strerror.c      |  53 ++++++
>  tools/perf/check-headers.sh              |   1 +
>  tools/perf/tests/builtin-test.c          |   1 +
>  tools/perf/tests/tests.h                 |   1 +
>  tools/perf/tests/wp.c                    |  12 ++
>  tools/perf/util/auxtrace.h               |   1 +
>  tools/perf/util/setup.py                 |  16 +-
>  tools/perf/util/strbuf.c                 |  10 +-
>  tools/perf/util/trace-event-info.c       |   2 +
>  tools/perf/util/trace-event-parse.c      |  26 +--
>  tools/perf/util/trace-event-read.c       |  11 +-
>  20 files changed, 539 insertions(+), 259 deletions(-)
>  create mode 100644 tools/include/linux/bits.h
>  create mode 100644 tools/lib/traceevent/event-parse-api.c
>  create mode 100644 tools/lib/traceevent/event-parse-local.h
>  create mode 100644 tools/lib/traceevent/tep_strerror.c

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2018-10-09  0:54 Arnaldo Carvalho de Melo
  2018-10-09  5:24 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-10-09  0:54 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Clark Williams, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Sverdlin,
	David Ahern, Eduardo Habkost, Heiko Carstens, Hendrik Brueckner,
	Jiri Olsa, Joe Lawrence, linux trace devel, Martin Schwidefsky,
	Namhyung Kim, Ravi Bangoria, Sanskriti Sharma, Steven Rostedt,
	Thomas Richter, Tzvetomir Stoyanov, Wang Nan,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit 7c5314b88da6d5af98239786772a1c44cc5eb67d:

  perf/x86/intel: Add quirk for Goldmont Plus (2018-10-02 10:14:33 +0200)

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.20-20181008

for you to fetch changes up to bb3dd7e7c4d5e024d607c0ec06c2a2fb9408cc99:

  tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file (2018-10-08 15:05:37 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Fix building the python bindings with python3, which fixes some
  problems with building with clang on Clear Linux (Eduardo Habkost)

. Fix coverity warnings, fixing up some error paths and plugging
  some temporary small buffer leaks (Sanskriti Sharma)

. Adopt a wrapper for strerror_r() for the same reasons as recently
  for libbpf (Steven Rostedt)

. S390 does not support watchpoints in 'perf test 22', check if
  that test is supported by the arch. (Thomas Richter)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
      tools include: Adopt linux/bits.h
      perf auxtrace: Include missing asm/bitsperlong.h to get BITS_PER_LONG

Eduardo Habkost (2):
      perf python: Make clang_has_option() work on Python 3
      perf python: More portable way to make CFLAGS work with clang

Sanskriti Sharma (5):
      perf strbuf: Match va_{add,copy} with va_end
      perf tools: Cleanup trace-event-info 'tdata' leak
      perf tools: Free 'printk' string in parse_ftrace_printk()
      perf tools: Avoid double free in read_event_file()
      perf tools: Free temporary 'sys' string in read_event_files()

Steven Rostedt (VMware) (1):
      tools lib traceevent: Separate out tep_strerror() for strerror_r() issues

Thomas Richter (1):
      perf test: S390 does not support watchpoints in test 22

Tzvetomir Stoyanov (1):
      tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file

 tools/include/linux/bitops.h             |   7 +-
 tools/include/linux/bits.h               |  26 +++
 tools/lib/traceevent/Build               |   2 +
 tools/lib/traceevent/event-parse-api.c   | 275 +++++++++++++++++++++++++++++++
 tools/lib/traceevent/event-parse-local.h |  92 +++++++++++
 tools/lib/traceevent/event-parse.c       |  32 +---
 tools/lib/traceevent/event-parse.h       | 228 ++++---------------------
 tools/lib/traceevent/event-plugin.c      |   1 +
 tools/lib/traceevent/parse-filter.c      |   1 +
 tools/lib/traceevent/tep_strerror.c      |  53 ++++++
 tools/perf/check-headers.sh              |   1 +
 tools/perf/tests/builtin-test.c          |   1 +
 tools/perf/tests/tests.h                 |   1 +
 tools/perf/tests/wp.c                    |  12 ++
 tools/perf/util/auxtrace.h               |   1 +
 tools/perf/util/setup.py                 |  16 +-
 tools/perf/util/strbuf.c                 |  10 +-
 tools/perf/util/trace-event-info.c       |   2 +
 tools/perf/util/trace-event-parse.c      |  26 +--
 tools/perf/util/trace-event-read.c       |  11 +-
 20 files changed, 539 insertions(+), 259 deletions(-)
 create mode 100644 tools/include/linux/bits.h
 create mode 100644 tools/lib/traceevent/event-parse-api.c
 create mode 100644 tools/lib/traceevent/event-parse-local.h
 create mode 100644 tools/lib/traceevent/tep_strerror.c

Test results:

The first ones are container (docker) based builds of tools/perf with
and without libelf support.  Where clang is available, it is also used
to build perf with/without libelf, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.

Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.

The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.

Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.

The Clear Linux container is building with NO_CLANG=1, some problem
preventing its use when building for python3 have been fixed, some more
have been identified and the next builds will build in ClearLinux with
both gcc and clang. This time around only gcc was used.

  # dm
   1 alpine:3.4                    : Ok   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   7 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   8 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   9 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  11 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  12 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
  13 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  14 clearlinux:latest             : Ok   gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502
  15 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  16 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  17 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  18 debian:experimental           : Ok   gcc (Debian 8.2.0-7) 8.2.0
  19 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.2.0-4) 8.2.0
  20 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  21 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.1.0-12) 8.1.0
  22 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  23 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  24 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  25 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  26 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  27 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  28 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  29 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  30 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  31 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
  32 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5)
  33 fedora:rawhide                : Ok   gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
  34 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  35 mageia:5                      : Ok   gcc (GCC) 4.9.2
  36 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  37 opensuse:13.2                 : Ok   gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
  38 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  39 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  40 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  41 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  42 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  43 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  44 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  45 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  46 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  47 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  48 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  52 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  53 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  54 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  55 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  56 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  57 ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  58 ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  59 ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  60 ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  61 ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  62 ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  63 ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  64 ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  65 ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  66 ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  67 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-4ubuntu1) 8.2.0
  #

  # uname -a
  Linux jouet 4.19.0-rc4-00022-gad3273d5f1b9 #1 SMP Mon Sep 17 17:18:22 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  bb3dd7e7c4d5 tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file
  # perf version --build-options
  perf version 4.19.rc5.gbb3dd7
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # perf test
   1: vmlinux symtab matches kallsyms                       : Ok
   2: Detect openat syscall event                           : Ok
   3: Detect openat syscall event on all cpus               : Ok
   4: Read samples using the mmap interface                 : Ok
   5: Test data source output                               : Ok
   6: Parse event definition strings                        : Ok
   7: Simple expression parser                              : Ok
   8: PERF_RECORD_* events & perf_sample fields             : Ok
   9: Parse perf pmu format                                 : Ok
  10: DSO data read                                         : Ok
  11: DSO data cache                                        : Ok
  12: DSO data reopen                                       : Ok
  13: Roundtrip evsel->name                                 : Ok
  14: Parse sched tracepoints fields                        : Ok
  15: syscalls:sys_enter_openat event fields                : Ok
  16: Setup struct perf_event_attr                          : Ok
  17: Match and link multiple hists                         : Ok
  18: 'import perf' in python                               : Ok
  19: Breakpoint overflow signal handler                    : Ok
  20: Breakpoint overflow sampling                          : Ok
  21: Breakpoint accounting                                 : Ok
  22: Watchpoint                                            :
  22.1: Read Only Watchpoint                                : Skip
  22.2: Write Only Watchpoint                               : Ok
  22.3: Read / Write Watchpoint                             : Ok
  22.4: Modify Watchpoint                                   : Ok
  23: Number of exit events of a simple workload            : Ok
  24: Software clock events period values                   : Ok
  25: Object code reading                                   : Ok
  26: Sample parsing                                        : Ok
  27: Use a dummy software event to keep tracking           : Ok
  28: Parse with no sample_id_all bit set                   : Ok
  29: Filter hist entries                                   : Ok
  30: Lookup mmap thread                                    : Ok
  31: Share thread mg                                       : Ok
  32: Sort output of hist entries                           : Ok
  33: Cumulate child hist entries                           : Ok
  34: Track with sched_switch                               : Ok
  35: Filter fds with revents mask in a fdarray             : Ok
  36: Add fd to a fdarray, making it autogrow               : Ok
  37: kmod_path__parse                                      : Ok
  38: Thread map                                            : Ok
  39: LLVM search and compile                               :
  39.1: Basic BPF llvm compile                              : Ok
  39.2: kbuild searching                                    : Ok
  39.3: Compile source for BPF prologue generation          : Ok
  39.4: Compile source for BPF relocation                   : Ok
  40: Session topology                                      : Ok
  41: BPF filter                                            :
  41.1: Basic BPF filtering                                 : Ok
  41.2: BPF pinning                                         : Ok
  41.3: BPF prologue generation                             : Ok
  41.4: BPF relocation checker                              : Ok
  42: Synthesize thread map                                 : Ok
  43: Remove thread map                                     : Ok
  44: Synthesize cpu map                                    : Ok
  45: Synthesize stat config                                : Ok
  46: Synthesize stat                                       : Ok
  47: Synthesize stat round                                 : Ok
  48: Synthesize attr update                                : Ok
  49: Event times                                           : Ok
  50: Read backward ring buffer                             : Ok
  51: Print cpu map                                         : Ok
  52: Probe SDT events                                      : Ok
  53: is_printable_array                                    : Ok
  54: Print bitmap                                          : Ok
  55: perf hooks                                            : Ok
  56: builtin clang support                                 : Skip (not compiled in)
  57: unit_number__scnprintf                                : Ok
  58: mem2node                                              : Ok
  59: x86 rdpmc                                             : Ok
  60: Convert perf time to TSC                              : Ok
  61: DWARF unwind                                          : Ok
  62: x86 instruction decoder - new instructions            : Ok
  63: x86 bp modify                                         : Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: Check open filename arg using perf trace + vfs_getname: Ok
  66: probe libc's inet_pton & backtrace it with ping       : Ok
  67: Add vfs_getname probe to get syscall args filenames   : Ok

  $ make -C tools/perf build-test
  make: Entering directory '/home/acme/git/perf/tools/perf'
  - tarpkg: ./tests/perf-targz-src-pkg .
            make_install_bin_O: make install-bin
                make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
                make_no_gtk2_O: make NO_GTK2=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
                make_install_O: make install
           make_no_backtrace_O: make NO_BACKTRACE=1
                make_no_newt_O: make NO_NEWT=1
             make_no_libperl_O: make NO_LIBPERL=1
             make_util_map_o_O: make util/map.o
              make_clean_all_O: make clean all
                 make_static_O: make LDFLAGS=-static
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
                    make_doc_O: make doc
              make_no_libelf_O: make NO_LIBELF=1
                   make_pure_O: make
            make_no_auxtrace_O: make NO_AUXTRACE=1
                 make_perf_o_O: make perf.o
                   make_tags_O: make tags
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
              make_no_libbpf_O: make NO_LIBBPF=1
           make_no_libpython_O: make NO_LIBPYTHON=1
            make_no_libaudit_O: make NO_LIBAUDIT=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
             make_no_libnuma_O: make NO_LIBNUMA=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                  make_debug_O: make DEBUG=1
           make_no_libunwind_O: make NO_LIBUNWIND=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
               make_no_slang_O: make NO_SLANG=1
                   make_help_O: make help
            make_no_demangle_O: make NO_DEMANGLE=1
         make_install_prefix_O: make install prefix=/tmp/krava
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2016-11-25 15:12 Arnaldo Carvalho de Melo
@ 2016-11-25 17:14 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2016-11-25 17:14 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexander Shishkin,
	Alexei Starovoitov, Andi Kleen, Chris Riyder, David Ahern,
	Eric Leblond, He Kuang, Jiri Olsa, Kim Phillips,
	Markus Trippelsdorf, Masami Hiramatsu, Namhyung Kim,
	Naveen N . Rao, Pawel Moll, Peter Zijlstra, pi3orama,
	Ravi Bangoria, Russell King, Stephane Eranian, Taeung Song,
	Wang Nan, Zefan Li, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> Test results at the end of this message.
> 
> The following changes since commit 47414424c53a70eceb0fc6e0a35a31a2b763d5b2:
> 
>   Merge tag 'perf-core-for-mingo-20161123' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-11-24 05:09:31 +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-20161125
> 
> for you to fetch changes up to 4708bbda5cb2f6cdc331744597527143f46394d5:
> 
>   tools lib bpf: Fix maps resolution (2016-11-25 11:27:33 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> New features:
> 
> - Improve ARM support in the annotation code, affecting 'perf annotate', 'perf
>   report' and live annotation in 'perf top' (Kim Phillips)
> 
> - Initial support for PowerPC in the annotation code (Ravi Bangoria)
> 
> - Skip repetitive scheduler function on the top of the stack in
>   'perf sched timehist' (Namhyung Kim)
> 
> Fixes:
> 
> - Fix maps resolution in libbpf (Eric Leblond)
> 
> - Get the kernel signature via /proc/version_signature, available on
>   ubuntu systems, to make sure bpf proggies works, as the one provided
>   via 'uname -r' doesn't (Wang Nan)
> 
> - Fix segfault in 'perf record' when running with suid and kptr_restrict
>   is 1 (Wang Nan)
> 
> Infrastructure:
> 
> - Support per-arch instruction tables, kept via a static or dynamic table
>   (Arnaldo Carvalho de Melo)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (4):
>       perf annotate: Remove duplicate 'name' field from disasm_line
>       perf annotate: Introduce alternative method of keeping instructions table
>       perf annotate: Allow arches to have a init routine and a priv area
>       perf annotate: Improve support for ARM
> 
> Eric Leblond (1):
>       tools lib bpf: Fix maps resolution
> 
> Namhyung Kim (3):
>       perf callchain: Add option to skip ignore symbol when printing callchains
>       perf sched timehist: Mark schedule function in callchains
>       perf sched timehist: Enlarge max stack depth by 2
> 
> Ravi Bangoria (1):
>       perf annotate: Initial PowerPC support
> 
> Wang Nan (3):
>       perf tools: Fix kernel version error in ubuntu
>       perf record: Fix segfault when running with suid and kptr_restrict is 1
>       perf tools: Add missing struct definition in probe_event.h
> 
>  tools/lib/bpf/libbpf.c                          | 142 ++++++++++++++-------
>  tools/perf/arch/arm/annotate/instructions.c     | 147 +++++++++-------------
>  tools/perf/arch/powerpc/annotate/instructions.c |  58 +++++++++
>  tools/perf/builtin-sched.c                      |  26 +++-
>  tools/perf/ui/browsers/annotate.c               |  18 +--
>  tools/perf/util/annotate.c                      | 157 +++++++++++++++++-------
>  tools/perf/util/annotate.h                      |  17 ++-
>  tools/perf/util/evsel.h                         |   1 +
>  tools/perf/util/evsel_fprintf.c                 |   7 +-
>  tools/perf/util/probe-event.h                   |   2 +
>  tools/perf/util/symbol.c                        |   2 +-
>  tools/perf/util/symbol.h                        |   1 +
>  tools/perf/util/util.c                          |  55 ++++++++-
>  13 files changed, 431 insertions(+), 202 deletions(-)
>  create mode 100644 tools/perf/arch/powerpc/annotate/instructions.c
> 
>   Rebuilding containers, so limited coverage at this time:
>   # dm
>    1 debian:experimental: Ok
>    2 fedora:24: Ok
>    3 fedora:24-x-ARC-uClibc: Ok
>    4 fedora:rawhide: Ok
>    5 opensuse:tumbleweed: Ok
> 
>   # perf test
>    1: vmlinux symtab matches kallsyms                          : Ok
>    2: detect openat syscall event                              : Ok
>    3: detect openat syscall event on all cpus                  : Ok
>    4: read samples using the mmap interface                    : Ok
>    5: parse events tests                                       : Ok
>    6: Validate PERF_RECORD_* events & perf_sample fields       : Ok
>    7: Test perf pmu format parsing                             : Ok
>    8: Test dso data read                                       : Ok
>    9: Test dso data cache                                      : Ok
>   10: Test dso data reopen                                     : Ok
>   11: roundtrip evsel->name check                              : Ok
>   12: Check parsing of sched tracepoints fields                : Ok
>   13: Generate and check syscalls:sys_enter_openat event fields: Ok
>   14: struct perf_event_attr setup                             : Ok
>   15: Test matching and linking multiple hists                 : Ok
>   16: Try 'import perf' in python, checking link problems      : Ok
>   17: Test breakpoint overflow signal handler                  : Ok
>   18: Test breakpoint overflow sampling                        : Ok
>   19: Test number of exit event of a simple workload           : Ok
>   20: Test software clock events have valid period values      : Ok
>   21: Test object code reading                                 : Ok
>   22: Test sample parsing                                      : Ok
>   23: Test using a dummy software event to keep tracking       : Ok
>   24: Test parsing with no sample_id_all bit set               : Ok
>   25: Test filtering hist entries                              : Ok
>   26: Test mmap thread lookup                                  : Ok
>   27: Test thread mg sharing                                   : Ok
>   28: Test output sorting of hist entries                      : Ok
>   29: Test cumulation of child hist entries                    : Ok
>   30: Test tracking with sched_switch                          : Ok
>   31: Filter fds with revents mask in a fdarray                : Ok
>   32: Add fd to a fdarray, making it autogrow                  : Ok
>   33: Test kmod_path__parse function                           : Ok
>   34: Test thread map                                          : Ok
>   35: Test LLVM searching and compiling                        :
>   35.1: Basic BPF llvm compiling test                          : Ok
>   35.2: Test kbuild searching                                  : Ok
>   35.3: Compile source for BPF prologue generation test        : Ok
>   35.4: Compile source for BPF relocation test                 : Ok
>   36: Test topology in session                                 : Ok
>   37: Test BPF filter                                          :
>   37.1: Test basic BPF filtering                               : Ok
>   37.2: Test BPF prologue generation                           : Ok
>   37.3: Test BPF relocation checker                            : Ok
>   38: Test thread map synthesize                               : Ok
>   39: Test cpu map synthesize                                  : Ok
>   40: Test stat config synthesize                              : Ok
>   41: Test stat synthesize                                     : Ok
>   42: Test stat round synthesize                               : Ok
>   43: Test attr update synthesize                              : Ok
>   44: Test events times                                        : Ok
>   45: Test backward reading from ring buffer                   : Ok
>   46: Test cpu map print                                       : Ok
>   47: Test SDT event probing                                   : Ok
>   48: Test is_printable_array function                         : Ok
>   49: Test bitmap print                                        : Ok
>   50: x86 rdpmc test                                           : Ok
>   51: Test converting perf time to TSC                         : Ok
>   52: Test dwarf unwind                                        : Ok
>   53: Test x86 instruction decoder - new instructions          : Ok
>   54: Test intel cqm nmi context read                          : Skip
>   #
>   $ make -C tools/perf build-test
>   make: Entering directory '/home/acme/git/linux/tools/perf'
>   - tarpkg: ./tests/perf-targz-src-pkg .
>              make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
>                make_no_slang_O: make NO_SLANG=1
>                 make_no_gtk2_O: make NO_GTK2=1
>              make_no_libperl_O: make NO_LIBPERL=1
>             make_no_libaudit_O: make NO_LIBAUDIT=1
>         make_with_babeltrace_O: make LIBBABELTRACE=1
>                 make_no_newt_O: make NO_NEWT=1
>              make_util_map_o_O: make util/map.o
>                    make_pure_O: make
>               make_no_libbpf_O: make NO_LIBBPF=1
>                     make_doc_O: make doc
>              make_no_libnuma_O: make NO_LIBNUMA=1
>        make_util_pmu_bison_o_O: make util/pmu-bison.o
>                    make_tags_O: make tags
>          make_install_prefix_O: make install prefix=/tmp/krava
>             make_no_demangle_O: make NO_DEMANGLE=1
>            make_no_libpython_O: make NO_LIBPYTHON=1
>                  make_static_O: make LDFLAGS=-static
>                   make_debug_O: make DEBUG=1
>                   make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
>    make_install_prefix_slash_O: make install prefix=/tmp/krava/
>   make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
>             make_no_auxtrace_O: make NO_AUXTRACE=1
>                 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
>                  make_perf_o_O: make perf.o
>            make_no_libbionic_O: make NO_LIBBIONIC=1
>               make_clean_all_O: make clean all
>            make_no_backtrace_O: make NO_BACKTRACE=1
>                 make_install_O: make install
>            make_no_libunwind_O: make NO_LIBUNWIND=1
>             make_install_bin_O: make install-bin
>               make_no_libelf_O: make NO_LIBELF=1
>                    make_help_O: make help
>   OK
>   make: Leaving directory '/home/acme/git/linux/tools/perf'
>   $

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2016-11-25 15:12 Arnaldo Carvalho de Melo
  2016-11-25 17:14 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-11-25 15:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Andi Kleen, Chris Riyder,
	David Ahern, Eric Leblond, He Kuang, Jiri Olsa, Kim Phillips,
	Markus Trippelsdorf, Masami Hiramatsu, Namhyung Kim,
	Naveen N . Rao, Pawel Moll, Peter Zijlstra, pi3orama,
	Ravi Bangoria, Russell King, Stephane Eranian, Taeung Song,
	Wang Nan, Zefan Li, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

Test results at the end of this message.

The following changes since commit 47414424c53a70eceb0fc6e0a35a31a2b763d5b2:

  Merge tag 'perf-core-for-mingo-20161123' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-11-24 05:09:31 +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-20161125

for you to fetch changes up to 4708bbda5cb2f6cdc331744597527143f46394d5:

  tools lib bpf: Fix maps resolution (2016-11-25 11:27:33 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

New features:

- Improve ARM support in the annotation code, affecting 'perf annotate', 'perf
  report' and live annotation in 'perf top' (Kim Phillips)

- Initial support for PowerPC in the annotation code (Ravi Bangoria)

- Skip repetitive scheduler function on the top of the stack in
  'perf sched timehist' (Namhyung Kim)

Fixes:

- Fix maps resolution in libbpf (Eric Leblond)

- Get the kernel signature via /proc/version_signature, available on
  ubuntu systems, to make sure bpf proggies works, as the one provided
  via 'uname -r' doesn't (Wang Nan)

- Fix segfault in 'perf record' when running with suid and kptr_restrict
  is 1 (Wang Nan)

Infrastructure:

- Support per-arch instruction tables, kept via a static or dynamic table
  (Arnaldo Carvalho de Melo)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
      perf annotate: Remove duplicate 'name' field from disasm_line
      perf annotate: Introduce alternative method of keeping instructions table
      perf annotate: Allow arches to have a init routine and a priv area
      perf annotate: Improve support for ARM

Eric Leblond (1):
      tools lib bpf: Fix maps resolution

Namhyung Kim (3):
      perf callchain: Add option to skip ignore symbol when printing callchains
      perf sched timehist: Mark schedule function in callchains
      perf sched timehist: Enlarge max stack depth by 2

Ravi Bangoria (1):
      perf annotate: Initial PowerPC support

Wang Nan (3):
      perf tools: Fix kernel version error in ubuntu
      perf record: Fix segfault when running with suid and kptr_restrict is 1
      perf tools: Add missing struct definition in probe_event.h

 tools/lib/bpf/libbpf.c                          | 142 ++++++++++++++-------
 tools/perf/arch/arm/annotate/instructions.c     | 147 +++++++++-------------
 tools/perf/arch/powerpc/annotate/instructions.c |  58 +++++++++
 tools/perf/builtin-sched.c                      |  26 +++-
 tools/perf/ui/browsers/annotate.c               |  18 +--
 tools/perf/util/annotate.c                      | 157 +++++++++++++++++-------
 tools/perf/util/annotate.h                      |  17 ++-
 tools/perf/util/evsel.h                         |   1 +
 tools/perf/util/evsel_fprintf.c                 |   7 +-
 tools/perf/util/probe-event.h                   |   2 +
 tools/perf/util/symbol.c                        |   2 +-
 tools/perf/util/symbol.h                        |   1 +
 tools/perf/util/util.c                          |  55 ++++++++-
 13 files changed, 431 insertions(+), 202 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/annotate/instructions.c

  Rebuilding containers, so limited coverage at this time:
  # dm
   1 debian:experimental: Ok
   2 fedora:24: Ok
   3 fedora:24-x-ARC-uClibc: Ok
   4 fedora:rawhide: Ok
   5 opensuse:tumbleweed: Ok

  # perf test
   1: vmlinux symtab matches kallsyms                          : Ok
   2: detect openat syscall event                              : Ok
   3: detect openat syscall event on all cpus                  : Ok
   4: read samples using the mmap interface                    : Ok
   5: parse events tests                                       : Ok
   6: Validate PERF_RECORD_* events & perf_sample fields       : Ok
   7: Test perf pmu format parsing                             : Ok
   8: Test dso data read                                       : Ok
   9: Test dso data cache                                      : Ok
  10: Test dso data reopen                                     : Ok
  11: roundtrip evsel->name check                              : Ok
  12: Check parsing of sched tracepoints fields                : Ok
  13: Generate and check syscalls:sys_enter_openat event fields: Ok
  14: struct perf_event_attr setup                             : Ok
  15: Test matching and linking multiple hists                 : Ok
  16: Try 'import perf' in python, checking link problems      : Ok
  17: Test breakpoint overflow signal handler                  : Ok
  18: Test breakpoint overflow sampling                        : Ok
  19: Test number of exit event of a simple workload           : Ok
  20: Test software clock events have valid period values      : Ok
  21: Test object code reading                                 : Ok
  22: Test sample parsing                                      : Ok
  23: Test using a dummy software event to keep tracking       : Ok
  24: Test parsing with no sample_id_all bit set               : Ok
  25: Test filtering hist entries                              : Ok
  26: Test mmap thread lookup                                  : Ok
  27: Test thread mg sharing                                   : Ok
  28: Test output sorting of hist entries                      : Ok
  29: Test cumulation of child hist entries                    : Ok
  30: Test tracking with sched_switch                          : Ok
  31: Filter fds with revents mask in a fdarray                : Ok
  32: Add fd to a fdarray, making it autogrow                  : Ok
  33: Test kmod_path__parse function                           : Ok
  34: Test thread map                                          : Ok
  35: Test LLVM searching and compiling                        :
  35.1: Basic BPF llvm compiling test                          : Ok
  35.2: Test kbuild searching                                  : Ok
  35.3: Compile source for BPF prologue generation test        : Ok
  35.4: Compile source for BPF relocation test                 : Ok
  36: Test topology in session                                 : Ok
  37: Test BPF filter                                          :
  37.1: Test basic BPF filtering                               : Ok
  37.2: Test BPF prologue generation                           : Ok
  37.3: Test BPF relocation checker                            : Ok
  38: Test thread map synthesize                               : Ok
  39: Test cpu map synthesize                                  : Ok
  40: Test stat config synthesize                              : Ok
  41: Test stat synthesize                                     : Ok
  42: Test stat round synthesize                               : Ok
  43: Test attr update synthesize                              : Ok
  44: Test events times                                        : Ok
  45: Test backward reading from ring buffer                   : Ok
  46: Test cpu map print                                       : Ok
  47: Test SDT event probing                                   : Ok
  48: Test is_printable_array function                         : Ok
  49: Test bitmap print                                        : Ok
  50: x86 rdpmc test                                           : Ok
  51: Test converting perf time to TSC                         : Ok
  52: Test dwarf unwind                                        : Ok
  53: Test x86 instruction decoder - new instructions          : Ok
  54: Test intel cqm nmi context read                          : Skip
  #
  $ make -C tools/perf build-test
  make: Entering directory '/home/acme/git/linux/tools/perf'
  - tarpkg: ./tests/perf-targz-src-pkg .
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
               make_no_slang_O: make NO_SLANG=1
                make_no_gtk2_O: make NO_GTK2=1
             make_no_libperl_O: make NO_LIBPERL=1
            make_no_libaudit_O: make NO_LIBAUDIT=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                make_no_newt_O: make NO_NEWT=1
             make_util_map_o_O: make util/map.o
                   make_pure_O: make
              make_no_libbpf_O: make NO_LIBBPF=1
                    make_doc_O: make doc
             make_no_libnuma_O: make NO_LIBNUMA=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                   make_tags_O: make tags
         make_install_prefix_O: make install prefix=/tmp/krava
            make_no_demangle_O: make NO_DEMANGLE=1
           make_no_libpython_O: make NO_LIBPYTHON=1
                 make_static_O: make LDFLAGS=-static
                  make_debug_O: make DEBUG=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
                make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
                 make_perf_o_O: make perf.o
           make_no_libbionic_O: make NO_LIBBIONIC=1
              make_clean_all_O: make clean all
           make_no_backtrace_O: make NO_BACKTRACE=1
                make_install_O: make install
           make_no_libunwind_O: make NO_LIBUNWIND=1
            make_install_bin_O: make install-bin
              make_no_libelf_O: make NO_LIBELF=1
                   make_help_O: make help
  OK
  make: Leaving directory '/home/acme/git/linux/tools/perf'
  $

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2016-09-08 20:46 Arnaldo Carvalho de Melo
@ 2016-09-09  5:47 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2016-09-09  5:47 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Andi Kleen,
	Anshuman Khandual, David Ahern, David Carrillo-Cisneros,
	He Kuang, Hou Pengyang, Jiri Olsa, Kan Liang, Linus Torvalds,
	Mark Rutland, Masami Hiramatsu, Namhyung Kim, Nilay Vaish,
	Peter Zijlstra, Ravi Bangoria, Stephane Eranian, Wang Nan,
	Will Deacon, Zefan Li, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit c0b172e5b6770048751b2c0a4fe44346c2080c5d:
> 
>   Merge tag 'perf-core-for-mingo-20160901' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-09-05 15:15:49 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160908
> 
> for you to fetch changes up to 25b8592e912f085ce2ff736a2927584ddeab238c:
> 
>   perf powerpc: Fix build-test failure (2016-09-08 13:44:07 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Add branch stack / basic block info to 'perf annotate --stdio', where for
>   each branch, we add an asm comment after the instruction with information on
>   how often it was taken and predicted. See example with color output at:
> 
>     http://vger.kernel.org/~acme/perf/annotate_basic_blocks.png
> 
>   (Peter Zijlstra)
> 
> - Only open an evsel in CPUs in its cpu map, fixing some use cases in
>   systems with multiple PMUs with different CPU maps (Mark Rutland)
> 
> - Fix handling of huge TLB maps, recognizing it as anonymous (Wang Nan)
> 
> Infrastructure:
> 
> - Remove the symbol filtering code, i.e. the callbacks passed to all functions
>   that could end up loading a DSO symtab, simplifying the code, eventually
>   allowing what we should have had since day one: removing the 'map' parameter
>   from dso__load() functions (Arnaldo Carvalho de Melo)
> 
> Arch specific build fixes:
> 
> - Fix detached tarball build on powerpc, where we were still accessing a
>   file outside tools/ (Ravi Bangoria)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (5):
>       perf symbols: Mark if a symbol is idle in the library
>       perf top: Remove old kernel-only symbol filter
>       perf machine: Remove machine->symbol_filter and friends
>       perf test vmlinux: Remove dead symbol_filter_t code
>       perf symbols: Remove symbol_filter_t machinery
> 
> Mark Rutland (2):
>       perf evlist: Only open events on CPUs an evsel permits
>       perf pmu: Support alternative sysfs cpumask
> 
> Peter Zijlstra (1):
>       perf annotate: Add branch stack / basic block
> 
> Ravi Bangoria (1):
>       perf powerpc: Fix build-test failure
> 
> Wang Nan (3):
>       perf tools: Recognize hugetlb mapping as anon mapping
>       tools lib api fs: Add hugetlbfs filesystem detector
>       perf record: Mark MAP_HUGETLB when synthesizing mmap events
> 
>  tools/lib/api/fs/fs.c                       |  15 ++
>  tools/lib/api/fs/fs.h                       |   1 +
>  tools/perf/arch/powerpc/util/sym-handling.c |   2 +-
>  tools/perf/builtin-annotate.c               | 104 +++++++++
>  tools/perf/builtin-inject.c                 |   2 +-
>  tools/perf/builtin-kmem.c                   |  10 +-
>  tools/perf/builtin-script.c                 |   4 +-
>  tools/perf/builtin-top.c                    |  30 ---
>  tools/perf/perf-sys.h                       |   1 -
>  tools/perf/tests/code-reading.c             |   4 +-
>  tools/perf/tests/vmlinux-kallsyms.c         |  17 +-
>  tools/perf/ui/browsers/annotate.c           |   2 +-
>  tools/perf/ui/browsers/map.c                |   4 +-
>  tools/perf/util/Build                       |   1 +
>  tools/perf/util/annotate.c                  |  95 +++++++-
>  tools/perf/util/annotate.h                  |   1 +
>  tools/perf/util/block-range.c               | 328 ++++++++++++++++++++++++++++
>  tools/perf/util/block-range.h               |  71 ++++++
>  tools/perf/util/event.c                     |  21 +-
>  tools/perf/util/evlist.c                    |   8 +-
>  tools/perf/util/intel-bts.c                 |   2 +-
>  tools/perf/util/intel-pt.c                  |   4 +-
>  tools/perf/util/machine.c                   |  38 +---
>  tools/perf/util/machine.h                   |  34 +--
>  tools/perf/util/map.c                       |  50 ++---
>  tools/perf/util/map.h                       |  32 +--
>  tools/perf/util/pmu.c                       |  15 +-
>  tools/perf/util/probe-event.c               |  17 +-
>  tools/perf/util/symbol-elf.c                |  32 +--
>  tools/perf/util/symbol-minimal.c            |   4 +-
>  tools/perf/util/symbol.c                    | 134 ++++++------
>  tools/perf/util/symbol.h                    |  20 +-
>  32 files changed, 817 insertions(+), 286 deletions(-)
>  create mode 100644 tools/perf/util/block-range.c
>  create mode 100644 tools/perf/util/block-range.h
> 
> Build stats:
> 
>   [root@jouet ~]# time dm
>    1 69.078 alpine:3.4: Ok
>    2 24.055 android-ndk:r12b-arm: Ok
>    3 71.911 archlinux:latest: Ok
>    4 41.209 centos:5: Ok
>    5 58.240 centos:6: Ok
>    6 67.238 centos:7: Ok
>    7 62.040 debian:7: Ok
>    8 69.061 debian:8: Ok
>    9 38.124 debian:experimental: Ok
>   10 67.623 fedora:20: Ok
>   11 71.458 fedora:21: Ok
>   12 70.807 fedora:22: Ok
>   13 71.013 fedora:23: Ok
>   14 73.330 fedora:24: Ok
>   15 30.062 fedora:24-x-ARC-uClibc: Ok
>   16 77.616 fedora:rawhide: Ok
>   17 73.663 mageia:5: Ok
>   18 69.264 opensuse:13.2: Ok
>   19 71.532 opensuse:42.1: Ok
>   20 76.282 opensuse:tumbleweed: Ok
>   21 54.666 ubuntu:12.04.5: Ok
>   22 37.170 ubuntu:14.04: Ok
>   23 66.101 ubuntu:14.04.4: Ok
>   24 68.881 ubuntu:15.10: Ok
>   25 62.698 ubuntu:16.04: Ok
>   26 53.046 ubuntu:16.04-x-arm: Ok
>   27 51.609 ubuntu:16.04-x-arm64: Ok
>   28 51.842 ubuntu:16.04-x-powerpc64: Ok
>   29 53.347 ubuntu:16.04-x-powerpc64el: Ok
>   30 72.280 ubuntu:16.10: Ok
>   31 54.078 ubuntu:16.10-x-s390: Ok
> 
>   real	31m19.919s
>   user	0m1.890s
>   sys	0m2.201s
>   [root@jouet ~]#

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2016-09-08 20:46 Arnaldo Carvalho de Melo
  2016-09-09  5:47 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-09-08 20:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Andi Kleen, Anshuman Khandual, David Ahern,
	David Carrillo-Cisneros, He Kuang, Hou Pengyang, Jiri Olsa,
	Kan Liang, Linus Torvalds, Mark Rutland, Masami Hiramatsu,
	Namhyung Kim, Nilay Vaish, Peter Zijlstra, Ravi Bangoria,
	Stephane Eranian, Wang Nan, Will Deacon, Zefan Li,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit c0b172e5b6770048751b2c0a4fe44346c2080c5d:

  Merge tag 'perf-core-for-mingo-20160901' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-09-05 15:15:49 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160908

for you to fetch changes up to 25b8592e912f085ce2ff736a2927584ddeab238c:

  perf powerpc: Fix build-test failure (2016-09-08 13:44:07 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Add branch stack / basic block info to 'perf annotate --stdio', where for
  each branch, we add an asm comment after the instruction with information on
  how often it was taken and predicted. See example with color output at:

    http://vger.kernel.org/~acme/perf/annotate_basic_blocks.png

  (Peter Zijlstra)

- Only open an evsel in CPUs in its cpu map, fixing some use cases in
  systems with multiple PMUs with different CPU maps (Mark Rutland)

- Fix handling of huge TLB maps, recognizing it as anonymous (Wang Nan)

Infrastructure:

- Remove the symbol filtering code, i.e. the callbacks passed to all functions
  that could end up loading a DSO symtab, simplifying the code, eventually
  allowing what we should have had since day one: removing the 'map' parameter
  from dso__load() functions (Arnaldo Carvalho de Melo)

Arch specific build fixes:

- Fix detached tarball build on powerpc, where we were still accessing a
  file outside tools/ (Ravi Bangoria)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (5):
      perf symbols: Mark if a symbol is idle in the library
      perf top: Remove old kernel-only symbol filter
      perf machine: Remove machine->symbol_filter and friends
      perf test vmlinux: Remove dead symbol_filter_t code
      perf symbols: Remove symbol_filter_t machinery

Mark Rutland (2):
      perf evlist: Only open events on CPUs an evsel permits
      perf pmu: Support alternative sysfs cpumask

Peter Zijlstra (1):
      perf annotate: Add branch stack / basic block

Ravi Bangoria (1):
      perf powerpc: Fix build-test failure

Wang Nan (3):
      perf tools: Recognize hugetlb mapping as anon mapping
      tools lib api fs: Add hugetlbfs filesystem detector
      perf record: Mark MAP_HUGETLB when synthesizing mmap events

 tools/lib/api/fs/fs.c                       |  15 ++
 tools/lib/api/fs/fs.h                       |   1 +
 tools/perf/arch/powerpc/util/sym-handling.c |   2 +-
 tools/perf/builtin-annotate.c               | 104 +++++++++
 tools/perf/builtin-inject.c                 |   2 +-
 tools/perf/builtin-kmem.c                   |  10 +-
 tools/perf/builtin-script.c                 |   4 +-
 tools/perf/builtin-top.c                    |  30 ---
 tools/perf/perf-sys.h                       |   1 -
 tools/perf/tests/code-reading.c             |   4 +-
 tools/perf/tests/vmlinux-kallsyms.c         |  17 +-
 tools/perf/ui/browsers/annotate.c           |   2 +-
 tools/perf/ui/browsers/map.c                |   4 +-
 tools/perf/util/Build                       |   1 +
 tools/perf/util/annotate.c                  |  95 +++++++-
 tools/perf/util/annotate.h                  |   1 +
 tools/perf/util/block-range.c               | 328 ++++++++++++++++++++++++++++
 tools/perf/util/block-range.h               |  71 ++++++
 tools/perf/util/event.c                     |  21 +-
 tools/perf/util/evlist.c                    |   8 +-
 tools/perf/util/intel-bts.c                 |   2 +-
 tools/perf/util/intel-pt.c                  |   4 +-
 tools/perf/util/machine.c                   |  38 +---
 tools/perf/util/machine.h                   |  34 +--
 tools/perf/util/map.c                       |  50 ++---
 tools/perf/util/map.h                       |  32 +--
 tools/perf/util/pmu.c                       |  15 +-
 tools/perf/util/probe-event.c               |  17 +-
 tools/perf/util/symbol-elf.c                |  32 +--
 tools/perf/util/symbol-minimal.c            |   4 +-
 tools/perf/util/symbol.c                    | 134 ++++++------
 tools/perf/util/symbol.h                    |  20 +-
 32 files changed, 817 insertions(+), 286 deletions(-)
 create mode 100644 tools/perf/util/block-range.c
 create mode 100644 tools/perf/util/block-range.h

Build stats:

  [root@jouet ~]# time dm
   1 69.078 alpine:3.4: Ok
   2 24.055 android-ndk:r12b-arm: Ok
   3 71.911 archlinux:latest: Ok
   4 41.209 centos:5: Ok
   5 58.240 centos:6: Ok
   6 67.238 centos:7: Ok
   7 62.040 debian:7: Ok
   8 69.061 debian:8: Ok
   9 38.124 debian:experimental: Ok
  10 67.623 fedora:20: Ok
  11 71.458 fedora:21: Ok
  12 70.807 fedora:22: Ok
  13 71.013 fedora:23: Ok
  14 73.330 fedora:24: Ok
  15 30.062 fedora:24-x-ARC-uClibc: Ok
  16 77.616 fedora:rawhide: Ok
  17 73.663 mageia:5: Ok
  18 69.264 opensuse:13.2: Ok
  19 71.532 opensuse:42.1: Ok
  20 76.282 opensuse:tumbleweed: Ok
  21 54.666 ubuntu:12.04.5: Ok
  22 37.170 ubuntu:14.04: Ok
  23 66.101 ubuntu:14.04.4: Ok
  24 68.881 ubuntu:15.10: Ok
  25 62.698 ubuntu:16.04: Ok
  26 53.046 ubuntu:16.04-x-arm: Ok
  27 51.609 ubuntu:16.04-x-arm64: Ok
  28 51.842 ubuntu:16.04-x-powerpc64: Ok
  29 53.347 ubuntu:16.04-x-powerpc64el: Ok
  30 72.280 ubuntu:16.10: Ok
  31 54.078 ubuntu:16.10-x-s390: Ok

  real	31m19.919s
  user	0m1.890s
  sys	0m2.201s
  [root@jouet ~]#

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2016-05-30 19:24 Arnaldo Carvalho de Melo
@ 2016-05-31  7:24 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2016-05-31  7:24 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexander Shishkin,
	Alexei Starovoitov, Ananth N Mavinakayanahalli, Andi Kleen,
	Brendan Gregg, David Ahern, Frederic Weisbecker, He Kuang,
	Hemant Kumar, Jiri Olsa, Linus Torvalds, Masami Hiramatsu,
	Milian Wolff, Namhyung Kim, Peter Zijlstra, pi3orama,
	Stephane Eranian, Taeung Song, Thomas Gleixner, Vince Weaver,
	Wang Nan, Zefan Li, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 711460514b1c80494f14001bdf30dd70fd401a8f:
> 
>   Merge tag 'perf-urgent-for-mingo-20160527' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2016-05-29 20:15:37 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160530
> 
> for you to fetch changes up to 01412261d99497021353c4b1d67e8df6c9cdc3c6:
> 
>   perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid (2016-05-30 13:15:03 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible/kernel ABI:
> 
> - Per event callchain limit: Recently we introduced a sysctl to tune the
>   max-stack for all events for which callchains were requested:
> 
>   $ sysctl kernel.perf_event_max_stack
>   kernel.perf_event_max_stack = 127
> 
>   Now this patch introduces a way to configure this per event, i.e. this
>   becomes possible:
> 
>   $ perf record -e sched:*/max-stack=2/ -e block:*/max-stack=10/ -a
> 
>   allowing finer tuning of how much buffer space callchains use.
> 
>   This uses an u16 from the reserved space at the end, leaving another
>   u16 for future use.
> 
>   There has been interest in even finer tuning, namely to control the
>   max stack for kernel and userspace callchains separately. Further
>   discussion is needed, we may for instance use the remaining u16 for
>   that and when it is present, assume that the sample_max_stack introduced
>   in this patch applies for the kernel, and the u16 left is used for
>   limiting the userspace callchain. (Arnaldo Carvalho de Melo)
> 
> Infrastructure:
> 
> - Adopt get_main_thread from db-export.c (Andi Kleen)
> 
> - More prep work for backward ring buffer support (Wang Nan)
> 
> - Prep work for supporting SDT (Statically Defined Tracing)
>   tracepoints (Masami Hiramatsu)
> 
> - Add arch/*/include/generated/ to .gitignore (Taeung Song)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andi Kleen (1):
>       perf thread: Adopt get_main_thread from db-export.c
> 
> Arnaldo Carvalho de Melo (2):
>       perf core: Per event callchain limit
>       perf tools: Per event max-stack settings
> 
> Masami Hiramatsu (3):
>       perf symbols: Introduce filename__readable to check readability
>       perf symbols: Cleanup the code flow of dso__find_kallsyms
>       perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid
> 
> Taeung Song (1):
>       perf tools: Add arch/*/include/generated/ to .gitignore
> 
> Wang Nan (5):
>       perf record: Robustify perf_event__synth_time_conv()
>       perf evlist: Don't poll and mmap overwritable events
>       perf evlist: Check 'base' pointer before checking refcnt when put a mmap
>       perf evlist: Choose correct reading direction according to evlist->backward
>       tools: Pass arg to fdarray__filter's call back function
> 
>  include/linux/perf_event.h      |   2 +-
>  include/uapi/linux/perf_event.h |   6 ++-
>  kernel/bpf/stackmap.c           |   2 +-
>  kernel/events/callchain.c       |  14 ++++-
>  kernel/events/core.c            |   5 +-
>  tools/lib/api/fd/array.c        |   5 +-
>  tools/lib/api/fd/array.h        |   3 +-
>  tools/perf/.gitignore           |   1 +
>  tools/perf/arch/x86/util/tsc.c  |   2 +
>  tools/perf/builtin-record.c     |   9 +++-
>  tools/perf/tests/fdarray.c      |   8 +--
>  tools/perf/util/build-id.c      | 115 ++++++++++++++++++++++++++++++----------
>  tools/perf/util/build-id.h      |   2 +
>  tools/perf/util/callchain.h     |   1 +
>  tools/perf/util/db-export.c     |  13 +----
>  tools/perf/util/dso.h           |   5 ++
>  tools/perf/util/evlist.c        |  43 +++++++++++----
>  tools/perf/util/evlist.h        |   2 +
>  tools/perf/util/evsel.c         |  16 +++++-
>  tools/perf/util/evsel.h         |   2 +
>  tools/perf/util/parse-events.c  |   8 +++
>  tools/perf/util/parse-events.h  |   1 +
>  tools/perf/util/parse-events.l  |   1 +
>  tools/perf/util/session.c       |   2 +
>  tools/perf/util/symbol.c        |  71 ++++++++++++-------------
>  tools/perf/util/thread.c        |  11 ++++
>  tools/perf/util/thread.h        |   2 +
>  27 files changed, 252 insertions(+), 100 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2016-05-30 19:24 Arnaldo Carvalho de Melo
  2016-05-31  7:24 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-30 19:24 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov,
	Ananth N Mavinakayanahalli, Andi Kleen, Brendan Gregg,
	David Ahern, Frederic Weisbecker, He Kuang, Hemant Kumar,
	Jiri Olsa, Linus Torvalds, Masami Hiramatsu, Milian Wolff,
	Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian,
	Taeung Song, Thomas Gleixner, Vince Weaver, Wang Nan, Zefan Li,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 711460514b1c80494f14001bdf30dd70fd401a8f:

  Merge tag 'perf-urgent-for-mingo-20160527' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2016-05-29 20:15:37 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160530

for you to fetch changes up to 01412261d99497021353c4b1d67e8df6c9cdc3c6:

  perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid (2016-05-30 13:15:03 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible/kernel ABI:

- Per event callchain limit: Recently we introduced a sysctl to tune the
  max-stack for all events for which callchains were requested:

  $ sysctl kernel.perf_event_max_stack
  kernel.perf_event_max_stack = 127

  Now this patch introduces a way to configure this per event, i.e. this
  becomes possible:

  $ perf record -e sched:*/max-stack=2/ -e block:*/max-stack=10/ -a

  allowing finer tuning of how much buffer space callchains use.

  This uses an u16 from the reserved space at the end, leaving another
  u16 for future use.

  There has been interest in even finer tuning, namely to control the
  max stack for kernel and userspace callchains separately. Further
  discussion is needed, we may for instance use the remaining u16 for
  that and when it is present, assume that the sample_max_stack introduced
  in this patch applies for the kernel, and the u16 left is used for
  limiting the userspace callchain. (Arnaldo Carvalho de Melo)

Infrastructure:

- Adopt get_main_thread from db-export.c (Andi Kleen)

- More prep work for backward ring buffer support (Wang Nan)

- Prep work for supporting SDT (Statically Defined Tracing)
  tracepoints (Masami Hiramatsu)

- Add arch/*/include/generated/ to .gitignore (Taeung Song)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (1):
      perf thread: Adopt get_main_thread from db-export.c

Arnaldo Carvalho de Melo (2):
      perf core: Per event callchain limit
      perf tools: Per event max-stack settings

Masami Hiramatsu (3):
      perf symbols: Introduce filename__readable to check readability
      perf symbols: Cleanup the code flow of dso__find_kallsyms
      perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid

Taeung Song (1):
      perf tools: Add arch/*/include/generated/ to .gitignore

Wang Nan (5):
      perf record: Robustify perf_event__synth_time_conv()
      perf evlist: Don't poll and mmap overwritable events
      perf evlist: Check 'base' pointer before checking refcnt when put a mmap
      perf evlist: Choose correct reading direction according to evlist->backward
      tools: Pass arg to fdarray__filter's call back function

 include/linux/perf_event.h      |   2 +-
 include/uapi/linux/perf_event.h |   6 ++-
 kernel/bpf/stackmap.c           |   2 +-
 kernel/events/callchain.c       |  14 ++++-
 kernel/events/core.c            |   5 +-
 tools/lib/api/fd/array.c        |   5 +-
 tools/lib/api/fd/array.h        |   3 +-
 tools/perf/.gitignore           |   1 +
 tools/perf/arch/x86/util/tsc.c  |   2 +
 tools/perf/builtin-record.c     |   9 +++-
 tools/perf/tests/fdarray.c      |   8 +--
 tools/perf/util/build-id.c      | 115 ++++++++++++++++++++++++++++++----------
 tools/perf/util/build-id.h      |   2 +
 tools/perf/util/callchain.h     |   1 +
 tools/perf/util/db-export.c     |  13 +----
 tools/perf/util/dso.h           |   5 ++
 tools/perf/util/evlist.c        |  43 +++++++++++----
 tools/perf/util/evlist.h        |   2 +
 tools/perf/util/evsel.c         |  16 +++++-
 tools/perf/util/evsel.h         |   2 +
 tools/perf/util/parse-events.c  |   8 +++
 tools/perf/util/parse-events.h  |   1 +
 tools/perf/util/parse-events.l  |   1 +
 tools/perf/util/session.c       |   2 +
 tools/perf/util/symbol.c        |  71 ++++++++++++-------------
 tools/perf/util/thread.c        |  11 ++++
 tools/perf/util/thread.h        |   2 +
 27 files changed, 252 insertions(+), 100 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2015-11-05 16:02 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-11-05 16:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Andi Kleen, Andrew Morton, David Ahern,
	Jiri Olsa, Kan Liang, Markus Trippelsdorf, Masami Hiramatsu,
	Namhyung Kim, Paul Mackerras, Peter Feiner, Peter Zijlstra,
	pi3orama, Thomas Gleixner, Wang Nan, Yunlong Song, Zefan Li,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit bebd23a2ed31d47e7dd746d3b125068aa2c42d85:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-30 10:09:37 +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

for you to fetch changes up to 0014de172d228e450377d1fd079d94e67128d27f:

  perf sched latency: Fix thread pid reuse issue (2015-11-05 12:51:00 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Fix 'perf top' segfault related to splitting overlapping mmaps (Jiri Olsa)

- Fix 'perf sched latency' when there is pid/tid reuse (Jiri Olsa)

- Fix documentation for 'perf trace -i' (Peter Feiner)

Infrastructure:

- Make the LINUX_VERSION_CODE define available for bpf scriptlets to use (Wang Nan)

- Pass the number of configured CPUs via the __NR_CPUS__ define to bpf scriptlets (Wang Nan)

- Fix libbpf compiler warning on CentOS 6 (Namhyung Kim)

- Only be verbose in several perf test entries, bpf included, when -v is used (Wang Nan)

- Don't run the 'build-test' entries always in the same order, the full
  set takes a long time, so sometimes we interrupt, shuffling them avoids
  running just the first same few in interrupted runs (Arnaldo Carvalho de Melo)

- Change FEATURE-DUMP to FEATURE-DUMP.libbpf in .gitignore and 'clean' make target (Yunlong Song)

- 'perf stat' refactorings to avoid duplicated code (Andi Kleen)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (2):
      perf stat: Move sw clock metrics printout to stat-shadow
      perf stat: Use common printout function to avoid duplicated code

Arnaldo Carvalho de Melo (1):
      perf tools: Allow shuffling the build tests

Jiri Olsa (2):
      perf tools: Insert split maps correctly into origin group
      perf sched latency: Fix thread pid reuse issue

Namhyung Kim (1):
      tools lib bpf: Fix compiler warning on CentOS 6

Peter Feiner (1):
      perf trace: Fix documentation for -i

Wang Nan (5):
      perf test: Keep test result clean if '-v' not set
      perf bpf: Mute libbpf when '-v' not set
      perf llvm: Pass number of configured CPUs to clang compiler
      perf llvm: Pass LINUX_VERSION_CODE to BPF program when compiling
      perf tools: Fix find_perf_probe_point_from_map() which incorrectly returns success

Yunlong Song (1):
      tools lib bpf: Change FEATURE-DUMP to FEATURE-DUMP.libbpf

 tools/lib/bpf/.gitignore                |  2 +-
 tools/lib/bpf/Makefile                  |  2 +-
 tools/lib/bpf/libbpf.c                  |  4 +--
 tools/lib/bpf/libbpf.h                  |  2 +-
 tools/perf/Documentation/perf-trace.txt |  1 -
 tools/perf/Makefile                     |  2 +-
 tools/perf/builtin-sched.c              |  5 +--
 tools/perf/builtin-stat.c               | 59 +++++++++++----------------------
 tools/perf/tests/attr.c                 |  3 +-
 tools/perf/tests/code-reading.c         |  8 ++---
 tools/perf/tests/keep-tracking.c        |  4 +--
 tools/perf/tests/llvm.c                 | 11 +++---
 tools/perf/tests/make                   |  5 +++
 tools/perf/tests/switch-tracking.c      |  4 +--
 tools/perf/util/bpf-loader.c            |  4 +--
 tools/perf/util/llvm-utils.c            | 51 ++++++++++++++++++++++++----
 tools/perf/util/map.c                   | 10 ++++--
 tools/perf/util/probe-event.c           |  3 ++
 tools/perf/util/stat-shadow.c           |  5 +++
 19 files changed, 110 insertions(+), 75 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2015-10-29  9:36 ` Ingo Molnar
  2015-10-29  9:51   ` Ingo Molnar
@ 2015-10-29  9:55   ` Jiri Olsa
  1 sibling, 0 replies; 40+ messages in thread
From: Jiri Olsa @ 2015-10-29  9:55 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Adrian Hunter,
	Alexei Starovoitov, Andi Kleen, Borislav Petkov, Brendan Gregg,
	Chandler Carruth, David Ahern, David S . Miller, Dima Kogan,
	Frederic Weisbecker, Kan Liang, Li Zefan, Masami Hiramatsu,
	Michael Petlan, Namhyung Kim, Peter Zijlstra, pi3orama,
	Stephane Eranian, Wang Nan, Arnaldo Carvalho de Melo

On Thu, Oct 29, 2015 at 10:36:36AM +0100, Ingo Molnar wrote:

SNIP

> 
> > - Fix reading separate debuginfo files based on a build-id, problem
> >   found on a Debian system (Dima Kogan)
> > 
> > - Fix endless loop when splitting kallsyms symbols per section for
> >   handling kcore files, problem found on a s390x system (Jiri Olsa)
> 
> Btw., is this bug specific to perf/core, or do we want it for perf/urgent as well?

it could go to perf/urgent as well

jirka

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2015-10-29  9:36 ` Ingo Molnar
@ 2015-10-29  9:51   ` Ingo Molnar
  2015-10-29  9:55   ` Jiri Olsa
  1 sibling, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2015-10-29  9:51 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Andi Kleen,
	Borislav Petkov, Brendan Gregg, Chandler Carruth, David Ahern,
	David S . Miller, Dima Kogan, Frederic Weisbecker, Jiri Olsa,
	Kan Liang, Li Zefan, Masami Hiramatsu, Michael Petlan,
	Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian,
	Wang Nan, Arnaldo Carvalho de Melo


* Ingo Molnar <mingo@kernel.org> wrote:

> One small detail I noticed, for some reason the following search does not work:
> 
>   triton:~/tip> perf report -h --invert
> 
>     Usage: perf report [<options>]
> 

Btw., another detail, if it searches but does not try, I think we should output a 
warning to the user.

Printing something like this would be more helpful:

   triton:~/tip> perf report -h --invert
 
     Search pattern '--invert' not found amongst the parameters. To resolve this 
     use a different search pattern or use '-h' to list all parameters.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2015-10-28 15:30 Arnaldo Carvalho de Melo
@ 2015-10-29  9:36 ` Ingo Molnar
  2015-10-29  9:51   ` Ingo Molnar
  2015-10-29  9:55   ` Jiri Olsa
  0 siblings, 2 replies; 40+ messages in thread
From: Ingo Molnar @ 2015-10-29  9:36 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Andi Kleen,
	Borislav Petkov, Brendan Gregg, Chandler Carruth, David Ahern,
	David S . Miller, Dima Kogan, Frederic Weisbecker, Jiri Olsa,
	Kan Liang, Li Zefan, Masami Hiramatsu, Michael Petlan,
	Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian,
	Wang Nan, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 4341801873e23bbecee76dabb7c111e3693b900f:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-25 09:40:31 +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
> 
> for you to fetch changes up to 443f8c75e8d58d394b0e65b47e02e5cd8ed32b41:
> 
>   perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore (2015-10-28 11:19:30 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Enable per-event perf_event_attr.inherit setting by config terms, i.e.
>   this becomes possible:
> 
>       $ perf record -e cycles/inherit/ -e instructions/no-inherit/
> 
>   This affects the default, that can be changed globally using the --no-inherit
>   option.
> 
>   This fine grained control appeared in the eBPF patchkit, but this added
>   flexibility may end up being useful in other scenarios (Wang Nan)
> 
> - Setup pager when printing usage and help, we have long lists of options,
>   better use the pager like we do with normal tooling output, i.e. when needed,
>   and including any error messages in the paged output (Namhyung Kim)
> 
> - Search for more options when passing args to -h, e.g.: (Arnaldo Carvalho de Melo)
> 
>   $ perf report -h interface
> 
>    Usage: perf report [<options>]
> 
>     --gtk    Use the GTK2 interface
>     --stdio  Use the stdio interface
>     --tui    Use the TUI interface

I love this! For example if I'd like to know what symbol related options we have, 
I only have to type:

triton:~/tip> perf top -h sym

 Usage: perf top [<options>]

    -D, --dump-symtab     dump the symbol table used for profiling
    -K, --hide_kernel_symbols
                          hide kernel symbols
    -s, --sort <key[,key2...]>
                          sort by key(s): pid, comm, dso, symbol, parent, cpu, srcline, ... Please refer the man page for the complete list.
    -U, --hide_user_symbols
                          hide user symbols
        --comms <comm[,comm...]>
                          only consider symbols in these comms
        --demangle-kernel
                          Enable kernel symbol demangling
        --dsos <dso[,dso...]>
                          only consider symbols in these dsos
        --sym-annotate <symbol name>
                          symbol to annotate
        --symbols <symbol[,symbol...]>
                          only consider these symbols

and it's a nice touch that it's searching in the parameter descriptions as well, 
not just the parameter name. Thus if I only remember some sort of keyword that's 
enough to narrow things down and figure out the option.

One small detail I noticed, for some reason the following search does not work:

  triton:~/tip> perf report -h --invert

    Usage: perf report [<options>]

It only works if I don't use the dashes:

  triton:~/tip> perf report -h invert

   Usage: perf report [<options>]

      -G, --inverted        alias for inverted call graph

... which is a bit surprising, agreed?

> - Fix reading separate debuginfo files based on a build-id, problem
>   found on a Debian system (Dima Kogan)
> 
> - Fix endless loop when splitting kallsyms symbols per section for
>   handling kcore files, problem found on a s390x system (Jiri Olsa)

Btw., is this bug specific to perf/core, or do we want it for perf/urgent as well?

> 
> Infrastructure:
> 
> - Prep work for the 'perf stat record' work that will allow generating
>   perf.data files with counting data in addition to the sampling mode
>   we have now (Jiri Olsa)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (1):
>       perf tools: Search for more options when passing args to -h
> 
> Dima Kogan (2):
>       perf symbols: Fix type error when reading a build-id
>       perf symbols: we can now read separate debug-info files based on a build ID
> 
> Jiri Olsa (4):
>       perf evsel: Move id_offset out of struct perf_evsel union member
>       perf cpu_map: Add cpu_map__empty_new function
>       perf stat: Cache aggregated map entries in extra cpumap
>       perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore
> 
> Namhyung Kim (4):
>       perf tools: Improve ambiguous option help message
>       perf report: Rename to --show-cpu-utilization
>       perf tools: Setup pager when printing usage and help
>       perf tools: Introduce usage_with_options_msg()
> 
> Wang Nan (1):
>       perf tools: Enable pre-event inherit setting by config terms
> 
>  tools/perf/Documentation/perf-report.txt |  2 +-
>  tools/perf/builtin-evlist.c              |  4 +--
>  tools/perf/builtin-probe.c               | 20 ++++++-----
>  tools/perf/builtin-record.c              | 11 +++---
>  tools/perf/builtin-report.c              |  4 ++-
>  tools/perf/builtin-sched.c               |  4 +--
>  tools/perf/builtin-script.c              |  8 ++---
>  tools/perf/builtin-stat.c                | 59 +++++++++++++++++++++++++++---
>  tools/perf/util/cpumap.c                 | 17 +++++++++
>  tools/perf/util/cpumap.h                 |  1 +
>  tools/perf/util/evsel.c                  |  9 +++++
>  tools/perf/util/evsel.h                  |  4 ++-
>  tools/perf/util/parse-events.c           | 14 ++++++++
>  tools/perf/util/parse-events.h           |  2 ++
>  tools/perf/util/parse-events.l           |  2 ++
>  tools/perf/util/parse-options.c          | 62 +++++++++++++++++++++++++-------
>  tools/perf/util/parse-options.h          |  5 +++
>  tools/perf/util/strbuf.c                 | 22 ++++++++----
>  tools/perf/util/strbuf.h                 |  2 ++
>  tools/perf/util/symbol-minimal.c         |  2 +-
>  tools/perf/util/symbol.c                 | 11 +++++-
>  21 files changed, 216 insertions(+), 49 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2015-10-28 15:30 Arnaldo Carvalho de Melo
  2015-10-29  9:36 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-28 15:30 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Andi Kleen, Borislav Petkov, Brendan Gregg,
	Chandler Carruth, David Ahern, David S . Miller, Dima Kogan,
	Frederic Weisbecker, Jiri Olsa, Kan Liang, Li Zefan,
	Masami Hiramatsu, Michael Petlan, Namhyung Kim, Peter Zijlstra,
	pi3orama, Stephane Eranian, Wang Nan, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 4341801873e23bbecee76dabb7c111e3693b900f:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-25 09:40:31 +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

for you to fetch changes up to 443f8c75e8d58d394b0e65b47e02e5cd8ed32b41:

  perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore (2015-10-28 11:19:30 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Enable per-event perf_event_attr.inherit setting by config terms, i.e.
  this becomes possible:

      $ perf record -e cycles/inherit/ -e instructions/no-inherit/

  This affects the default, that can be changed globally using the --no-inherit
  option.

  This fine grained control appeared in the eBPF patchkit, but this added
  flexibility may end up being useful in other scenarios (Wang Nan)

- Setup pager when printing usage and help, we have long lists of options,
  better use the pager like we do with normal tooling output, i.e. when needed,
  and including any error messages in the paged output (Namhyung Kim)

- Search for more options when passing args to -h, e.g.: (Arnaldo Carvalho de Melo)

  $ perf report -h interface

   Usage: perf report [<options>]

    --gtk    Use the GTK2 interface
    --stdio  Use the stdio interface
    --tui    Use the TUI interface

- Fix reading separate debuginfo files based on a build-id, problem
  found on a Debian system (Dima Kogan)

- Fix endless loop when splitting kallsyms symbols per section for
  handling kcore files, problem found on a s390x system (Jiri Olsa)

Infrastructure:

- Prep work for the 'perf stat record' work that will allow generating
  perf.data files with counting data in addition to the sampling mode
  we have now (Jiri Olsa)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
      perf tools: Search for more options when passing args to -h

Dima Kogan (2):
      perf symbols: Fix type error when reading a build-id
      perf symbols: we can now read separate debug-info files based on a build ID

Jiri Olsa (4):
      perf evsel: Move id_offset out of struct perf_evsel union member
      perf cpu_map: Add cpu_map__empty_new function
      perf stat: Cache aggregated map entries in extra cpumap
      perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore

Namhyung Kim (4):
      perf tools: Improve ambiguous option help message
      perf report: Rename to --show-cpu-utilization
      perf tools: Setup pager when printing usage and help
      perf tools: Introduce usage_with_options_msg()

Wang Nan (1):
      perf tools: Enable pre-event inherit setting by config terms

 tools/perf/Documentation/perf-report.txt |  2 +-
 tools/perf/builtin-evlist.c              |  4 +--
 tools/perf/builtin-probe.c               | 20 ++++++-----
 tools/perf/builtin-record.c              | 11 +++---
 tools/perf/builtin-report.c              |  4 ++-
 tools/perf/builtin-sched.c               |  4 +--
 tools/perf/builtin-script.c              |  8 ++---
 tools/perf/builtin-stat.c                | 59 +++++++++++++++++++++++++++---
 tools/perf/util/cpumap.c                 | 17 +++++++++
 tools/perf/util/cpumap.h                 |  1 +
 tools/perf/util/evsel.c                  |  9 +++++
 tools/perf/util/evsel.h                  |  4 ++-
 tools/perf/util/parse-events.c           | 14 ++++++++
 tools/perf/util/parse-events.h           |  2 ++
 tools/perf/util/parse-events.l           |  2 ++
 tools/perf/util/parse-options.c          | 62 +++++++++++++++++++++++++-------
 tools/perf/util/parse-options.h          |  5 +++
 tools/perf/util/strbuf.c                 | 22 ++++++++----
 tools/perf/util/strbuf.h                 |  2 ++
 tools/perf/util/symbol-minimal.c         |  2 +-
 tools/perf/util/symbol.c                 | 11 +++++-
 21 files changed, 216 insertions(+), 49 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2015-08-05 20:11 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-08-05 20:11 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Kan Liang, Milian Wolff, Namhyung Kim, Peter Zijlstra,
	Petri Gynther, Stephane Eranian, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling, way more to process in the next days, with the
patchkit for eBPF looking good, perf stat stuff from Jiri and some new hardware
stuff from Andi.

- Arnaldo

The following changes since commit 75f80859b130a1cc84e59e71295ce2dd51fe1c81:

  perf/x86/intel/pebs: Robustify PEBS buffer drain (2015-08-04 10:17:01 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to f151f53aa4f54a647353e1935e4c6cef7f094dd4:

  perf tools: Fix build errors with mipsel-linux-uclibc compiler (2015-08-05 16:56:16 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

New features:

- Deref sys_enter pointer args with contents from probe:vfs_getname, showing
  pathnames instead of pointers in many syscalls in 'perf trace' (Arnaldo Carvalho de Melo)

- Make 'perf trace' write to stderr by default, just like 'strace' (Milian Woff)

Infrastructure:

- color_vfprintf() fixes (Andi Kleen, Jiri Olsa)

- Allow enabling/disabling PERF_SAMPLE_TIME per event (Kan Liang)

- Fix build errors with mipsel-linux-uclibc compiler (Petri Gynther)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (1):
      perf tools: Do not include escape sequences in color_vfprintf return

Arnaldo Carvalho de Melo (6):
      perf script: No tracepoints? Don't call libtraceevent.
      perf trace: Do not show syscall tracepoint filter in the --no-syscalls case
      perf trace: Remember if the vfs_getname tracepoint/kprobe is in place
      perf trace: Use a constant for the syscall formatting buffer
      perf trace: Deref sys_enter pointer args with contents from probe:vfs_getname
      perf trace: Use vfs_getname syscall arg beautifier in more syscalls

Jiri Olsa (1):
      perf tools: Remove trail argument to color vsprintf

Kan Liang (2):
      perf tools: Per-event time support
      perf tools: Refine parse/config callchain functions

Milian Wolff (1):
      perf trace: Write to stderr by default

Petri Gynther (1):
      perf tools: Fix build errors with mipsel-linux-uclibc compiler

 tools/build/feature/test-glibc.c         |  11 ++
 tools/perf/Documentation/perf-record.txt |   4 +-
 tools/perf/builtin-record.c              |   2 +-
 tools/perf/builtin-script.c              |   3 +-
 tools/perf/builtin-trace.c               | 175 +++++++++++++++++++++++++++----
 tools/perf/util/callchain.c              |  14 +--
 tools/perf/util/callchain.h              |   2 +-
 tools/perf/util/cloexec.h                |   2 +-
 tools/perf/util/color.c                  |  21 +---
 tools/perf/util/color.h                  |   1 -
 tools/perf/util/evsel.c                  |  25 +++--
 tools/perf/util/evsel.h                  |   2 +
 tools/perf/util/parse-events.c           |  12 +++
 tools/perf/util/parse-events.h           |   1 +
 tools/perf/util/parse-events.l           |   1 +
 tools/perf/util/pmu.c                    |   2 +-
 16 files changed, 220 insertions(+), 58 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2014-11-25 13:21 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-11-25 13:21 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, Corey Ashford, David Ahern,
	Don Zickus, Frederic Weisbecker, Jiri Olsa, Matt Fleming,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 4e6e311e596eadba30d4f56f64eae7d45611a01c:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-11-20 08:32:01 +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

for you to fetch changes up to 1d9e446b91e182055d874fbb30150aad479a4981:

  perf tools: Add snapshot format file parsing (2014-11-24 18:03:51 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Callchain improvements from Andi Kleen including:
  * Enable printing the srcline in the history
  * Make get_srcline fall back to sym+offset

- Allow to force redirect pr_debug to stderr. (Andi Kleen)

- TUI hist_entry browser fixes, including showing missing overhead
  value for first level callchain. Detected comparing the output of
  --stdio/--gui (that matched) with --tui, that had this problem. (Namhyung Kim)

- Fix segfault due to invalid kernel dso access (Namhyung Kim)

Infrastructure:

- Move bfd_demangle stubbing to its only user (Arnaldo Carvalho de Melo)

- 'perf stat' refactorings, moving stuff from it to evsel.c to use in
  per-pkg/snapshot format changes (Jiri Olsa)

- Add per-pkg format file parsing (Matt Fleming)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (3):
      perf callchain: Enable printing the srcline in the history
      perf callchain: Make get_srcline fall back to sym+offset
      perf tools: Allow to force redirect pr_debug to stderr.

Arnaldo Carvalho de Melo (1):
      perf symbols: Move bfd_demangle stubbing to its only user

Jiri Olsa (4):
      perf evsel: Introduce perf_evsel__compute_deltas function
      perf evsel: Introduce perf_counts_values__scale function
      perf evsel: Introduce perf_evsel__read_cb function
      perf tools: Add snapshot format file parsing

Matt Fleming (1):
      perf tools: Add per-pkg format file parsing

Namhyung Kim (3):
      perf hists browser: Print overhead percent value for first-level callchain
      perf tools: Collapse first level callchain entry if it has sibling
      perf tools: Fix segfault due to invalid kernel dso access

 tools/perf/ui/browsers/hists.c | 25 +++++++++++---
 tools/perf/util/annotate.c     |  2 +-
 tools/perf/util/callchain.c    | 12 ++++++-
 tools/perf/util/callchain.h    |  1 +
 tools/perf/util/debug.c        |  4 ++-
 tools/perf/util/evsel.c        | 72 +++++++++++++++++++++++-----------------
 tools/perf/util/evsel.h        | 15 +++++++++
 tools/perf/util/machine.c      |  4 +--
 tools/perf/util/map.c          |  2 +-
 tools/perf/util/parse-events.c |  2 ++
 tools/perf/util/pmu.c          | 74 +++++++++++++++++++++++++++++++++++-------
 tools/perf/util/pmu.h          |  4 +++
 tools/perf/util/sort.c         |  6 ++--
 tools/perf/util/srcline.c      | 15 +++++++--
 tools/perf/util/symbol-elf.c   | 21 ++++++++++++
 tools/perf/util/symbol.h       | 21 ------------
 tools/perf/util/util.h         |  4 ++-
 17 files changed, 205 insertions(+), 79 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-27 12:40       ` Jiri Olsa
@ 2014-02-27 12:45         ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2014-02-27 12:45 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Cody P Schafer, Corey Ashford, David Ahern,
	Frederic Weisbecker, Jean Pihet, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo


* Jiri Olsa <jolsa@redhat.com> wrote:

> On Thu, Feb 27, 2014 at 01:30:52PM +0100, Ingo Molnar wrote:
> > 
> > * Jiri Olsa <jolsa@redhat.com> wrote:
> > 
> > > On Thu, Feb 27, 2014 at 12:46:58PM +0100, Ingo Molnar wrote:
> > > > 
> > > > * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > > > 
> > > > > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> > > > > 
> 
> SNIP
> 
> > > > Pulled, thanks a lot Arnaldo!
> > > > 
> > > > Btw., the build output looks weird now - on a system that used to pass 
> > > > all feature tests there's this output:
> > > > 
> > > >   BUILD:   Doing 'make -j12' parallel build
> > > > config/Makefile:288: No libdw DWARF unwind found, Please install 
> > > > elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR
> > > > 
> > > > Auto-detecting system features:
> > > > ...                         dwarf: [ on  ]
> > > > ...                         glibc: [ on  ]
> > > > ...                          gtk2: [ on  ]
> > > > ...                      libaudit: [ on  ]
> > > > ...                        libbfd: [ on  ]
> > > > ...                        libelf: [ on  ]
> > > > ...                       libnuma: [ on  ]
> > > > ...                       libperl: [ on  ]
> > > > ...                     libpython: [ on  ]
> > > > ...                      libslang: [ on  ]
> > > > ...                     libunwind: [ on  ]
> > > > ...            libdw-dwarf-unwind: [ OFF ]
> > > > ...     DWARF post unwind library: libunwind
> > > > 
> > > > but:
> > > > 
> > > >    Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version
> > > > 
> > > > Also, the information content of this line is unclear to me:
> > > > 
> > > > ...     DWARF post unwind library: libunwind
> > > > 
> > > > 
> > > > what does that line want to tell?
> > > 
> > > this tells what DWARF unwind library is compiled
> > > in.. 'libunwind' in this case
> > 
> > So my (stylistic) complaint is that it's really reading weird in a 
> > table generated with the following purpose:
> > 
> >       Auto-detecting system features:
> > 
> > Also, we already know that libunwind is present, because just in the 
> > line before it, it says:
> > 
> >     ...                     libunwind: [ on  ]
> > 
> > So it's doubly confusing. How about not displaying that line at all? 
> > Is there a strong reason to not keep 'OFF' messages on a single line?
> 
> well, on/OFF lines are only about detecting libs
> 
> this line:
> 'DWARF post unwind library: libunwind'
> 
> is about telling which one goes in.. could be you have both
> libraries detected and need to choose one or keep default

Okay - but that is not at all clear from the output.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-27 12:30     ` Ingo Molnar
@ 2014-02-27 12:40       ` Jiri Olsa
  2014-02-27 12:45         ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Jiri Olsa @ 2014-02-27 12:40 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Cody P Schafer, Corey Ashford, David Ahern,
	Frederic Weisbecker, Jean Pihet, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo

On Thu, Feb 27, 2014 at 01:30:52PM +0100, Ingo Molnar wrote:
> 
> * Jiri Olsa <jolsa@redhat.com> wrote:
> 
> > On Thu, Feb 27, 2014 at 12:46:58PM +0100, Ingo Molnar wrote:
> > > 
> > > * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > > 
> > > > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> > > > 

SNIP

> > > Pulled, thanks a lot Arnaldo!
> > > 
> > > Btw., the build output looks weird now - on a system that used to pass 
> > > all feature tests there's this output:
> > > 
> > >   BUILD:   Doing 'make -j12' parallel build
> > > config/Makefile:288: No libdw DWARF unwind found, Please install 
> > > elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR
> > > 
> > > Auto-detecting system features:
> > > ...                         dwarf: [ on  ]
> > > ...                         glibc: [ on  ]
> > > ...                          gtk2: [ on  ]
> > > ...                      libaudit: [ on  ]
> > > ...                        libbfd: [ on  ]
> > > ...                        libelf: [ on  ]
> > > ...                       libnuma: [ on  ]
> > > ...                       libperl: [ on  ]
> > > ...                     libpython: [ on  ]
> > > ...                      libslang: [ on  ]
> > > ...                     libunwind: [ on  ]
> > > ...            libdw-dwarf-unwind: [ OFF ]
> > > ...     DWARF post unwind library: libunwind
> > > 
> > > but:
> > > 
> > >    Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version
> > > 
> > > Also, the information content of this line is unclear to me:
> > > 
> > > ...     DWARF post unwind library: libunwind
> > > 
> > > 
> > > what does that line want to tell?
> > 
> > this tells what DWARF unwind library is compiled
> > in.. 'libunwind' in this case
> 
> So my (stylistic) complaint is that it's really reading weird in a 
> table generated with the following purpose:
> 
>       Auto-detecting system features:
> 
> Also, we already know that libunwind is present, because just in the 
> line before it, it says:
> 
>     ...                     libunwind: [ on  ]
> 
> So it's doubly confusing. How about not displaying that line at all? 
> Is there a strong reason to not keep 'OFF' messages on a single line?

well, on/OFF lines are only about detecting libs

this line:
'DWARF post unwind library: libunwind'

is about telling which one goes in.. could be you have both
libraries detected and need to choose one or keep default

> 
> > the other choice is 'libdw', which was not detected in your case 
> > (and thats what the 1st message tells you)
> > 
> > we discussed with Arnaldo, that we would not display warnings for 
> > missing features by default.. only tell that there are missing 
> > features and display them for verbose (VF=1) output
> 
> That's probably a good plan. I'd suggest the following 'short log' for 
> failures:
> 
>      # Auto-detecting system features: 2 libraries are missing. Try 'make VF=1' for a verbose list.
> 
> I.e. that way people can notice if the count goes up or down after an 
> update. Also, that too should be a single line, so that it does not 
> spam people.

ook

jirka

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-27 12:02   ` Jiri Olsa
@ 2014-02-27 12:30     ` Ingo Molnar
  2014-02-27 12:40       ` Jiri Olsa
  0 siblings, 1 reply; 40+ messages in thread
From: Ingo Molnar @ 2014-02-27 12:30 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Cody P Schafer, Corey Ashford, David Ahern,
	Frederic Weisbecker, Jean Pihet, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo


* Jiri Olsa <jolsa@redhat.com> wrote:

> On Thu, Feb 27, 2014 at 12:46:58PM +0100, Ingo Molnar wrote:
> > 
> > * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > 
> > > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> > > 
> > > Hi Ingo,
> > > 
> > > 	Please consider pulling,
> > > 
> > > - Arnaldo
> > > 
> > > The following changes since commit 7e74efcf76c16f851df5c838c143c4a1865ea9fa:
> > > 
> > >   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-02-22 17:26:24 +0100)
> > > 
> > > are available in the git repository at:
> > > 
> > > 
> > >   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> > > 
> > > for you to fetch changes up to 1029f9fedf87fa6f52096991588fa54ffd159584:
> > > 
> > >   perf symbols: Check compatible symtab type before loading dso (2014-02-24 16:25:01 -0300)
> > > 
> > > ----------------------------------------------------------------
> > > perf/core improvements and fixes
> > > 
> > > . Add support for the new DWARF unwinder library in elfutils (Jiri Olsa)
> > > 
> > > . Fix build race in the generation of bison files (Jiri Olsa)
> > > 
> > > . Further streamline the feature detection display, trimming it a bit to
> > >   show just the libraries detected, using VF=1 gets a more verbose output,
> > >   showing the less interesting feature checks as well (Jiri Olsa).
> > > 
> > > . Check compatible symtab type before loading dso (Namhyung Kim)
> > > 
> > > . Check return value of filename__read_debuglink() (Stephane Eranian)
> > > 
> > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > > 
> > > ----------------------------------------------------------------
> > > Arnaldo Carvalho de Melo (1):
> > >       perf tools: Warn the user about how to enable libunwind support
> > > 
> > > Jiri Olsa (9):
> > >       perf tests: Fix *.o make tests
> > >       perf tests: Add pmu-bison.o make test
> > >       perf tools: Fix bison OUTPUT directories dependency
> > >       perf tools: Factor features display code
> > >       perf tools: Add variable display for VF make output
> > >       perf tools: Add feature check for libdw dwarf unwind
> > >       perf tools: Add libdw DWARF post unwind support
> > >       perf tools: Setup default dwarf post unwinder
> > >       perf tests: Add NO_LIBDW_DWARF_UNWIND make test
> > > 
> > > Namhyung Kim (1):
> > >       perf symbols: Check compatible symtab type before loading dso
> > > 
> > > Stephane Eranian (1):
> > >       perf symbols: Check return value of filename__read_debuglink()
> > > 
> > >  tools/perf/Makefile.perf                           |  24 ++-
> > >  tools/perf/arch/x86/Makefile                       |   5 +
> > >  tools/perf/arch/x86/util/unwind-libdw.c            |  51 +++++
> > >  tools/perf/config/Makefile                         | 232 +++++++++++++++------
> > >  tools/perf/config/feature-checks/Makefile          |   6 +-
> > >  tools/perf/config/feature-checks/test-all.c        |   5 +
> > >  .../feature-checks/test-libdw-dwarf-unwind.c       |  13 ++
> > >  tools/perf/tests/make                              |  25 ++-
> > >  tools/perf/util/dso.c                              |   4 +-
> > >  tools/perf/util/symbol-elf.c                       |   2 +
> > >  tools/perf/util/symbol.c                           |  61 +++++-
> > >  tools/perf/util/unwind-libdw.c                     | 210 +++++++++++++++++++
> > >  tools/perf/util/unwind-libdw.h                     |  21 ++
> > >  13 files changed, 569 insertions(+), 90 deletions(-)
> > >  create mode 100644 tools/perf/arch/x86/util/unwind-libdw.c
> > >  create mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
> > >  create mode 100644 tools/perf/util/unwind-libdw.c
> > >  create mode 100644 tools/perf/util/unwind-libdw.h
> > 
> > Pulled, thanks a lot Arnaldo!
> > 
> > Btw., the build output looks weird now - on a system that used to pass 
> > all feature tests there's this output:
> > 
> >   BUILD:   Doing 'make -j12' parallel build
> > config/Makefile:288: No libdw DWARF unwind found, Please install 
> > elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR
> > 
> > Auto-detecting system features:
> > ...                         dwarf: [ on  ]
> > ...                         glibc: [ on  ]
> > ...                          gtk2: [ on  ]
> > ...                      libaudit: [ on  ]
> > ...                        libbfd: [ on  ]
> > ...                        libelf: [ on  ]
> > ...                       libnuma: [ on  ]
> > ...                       libperl: [ on  ]
> > ...                     libpython: [ on  ]
> > ...                      libslang: [ on  ]
> > ...                     libunwind: [ on  ]
> > ...            libdw-dwarf-unwind: [ OFF ]
> > ...     DWARF post unwind library: libunwind
> > 
> > but:
> > 
> >    Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version
> > 
> > Also, the information content of this line is unclear to me:
> > 
> > ...     DWARF post unwind library: libunwind
> > 
> > 
> > what does that line want to tell?
> 
> this tells what DWARF unwind library is compiled
> in.. 'libunwind' in this case

So my (stylistic) complaint is that it's really reading weird in a 
table generated with the following purpose:

      Auto-detecting system features:

Also, we already know that libunwind is present, because just in the 
line before it, it says:

    ...                     libunwind: [ on  ]

So it's doubly confusing. How about not displaying that line at all? 
Is there a strong reason to not keep 'OFF' messages on a single line?

> the other choice is 'libdw', which was not detected in your case 
> (and thats what the 1st message tells you)
> 
> we discussed with Arnaldo, that we would not display warnings for 
> missing features by default.. only tell that there are missing 
> features and display them for verbose (VF=1) output

That's probably a good plan. I'd suggest the following 'short log' for 
failures:

     # Auto-detecting system features: 2 libraries are missing. Try 'make VF=1' for a verbose list.

I.e. that way people can notice if the count goes up or down after an 
update. Also, that too should be a single line, so that it does not 
spam people.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-27 11:46 ` Ingo Molnar
  2014-02-27 12:02   ` Jiri Olsa
@ 2014-02-27 12:04   ` Jiri Olsa
  1 sibling, 0 replies; 40+ messages in thread
From: Jiri Olsa @ 2014-02-27 12:04 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Cody P Schafer, Corey Ashford, David Ahern,
	Frederic Weisbecker, Jean Pihet, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo

On Thu, Feb 27, 2014 at 12:46:58PM +0100, Ingo Molnar wrote:
> 
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> 
> > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> > 
> > Hi Ingo,
> > 
> > 	Please consider pulling,
> > 
> > - Arnaldo
> > 
> > The following changes since commit 7e74efcf76c16f851df5c838c143c4a1865ea9fa:
> > 
> >   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-02-22 17:26:24 +0100)
> > 
> > are available in the git repository at:
> > 
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> > 
> > for you to fetch changes up to 1029f9fedf87fa6f52096991588fa54ffd159584:
> > 
> >   perf symbols: Check compatible symtab type before loading dso (2014-02-24 16:25:01 -0300)
> > 
> > ----------------------------------------------------------------
> > perf/core improvements and fixes
> > 
> > . Add support for the new DWARF unwinder library in elfutils (Jiri Olsa)
> > 
> > . Fix build race in the generation of bison files (Jiri Olsa)
> > 
> > . Further streamline the feature detection display, trimming it a bit to
> >   show just the libraries detected, using VF=1 gets a more verbose output,
> >   showing the less interesting feature checks as well (Jiri Olsa).
> > 
> > . Check compatible symtab type before loading dso (Namhyung Kim)
> > 
> > . Check return value of filename__read_debuglink() (Stephane Eranian)
> > 
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > ----------------------------------------------------------------
> > Arnaldo Carvalho de Melo (1):
> >       perf tools: Warn the user about how to enable libunwind support
> > 
> > Jiri Olsa (9):
> >       perf tests: Fix *.o make tests
> >       perf tests: Add pmu-bison.o make test
> >       perf tools: Fix bison OUTPUT directories dependency
> >       perf tools: Factor features display code
> >       perf tools: Add variable display for VF make output
> >       perf tools: Add feature check for libdw dwarf unwind
> >       perf tools: Add libdw DWARF post unwind support
> >       perf tools: Setup default dwarf post unwinder
> >       perf tests: Add NO_LIBDW_DWARF_UNWIND make test
> > 
> > Namhyung Kim (1):
> >       perf symbols: Check compatible symtab type before loading dso
> > 
> > Stephane Eranian (1):
> >       perf symbols: Check return value of filename__read_debuglink()
> > 
> >  tools/perf/Makefile.perf                           |  24 ++-
> >  tools/perf/arch/x86/Makefile                       |   5 +
> >  tools/perf/arch/x86/util/unwind-libdw.c            |  51 +++++
> >  tools/perf/config/Makefile                         | 232 +++++++++++++++------
> >  tools/perf/config/feature-checks/Makefile          |   6 +-
> >  tools/perf/config/feature-checks/test-all.c        |   5 +
> >  .../feature-checks/test-libdw-dwarf-unwind.c       |  13 ++
> >  tools/perf/tests/make                              |  25 ++-
> >  tools/perf/util/dso.c                              |   4 +-
> >  tools/perf/util/symbol-elf.c                       |   2 +
> >  tools/perf/util/symbol.c                           |  61 +++++-
> >  tools/perf/util/unwind-libdw.c                     | 210 +++++++++++++++++++
> >  tools/perf/util/unwind-libdw.h                     |  21 ++
> >  13 files changed, 569 insertions(+), 90 deletions(-)
> >  create mode 100644 tools/perf/arch/x86/util/unwind-libdw.c
> >  create mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
> >  create mode 100644 tools/perf/util/unwind-libdw.c
> >  create mode 100644 tools/perf/util/unwind-libdw.h
> 
> Pulled, thanks a lot Arnaldo!
> 
> Btw., the build output looks weird now - on a system that used to pass 
> all feature tests there's this output:
> 
>   BUILD:   Doing 'make -j12' parallel build
> config/Makefile:288: No libdw DWARF unwind found, Please install 
> elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR
> 
> Auto-detecting system features:
> ...                         dwarf: [ on  ]
> ...                         glibc: [ on  ]
> ...                          gtk2: [ on  ]
> ...                      libaudit: [ on  ]
> ...                        libbfd: [ on  ]
> ...                        libelf: [ on  ]
> ...                       libnuma: [ on  ]
> ...                       libperl: [ on  ]
> ...                     libpython: [ on  ]
> ...                      libslang: [ on  ]
> ...                     libunwind: [ on  ]
> ...            libdw-dwarf-unwind: [ OFF ]
> ...     DWARF post unwind library: libunwind
> 
> but:
> 
>    Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version

forgot.. remote unwind in libdw is supported from version 0.158,
which I guess wasn't updated in FC19 yet

jirka

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-27 11:46 ` Ingo Molnar
@ 2014-02-27 12:02   ` Jiri Olsa
  2014-02-27 12:30     ` Ingo Molnar
  2014-02-27 12:04   ` Jiri Olsa
  1 sibling, 1 reply; 40+ messages in thread
From: Jiri Olsa @ 2014-02-27 12:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Cody P Schafer, Corey Ashford, David Ahern,
	Frederic Weisbecker, Jean Pihet, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo

On Thu, Feb 27, 2014 at 12:46:58PM +0100, Ingo Molnar wrote:
> 
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> 
> > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> > 
> > Hi Ingo,
> > 
> > 	Please consider pulling,
> > 
> > - Arnaldo
> > 
> > The following changes since commit 7e74efcf76c16f851df5c838c143c4a1865ea9fa:
> > 
> >   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-02-22 17:26:24 +0100)
> > 
> > are available in the git repository at:
> > 
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> > 
> > for you to fetch changes up to 1029f9fedf87fa6f52096991588fa54ffd159584:
> > 
> >   perf symbols: Check compatible symtab type before loading dso (2014-02-24 16:25:01 -0300)
> > 
> > ----------------------------------------------------------------
> > perf/core improvements and fixes
> > 
> > . Add support for the new DWARF unwinder library in elfutils (Jiri Olsa)
> > 
> > . Fix build race in the generation of bison files (Jiri Olsa)
> > 
> > . Further streamline the feature detection display, trimming it a bit to
> >   show just the libraries detected, using VF=1 gets a more verbose output,
> >   showing the less interesting feature checks as well (Jiri Olsa).
> > 
> > . Check compatible symtab type before loading dso (Namhyung Kim)
> > 
> > . Check return value of filename__read_debuglink() (Stephane Eranian)
> > 
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > ----------------------------------------------------------------
> > Arnaldo Carvalho de Melo (1):
> >       perf tools: Warn the user about how to enable libunwind support
> > 
> > Jiri Olsa (9):
> >       perf tests: Fix *.o make tests
> >       perf tests: Add pmu-bison.o make test
> >       perf tools: Fix bison OUTPUT directories dependency
> >       perf tools: Factor features display code
> >       perf tools: Add variable display for VF make output
> >       perf tools: Add feature check for libdw dwarf unwind
> >       perf tools: Add libdw DWARF post unwind support
> >       perf tools: Setup default dwarf post unwinder
> >       perf tests: Add NO_LIBDW_DWARF_UNWIND make test
> > 
> > Namhyung Kim (1):
> >       perf symbols: Check compatible symtab type before loading dso
> > 
> > Stephane Eranian (1):
> >       perf symbols: Check return value of filename__read_debuglink()
> > 
> >  tools/perf/Makefile.perf                           |  24 ++-
> >  tools/perf/arch/x86/Makefile                       |   5 +
> >  tools/perf/arch/x86/util/unwind-libdw.c            |  51 +++++
> >  tools/perf/config/Makefile                         | 232 +++++++++++++++------
> >  tools/perf/config/feature-checks/Makefile          |   6 +-
> >  tools/perf/config/feature-checks/test-all.c        |   5 +
> >  .../feature-checks/test-libdw-dwarf-unwind.c       |  13 ++
> >  tools/perf/tests/make                              |  25 ++-
> >  tools/perf/util/dso.c                              |   4 +-
> >  tools/perf/util/symbol-elf.c                       |   2 +
> >  tools/perf/util/symbol.c                           |  61 +++++-
> >  tools/perf/util/unwind-libdw.c                     | 210 +++++++++++++++++++
> >  tools/perf/util/unwind-libdw.h                     |  21 ++
> >  13 files changed, 569 insertions(+), 90 deletions(-)
> >  create mode 100644 tools/perf/arch/x86/util/unwind-libdw.c
> >  create mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
> >  create mode 100644 tools/perf/util/unwind-libdw.c
> >  create mode 100644 tools/perf/util/unwind-libdw.h
> 
> Pulled, thanks a lot Arnaldo!
> 
> Btw., the build output looks weird now - on a system that used to pass 
> all feature tests there's this output:
> 
>   BUILD:   Doing 'make -j12' parallel build
> config/Makefile:288: No libdw DWARF unwind found, Please install 
> elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR
> 
> Auto-detecting system features:
> ...                         dwarf: [ on  ]
> ...                         glibc: [ on  ]
> ...                          gtk2: [ on  ]
> ...                      libaudit: [ on  ]
> ...                        libbfd: [ on  ]
> ...                        libelf: [ on  ]
> ...                       libnuma: [ on  ]
> ...                       libperl: [ on  ]
> ...                     libpython: [ on  ]
> ...                      libslang: [ on  ]
> ...                     libunwind: [ on  ]
> ...            libdw-dwarf-unwind: [ OFF ]
> ...     DWARF post unwind library: libunwind
> 
> but:
> 
>    Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version
> 
> Also, the information content of this line is unclear to me:
> 
> ...     DWARF post unwind library: libunwind
> 
> 
> what does that line want to tell?

this tells what DWARF unwind library is compiled
in.. 'libunwind' in this case

the other choice is 'libdw', which was not detected
in your case (and thats what the 1st message tells you)

we discussed with Arnaldo, that we would not display warnings
for missing features by default.. only tell that there are
missing features and display them for verbose (VF=1) output

jirka

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2014-02-24 19:56 Arnaldo Carvalho de Melo
@ 2014-02-27 11:46 ` Ingo Molnar
  2014-02-27 12:02   ` Jiri Olsa
  2014-02-27 12:04   ` Jiri Olsa
  0 siblings, 2 replies; 40+ messages in thread
From: Ingo Molnar @ 2014-02-27 11:46 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Cody P Schafer, Corey Ashford, David Ahern, Frederic Weisbecker,
	Jean Pihet, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 7e74efcf76c16f851df5c838c143c4a1865ea9fa:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-02-22 17:26:24 +0100)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> 
> for you to fetch changes up to 1029f9fedf87fa6f52096991588fa54ffd159584:
> 
>   perf symbols: Check compatible symtab type before loading dso (2014-02-24 16:25:01 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes
> 
> . Add support for the new DWARF unwinder library in elfutils (Jiri Olsa)
> 
> . Fix build race in the generation of bison files (Jiri Olsa)
> 
> . Further streamline the feature detection display, trimming it a bit to
>   show just the libraries detected, using VF=1 gets a more verbose output,
>   showing the less interesting feature checks as well (Jiri Olsa).
> 
> . Check compatible symtab type before loading dso (Namhyung Kim)
> 
> . Check return value of filename__read_debuglink() (Stephane Eranian)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (1):
>       perf tools: Warn the user about how to enable libunwind support
> 
> Jiri Olsa (9):
>       perf tests: Fix *.o make tests
>       perf tests: Add pmu-bison.o make test
>       perf tools: Fix bison OUTPUT directories dependency
>       perf tools: Factor features display code
>       perf tools: Add variable display for VF make output
>       perf tools: Add feature check for libdw dwarf unwind
>       perf tools: Add libdw DWARF post unwind support
>       perf tools: Setup default dwarf post unwinder
>       perf tests: Add NO_LIBDW_DWARF_UNWIND make test
> 
> Namhyung Kim (1):
>       perf symbols: Check compatible symtab type before loading dso
> 
> Stephane Eranian (1):
>       perf symbols: Check return value of filename__read_debuglink()
> 
>  tools/perf/Makefile.perf                           |  24 ++-
>  tools/perf/arch/x86/Makefile                       |   5 +
>  tools/perf/arch/x86/util/unwind-libdw.c            |  51 +++++
>  tools/perf/config/Makefile                         | 232 +++++++++++++++------
>  tools/perf/config/feature-checks/Makefile          |   6 +-
>  tools/perf/config/feature-checks/test-all.c        |   5 +
>  .../feature-checks/test-libdw-dwarf-unwind.c       |  13 ++
>  tools/perf/tests/make                              |  25 ++-
>  tools/perf/util/dso.c                              |   4 +-
>  tools/perf/util/symbol-elf.c                       |   2 +
>  tools/perf/util/symbol.c                           |  61 +++++-
>  tools/perf/util/unwind-libdw.c                     | 210 +++++++++++++++++++
>  tools/perf/util/unwind-libdw.h                     |  21 ++
>  13 files changed, 569 insertions(+), 90 deletions(-)
>  create mode 100644 tools/perf/arch/x86/util/unwind-libdw.c
>  create mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
>  create mode 100644 tools/perf/util/unwind-libdw.c
>  create mode 100644 tools/perf/util/unwind-libdw.h

Pulled, thanks a lot Arnaldo!

Btw., the build output looks weird now - on a system that used to pass 
all feature tests there's this output:

  BUILD:   Doing 'make -j12' parallel build
config/Makefile:288: No libdw DWARF unwind found, Please install 
elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR

Auto-detecting system features:
...                         dwarf: [ on  ]
...                         glibc: [ on  ]
...                          gtk2: [ on  ]
...                      libaudit: [ on  ]
...                        libbfd: [ on  ]
...                        libelf: [ on  ]
...                       libnuma: [ on  ]
...                       libperl: [ on  ]
...                     libpython: [ on  ]
...                      libslang: [ on  ]
...                     libunwind: [ on  ]
...            libdw-dwarf-unwind: [ OFF ]
...     DWARF post unwind library: libunwind

but:

   Package elfutils-devel-0.156-5.fc19.x86_64 already installed and latest version

Also, the information content of this line is unclear to me:

...     DWARF post unwind library: libunwind


what does that line want to tell?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2014-02-24 19:56 Arnaldo Carvalho de Melo
  2014-02-27 11:46 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-02-24 19:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Cody P Schafer, Corey Ashford, David Ahern, Frederic Weisbecker,
	Jean Pihet, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 7e74efcf76c16f851df5c838c143c4a1865ea9fa:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-02-22 17:26:24 +0100)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo

for you to fetch changes up to 1029f9fedf87fa6f52096991588fa54ffd159584:

  perf symbols: Check compatible symtab type before loading dso (2014-02-24 16:25:01 -0300)

----------------------------------------------------------------
perf/core improvements and fixes

. Add support for the new DWARF unwinder library in elfutils (Jiri Olsa)

. Fix build race in the generation of bison files (Jiri Olsa)

. Further streamline the feature detection display, trimming it a bit to
  show just the libraries detected, using VF=1 gets a more verbose output,
  showing the less interesting feature checks as well (Jiri Olsa).

. Check compatible symtab type before loading dso (Namhyung Kim)

. Check return value of filename__read_debuglink() (Stephane Eranian)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
      perf tools: Warn the user about how to enable libunwind support

Jiri Olsa (9):
      perf tests: Fix *.o make tests
      perf tests: Add pmu-bison.o make test
      perf tools: Fix bison OUTPUT directories dependency
      perf tools: Factor features display code
      perf tools: Add variable display for VF make output
      perf tools: Add feature check for libdw dwarf unwind
      perf tools: Add libdw DWARF post unwind support
      perf tools: Setup default dwarf post unwinder
      perf tests: Add NO_LIBDW_DWARF_UNWIND make test

Namhyung Kim (1):
      perf symbols: Check compatible symtab type before loading dso

Stephane Eranian (1):
      perf symbols: Check return value of filename__read_debuglink()

 tools/perf/Makefile.perf                           |  24 ++-
 tools/perf/arch/x86/Makefile                       |   5 +
 tools/perf/arch/x86/util/unwind-libdw.c            |  51 +++++
 tools/perf/config/Makefile                         | 232 +++++++++++++++------
 tools/perf/config/feature-checks/Makefile          |   6 +-
 tools/perf/config/feature-checks/test-all.c        |   5 +
 .../feature-checks/test-libdw-dwarf-unwind.c       |  13 ++
 tools/perf/tests/make                              |  25 ++-
 tools/perf/util/dso.c                              |   4 +-
 tools/perf/util/symbol-elf.c                       |   2 +
 tools/perf/util/symbol.c                           |  61 +++++-
 tools/perf/util/unwind-libdw.c                     | 210 +++++++++++++++++++
 tools/perf/util/unwind-libdw.h                     |  21 ++
 13 files changed, 569 insertions(+), 90 deletions(-)
 create mode 100644 tools/perf/arch/x86/util/unwind-libdw.c
 create mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
 create mode 100644 tools/perf/util/unwind-libdw.c
 create mode 100644 tools/perf/util/unwind-libdw.h

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2013-12-02 20:48 Arnaldo Carvalho de Melo
@ 2013-12-04  9:18 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2013-12-04  9:18 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Corey Ashford, David Ahern, Dongsheng Yang, Frederic Weisbecker,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Hurley, Peter Zijlstra, Stanislav Fomichev,
	Stephane Eranian, Steven Rostedt, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 0ed1e0bee0b2c6b4cc6d7a63787739a9d3ac8aa8:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-11-30 13:42:48 +0100)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> 
> for you to fetch changes up to f885037ef6400ce4a4c122a88845dea2c9bca256:
> 
>   perf trace: Honour -m option (2013-12-02 16:29:40 -0300)
> 
> ----------------------------------------------------------------
> perf/tools improvements and fixes:
> 
> . Honour -m option in 'trace', the tool was offering the option to
>   set the mmap size, but wasn't using it when doing the actual mmap
>   on the events file descriptors, fix from Jiri Olsa.
> 
> . Correct the message in feature-libnuma checking, swowing the right
>   devel package names for various distros, from Dongsheng Yang.
> 
> . Polish 'readn' function and introduce its counterpart, 'writen', from
>   Jiri Olsa.
> 
> . Start moving timechart state from global variables to a 'perf_tool' derived
>   'timechart' struct.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (4):
>       perf timechart: Introduce tool struct
>       perf timechart: Move all_data per_pid list to 'struct timechart'
>       perf timechart: Move power_events list to 'struct timechart'
>       perf timechart: Move wake_events list to 'struct timechart'
> 
> Dongsheng Yang (1):
>       perf tools: Correct the message in feature-libnuma checking.
> 
> Jiri Olsa (7):
>       perf record: Unify data output code into perf_record__write function
>       perf tools: Use correct return type for readn function
>       perf tools: Fine tune readn function
>       perf tools: Add writen function
>       perf tools: Add perf_data_file__write interface
>       perf tools: Include test-stackprotector-all.c in test-all
>       perf trace: Honour -m option
> 
>  tools/perf/builtin-record.c                 |  20 +-
>  tools/perf/builtin-timechart.c              | 364 +++++++++++++++-------------
>  tools/perf/builtin-trace.c                  |   2 +-
>  tools/perf/config/Makefile                  |   2 +-
>  tools/perf/config/feature-checks/test-all.c |   5 +
>  tools/perf/util/data.c                      |   6 +
>  tools/perf/util/data.h                      |  14 +-
>  tools/perf/util/header.c                    |  18 +-
>  tools/perf/util/session.c                   |   2 +-
>  tools/perf/util/util.c                      |  32 ++-
>  tools/perf/util/util.h                      |   3 +-
>  11 files changed, 256 insertions(+), 212 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2013-12-02 20:48 Arnaldo Carvalho de Melo
  2013-12-04  9:18 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-02 20:48 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Corey Ashford, David Ahern, Dongsheng Yang, Frederic Weisbecker,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Hurley, Peter Zijlstra, Stanislav Fomichev,
	Stephane Eranian, Steven Rostedt, Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 0ed1e0bee0b2c6b4cc6d7a63787739a9d3ac8aa8:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-11-30 13:42:48 +0100)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo

for you to fetch changes up to f885037ef6400ce4a4c122a88845dea2c9bca256:

  perf trace: Honour -m option (2013-12-02 16:29:40 -0300)

----------------------------------------------------------------
perf/tools improvements and fixes:

. Honour -m option in 'trace', the tool was offering the option to
  set the mmap size, but wasn't using it when doing the actual mmap
  on the events file descriptors, fix from Jiri Olsa.

. Correct the message in feature-libnuma checking, swowing the right
  devel package names for various distros, from Dongsheng Yang.

. Polish 'readn' function and introduce its counterpart, 'writen', from
  Jiri Olsa.

. Start moving timechart state from global variables to a 'perf_tool' derived
  'timechart' struct.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
      perf timechart: Introduce tool struct
      perf timechart: Move all_data per_pid list to 'struct timechart'
      perf timechart: Move power_events list to 'struct timechart'
      perf timechart: Move wake_events list to 'struct timechart'

Dongsheng Yang (1):
      perf tools: Correct the message in feature-libnuma checking.

Jiri Olsa (7):
      perf record: Unify data output code into perf_record__write function
      perf tools: Use correct return type for readn function
      perf tools: Fine tune readn function
      perf tools: Add writen function
      perf tools: Add perf_data_file__write interface
      perf tools: Include test-stackprotector-all.c in test-all
      perf trace: Honour -m option

 tools/perf/builtin-record.c                 |  20 +-
 tools/perf/builtin-timechart.c              | 364 +++++++++++++++-------------
 tools/perf/builtin-trace.c                  |   2 +-
 tools/perf/config/Makefile                  |   2 +-
 tools/perf/config/feature-checks/test-all.c |   5 +
 tools/perf/util/data.c                      |   6 +
 tools/perf/util/data.h                      |  14 +-
 tools/perf/util/header.c                    |  18 +-
 tools/perf/util/session.c                   |   2 +-
 tools/perf/util/util.c                      |  32 ++-
 tools/perf/util/util.h                      |   3 +-
 11 files changed, 256 insertions(+), 212 deletions(-)

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [GIT PULL 00/12] perf/core improvements and fixes
  2012-10-24 21:50 Arnaldo Carvalho de Melo
@ 2012-10-25  7:43 ` Ingo Molnar
  0 siblings, 0 replies; 40+ messages in thread
From: Ingo Molnar @ 2012-10-25  7:43 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Borislav Petkov, Corey Ashford, David Ahern,
	Frederic Weisbecker, Irina Tirdea, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Namhyung Kim, Paul Mackerras, Pekka Enberg,
	Peter Zijlstra, Robert Richter, Stephane Eranian, Steven Rostedt,
	Suzuki K. Poulose, Thomas Gleixner, arnaldo.melo,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling.
> 
> 	 I'll continue processing patchsets by Jiri, Namhyung, David, Irina and
> others tomorrow.
> 
> 	I also have to rework the pagefaults patches, as the code it touches
> changed lately, will add that NUMA node info you suggested.
> 
> - Arnaldo
> 
> The following changes since commit ce37f400336a34bb6e72c4700f9dcc2a41ff7163:
> 
>   x86: Allow tracing of functions in arch/x86/kernel/rtc.c (2012-10-24 13:14:22 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> 
> for you to fetch changes up to af3df2cf17f5df079189c3cc88870d28e219496b:
> 
>   perf tools: Try to build Documentation when installing (2012-10-24 19:30:48 -0200)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes
> 
> . Align the 'Ok'/'FAILED!' test results in 'perf test.
> 
> . Support interrupted syscalls in 'trace'
> 
> . Add an event duration column and filter in 'trace'.
> 
> . There are references to the man pages in some tools, so try to build
>   Documentation when installing, warning the user if that is not possible,
>   from Borislav Petkov.
> 
> . Give user better message if precise is not supported, from David Ahern.
> 
> . Try to find cross-built objdump path by using the session environment
>   information in the perf.data file header, from Irina Tirdea, original
>   patch and idea by Namhyung Kim.
> 
> . Diplays more output on features check for make V=1, so that one can figure
>   out what is happening by looking at gcc output, etc. From Jiri Olsa.
> 
> . Account the nr_entries in rblist properly, fix by Suzuki K. Poulose.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (7):
>       perf tools: Remove noise in python version feature test
>       perf test: Align the 'Ok'/'FAILED!' test results
>       perf trace: Support interrupted syscalls
>       perf trace: Add an event duration column
>       perf trace: Add duration filter
>       perf tools: Pretty print errno for some more functions
>       perf trace: Print the name of a syscall when failing to read its info
> 
> Borislav Petkov (1):
>       perf tools: Try to build Documentation when installing
> 
> David Ahern (1):
>       perf tools: Give user better message if precise is not supported
> 
> Irina Tirdea (1):
>       perf tools: Try to find cross-built objdump path
> 
> Jiri Olsa (1):
>       perf tools: Diplays more output on features check for make V=1
> 
> Suzuki K. Poulose (1):
>       Account the nr_entries in rblist properly
> 
>  tools/perf/Documentation/Makefile       |   31 +++-
>  tools/perf/Documentation/perf-trace.txt |    3 +
>  tools/perf/Makefile                     |   53 ++++---
>  tools/perf/arch/common.c                |  178 ++++++++++++++++++++++
>  tools/perf/arch/common.h                |   10 ++
>  tools/perf/builtin-annotate.c           |    7 +
>  tools/perf/builtin-record.c             |    5 +
>  tools/perf/builtin-report.c             |    7 +
>  tools/perf/builtin-test.c               |   18 ++-
>  tools/perf/builtin-top.c                |    4 +
>  tools/perf/builtin-trace.c              |  250 ++++++++++++++++++++++++++++---
>  tools/perf/config/feature-tests.mak     |    5 +-
>  tools/perf/config/utilities.mak         |   11 +-
>  tools/perf/util/annotate.h              |    1 -
>  tools/perf/util/parse-events.c          |    2 +-
>  tools/perf/util/rblist.c                |    4 +-
>  tools/perf/util/util.h                  |    4 +
>  17 files changed, 535 insertions(+), 58 deletions(-)
>  create mode 100644 tools/perf/arch/common.c
>  create mode 100644 tools/perf/arch/common.h

Pulled, thanks a lot Arnado!

	Ingo

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [GIT PULL 00/12] perf/core improvements and fixes
@ 2012-10-24 21:50 Arnaldo Carvalho de Melo
  2012-10-25  7:43 ` Ingo Molnar
  0 siblings, 1 reply; 40+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-10-24 21:50 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Borislav Petkov,
	Corey Ashford, David Ahern, Frederic Weisbecker, Irina Tirdea,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Namhyung Kim,
	Paul Mackerras, Pekka Enberg, Peter Zijlstra, Robert Richter,
	Stephane Eranian, Steven Rostedt, Suzuki K. Poulose,
	Thomas Gleixner, arnaldo.melo, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling.

	 I'll continue processing patchsets by Jiri, Namhyung, David, Irina and
others tomorrow.

	I also have to rework the pagefaults patches, as the code it touches
changed lately, will add that NUMA node info you suggested.

- Arnaldo

The following changes since commit ce37f400336a34bb6e72c4700f9dcc2a41ff7163:

  x86: Allow tracing of functions in arch/x86/kernel/rtc.c (2012-10-24 13:14:22 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo

for you to fetch changes up to af3df2cf17f5df079189c3cc88870d28e219496b:

  perf tools: Try to build Documentation when installing (2012-10-24 19:30:48 -0200)

----------------------------------------------------------------
perf/core improvements and fixes

. Align the 'Ok'/'FAILED!' test results in 'perf test.

. Support interrupted syscalls in 'trace'

. Add an event duration column and filter in 'trace'.

. There are references to the man pages in some tools, so try to build
  Documentation when installing, warning the user if that is not possible,
  from Borislav Petkov.

. Give user better message if precise is not supported, from David Ahern.

. Try to find cross-built objdump path by using the session environment
  information in the perf.data file header, from Irina Tirdea, original
  patch and idea by Namhyung Kim.

. Diplays more output on features check for make V=1, so that one can figure
  out what is happening by looking at gcc output, etc. From Jiri Olsa.

. Account the nr_entries in rblist properly, fix by Suzuki K. Poulose.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (7):
      perf tools: Remove noise in python version feature test
      perf test: Align the 'Ok'/'FAILED!' test results
      perf trace: Support interrupted syscalls
      perf trace: Add an event duration column
      perf trace: Add duration filter
      perf tools: Pretty print errno for some more functions
      perf trace: Print the name of a syscall when failing to read its info

Borislav Petkov (1):
      perf tools: Try to build Documentation when installing

David Ahern (1):
      perf tools: Give user better message if precise is not supported

Irina Tirdea (1):
      perf tools: Try to find cross-built objdump path

Jiri Olsa (1):
      perf tools: Diplays more output on features check for make V=1

Suzuki K. Poulose (1):
      Account the nr_entries in rblist properly

 tools/perf/Documentation/Makefile       |   31 +++-
 tools/perf/Documentation/perf-trace.txt |    3 +
 tools/perf/Makefile                     |   53 ++++---
 tools/perf/arch/common.c                |  178 ++++++++++++++++++++++
 tools/perf/arch/common.h                |   10 ++
 tools/perf/builtin-annotate.c           |    7 +
 tools/perf/builtin-record.c             |    5 +
 tools/perf/builtin-report.c             |    7 +
 tools/perf/builtin-test.c               |   18 ++-
 tools/perf/builtin-top.c                |    4 +
 tools/perf/builtin-trace.c              |  250 ++++++++++++++++++++++++++++---
 tools/perf/config/feature-tests.mak     |    5 +-
 tools/perf/config/utilities.mak         |   11 +-
 tools/perf/util/annotate.h              |    1 -
 tools/perf/util/parse-events.c          |    2 +-
 tools/perf/util/rblist.c                |    4 +-
 tools/perf/util/util.h                  |    4 +
 17 files changed, 535 insertions(+), 58 deletions(-)
 create mode 100644 tools/perf/arch/common.c
 create mode 100644 tools/perf/arch/common.h

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2018-10-09  5:25 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-17  2:45 [GIT PULL 00/12] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 01/12] perf stat: Avoid fractional digits for integer scales Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 02/12] perf symbols: Store vdso buildid unconditionally Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 03/12] perf stat: Fix indentation of stalled backend cycle Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 04/12] perf stat: Update runtime using cpu-clock event Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 05/12] perf stat: Use cpu-clock event for cpu targets Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 06/12] perf symbols: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 07/12] perf core: Generalize max_stack sysctl handler Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 08/12] perf core: Pass max stack as a perf_callchain_entry context Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 09/12] perf core: Add a 'nr' field to perf_event_callchain_context Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 10/12] perf core: Add perf_callchain_store_context() helper Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 11/12] perf core: Separate accounting of contexts and real addresses in a stack trace Arnaldo Carvalho de Melo
2016-05-17  2:45 ` [PATCH 12/12] perf tools: " Arnaldo Carvalho de Melo
2016-05-20  6:23 ` [GIT PULL 00/12] perf/core improvements and fixes Ingo Molnar
  -- strict thread matches above, loose matches on Subject: below --
2018-10-09  0:54 Arnaldo Carvalho de Melo
2018-10-09  5:24 ` Ingo Molnar
2016-11-25 15:12 Arnaldo Carvalho de Melo
2016-11-25 17:14 ` Ingo Molnar
2016-09-08 20:46 Arnaldo Carvalho de Melo
2016-09-09  5:47 ` Ingo Molnar
2016-05-30 19:24 Arnaldo Carvalho de Melo
2016-05-31  7:24 ` Ingo Molnar
2015-11-05 16:02 Arnaldo Carvalho de Melo
2015-10-28 15:30 Arnaldo Carvalho de Melo
2015-10-29  9:36 ` Ingo Molnar
2015-10-29  9:51   ` Ingo Molnar
2015-10-29  9:55   ` Jiri Olsa
2015-08-05 20:11 Arnaldo Carvalho de Melo
2014-11-25 13:21 Arnaldo Carvalho de Melo
2014-02-24 19:56 Arnaldo Carvalho de Melo
2014-02-27 11:46 ` Ingo Molnar
2014-02-27 12:02   ` Jiri Olsa
2014-02-27 12:30     ` Ingo Molnar
2014-02-27 12:40       ` Jiri Olsa
2014-02-27 12:45         ` Ingo Molnar
2014-02-27 12:04   ` Jiri Olsa
2013-12-02 20:48 Arnaldo Carvalho de Melo
2013-12-04  9:18 ` Ingo Molnar
2012-10-24 21:50 Arnaldo Carvalho de Melo
2012-10-25  7:43 ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).