All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL 00/11] perf/core improvements and fixes
@ 2013-07-22 20:22 Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 01/11] perf script: Fix named threads support Arnaldo Carvalho de Melo
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
	Borislav Petkov, Clark Williams, Corey Ashford, David Ahern,
	Feng Tang, Frederic Weisbecker, Hitoshi Mitake, Jiri Olsa,
	Kirill A. Shutemov, Kirill A. Shutemov, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra

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

Hi Ingo,

	Please consider pulling.

	Tomorrow I'll try to process Jiri's group leader patches and David's 'kvm live'
kits and continue looking for patches not processed during my vacations.

Thanks,

- Arnaldo

The following changes since commit 5a9821321e0a61674fd5c4b5a9e95007d0e7e052:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-07-19 09:35:30 +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 f9ea55d0ddf66ed030b2a478625cd5792d30df16:

  perf tools: Move weight back to common sort keys (2013-07-22 16:58:28 -0300)

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

. Fix memcpy benchmark for large sizes, from Andi Kleen.

. Support callchain sorting based on addresses, from Andi Kleen

. Move weight back to common sort keys, From Andi Kleen.

. Fix named threads support in 'perf script', from David Ahern.

. Handle ENODEV on default cycles event, fix from David Ahern.

. More install tests, from Jiri Olsa.

. Fix build with perl 5.18, from Kirill A. Shutemov.

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

----------------------------------------------------------------
Andi Kleen (3):
      perf bench: Fix memcpy benchmark for large sizes
      perf tools: Support callchain sorting based on addresses
      perf tools: Move weight back to common sort keys

David Ahern (2):
      perf script: Fix named threads support
      perf evsel: Handle ENODEV on default cycles event

Jiri Olsa (5):
      perf tests: Run ctags/cscope make tests only with needed binaries
      perf tests: Rename TMP to TMP_O tests/make variable
      perf tests: Add DESTDIR=TMP_DEST tests/make variable
      perf tests: Add 'make install/install-bin' tests into tests/make
      perf tests: Add broken install-* tests into tests/make

Kirill A. Shutemov (1):
      perf tools: Fix build with perl 5.18

 tools/perf/Documentation/perf-report.txt           |  8 ++-
 tools/perf/Makefile                                |  4 +-
 tools/perf/bench/mem-memcpy.c                      |  2 +
 tools/perf/builtin-report.c                        | 19 ++++--
 tools/perf/builtin-script.c                        |  6 +-
 tools/perf/tests/make                              | 67 +++++++++++++++++++---
 tools/perf/util/callchain.c                        |  7 ++-
 tools/perf/util/callchain.h                        |  6 ++
 tools/perf/util/evsel.c                            |  2 +-
 tools/perf/util/hist.c                             |  3 +-
 .../perf/util/scripting-engines/trace-event-perl.c | 14 +++--
 .../util/scripting-engines/trace-event-python.c    |  9 +--
 tools/perf/util/sort.c                             |  4 +-
 tools/perf/util/sort.h                             |  6 +-
 tools/perf/util/trace-event-scripting.c            |  3 +-
 tools/perf/util/trace-event.h                      |  4 +-
 16 files changed, 124 insertions(+), 40 deletions(-)

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

* [PATCH 01/11] perf script: Fix named threads support
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 02/11] perf evsel: Handle ENODEV on default cycles event Arnaldo Carvalho de Melo
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Ahern, Feng Tang, Arnaldo Carvalho de Melo

From: David Ahern <dsahern@gmail.com>

Commit 73994dc broke named thread support in perf-script. The thread
struct in al is the main thread for a multithreaded process. The thread
struct used for analysis (e.g., dumping events) should be the specific
thread for the sample.

