From: Andy Lutomirski <luto@amacapital.net>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Paul Mackerras <paulus@samba.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Ingo Molnar <mingo@redhat.com>, Kees Cook <keescook@chromium.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Erik Bosman <ebn310@few.vu.nl>,
Andy Lutomirski <luto@amacapital.net>
Subject: [RFC 4/5] perf: Add pmu callbacks to track event mapping and unmapping
Date: Tue, 14 Oct 2014 15:57:38 -0700 [thread overview]
Message-ID: <35c57984f52e88358d003fe716404f2b308d7bac.1413323612.git.luto@amacapital.net> (raw)
In-Reply-To: <cover.1413323611.git.luto@amacapital.net>
In-Reply-To: <cover.1413323611.git.luto@amacapital.net>
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
---
include/linux/perf_event.h | 7 +++++++
kernel/events/core.c | 9 +++++++++
2 files changed, 16 insertions(+)
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 707617a8c0f6..88069e319a3f 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -206,6 +206,13 @@ struct pmu {
*/
int (*event_init) (struct perf_event *event);
+ /*
+ * Notification that the event was mapped or unmapped. Called
+ * in the context of the mapping task.
+ */
+ void (*event_mapped) (struct perf_event *event); /*optional*/
+ void (*event_unmapped) (struct perf_event *event); /*optional*/
+
#define PERF_EF_START 0x01 /* start the counter when adding */
#define PERF_EF_RELOAD 0x02 /* reload the counter when starting */
#define PERF_EF_UPDATE 0x04 /* update the counter when stopping */
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 963bf139e2b2..dc73e9723748 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -4008,6 +4008,9 @@ static void perf_mmap_open(struct vm_area_struct *vma)
atomic_inc(&event->mmap_count);
atomic_inc(&event->rb->mmap_count);
+
+ if (event->pmu->event_mapped)
+ event->pmu->event_mapped(event);
}
/*
@@ -4027,6 +4030,9 @@ static void perf_mmap_close(struct vm_area_struct *vma)
int mmap_locked = rb->mmap_locked;
unsigned long size = perf_data_size(rb);
+ if (event->pmu->event_unmapped)
+ event->pmu->event_unmapped(event);
+
atomic_dec(&rb->mmap_count);
if (!atomic_dec_and_mutex_lock(&event->mmap_count, &event->mmap_mutex))
@@ -4228,6 +4234,9 @@ unlock:
vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP;
vma->vm_ops = &perf_mmap_vmops;
+ if (event->pmu->event_mapped)
+ event->pmu->event_mapped(event);
+
return ret;
}
--
1.9.3
next prev parent reply other threads:[~2014-10-14 22:58 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-14 22:57 [RFC 0/5] CR4 handling improvements Andy Lutomirski
2014-10-14 22:57 ` [RFC 1/5] x86: Clean up cr4 manipulation Andy Lutomirski
2014-10-16 8:16 ` Peter Zijlstra
2014-10-16 11:18 ` Borislav Petkov
2014-10-16 11:29 ` Borislav Petkov
2014-10-16 15:32 ` Andy Lutomirski
2014-10-16 15:47 ` Borislav Petkov
2014-10-14 22:57 ` [RFC 2/5] x86: Store a per-cpu shadow copy of CR4 Andy Lutomirski
2014-10-16 8:26 ` Peter Zijlstra
2014-10-16 11:49 ` Borislav Petkov
2014-10-16 15:30 ` Andy Lutomirski
2014-10-14 22:57 ` [RFC 3/5] x86: Add a comment clarifying LDT context switching Andy Lutomirski
2014-10-16 15:49 ` Borislav Petkov
2014-10-16 16:21 ` Andy Lutomirski
2014-10-21 5:41 ` Borislav Petkov
2014-10-21 5:44 ` Andy Lutomirski
2014-10-21 6:05 ` Borislav Petkov
2014-10-14 22:57 ` Andy Lutomirski [this message]
2014-10-14 22:57 ` [RFC 5/5] x86,perf: Only allow rdpmc if a perf_event is mapped Andy Lutomirski
2014-10-16 8:42 ` Peter Zijlstra
2014-10-16 15:37 ` Andy Lutomirski
2014-10-16 15:57 ` Borislav Petkov
2014-10-17 0:00 ` Andy Lutomirski
2014-10-19 20:23 ` Andy Lutomirski
2014-10-19 21:33 ` Peter Zijlstra
2014-10-19 22:05 ` Andy Lutomirski
2014-10-19 22:20 ` Peter Zijlstra
2014-10-19 22:57 ` Andy Lutomirski
2014-10-20 8:33 ` Peter Zijlstra
2014-10-20 16:49 ` Andy Lutomirski
2014-10-20 17:39 ` Andy Lutomirski
2014-10-21 8:59 ` Peter Zijlstra
2014-10-19 21:35 ` Peter Zijlstra
2014-10-20 0:08 ` Andy Lutomirski
2014-10-20 8:48 ` Peter Zijlstra
2014-10-20 9:24 ` Martin Schwidefsky
2014-10-20 10:51 ` Hendrik Brueckner
2014-10-21 9:14 ` Peter Zijlstra
2014-10-21 15:52 ` Andy Lutomirski
2014-10-21 4:06 ` [RFC 0/5] CR4 handling improvements Vince Weaver
2014-10-21 4:28 ` Andy Lutomirski
2014-10-21 15:00 ` Vince Weaver
2014-10-21 16:04 ` Peter Zijlstra
2014-10-21 17:05 ` Vince Weaver
2014-10-23 11:42 ` Peter Zijlstra
2014-10-24 12:41 ` Vince Weaver
2014-10-24 22:14 ` Andy Lutomirski
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=35c57984f52e88358d003fe716404f2b308d7bac.1413323612.git.luto@amacapital.net \
--to=luto@amacapital.net \
--cc=Valdis.Kletnieks@vt.edu \
--cc=aarcange@redhat.com \
--cc=acme@kernel.org \
--cc=ebn310@few.vu.nl \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).