From: Jiri Olsa <jolsa@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Don Zickus <dzickus@redhat.com>,
Jiri Olsa <jolsa@kernel.org>
Subject: [PATCH 10/15] Revert "perf: Disable PERF_RECORD_MMAP2 support"
Date: Mon, 9 Jun 2014 22:02:25 +0200 [thread overview]
Message-ID: <1402344150-14860-11-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1402344150-14860-1-git-send-email-jolsa@kernel.org>
From: Don Zickus <dzickus@redhat.com>
This reverts commit 3090ffb5a2515990182f3f55b0688a7817325488.
Re-enable the mmap2 interface as we will have a user soon.
Since things have changed since perf disabled mmap2, small tweaks
to the revert had to be done:
o commit 9d4ecc88 forced (n!=8) to become (n<7)
o a new libunwind test needed updating to use mmap2 interface
Signed-off-by: Don Zickus <dzickus@redhat.com>
Link: http://lkml.kernel.org/r/1401461382-209586-1-git-send-email-dzickus@redhat.com
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
kernel/events/core.c | 4 ----
tools/perf/tests/dwarf-unwind.c | 2 +-
tools/perf/util/event.c | 34 ++++++++++++++++++++--------------
tools/perf/util/evsel.c | 1 +
4 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index eea1955..cd28335 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -6929,10 +6929,6 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
if (ret)
return -EFAULT;
- /* disabled for now */
- if (attr->mmap2)
- return -EINVAL;
-
if (attr->__reserved_1)
return -EINVAL;
diff --git a/tools/perf/tests/dwarf-unwind.c b/tools/perf/tests/dwarf-unwind.c
index 108f0cd..96adb73 100644
--- a/tools/perf/tests/dwarf-unwind.c
+++ b/tools/perf/tests/dwarf-unwind.c
@@ -15,7 +15,7 @@ static int mmap_handler(struct perf_tool *tool __maybe_unused,
struct perf_sample *sample __maybe_unused,
struct machine *machine)
{
- return machine__process_mmap_event(machine, event, NULL);
+ return machine__process_mmap2_event(machine, event, NULL);
}
static int init_live_machine(struct machine *machine)
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index ce43cba..d0281bd 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -179,13 +179,14 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
return -1;
}
- event->header.type = PERF_RECORD_MMAP;
+ event->header.type = PERF_RECORD_MMAP2;
while (1) {
char bf[BUFSIZ];
char prot[5];
char execname[PATH_MAX];
char anonstr[] = "//anon";
+ unsigned int ino;
size_t size;
ssize_t n;
@@ -196,15 +197,20 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
strcpy(execname, "");
/* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */
- n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %*x:%*x %*u %s\n",
- &event->mmap.start, &event->mmap.len, prot,
- &event->mmap.pgoff,
- execname);
+ n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %s\n",
+ &event->mmap2.start, &event->mmap2.len, prot,
+ &event->mmap2.pgoff, &event->mmap2.maj,
+ &event->mmap2.min,
+ &ino, execname);
+
/*
* Anon maps don't have the execname.
*/
- if (n < 4)
+ if (n < 7)
continue;
+
+ event->mmap2.ino = (u64)ino;
+
/*
* Just like the kernel, see __perf_event_mmap in kernel/perf_event.c
*/
@@ -239,15 +245,15 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
strcpy(execname, anonstr);
size = strlen(execname) + 1;
- memcpy(event->mmap.filename, execname, size);
+ memcpy(event->mmap2.filename, execname, size);
size = PERF_ALIGN(size, sizeof(u64));
- event->mmap.len -= event->mmap.start;
- event->mmap.header.size = (sizeof(event->mmap) -
- (sizeof(event->mmap.filename) - size));
- memset(event->mmap.filename + size, 0, machine->id_hdr_size);
- event->mmap.header.size += machine->id_hdr_size;
- event->mmap.pid = tgid;
- event->mmap.tid = pid;
+ event->mmap2.len -= event->mmap.start;
+ event->mmap2.header.size = (sizeof(event->mmap2) -
+ (sizeof(event->mmap2.filename) - size));
+ memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
+ event->mmap2.header.size += machine->id_hdr_size;
+ event->mmap2.pid = tgid;
+ event->mmap2.tid = pid;
if (process(tool, event, &synth_sample, machine) != 0) {
rc = -1;
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 5c28d82..21154da 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -659,6 +659,7 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts)
perf_evsel__set_sample_bit(evsel, WEIGHT);
attr->mmap = track;
+ attr->mmap2 = track && !perf_missing_features.mmap2;
attr->comm = track;
if (opts->sample_transaction)
--
1.8.3.1
next prev parent reply other threads:[~2014-06-09 20:03 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-09 20:02 [GIT PULL 00/15] perf/core improvements and fixes Jiri Olsa
2014-06-09 20:02 ` [PATCH 01/15] tools lib traceevent: Add flag to not load event plugins Jiri Olsa
2014-06-09 20:02 ` [PATCH 02/15] tools lib traceevent: Add options to plugins Jiri Olsa
2014-06-09 20:02 ` [PATCH 03/15] tools lib traceevent: Add options to function plugin Jiri Olsa
2014-06-09 20:02 ` [PATCH 04/15] tools lib traceevent: Added support for __get_bitmask() macro Jiri Olsa
2014-06-09 20:02 ` [PATCH 05/15] perf tools: Fix pipe check regression in attr event callback Jiri Olsa
2014-06-09 20:02 ` [PATCH 06/15] perf tools: Prettify the tags/TAGS/cscope targets output Jiri Olsa
2014-06-09 20:02 ` [PATCH 07/15] perf script/python: Print array argument as string Jiri Olsa
2014-06-09 20:02 ` [PATCH 08/15] perf: Pass protection and flags bits through mmap2 interface Jiri Olsa
2014-06-09 20:02 ` [PATCH 09/15] perf tools: Update mmap2 interface with protection and flag bits Jiri Olsa
2014-06-09 20:02 ` Jiri Olsa [this message]
2014-06-09 20:02 ` [PATCH 11/15] perf report: Add mem-mode documentation to report command Jiri Olsa
2014-06-09 20:02 ` [PATCH 12/15] perf tools: Add cpumode to struct hist_entry Jiri Olsa
2014-06-09 20:02 ` [PATCH 13/15] perf tools: Add support to dynamically get cacheline size Jiri Olsa
2014-06-09 20:02 ` [PATCH 14/15] perf tools: Add dcacheline sort Jiri Olsa
2014-06-09 20:02 ` [PATCH 15/15] perf tools: Support spark lines in perf stat Jiri Olsa
2014-06-10 5:04 ` Ingo Molnar
2014-06-10 7:37 ` Peter Zijlstra
2014-06-12 11:54 ` [GIT PULL 00/15] perf/core improvements and fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1402344150-14860-11-git-send-email-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=dzickus@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.