Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1423295 > unrolled thread

[GIT PULL 00/19] perf/core improvements and fixes

Started byArnaldo Carvalho de Melo <acme@kernel.org>
First post2016-06-15 20:20 +0200
Last post2016-06-16 10:30 +0200
Articles 11 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 01/19] perf config: Handle NULL at perf_config_set__delete() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 09/19] perf tools: Fix Data Object sort entry width index Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 06/19] perf probe: Uncomment and export synthesize_perf_probe_point() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 02/19] perf tools: Fix rm_rf() to handle non-regular files correctly Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 13/19] perf stdio: Separate standard headers output Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 19/19] perf probe: Add --cache option to cache the probe definitions Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    [PATCH 07/19] perf unwind: Fix compile error for static cross build Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-15 20:20 +0200
    Re: [GIT PULL 00/19] perf/core improvements and fixes Jiri Olsa <jolsa@redhat.com> - 2016-06-16 08:30 +0200
      Re: [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-06-16 22:00 +0200
    Re: [GIT PULL 00/19] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2016-06-16 10:30 +0200

#1423295 — [GIT PULL 00/19] perf/core improvements and fixes

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[GIT PULL 00/19] perf/core improvements and fixes
Message-ID<rKnzX-5Zq-3@gated-at.bofh.it>
Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 2c95afc1e83d93fac3be6923465e1753c2c53b0a:

  perf/x86/intel, watchdog: Switch NMI watchdog to ref cycles on x86 (2016-06-14 11:16:59 +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-20160615

for you to fetch changes up to 2fd457a34525ea3bc609e377b46af759af8a7934:

  perf probe: Add --cache option to cache the probe definitions (2016-06-15 14:34:42 -0300)

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

User visible:

- Add --ldlat option to 'perf mem' to specify load latency for loads
  event (e.g. cpu/mem-loads/ ) (Jiri Olsa)

Build fixes:

- Fix libunwind related compile error for static cross build (He Kuang)

Infrastructure:

- UI refactorings to support headers with multiple lines, non-evsel
  hists browsers, toggle showing callchains, etc (Jiri Olsa)

- More prep work for caching probe definitions, paving the way
  for supporting SDT (Statically Defined Traces) userspace probes (Masami Hiramatsu)

- Handle NULL at perf_config_set__delete() (Taeung Song)

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

----------------------------------------------------------------
He Kuang (1):
      perf unwind: Fix compile error for static cross build

Jiri Olsa (10):
      perf mem: Add --ldlat option
      perf tools: Fix Data Object sort entry width index
      perf tui: Separate hierarchy and standard headers output
      perf stdio: Separate headers output
      perf stdio: Separate hierarchy headers output
      perf stdio: Separate standard headers output
      perf stdio: Do not pass hists in hist_entry__fprintf
      perf stdio: Add use_callchain parameter to hists__fprintf
      perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback
      perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback

Masami Hiramatsu (7):
      perf tools: Fix rm_rf() to handle non-regular files correctly
      perf probe: Fix to add NULL check for strndup
      perf buildid: Rename and export build_id_cache__cachedir()
      perf probe: Add perf_probe_event__copy()
      perf probe: Uncomment and export synthesize_perf_probe_point()
      perf probe: Introduce perf_cache interfaces
      perf probe: Add --cache option to cache the probe definitions

Taeung Song (1):
      perf config: Handle NULL at perf_config_set__delete()

 tools/perf/Documentation/perf-mem.txt   |   3 +
 tools/perf/Documentation/perf-probe.txt |   4 +
 tools/perf/builtin-diff.c               |   7 +-
 tools/perf/builtin-mem.c                |   1 +
 tools/perf/builtin-probe.c              |   1 +
 tools/perf/builtin-report.c             |   3 +-
 tools/perf/builtin-top.c                |   2 +-
 tools/perf/config/Makefile              |   3 +
 tools/perf/ui/browsers/hists.c          |  39 ++--
 tools/perf/ui/gtk/hists.c               |   2 +-
 tools/perf/ui/hist.c                    |  11 +-
 tools/perf/ui/stdio/hist.c              | 133 +++++++------
 tools/perf/util/build-id.c              |  12 +-
 tools/perf/util/build-id.h              |   2 +
 tools/perf/util/config.c                |   3 +
 tools/perf/util/hist.c                  |   2 +-
 tools/perf/util/hist.h                  |   7 +-
 tools/perf/util/mem-events.c            |  17 +-
 tools/perf/util/mem-events.h            |   1 +
 tools/perf/util/probe-event.c           | 128 ++++++++++--
 tools/perf/util/probe-event.h           |   5 +
 tools/perf/util/probe-file.c            | 331 ++++++++++++++++++++++++++++++++
 tools/perf/util/probe-file.h            |  20 ++
 tools/perf/util/sort.c                  |  14 +-
 tools/perf/util/util.c                  |  13 +-
 25 files changed, 640 insertions(+), 124 deletions(-)

[toc] | [next] | [standalone]


#1423296 — [PATCH 01/19] perf config: Handle NULL at perf_config_set__delete()

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 01/19] perf config: Handle NULL at perf_config_set__delete()
Message-ID<rKnzY-5Zq-37@gated-at.bofh.it>
In reply to#1423295
From: Taeung Song <treeze.taeung@gmail.com>

perf_config_set__delete() purge and free the config set that contains
all config key-value pairs.  But if the config set (i.e. 'set' variable
at the function) is NULL, this is wrong so handle it.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1465389413-8936-2-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/config.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index 8749eca3055f..31e09a4e8862 100644
--- a/tools/perf/util/config.c
+++ b/tools/perf/util/config.c
@@ -742,6 +742,9 @@ static void perf_config_set__purge(struct perf_config_set *set)
 
 void perf_config_set__delete(struct perf_config_set *set)
 {
+	if (set == NULL)
+		return;
+
 	perf_config_set__purge(set);
 	free(set);
 }
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423297 — [PATCH 09/19] perf tools: Fix Data Object sort entry width index

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 09/19] perf tools: Fix Data Object sort entry width index
Message-ID<rKnzY-5Zq-51@gated-at.bofh.it>
In reply to#1423295
From: Jiri Olsa <jolsa@kernel.org>