Signed-off-by: David Ahern <dsahern@gmail.com>
Cc: Feng Tang <feng.tang@intel.com>
Link: http://lkml.kernel.org/r/1374185175-28272-1-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-script.c                            |  6 +++---
 tools/perf/util/scripting-engines/trace-event-perl.c   | 14 ++++++++------
 tools/perf/util/scripting-engines/trace-event-python.c |  9 +++++----
 tools/perf/util/trace-event-scripting.c                |  3 ++-
 tools/perf/util/trace-event.h                          |  4 +++-
 5 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index ecb6979..1cad370 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -397,10 +397,10 @@ static void print_sample_bts(union perf_event *event,
 
 static void process_event(union perf_event *event, struct perf_sample *sample,
 			  struct perf_evsel *evsel, struct machine *machine,
-			  struct addr_location *al)
+			  struct thread *thread,
+			  struct addr_location *al __maybe_unused)
 {
 	struct perf_event_attr *attr = &evsel->attr;
-	struct thread *thread = al->thread;
 
 	if (output[attr->type].fields == 0)
 		return;
@@ -511,7 +511,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
 	if (cpu_list && !test_bit(sample->cpu, cpu_bitmap))
 		return 0;
 
-	scripting_ops->process_event(event, sample, evsel, machine, &al);
+	scripting_ops->process_event(event, sample, evsel, machine, thread, &al);
 
 	evsel->hists.stats.total_period += sample->period;
 	return 0;
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index eacec85..a85e4ae 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -261,7 +261,8 @@ static void perl_process_tracepoint(union perf_event *perf_event __maybe_unused,
 				    struct perf_sample *sample,
 				    struct perf_evsel *evsel,
 				    struct machine *machine __maybe_unused,
-				    struct addr_location *al)
+				    struct thread *thread,
+					struct addr_location *al)
 {
 	struct format_field *field;
 	static char handler[256];
@@ -272,7 +273,6 @@ static void perl_process_tracepoint(union perf_event *perf_event __maybe_unused,
 	int cpu = sample->cpu;
 	void *data = sample->raw_data;
 	unsigned long long nsecs = sample->time;
-	struct thread *thread = al->thread;
 	char *comm = thread->comm;
 
 	dSP;
@@ -351,7 +351,8 @@ static void perl_process_event_generic(union perf_event *event,
 				       struct perf_sample *sample,
 				       struct perf_evsel *evsel,
 				       struct machine *machine __maybe_unused,
-				       struct addr_location *al __maybe_unused)
+				       struct thread *thread __maybe_unused,
+					   struct addr_location *al __maybe_unused)
 {
 	dSP;
 
@@ -377,10 +378,11 @@ static void perl_process_event(union perf_event *event,
 			       struct perf_sample *sample,
 			       struct perf_evsel *evsel,
 			       struct machine *machine,
-			       struct addr_location *al)
+			       struct thread *thread,
+				   struct addr_location *al)
 {
-	perl_process_tracepoint(event, sample, evsel, machine, al);
-	perl_process_event_generic(event, sample, evsel, machine, al);
+	perl_process_tracepoint(event, sample, evsel, machine, thread, al);
+	perl_process_event_generic(event, sample, evsel, machine, thread, al);
 }
 
 static void run_start_sub(void)
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index e87aa5d..cc75a3c 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -225,6 +225,7 @@ static void python_process_tracepoint(union perf_event *perf_event
 				 struct perf_sample *sample,
 				 struct perf_evsel *evsel,
 				 struct machine *machine __maybe_unused,
+				 struct thread *thread,
 				 struct addr_location *al)
 {
 	PyObject *handler, *retval, *context, *t, *obj, *dict = NULL;
@@ -238,7 +239,6 @@ static void python_process_tracepoint(union perf_event *perf_event
 	int cpu = sample->cpu;
 	void *data = sample->raw_data;
 	unsigned long long nsecs = sample->time;
-	struct thread *thread = al->thread;
 	char *comm = thread->comm;
 
 	t = PyTuple_New(MAX_FIELDS);
@@ -345,12 +345,12 @@ static void python_process_general_event(union perf_event *perf_event
 					 struct perf_sample *sample,
 					 struct perf_evsel *evsel,
 					 struct machine *machine __maybe_unused,
+					 struct thread *thread,
 					 struct addr_location *al)
 {
 	PyObject *handler, *retval, *t, *dict;
 	static char handler_name[64];
 	unsigned n = 0;
-	struct thread *thread = al->thread;
 
 	/*
 	 * Use the MAX_FIELDS to make the function expandable, though
@@ -404,17 +404,18 @@ static void python_process_event(union perf_event *perf_event,
 				 struct perf_sample *sample,
 				 struct perf_evsel *evsel,
 				 struct machine *machine,
+				 struct thread *thread,
 				 struct addr_location *al)
 {
 	switch (evsel->attr.type) {
 	case PERF_TYPE_TRACEPOINT:
 		python_process_tracepoint(perf_event, sample, evsel,
-					  machine, al);
+					  machine, thread, al);
 		break;
 	/* Reserve for future process_hw/sw/raw APIs */
 	default:
 		python_process_general_event(perf_event, sample, evsel,
-					     machine, al);
+					     machine, thread, al);
 	}
 }
 
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c
index 8715a10..95199e4 100644
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -39,7 +39,8 @@ static void process_event_unsupported(union perf_event *event __maybe_unused,
 				      struct perf_sample *sample __maybe_unused,
 				      struct perf_evsel *evsel __maybe_unused,
 				      struct machine *machine __maybe_unused,
-				      struct addr_location *al __maybe_unused)
+				      struct thread *thread __maybe_unused,
+					  struct addr_location *al __maybe_unused)
 {
 }
 
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
index 669a64a..fafe1a4 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -9,6 +9,7 @@ struct machine;
 struct perf_sample;
 union perf_event;
 struct perf_tool;
+struct thread;
 
 extern struct pevent *perf_pevent;
 
@@ -68,7 +69,8 @@ struct scripting_ops {
 			       struct perf_sample *sample,
 			       struct perf_evsel *evsel,
 			       struct machine *machine,
-			       struct addr_location *al);
+			       struct thread *thread,
+				   struct addr_location *al);
 	int (*generate_script) (struct pevent *pevent, const char *outfile);
 };
 
-- 
1.8.1.4


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

* [PATCH 02/11] perf evsel: Handle ENODEV on default cycles event
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 01/11] perf script: Fix named threads support Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 03/11] perf bench: Fix memcpy benchmark for large sizes Arnaldo Carvalho de Melo
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Ahern, Frederic Weisbecker, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: David Ahern <dsahern@gmail.com>

Some systems (e.g., VMs on qemu-0.13 with the default vcpu model) report
an unsupported CPU model:

Performance Events: unsupported p6 CPU model 2 no PMU driver, software events only.

Subsequent invocations of perf fail with:

The sys_perf_event_open() syscall returned with 19 (No such device) for event (cycles).
/bin/dmesg may provide additional information.
No CONFIG_PERF_EVENTS=y kernel support configured?

Add ENODEV to the list of errno's to fallback to cpu-clock.