Putting correct HISTC_MEM_DADDR_DSO index to Data Object sort entry.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1465928361-2442-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/sort.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index c4e9bd70723c..ba5b42f28f0b 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1218,7 +1218,7 @@ struct sort_entry sort_mem_daddr_dso = {
 	.se_header	= "Data Object",
 	.se_cmp		= sort__dso_daddr_cmp,
 	.se_snprintf	= hist_entry__dso_daddr_snprintf,
-	.se_width_idx	= HISTC_MEM_DADDR_SYMBOL,
+	.se_width_idx	= HISTC_MEM_DADDR_DSO,
 };
 
 struct sort_entry sort_mem_locked = {
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423298 — [PATCH 06/19] perf probe: Uncomment and export synthesize_perf_probe_point()

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 06/19] perf probe: Uncomment and export synthesize_perf_probe_point()
Message-ID<rKnzY-5Zq-39@gated-at.bofh.it>
In reply to#1423295
From: Masami Hiramatsu <mhiramat@kernel.org>

Uncomment and export synthesize_perf_probe_point() which had once
introduced but has been disabled for a long time. This renews the code
and re-enable it.

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/20160608092949.3116.21958.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/probe-event.c | 39 ++++++++++++++++++++++-----------------
 tools/perf/util/probe-event.h |  1 +
 2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 84f4b2b32ab7..cbc8a8bf0f36 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -67,7 +67,6 @@ int e_snprintf(char *str, size_t size, const char *format, ...)
 	return ret;
 }
 
-static char *synthesize_perf_probe_point(struct perf_probe_point *pp);
 static struct machine *host_machine;
 
 /* Initialize symbol maps and path of vmlinux/modules */
@@ -1716,7 +1715,7 @@ out:
 }
 
 /* Compose only probe point (not argument) */
-static char *synthesize_perf_probe_point(struct perf_probe_point *pp)
+char *synthesize_perf_probe_point(struct perf_probe_point *pp)
 {
 	struct strbuf buf;
 	char *tmp, *ret = NULL;
@@ -1755,30 +1754,36 @@ out:
 	return ret;
 }
 
-#if 0
 char *synthesize_perf_probe_command(struct perf_probe_event *pev)
 {
-	char *buf;
-	int i, len, ret;
+	struct strbuf buf;
+	char *tmp, *ret = NULL;
+	int i;
 
-	buf = synthesize_perf_probe_point(&pev->point);
-	if (!buf)
+	if (strbuf_init(&buf, 64))
 		return NULL;
+	if (pev->event)
+		if (strbuf_addf(&buf, "%s:%s=", pev->group ?: PERFPROBE_GROUP,
+				pev->event) < 0)
+			goto out;
+
+	tmp = synthesize_perf_probe_point(&pev->point);
+	if (!tmp || strbuf_addstr(&buf, tmp) < 0)
+		goto out;
+	free(tmp);
 
-	len = strlen(buf);
 	for (i = 0; i < pev->nargs; i++) {
-		ret = e_snprintf(&buf[len], MAX_CMDLEN - len, " %s",
-				 pev->args[i].name);
-		if (ret <= 0) {
-			free(buf);
-			return NULL;
-		}
-		len += ret;
+		tmp = synthesize_perf_probe_arg(pev->args + i);
+		if (!tmp || strbuf_addf(&buf, " %s", tmp) < 0)
+			goto out;
+		free(tmp);
 	}
 
-	return buf;
+	ret = strbuf_detach(&buf, NULL);
+out:
+	strbuf_release(&buf);
+	return ret;
 }
-#endif
 
 static int __synthesize_probe_trace_arg_ref(struct probe_trace_arg_ref *ref,
 					    struct strbuf *buf, int depth)
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index 367f886cfe00..0b024ba789e3 100644
--- a/tools/perf/util/probe-event.h
+++ b/tools/perf/util/probe-event.h
@@ -121,6 +121,7 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev);
 char *synthesize_perf_probe_command(struct perf_probe_event *pev);
 char *synthesize_probe_trace_command(struct probe_trace_event *tev);
 char *synthesize_perf_probe_arg(struct perf_probe_arg *pa);
+char *synthesize_perf_probe_point(struct perf_probe_point *pp);
 
 int perf_probe_event__copy(struct perf_probe_event *dst,
 			   struct perf_probe_event *src);
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423300 — [PATCH 02/19] perf tools: Fix rm_rf() to handle non-regular files correctly

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 02/19] perf tools: Fix rm_rf() to handle non-regular files correctly
Message-ID<rKnzY-5Zq-45@gated-at.bofh.it>
In reply to#1423295
From: Masami Hiramatsu <mhiramat@kernel.org>

Fix rm_rf() to handle non-regular files correctly. This fix includes two
changes;

 - Fix to use lstat(3) instead of stat(3) since if the target
   file is a symbolic link, rm_rf() should unlink the symbolic
   link itself, not the file which pointed by the symlink.
 - Fix to unlink non-regular files (except for directory),
   including symlink.

Even though the first one fixes to stat symlink itself, without second
fix, it still failed because the symlink is not a regular file.

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/20160608092911.3116.90929.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/util.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index 23504ad5d6dd..e08b9a092a23 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -97,20 +97,17 @@ int rm_rf(char *path)
 		scnprintf(namebuf, sizeof(namebuf), "%s/%s",
 			  path, d->d_name);
 
-		ret = stat(namebuf, &statbuf);
+		/* We have to check symbolic link itself */
+		ret = lstat(namebuf, &statbuf);
 		if (ret < 0) {
 			pr_debug("stat failed: %s\n", namebuf);
 			break;
 		}
 
-		if (S_ISREG(statbuf.st_mode))
-			ret = unlink(namebuf);
-		else if (S_ISDIR(statbuf.st_mode))
+		if (S_ISDIR(statbuf.st_mode))
 			ret = rm_rf(namebuf);