Signed-off-by: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1374190079-28507-1-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evsel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index a635461..8bed0c1 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1482,7 +1482,7 @@ out:
 bool perf_evsel__fallback(struct perf_evsel *evsel, int err,
 			  char *msg, size_t msgsize)
 {
-	if ((err == ENOENT || err == ENXIO) &&
+	if ((err == ENOENT || err == ENXIO || err == ENODEV) &&
 	    evsel->attr.type   == PERF_TYPE_HARDWARE &&
 	    evsel->attr.config == PERF_COUNT_HW_CPU_CYCLES) {
 		/*
-- 
1.8.1.4


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

* [PATCH 03/11] perf bench: Fix memcpy benchmark for large sizes
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 01/11] perf script: Fix named threads support Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 02/11] perf evsel: Handle ENODEV on default cycles event Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 04/11] perf tools: Support callchain sorting based on addresses Arnaldo Carvalho de Melo
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Andi Kleen, Hitoshi Mitake, Kirill A. Shutemov,
	Arnaldo Carvalho de Melo

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

The glibc calloc() function has an optimization to not explicitely
memset() very large calloc allocations that just came from mmap(),
because they are known to be zero.

This could result in the perf memcpy benchmark reading only from
the zero page, which gives unrealistic results.

Always call memset explicitly on the source area to avoid this problem.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Hitoshi Mitake <h.mitake@gmail.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: http://lkml.kernel.org/n/tip-pzz2qrdq9eymxda0y8yxdn33@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/bench/mem-memcpy.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/bench/mem-memcpy.c b/tools/perf/bench/mem-memcpy.c
index 25fd3f1..8cdca43 100644
--- a/tools/perf/bench/mem-memcpy.c
+++ b/tools/perf/bench/mem-memcpy.c
@@ -117,6 +117,8 @@ static void alloc_mem(void **dst, void **src, size_t length)
 	*src = zalloc(length);
 	if (!*src)
 		die("memory allocation failed - maybe length is too large?\n");
+	/* Make sure to always replace the zero pages even if MMAP_THRESH is crossed */
+	memset(*src, 0, length);
 }
 
 static u64 do_memcpy_cycle(memcpy_t fn, size_t len, bool prefault)
-- 
1.8.1.4


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

* [PATCH 04/11] perf tools: Support callchain sorting based on addresses
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 03/11] perf bench: Fix memcpy benchmark for large sizes Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:33   ` Frederic Weisbecker
  2013-07-22 20:22 ` [PATCH 05/11] perf tools: Fix build with perl 5.18 Arnaldo Carvalho de Melo
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Andi Kleen, Frederic Weisbecker, Arnaldo Carvalho de Melo

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

With programs with very large functions it can be useful to distinguish
the callgraph nodes on more than just function names. So for example if
you have multiple calls to the same function, it ends up being separate
nodes in the chain.

This patch adds a new key field to the callgraph options, that allows
comparing nodes on functions (as today, default) and addresses.

Longer term it would be nice to also handle src lines, but that would
need more changes and address is a reasonable proxy for it today.

I right now reference the global params, as there was no simple way to
register a params pointer.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/n/tip-0uskktybf0e7wrnoi5e9b9it@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-report.txt |  8 ++++++--
 tools/perf/builtin-report.c              | 19 +++++++++++++++----
 tools/perf/util/callchain.c              |  7 +++++--
 tools/perf/util/callchain.h              |  6 ++++++
 tools/perf/util/hist.c                   |  3 ++-
 5 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 747ff50..2b8097e 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -115,7 +115,7 @@ OPTIONS
 --dump-raw-trace::
         Dump raw trace in ASCII.
 
--g [type,min[,limit],order]::
+-g [type,min[,limit],order[,key]]::
 --call-graph::
         Display call chains using type, min percent threshold, optional print
 	limit and order.
@@ -129,7 +129,11 @@ OPTIONS
 	- callee: callee based call graph.
 	- caller: inverted caller based call graph.
 
-	Default: fractal,0.5,callee.
+	key can be:
+	- function: compare on functions
+	- address: compare on individual code addresses
+
+	Default: fractal,0.5,callee,function.
 
 -G::
 --inverted::
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index a34c587..d785d89 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -667,12 +667,23 @@ parse_callchain_opt(const struct option *opt, const char *arg, int unset)
 	}
 
 	/* get the call chain order */
-	if (!strcmp(tok2, "caller"))
+	if (!strncmp(tok2, "caller", strlen("caller")))
 		callchain_param.order = ORDER_CALLER;
-	else if (!strcmp(tok2, "callee"))
+	else if (!strncmp(tok2, "callee", strlen("callee")))
 		callchain_param.order = ORDER_CALLEE;
 	else
 		return -1;