-		else {
-			pr_debug("unknown file: %s\n", namebuf);
-			ret = -1;
-		}
+		else
+			ret = unlink(namebuf);
 	}
 	closedir(dir);
 
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423301 — [PATCH 13/19] perf stdio: Separate standard headers output

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 13/19] perf stdio: Separate standard headers output
Message-ID<rKnzY-5Zq-49@gated-at.bofh.it>
In reply to#1423295
From: Jiri Olsa <jolsa@kernel.org>

Introducing hists__fprintf_standard_headers function to separate
standard headers display code.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1465928361-2442-7-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/ui/stdio/hist.c | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 7498ce25bce3..5d007836d9a7 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -638,23 +638,16 @@ hists__fprintf_hierarchy_headers(struct hists *hists,
 	return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp);
 }
 
-static int hists__fprintf_headers(struct hists *hists, FILE *fp)
+static int
+hists__fprintf_standard_headers(struct hists *hists,
+				struct perf_hpp *hpp,
+				FILE *fp)
 {
 	struct perf_hpp_fmt *fmt;
 	unsigned int width;
 	const char *sep = symbol_conf.field_sep;
-	char bf[96];
-	struct perf_hpp dummy_hpp = {
-		.buf	= bf,
-		.size	= sizeof(bf),
-	};
 	bool first = true;
 
-	fprintf(fp, "# ");
-
-	if (symbol_conf.report_hierarchy)
-		return hists__fprintf_hierarchy_headers(hists, &dummy_hpp, fp);
-
 	hists__for_each_format(hists, fmt) {
 		if (perf_hpp__should_skip(fmt, hists))
 			continue;
@@ -664,8 +657,8 @@ static int hists__fprintf_headers(struct hists *hists, FILE *fp)
 		else
 			first = false;
 
-		fmt->header(fmt, &dummy_hpp, hists_to_evsel(hists));
-		fprintf(fp, "%s", bf);
+		fmt->header(fmt, hpp, hists_to_evsel(hists));
+		fprintf(fp, "%s", hpp->buf);
 	}
 
 	fprintf(fp, "\n");
@@ -688,7 +681,7 @@ static int hists__fprintf_headers(struct hists *hists, FILE *fp)
 		else
 			first = false;
 
-		width = fmt->width(fmt, &dummy_hpp, hists_to_evsel(hists));
+		width = fmt->width(fmt, hpp, hists_to_evsel(hists));
 		for (i = 0; i < width; i++)
 			fprintf(fp, ".");
 	}
@@ -698,6 +691,23 @@ static int hists__fprintf_headers(struct hists *hists, FILE *fp)
 	return 3;
 }
 
+static int hists__fprintf_headers(struct hists *hists, FILE *fp)
+{
+	char bf[96];
+	struct perf_hpp dummy_hpp = {
+		.buf	= bf,
+		.size	= sizeof(bf),
+	};
+
+	fprintf(fp, "# ");
+
+	if (symbol_conf.report_hierarchy)
+		return hists__fprintf_hierarchy_headers(hists, &dummy_hpp, fp);
+	else
+		return hists__fprintf_standard_headers(hists, &dummy_hpp, fp);
+
+}
+
 size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
 		      int max_cols, float min_pcnt, FILE *fp)
 {
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423302 — [PATCH 19/19] perf probe: Add --cache option to cache the probe definitions

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 19/19] perf probe: Add --cache option to cache the probe definitions
Message-ID<rKnzY-5Zq-53@gated-at.bofh.it>
In reply to#1423295
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>

Add --cache option to cache the probe definitions. This just saves the
result of the dwarf analysis to probe cache.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
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: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20160615032840.31330.44412.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-probe.txt | 4 ++++
 tools/perf/builtin-probe.c              | 1 +
 tools/perf/util/probe-event.c           | 9 +++++++++
 tools/perf/util/probe-event.h           | 1 +
 4 files changed, 15 insertions(+)

diff --git a/tools/perf/Documentation/perf-probe.txt b/tools/perf/Documentation/perf-probe.txt
index 3a8a9ba2b041..947db6fe512c 100644
--- a/tools/perf/Documentation/perf-probe.txt
+++ b/tools/perf/Documentation/perf-probe.txt
@@ -109,6 +109,10 @@ OPTIONS
 	Dry run. With this option, --add and --del doesn't execute actual
 	adding and removal operations.
 
+--cache::
+	Cache the probes (with --add option). Any events which successfully added
+	are also stored in the cache file.
+
 --max-probes=NUM::
 	Set the maximum number of probe points for an event. Default is 128.
 
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index 9af859b28b15..6d7ab4316449 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -512,6 +512,7 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
 		    "Enable symbol demangling"),
 	OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
 		    "Enable kernel symbol demangling"),
+	OPT_BOOLEAN(0, "cache", &probe_conf.cache, "Manipulate probe cache"),
 	OPT_END()
 	};
 	int ret;
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index cbc8a8bf0f36..084756c17309 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -2514,6 +2514,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 {
 	int i, fd, ret;
 	struct probe_trace_event *tev = NULL;
+	struct probe_cache *cache = NULL;
 	struct strlist *namelist;
 
 	fd = probe_file__open(PF_FL_RW | (pev->uprobes ? PF_FL_UPROBE : 0));
@@ -2555,6 +2556,14 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 	}
 	if (ret == -EINVAL && pev->uprobes)
 		warn_uprobe_event_compat(tev);
+	if (ret == 0 && probe_conf.cache) {
+		cache = probe_cache__new(pev->target);
+		if (!cache ||
+		    probe_cache__add_entry(cache, pev, tevs, ntevs) < 0 ||
+		    probe_cache__commit(cache) < 0)
+			pr_warning("Failed to add event to probe cache\n");
+		probe_cache__delete(cache);
+	}
 
 	strlist__delete(namelist);
 close_out:
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index 0b024ba789e3..432b690d3f17 100644
--- a/tools/perf/util/probe-event.h
+++ b/tools/perf/util/probe-event.h
@@ -12,6 +12,7 @@ struct probe_conf {
 	bool	show_location_range;
 	bool	force_add;
 	bool	no_inlines;
+	bool	cache;
 	int	max_probes;
 };
 extern struct probe_conf probe_conf;
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423303 — [PATCH 07/19] perf unwind: Fix compile error for static cross build

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-15 20:20 +0200
Subject[PATCH 07/19] perf unwind: Fix compile error for static cross build
Message-ID<rKnzY-5Zq-55@gated-at.bofh.it>
In reply to#1423295
From: He Kuang <hekuang@huawei.com>