+
+	/* Get the sort key */
+	tok2 = strtok(NULL, ",");
+	if (!tok2)
+		goto setup;
+	if (!strncmp(tok2, "function", strlen("function")))
+		callchain_param.key = CCKEY_FUNCTION;
+	else if (!strncmp(tok2, "address", strlen("address")))
+		callchain_param.key = CCKEY_ADDRESS;
+	else
+		return -1;
 setup:
 	if (callchain_register_param(&callchain_param) < 0) {
 		fprintf(stderr, "Can't register callchain params\n");
@@ -784,8 +795,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
 	OPT_BOOLEAN('x', "exclude-other", &symbol_conf.exclude_other,
 		    "Only display entries with parent-match"),
 	OPT_CALLBACK_DEFAULT('g', "call-graph", &report, "output_type,min_percent[,print_limit],call_order",
-		     "Display callchains using output_type (graph, flat, fractal, or none) , min percent threshold, optional print limit and callchain order. "
-		     "Default: fractal,0.5,callee", &parse_callchain_opt, callchain_default_opt),
+		     "Display callchains using output_type (graph, flat, fractal, or none) , min percent threshold, optional print limit, callchain order, key (function or address). "
+		     "Default: fractal,0.5,callee,function", &parse_callchain_opt, callchain_default_opt),
 	OPT_BOOLEAN('G', "inverted", &report.inverted_callchain,
 		    "alias for inverted call graph"),
 	OPT_CALLBACK(0, "ignore-callees", NULL, "regex",
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 42b6a63..4fee33b 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -15,6 +15,7 @@
 #include <errno.h>
 #include <math.h>
 
+#include "hist.h"
 #include "util.h"
 #include "callchain.h"
 
@@ -327,7 +328,8 @@ append_chain(struct callchain_node *root,
 	/*
 	 * Lookup in the current node
 	 * If we have a symbol, then compare the start to match
-	 * anywhere inside a function.
+	 * anywhere inside a function, unless function
+	 * mode is disabled.
 	 */
 	list_for_each_entry(cnode, &root->val, list) {
 		struct callchain_cursor_node *node;
@@ -339,7 +341,8 @@ append_chain(struct callchain_node *root,
 
 		sym = node->sym;
 
-		if (cnode->ms.sym && sym) {
+		if (cnode->ms.sym && sym &&
+		    callchain_param.key == CCKEY_FUNCTION) {
 			if (cnode->ms.sym->start != sym->start)
 				break;
 		} else if (cnode->ip != node->ip)
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 3ee9f67..812d5a0 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -41,12 +41,18 @@ struct callchain_param;
 typedef void (*sort_chain_func_t)(struct rb_root *, struct callchain_root *,
 				 u64, struct callchain_param *);
 
+enum chain_key {
+	CCKEY_FUNCTION,
+	CCKEY_ADDRESS
+};
+
 struct callchain_param {
 	enum chain_mode 	mode;
 	u32			print_limit;
 	double			min_percent;
 	sort_chain_func_t	sort;
 	enum chain_order	order;
+	enum chain_key		key;
 };
 
 struct callchain_list {
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index a9dd1b9..46a0d35 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -24,7 +24,8 @@ enum hist_filter {
 struct callchain_param	callchain_param = {
 	.mode	= CHAIN_GRAPH_REL,
 	.min_percent = 0.5,
-	.order  = ORDER_CALLEE
+	.order  = ORDER_CALLEE,
+	.key	= CCKEY_FUNCTION
 };
 
 u16 hists__col_len(struct hists *hists, enum hist_column col)
-- 
1.8.1.4


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

* [PATCH 05/11] perf tools: Fix build with perl 5.18
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 04/11] perf tools: Support callchain sorting based on addresses Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 06/11] perf tests: Run ctags/cscope make tests only with needed binaries Arnaldo Carvalho de Melo
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Kirill A. Shutemov, Ingo Molnar, Paul Mackerras,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: "Kirill A. Shutemov" <kirill@shutemov.name>

perl.h from new Perl release doesn't like -Wundef and -Wswitch-default:

/usr/lib/perl5/core_perl/CORE/perl.h:548:5: error: "SILENT_NO_TAINT_SUPPORT" is not defined [-Werror=undef]
 #if SILENT_NO_TAINT_SUPPORT && !defined(NO_TAINT_SUPPORT)
     ^
/usr/lib/perl5/core_perl/CORE/perl.h:556:5: error: "NO_TAINT_SUPPORT" is not defined [-Werror=undef]
 #if NO_TAINT_SUPPORT
     ^
In file included from /usr/lib/perl5/core_perl/CORE/perl.h:3471:0,
                 from util/scripting-engines/trace-event-perl.c:30:
/usr/lib/perl5/core_perl/CORE/sv.h:1455:5: error: "NO_TAINT_SUPPORT" is not defined [-Werror=undef]
 #if NO_TAINT_SUPPORT
     ^
In file included from /usr/lib/perl5/core_perl/CORE/perl.h:3472:0,
                 from util/scripting-engines/trace-event-perl.c:30:
/usr/lib/perl5/core_perl/CORE/regexp.h:436:5: error: "NO_TAINT_SUPPORT" is not defined [-Werror=undef]
 #if NO_TAINT_SUPPORT
     ^
In file included from /usr/lib/perl5/core_perl/CORE/hv.h:592:0,
                 from /usr/lib/perl5/core_perl/CORE/perl.h:3480,
                 from util/scripting-engines/trace-event-perl.c:30:
/usr/lib/perl5/core_perl/CORE/hv_func.h: In function ‘S_perl_hash_siphash_2_4’:
/usr/lib/perl5/core_perl/CORE/hv_func.h:222:3: error: switch missing default case [-Werror=switch-default]
   switch( left )
   ^
/usr/lib/perl5/core_perl/CORE/hv_func.h: In function ‘S_perl_hash_superfast’:
/usr/lib/perl5/core_perl/CORE/hv_func.h:274:5: error: switch missing default case [-Werror=switch-default]
     switch (rem) { \
     ^
/usr/lib/perl5/core_perl/CORE/hv_func.h: In function ‘S_perl_hash_murmur3’:
/usr/lib/perl5/core_perl/CORE/hv_func.h:398:5: error: switch missing default case [-Werror=switch-default]
     switch(bytes_in_carry) { /* how many bytes in carry */
     ^

Let's disable the warnings for code which uses perl.h.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1372063394-20126-1-git-send-email-kirill@shutemov.name
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 2a69026..024680b 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -631,10 +631,10 @@ $(OUTPUT)util/parse-events.o: util/parse-events.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-redundant-decls $<
 
 $(OUTPUT)util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
+	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-undef -Wno-switch-default $<
 
 $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS
-	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
+	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs -Wno-undef -Wno-switch-default $<
 
 $(OUTPUT)util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
-- 
1.8.1.4


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

* [PATCH 06/11] perf tests: Run ctags/cscope make tests only with needed binaries
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 05/11] perf tools: Fix build with perl 5.18 Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 07/11] perf tests: Rename TMP to TMP_O tests/make variable Arnaldo Carvalho de Melo
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jiri Olsa, Borislav Petkov, Corey Ashford,
	David Ahern, Frederic Weisbecker, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@redhat.com>

Running tags and cscope make tests only if the 'ctags' and 'cscope'
binaries are installed, so we don't have false alarm test failures.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374497014-2817-2-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index c441a28..d1efef9 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -1,6 +1,8 @@
 PERF := .
 MK   := Makefile
 
+has = $(shell which $1 2>/dev/null)
+
 # standard single make variable specified
 make_clean_all      := clean all
 make_python_perf_so := python/perf.so
@@ -50,14 +52,19 @@ run += make_no_backtrace
 run += make_no_libnuma
 run += make_no_libaudit
 run += make_no_libbionic
-run += make_tags
-run += make_cscope
 run += make_help
 run += make_doc
 run += make_perf_o
 run += make_util_map_o
 run += make_minimal
 
+ifneq ($(call has,ctags),)
+run += make_tags
+endif
+ifneq ($(call has,cscope),)
+run += make_cscope
+endif
+
 # $(run_O) contains same portion of $(run) tests with '_O' attached
 # to distinguish O=... tests
 run_O := $(addsuffix _O,$(run))
-- 
1.8.1.4


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

* [PATCH 07/11] perf tests: Rename TMP to TMP_O tests/make variable
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (5 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 06/11] perf tests: Run ctags/cscope make tests only with needed binaries Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 08/11] perf tests: Add DESTDIR=TMP_DEST " Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jiri Olsa, Borislav Petkov, Corey Ashford,
	David Ahern, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@redhat.com>

Renaming TMP to TMP_O tests/make variable to make a name space for other
temp variables.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374497014-2817-3-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index d1efef9..dbbb62c 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -102,7 +102,7 @@ test_make_util_map_o_O := true
 test_default = test -x $(PERF)/perf
 test = $(if $(test_$1),$(test_$1),$(test_default))
 
-test_default_O = test -x $$TMP/perf
+test_default_O = test -x $$TMP_O/perf
 test_O = $(if $(test_$1),$(test_$1),$(test_default_O))
 
 all:
@@ -127,14 +127,14 @@ $(run):
 
 $(run_O):
 	$(call clean)
-	@TMP=$$(mktemp -d); \
-	cmd="cd $(PERF) && make -f $(MK) $($(patsubst %_O,%,$@)) O=$$TMP"; \
+	@TMP_O=$$(mktemp -d); \
+	cmd="cd $(PERF) && make -f $(MK) $($(patsubst %_O,%,$@)) O=$$TMP_O"; \
 	echo "- $@: $$cmd" && echo $$cmd > $@ && \
 	( eval $$cmd ) >> $@ 2>&1 && \
 	echo "  test: $(call test_O,$@)"; \
 	$(call test_O,$@) && \
 	rm -f $@ && \
-	rm -rf $$TMP
+	rm -rf $$TMP_O
 
 all: $(run) $(run_O)
 	@echo OK
-- 
1.8.1.4


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

* [PATCH 08/11] perf tests: Add DESTDIR=TMP_DEST tests/make variable
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (6 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 07/11] perf tests: Rename TMP to TMP_O tests/make variable Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 09/11] perf tests: Add 'make install/install-bin' tests into tests/make Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jiri Olsa, Borislav Petkov, Corey Ashford,
	David Ahern, Frederic Weisbecker, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@redhat.com>

Adding TMP_DEST tests/make variable to provide the DESTDIR directory for
installation tests.

Adding this to existing test targets, since DESTDIR variable 'should
not' affect other than install* targets. We can always separate this if
there's a need for DESTDIR-free build test.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374497014-2817-4-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index dbbb62c..7646a00 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -118,23 +118,27 @@ clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null)
 
 $(run):
 	$(call clean)
-	@cmd="cd $(PERF) && make -f $(MK) $($@)"; \
+	@TMP_DEST=$$(mktemp -d); \
+	cmd="cd $(PERF) && make -f $(MK) DESTDIR=$$TMP_DEST $($@)"; \
 	echo "- $@: $$cmd" && echo $$cmd > $@ && \
 	( eval $$cmd ) >> $@ 2>&1; \
 	echo "  test: $(call test,$@)"; \
 	$(call test,$@) && \
-	rm -f $@
+	rm -f $@ \
+	rm -rf $$TMP_DEST
 
 $(run_O):
 	$(call clean)
 	@TMP_O=$$(mktemp -d); \
-	cmd="cd $(PERF) && make -f $(MK) $($(patsubst %_O,%,$@)) O=$$TMP_O"; \
+	TMP_DEST=$$(mktemp -d); \
+	cmd="cd $(PERF) && make -f $(MK) O=$$TMP_O DESTDIR=$$TMP_DEST $($(patsubst %_O,%,$@))"; \
 	echo "- $@: $$cmd" && echo $$cmd > $@ && \
 	( eval $$cmd ) >> $@ 2>&1 && \
 	echo "  test: $(call test_O,$@)"; \
 	$(call test_O,$@) && \
 	rm -f $@ && \
-	rm -rf $$TMP_O
+	rm -rf $$TMP_O \
+	rm -rf $$TMP_DEST
 
 all: $(run) $(run_O)
 	@echo OK
-- 
1.8.1.4


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

* [PATCH 09/11] perf tests: Add 'make install/install-bin' tests into tests/make
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (7 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 08/11] perf tests: Add DESTDIR=TMP_DEST " Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 10/11] perf tests: Add broken install-* " Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jiri Olsa, Borislav Petkov, Corey Ashford,
	David Ahern, Frederic Weisbecker, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@redhat.com>

Adding 'make install' and 'make install-bin' tests into tests/make. It's
run as part of the suite, but could be run separately like:

  $ make -f tests/make make_install
  - make_install: cd . && make -f Makefile DESTDIR=/tmp/tmp.LpkYbk5pfs install
    test: test -x /tmp/tmp.LpkYbk5pfs/bin/perf
  $ make -f tests/make make_install_bin
  - make_install_bin: cd . && make -f Makefile DESTDIR=/tmp/tmp.dMxePBMcFT
    install-bin
    test: test -x /tmp/tmp.dMxePBMcFT/bin/perf

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374497014-2817-5-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index 7646a00..d3819f2 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -27,6 +27,8 @@ make_help           := help
 make_doc            := doc
 make_perf_o         := perf.o
 make_util_map_o     := util/map.o
+make_install        := install
+make_install_bin    := install-bin
 
 # all the NO_* variable combined
 make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
@@ -56,6 +58,8 @@ run += make_help
 run += make_doc
 run += make_perf_o
 run += make_util_map_o
+run += make_install
+run += make_install_bin
 run += make_minimal
 
 ifneq ($(call has,ctags),)
@@ -91,6 +95,11 @@ test_make_python_perf_so := test -f $(PERF)/python/perf.so
 test_make_perf_o     := test -f $(PERF)/perf.o
 test_make_util_map_o := test -f $(PERF)/util/map.o
 
+test_make_install       := test -x $$TMP_DEST/bin/perf
+test_make_install_O     := $(test_make_install)
+test_make_install_bin   := $(test_make_install)
+test_make_install_bin_O := $(test_make_install)
+
 # Kbuild tests only
 #test_make_python_perf_so_O := test -f $$TMP/tools/perf/python/perf.so
 #test_make_perf_o_O         := test -f $$TMP/tools/perf/perf.o
-- 
1.8.1.4


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

* [PATCH 10/11] perf tests: Add broken install-* tests into tests/make
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (8 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 09/11] perf tests: Add 'make install/install-bin' tests into tests/make Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-22 20:22 ` [PATCH 11/11] perf tools: Move weight back to common sort keys Arnaldo Carvalho de Melo
  2013-07-23  7:38 ` [GIT PULL 00/11] perf/core improvements and fixes Ingo Molnar
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jiri Olsa, Borislav Petkov, Corey Ashford,
	David Ahern, Frederic Weisbecker, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@redhat.com>

Adding install-* tests into tests/make. Those tests are
broken, so commenting them out right away.

* Nothing get installed for install-man, install_doc and
  install_html targets, they just rebuild the documentation.

* I've got following error for 'install-info':

  $ make -f tests/make make_install_info
  - make_install_info: cd . && make -f Makefile DESTDIR=/tmp/tmp.Xi4mb9J1a0 install-info

  $ tail -f make_install_info
  ...
  PERF_VERSION = 3.11.rc1.g9b3c2d
  make[2]: *** No rule to make target `user-manual.xml', needed by `user-manual.texi'.  Stop.
  make[1]: *** [install-info] Error 2

* I've got following error for 'install-pdf':

  $ make -f tests/make make_install_pdf
  - make_install_pdf: cd . && make -f Makefile DESTDIR=/tmp/tmp.fXseECBbt1 install-pdf

  $ tail -f make_install_pdf
  ...
  PERF_VERSION = 3.11.rc1.g9b3c2d
  make[2]: *** No rule to make target `user-manual.xml', needed by `user-manual.pdf'.  Stop.
  make[1]: *** [install-pdf] Error 2

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374497014-2817-6-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index d3819f2..2ca0abf 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -29,6 +29,11 @@ make_perf_o         := perf.o
 make_util_map_o     := util/map.o
 make_install        := install
 make_install_bin    := install-bin
+make_install_doc    := install-doc
+make_install_man    := install-man
+make_install_html   := install-html
+make_install_info   := install-info
+make_install_pdf    := install-pdf
 
 # all the NO_* variable combined
 make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
@@ -60,6 +65,12 @@ run += make_perf_o
 run += make_util_map_o
 run += make_install
 run += make_install_bin
+# FIXME 'install-*' commented out till they're fixed
+# run += make_install_doc
+# run += make_install_man
+# run += make_install_html
+# run += make_install_info
+# run += make_install_pdf
 run += make_minimal
 
 ifneq ($(call has,ctags),)
@@ -100,6 +111,26 @@ test_make_install_O     := $(test_make_install)
 test_make_install_bin   := $(test_make_install)
 test_make_install_bin_O := $(test_make_install)
 
+# FIXME nothing gets installed
+test_make_install_man    := test -f $$TMP_DEST/share/man/man1/perf.1
+test_make_install_man_O  := $(test_make_install_man)
+
+# FIXME nothing gets installed
+test_make_install_doc    := $(test_ok)
+test_make_install_doc_O  := $(test_ok)
+
+# FIXME nothing gets installed
+test_make_install_html   := $(test_ok)
+test_make_install_html_O := $(test_ok)
+
+# FIXME nothing gets installed
+test_make_install_info   := $(test_ok)
+test_make_install_info_O := $(test_ok)
+
+# FIXME nothing gets installed
+test_make_install_pdf    := $(test_ok)
+test_make_install_pdf_O  := $(test_ok)
+
 # Kbuild tests only
 #test_make_python_perf_so_O := test -f $$TMP/tools/perf/python/perf.so
 #test_make_perf_o_O         := test -f $$TMP/tools/perf/perf.o
-- 
1.8.1.4


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

* [PATCH 11/11] perf tools: Move weight back to common sort keys
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (9 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 10/11] perf tests: Add broken install-* " Arnaldo Carvalho de Melo
@ 2013-07-22 20:22 ` Arnaldo Carvalho de Melo
  2013-07-23  7:38 ` [GIT PULL 00/11] perf/core improvements and fixes Ingo Molnar
  11 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-07-22 20:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Andi Kleen, Jiri Olsa, Namhyung Kim,
	Arnaldo Carvalho de Melo

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

This is a partial revert of Namhyung's patch

 afab87b91f3f331d55664172dad8e476e6ffca9d
 perf sort: Separate out memory-specific sort keys

He wrote

 For global/local weights, I'm not entirely sure to place them into the
 memory dimension.  But it's the only user at this time.

Well TSX is another (in fact the original) user of the flags, and it
needs them to be common. So move local/global weight back to the common
sort keys.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Link: http://lkml.kernel.org/r/1374188333-17899-1-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/sort.c | 4 ++--
 tools/perf/util/sort.h | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index cb2b108..5f118a0 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -874,6 +874,8 @@ static struct sort_dimension common_sort_dimensions[] = {
 	DIM(SORT_PARENT, "parent", sort_parent),
 	DIM(SORT_CPU, "cpu", sort_cpu),
 	DIM(SORT_SRCLINE, "srcline", sort_srcline),
+	DIM(SORT_LOCAL_WEIGHT, "local_weight", sort_local_weight),
+	DIM(SORT_GLOBAL_WEIGHT, "weight", sort_global_weight),
 };
 
 #undef DIM
@@ -893,8 +895,6 @@ static struct sort_dimension bstack_sort_dimensions[] = {
 #define DIM(d, n, func) [d - __SORT_MEMORY_MODE] = { .name = n, .entry = &(func) }
 
 static struct sort_dimension memory_sort_dimensions[] = {
-	DIM(SORT_LOCAL_WEIGHT, "local_weight", sort_local_weight),
-	DIM(SORT_GLOBAL_WEIGHT, "weight", sort_global_weight),
 	DIM(SORT_MEM_DADDR_SYMBOL, "symbol_daddr", sort_mem_daddr_sym),
 	DIM(SORT_MEM_DADDR_DSO, "dso_daddr", sort_mem_daddr_dso),
 	DIM(SORT_MEM_LOCKED, "locked", sort_mem_locked),
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 586022d..4e80dbd 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -143,6 +143,8 @@ enum sort_type {
 	SORT_PARENT,
 	SORT_CPU,
 	SORT_SRCLINE,
+	SORT_LOCAL_WEIGHT,
+	SORT_GLOBAL_WEIGHT,
 
 	/* branch stack specific sort keys */
 	__SORT_BRANCH_STACK,
@@ -154,9 +156,7 @@ enum sort_type {
 
 	/* memory mode specific sort keys */
 	__SORT_MEMORY_MODE,
-	SORT_LOCAL_WEIGHT = __SORT_MEMORY_MODE,
-	SORT_GLOBAL_WEIGHT,
-	SORT_MEM_DADDR_SYMBOL,
+	SORT_MEM_DADDR_SYMBOL = __SORT_MEMORY_MODE,
 	SORT_MEM_DADDR_DSO,
 	SORT_MEM_LOCKED,
 	SORT_MEM_TLB,
-- 
1.8.1.4


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

* Re: [PATCH 04/11] perf tools: Support callchain sorting based on addresses
  2013-07-22 20:22 ` [PATCH 04/11] perf tools: Support callchain sorting based on addresses Arnaldo Carvalho de Melo
@ 2013-07-22 20:33   ` Frederic Weisbecker
  0 siblings, 0 replies; 14+ messages in thread
From: Frederic Weisbecker @ 2013-07-22 20:33 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Andi Kleen
  Cc: Ingo Molnar, linux-kernel, Arnaldo Carvalho de Melo

On Mon, Jul 22, 2013 at 05:22:32PM -0300, Arnaldo Carvalho de Melo wrote:
> From: Andi Kleen <ak@linux.intel.com>
> 
> With programs with very large functions it can be useful to distinguish
> the callgraph nodes on more than just function names. So for example if
> you have multiple calls to the same function, it ends up being separate
> nodes in the chain.
> 
> This patch adds a new key field to the callgraph options, that allows
> comparing nodes on functions (as today, default) and addresses.

Looks useful but you probably don't want the leaf node (inner most callee)
to be the precise ip/adress rather instead of the function. Otherwise you'll
have way too much branch per hist entry.

Also how do you display callchains in this mode? It seems that it uses
the usual function names. How do you dinstinguish the various branches
in this case?

It would be probably nice to display the nodes as func+offset in this mode?

> 
> Longer term it would be nice to also handle src lines, but that would
> need more changes and address is a reasonable proxy for it today.
> 
> I right now reference the global params, as there was no simple way to
> register a params pointer.
> 
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Link: http://lkml.kernel.org/n/tip-0uskktybf0e7wrnoi5e9b9it@git.kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
>  tools/perf/Documentation/perf-report.txt |  8 ++++++--
>  tools/perf/builtin-report.c              | 19 +++++++++++++++----
>  tools/perf/util/callchain.c              |  7 +++++--
>  tools/perf/util/callchain.h              |  6 ++++++
>  tools/perf/util/hist.c                   |  3 ++-
>  5 files changed, 34 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
> index 747ff50..2b8097e 100644
> --- a/tools/perf/Documentation/perf-report.txt
> +++ b/tools/perf/Documentation/perf-report.txt
> @@ -115,7 +115,7 @@ OPTIONS
>  --dump-raw-trace::
>          Dump raw trace in ASCII.
>  
> --g [type,min[,limit],order]::
> +-g [type,min[,limit],order[,key]]::
>  --call-graph::
>          Display call chains using type, min percent threshold, optional print
>  	limit and order.
> @@ -129,7 +129,11 @@ OPTIONS
>  	- callee: callee based call graph.
>  	- caller: inverted caller based call graph.
>  
> -	Default: fractal,0.5,callee.
> +	key can be:
> +	- function: compare on functions
> +	- address: compare on individual code addresses
> +
> +	Default: fractal,0.5,callee,function.
>  
>  -G::
>  --inverted::
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index a34c587..d785d89 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -667,12 +667,23 @@ parse_callchain_opt(const struct option *opt, const char *arg, int unset)
>  	}
>  
>  	/* get the call chain order */
> -	if (!strcmp(tok2, "caller"))
> +	if (!strncmp(tok2, "caller", strlen("caller")))
>  		callchain_param.order = ORDER_CALLER;
> -	else if (!strcmp(tok2, "callee"))
> +	else if (!strncmp(tok2, "callee", strlen("callee")))
>  		callchain_param.order = ORDER_CALLEE;
>  	else
>  		return -1;
> +
> +	/* Get the sort key */
> +	tok2 = strtok(NULL, ",");
> +	if (!tok2)
> +		goto setup;
> +	if (!strncmp(tok2, "function", strlen("function")))
> +		callchain_param.key = CCKEY_FUNCTION;
> +	else if (!strncmp(tok2, "address", strlen("address")))
> +		callchain_param.key = CCKEY_ADDRESS;
> +	else
> +		return -1;
>  setup:
>  	if (callchain_register_param(&callchain_param) < 0) {
>  		fprintf(stderr, "Can't register callchain params\n");
> @@ -784,8 +795,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
>  	OPT_BOOLEAN('x', "exclude-other", &symbol_conf.exclude_other,
>  		    "Only display entries with parent-match"),
>  	OPT_CALLBACK_DEFAULT('g', "call-graph", &report, "output_type,min_percent[,print_limit],call_order",
> -		     "Display callchains using output_type (graph, flat, fractal, or none) , min percent threshold, optional print limit and callchain order. "
> -		     "Default: fractal,0.5,callee", &parse_callchain_opt, callchain_default_opt),
> +		     "Display callchains using output_type (graph, flat, fractal, or none) , min percent threshold, optional print limit, callchain order, key (function or address). "
> +		     "Default: fractal,0.5,callee,function", &parse_callchain_opt, callchain_default_opt),
>  	OPT_BOOLEAN('G', "inverted", &report.inverted_callchain,
>  		    "alias for inverted call graph"),
>  	OPT_CALLBACK(0, "ignore-callees", NULL, "regex",
> diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
> index 42b6a63..4fee33b 100644
> --- a/tools/perf/util/callchain.c
> +++ b/tools/perf/util/callchain.c
> @@ -15,6 +15,7 @@
>  #include <errno.h>
>  #include <math.h>
>  
> +#include "hist.h"
>  #include "util.h"
>  #include "callchain.h"
>  
> @@ -327,7 +328,8 @@ append_chain(struct callchain_node *root,
>  	/*
>  	 * Lookup in the current node
>  	 * If we have a symbol, then compare the start to match
> -	 * anywhere inside a function.
> +	 * anywhere inside a function, unless function
> +	 * mode is disabled.
>  	 */
>  	list_for_each_entry(cnode, &root->val, list) {
>  		struct callchain_cursor_node *node;
> @@ -339,7 +341,8 @@ append_chain(struct callchain_node *root,
>  
>  		sym = node->sym;
>  
> -		if (cnode->ms.sym && sym) {
> +		if (cnode->ms.sym && sym &&
> +		    callchain_param.key == CCKEY_FUNCTION) {
>  			if (cnode->ms.sym->start != sym->start)
>  				break;
>  		} else if (cnode->ip != node->ip)
> diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
> index 3ee9f67..812d5a0 100644
> --- a/tools/perf/util/callchain.h
> +++ b/tools/perf/util/callchain.h
> @@ -41,12 +41,18 @@ struct callchain_param;
>  typedef void (*sort_chain_func_t)(struct rb_root *, struct callchain_root *,
>  				 u64, struct callchain_param *);
>  
> +enum chain_key {
> +	CCKEY_FUNCTION,
> +	CCKEY_ADDRESS
> +};
> +
>  struct callchain_param {
>  	enum chain_mode 	mode;
>  	u32			print_limit;
>  	double			min_percent;
>  	sort_chain_func_t	sort;
>  	enum chain_order	order;
> +	enum chain_key		key;
>  };
>  
>  struct callchain_list {
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index a9dd1b9..46a0d35 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -24,7 +24,8 @@ enum hist_filter {
>  struct callchain_param	callchain_param = {
>  	.mode	= CHAIN_GRAPH_REL,
>  	.min_percent = 0.5,
> -	.order  = ORDER_CALLEE
> +	.order  = ORDER_CALLEE,
> +	.key	= CCKEY_FUNCTION
>  };
>  
>  u16 hists__col_len(struct hists *hists, enum hist_column col)
> -- 
> 1.8.1.4
> 

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

* Re: [GIT PULL 00/11] perf/core improvements and fixes
  2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (10 preceding siblings ...)
  2013-07-22 20:22 ` [PATCH 11/11] perf tools: Move weight back to common sort keys Arnaldo Carvalho de Melo
@ 2013-07-23  7:38 ` Ingo Molnar
  11 siblings, 0 replies; 14+ messages in thread
From: Ingo Molnar @ 2013-07-23  7:38 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
	Borislav Petkov, Clark Williams, Corey Ashford, David Ahern,
	Feng Tang, Frederic Weisbecker, Hitoshi Mitake, Jiri Olsa,
	Kirill A. Shutemov, Kirill A. Shutemov, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra


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

> From: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> Hi Ingo,
> 
> 	Please consider pulling.
> 
> 	Tomorrow I'll try to process Jiri's group leader patches and David's 'kvm live'
> kits and continue looking for patches not processed during my vacations.
> 
> Thanks,
> 
> - Arnaldo
> 
> The following changes since commit 5a9821321e0a61674fd5c4b5a9e95007d0e7e052:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-07-19 09:35:30 +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 f9ea55d0ddf66ed030b2a478625cd5792d30df16:
> 
>   perf tools: Move weight back to common sort keys (2013-07-22 16:58:28 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes.
> 
> . Fix memcpy benchmark for large sizes, from Andi Kleen.
> 
> . Support callchain sorting based on addresses, from Andi Kleen
> 
> . Move weight back to common sort keys, From Andi Kleen.
> 
> . Fix named threads support in 'perf script', from David Ahern.
> 
> . Handle ENODEV on default cycles event, fix from David Ahern.
> 
> . More install tests, from Jiri Olsa.
> 
> . Fix build with perl 5.18, from Kirill A. Shutemov.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andi Kleen (3):
>       perf bench: Fix memcpy benchmark for large sizes
>       perf tools: Support callchain sorting based on addresses
>       perf tools: Move weight back to common sort keys
> 
> David Ahern (2):
>       perf script: Fix named threads support
>       perf evsel: Handle ENODEV on default cycles event
> 
> Jiri Olsa (5):
>       perf tests: Run ctags/cscope make tests only with needed binaries
>       perf tests: Rename TMP to TMP_O tests/make variable
>       perf tests: Add DESTDIR=TMP_DEST tests/make variable
>       perf tests: Add 'make install/install-bin' tests into tests/make
>       perf tests: Add broken install-* tests into tests/make
> 
> Kirill A. Shutemov (1):
>       perf tools: Fix build with perl 5.18
> 
>  tools/perf/Documentation/perf-report.txt           |  8 ++-
>  tools/perf/Makefile                                |  4 +-
>  tools/perf/bench/mem-memcpy.c                      |  2 +
>  tools/perf/builtin-report.c                        | 19 ++++--
>  tools/perf/builtin-script.c                        |  6 +-
>  tools/perf/tests/make                              | 67 +++++++++++++++++++---
>  tools/perf/util/callchain.c                        |  7 ++-
>  tools/perf/util/callchain.h                        |  6 ++
>  tools/perf/util/evsel.c                            |  2 +-
>  tools/perf/util/hist.c                             |  3 +-
>  .../perf/util/scripting-engines/trace-event-perl.c | 14 +++--
>  .../util/scripting-engines/trace-event-python.c    |  9 +--
>  tools/perf/util/sort.c                             |  4 +-
>  tools/perf/util/sort.h                             |  6 +-
>  tools/perf/util/trace-event-scripting.c            |  3 +-
>  tools/perf/util/trace-event.h                      |  4 +-
>  16 files changed, 124 insertions(+), 40 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

end of thread, other threads:[~2013-07-23  7:38 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-22 20:22 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 01/11] perf script: Fix named threads support Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 02/11] perf evsel: Handle ENODEV on default cycles event Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 03/11] perf bench: Fix memcpy benchmark for large sizes Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 04/11] perf tools: Support callchain sorting based on addresses Arnaldo Carvalho de Melo
2013-07-22 20:33   ` Frederic Weisbecker
2013-07-22 20:22 ` [PATCH 05/11] perf tools: Fix build with perl 5.18 Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 06/11] perf tests: Run ctags/cscope make tests only with needed binaries Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 07/11] perf tests: Rename TMP to TMP_O tests/make variable Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 08/11] perf tests: Add DESTDIR=TMP_DEST " Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 09/11] perf tests: Add 'make install/install-bin' tests into tests/make Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 10/11] perf tests: Add broken install-* " Arnaldo Carvalho de Melo
2013-07-22 20:22 ` [PATCH 11/11] perf tools: Move weight back to common sort keys Arnaldo Carvalho de Melo
2013-07-23  7:38 ` [GIT PULL 00/11] perf/core improvements and fixes Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.