Build failure for static cross-compiling on aarch64, with libunwind-x86
provided:

  $ file ./libunwind_for_x86_on_aarch64/lib/libunwind-x86.so.8.0.1

  libunwind-x86.so.8.0.1: ELF 64-bit LSB shared object, ARM aarch64,
  version 1 (SYSV), dynamically linked, not stripped

  $ make LDFLAGS=-static LIBUNWIND_DIR=./libunwind_for_x86_on_aarch64
  ARCH=aarch64 CROSS_COMPILE=aarch64-buildroot-linux-gnu-

  ~/libperf.a(libperf-in.o): In function `find_proc_info':
  :(.text+0xae4ac): undefined reference to `_Ux86_dwarf_search_unwind_table'
  ~/libperf.a(libperf-in.o): In function `_unwind__prepare_access':
  :(.text+0xaedd0): undefined reference to `_Ux86_create_addr_space'
  :(.text+0xaee24): undefined reference to `_Ux86_set_caching_policy'
  ~/libperf.a(libperf-in.o): In function `_unwind__flush_access':
  :(.text+0xaee98): undefined reference to `_Ux86_flush_cache'
  ~/libperf.a(libperf-in.o): In function `_unwind__finish_access':
  :(.text+0xaef08): undefined reference to `_Ux86_destroy_addr_space'
  ~/libperf.a(libperf-in.o): In function `get_entries':
  :(.text+0xaf148): undefined reference to `_Ux86_init_remote'
  :(.text+0xaf184): undefined reference to `_Ux86_get_reg'
  :(.text+0xaf1a4): undefined reference to `_Ux86_step'
  collect2: error: ld returned 1 exit status
  Makefile.perf:350: recipe for target '~/perf' failed
  make[1]: *** [~/perf] Error 1
  Makefile:68: recipe for target 'all' failed
  make: *** [all] Error 2

This is because the remote libunwind library detected is not appended to
EXTLIBS variable, which will be included between 'start-group' and
'end-group' when linking.

The existing variable LIBUNWIND_LIBS is assigned to libs for local
unwind, this patch introduces a new variable EXTLIBS_LIBUNWIND for
storing remote libunwind libraries instead.

Signed-off-by: He Kuang <hekuang@huawei.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1465988636-81502-1-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/config/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 098874b99981..80018feb99c0 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -365,6 +365,7 @@ ifndef NO_LIBUNWIND
     $(call detected,CONFIG_LIBUNWIND_X86)
     CFLAGS += -DHAVE_LIBUNWIND_X86_SUPPORT
     LDFLAGS += -lunwind-x86
+    EXTLIBS_LIBUNWIND += -lunwind-x86
     have_libunwind = 1
   endif
 
@@ -372,6 +373,7 @@ ifndef NO_LIBUNWIND
     $(call detected,CONFIG_LIBUNWIND_AARCH64)
     CFLAGS += -DHAVE_LIBUNWIND_AARCH64_SUPPORT
     LDFLAGS += -lunwind-aarch64
+    EXTLIBS_LIBUNWIND += -lunwind-aarch64
     have_libunwind = 1
     $(call feature_check,libunwind-debug-frame-aarch64)
     ifneq ($(feature-libunwind-debug-frame-aarch64), 1)
@@ -449,6 +451,7 @@ ifndef NO_LIBUNWIND
   CFLAGS  += -DHAVE_LIBUNWIND_SUPPORT
   CFLAGS  += $(LIBUNWIND_CFLAGS)
   LDFLAGS += $(LIBUNWIND_LDFLAGS)
+  EXTLIBS += $(EXTLIBS_LIBUNWIND)
 endif
 
 ifndef NO_LIBAUDIT
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1423701

FromJiri Olsa <jolsa@redhat.com>
Date2016-06-16 08:30 +0200
Message-ID<rKyYu-4LB-11@gated-at.bofh.it>
In reply to#1423295
On Wed, Jun 15, 2016 at 03:13:09PM -0300, Arnaldo Carvalho de Melo wrote:

SNIP

> ----------------------------------------------------------------
> He Kuang (1):
>       perf unwind: Fix compile error for static cross build
> 
> Jiri Olsa (10):
>       perf mem: Add --ldlat option
>       perf tools: Fix Data Object sort entry width index
>       perf tui: Separate hierarchy and standard headers output
>       perf stdio: Separate headers output
>       perf stdio: Separate hierarchy headers output
>       perf stdio: Separate standard headers output
>       perf stdio: Do not pass hists in hist_entry__fprintf
>       perf stdio: Add use_callchain parameter to hists__fprintf
>       perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback
>       perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback
hi,
any reason for skipping this one?:
  perf tools: Rename __hists__add_entry to hists__add_entry

thanks,
jirka

[toc] | [prev] | [next] | [standalone]


#1424363

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-06-16 22:00 +0200
Message-ID<rKLCh-437-5@gated-at.bofh.it>
In reply to#1423701
Em Thu, Jun 16, 2016 at 08:29:47AM +0200, Jiri Olsa escreveu:
> On Wed, Jun 15, 2016 at 03:13:09PM -0300, Arnaldo Carvalho de Melo wrote:
> 
> SNIP
> 
> > ----------------------------------------------------------------
> > He Kuang (1):
> >       perf unwind: Fix compile error for static cross build
> > 
> > Jiri Olsa (10):
> >       perf mem: Add --ldlat option
> >       perf tools: Fix Data Object sort entry width index
> >       perf tui: Separate hierarchy and standard headers output
> >       perf stdio: Separate headers output
> >       perf stdio: Separate hierarchy headers output
> >       perf stdio: Separate standard headers output
> >       perf stdio: Do not pass hists in hist_entry__fprintf
> >       perf stdio: Add use_callchain parameter to hists__fprintf
> >       perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback
> >       perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback
> hi,
> any reason for skipping this one?:
>   perf tools: Rename __hists__add_entry to hists__add_entry

nope, will apply.

- Arnaldo

[toc] | [prev] | [next] | [standalone]


#1423787

FromIngo Molnar <mingo@kernel.org>
Date2016-06-16 10:30 +0200
Message-ID<rKAQy-5Ue-15@gated-at.bofh.it>
In reply to#1423295
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 2c95afc1e83d93fac3be6923465e1753c2c53b0a:
> 
>   perf/x86/intel, watchdog: Switch NMI watchdog to ref cycles on x86 (2016-06-14 11:16:59 +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-20160615
> 
> for you to fetch changes up to 2fd457a34525ea3bc609e377b46af759af8a7934:
> 
>   perf probe: Add --cache option to cache the probe definitions (2016-06-15 14:34:42 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Add --ldlat option to 'perf mem' to specify load latency for loads
>   event (e.g. cpu/mem-loads/ ) (Jiri Olsa)
> 
> Build fixes:
> 
> - Fix libunwind related compile error for static cross build (He Kuang)
> 
> Infrastructure:
> 
> - UI refactorings to support headers with multiple lines, non-evsel
>   hists browsers, toggle showing callchains, etc (Jiri Olsa)
> 
> - More prep work for caching probe definitions, paving the way
>   for supporting SDT (Statically Defined Traces) userspace probes (Masami Hiramatsu)
> 
> - Handle NULL at perf_config_set__delete() (Taeung Song)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> He Kuang (1):
>       perf unwind: Fix compile error for static cross build
> 
> Jiri Olsa (10):
>       perf mem: Add --ldlat option
>       perf tools: Fix Data Object sort entry width index
>       perf tui: Separate hierarchy and standard headers output
>       perf stdio: Separate headers output
>       perf stdio: Separate hierarchy headers output
>       perf stdio: Separate standard headers output
>       perf stdio: Do not pass hists in hist_entry__fprintf
>       perf stdio: Add use_callchain parameter to hists__fprintf
>       perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback
>       perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback
> 
> Masami Hiramatsu (7):
>       perf tools: Fix rm_rf() to handle non-regular files correctly
>       perf probe: Fix to add NULL check for strndup
>       perf buildid: Rename and export build_id_cache__cachedir()
>       perf probe: Add perf_probe_event__copy()
>       perf probe: Uncomment and export synthesize_perf_probe_point()
>       perf probe: Introduce perf_cache interfaces
>       perf probe: Add --cache option to cache the probe definitions
> 
> Taeung Song (1):
>       perf config: Handle NULL at perf_config_set__delete()
> 
>  tools/perf/Documentation/perf-mem.txt   |   3 +
>  tools/perf/Documentation/perf-probe.txt |   4 +
>  tools/perf/builtin-diff.c               |   7 +-
>  tools/perf/builtin-mem.c                |   1 +
>  tools/perf/builtin-probe.c              |   1 +
>  tools/perf/builtin-report.c             |   3 +-
>  tools/perf/builtin-top.c                |   2 +-
>  tools/perf/config/Makefile              |   3 +
>  tools/perf/ui/browsers/hists.c          |  39 ++--
>  tools/perf/ui/gtk/hists.c               |   2 +-
>  tools/perf/ui/hist.c                    |  11 +-
>  tools/perf/ui/stdio/hist.c              | 133 +++++++------
>  tools/perf/util/build-id.c              |  12 +-
>  tools/perf/util/build-id.h              |   2 +
>  tools/perf/util/config.c                |   3 +
>  tools/perf/util/hist.c                  |   2 +-
>  tools/perf/util/hist.h                  |   7 +-
>  tools/perf/util/mem-events.c            |  17 +-
>  tools/perf/util/mem-events.h            |   1 +
>  tools/perf/util/probe-event.c           | 128 ++++++++++--
>  tools/perf/util/probe-event.h           |   5 +
>  tools/perf/util/probe-file.c            | 331 ++++++++++++++++++++++++++++++++
>  tools/perf/util/probe-file.h            |  20 ++
>  tools/perf/util/sort.c                  |  14 +-
>  tools/perf/util/util.c                  |  13 +-
>  25 files changed, 640 insertions(+), 124 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web