From: Borislav Petkov <bp@amd64.org>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Borislav Petkov <borislav.petkov@amd.com>
Subject: [RFC PATCH -v2 2/4] perf: Add persistent events
Date: Thu, 16 Aug 2012 19:45:21 +0200 [thread overview]
Message-ID: <1345139123-15212-3-git-send-email-bp@amd64.org> (raw)
In-Reply-To: <1345139123-15212-1-git-send-email-bp@amd64.org>
From: Borislav Petkov <borislav.petkov@amd.com>
Add the needed pieces for persistent events which are process-agnostic.
Also, make their buffers read-only when mmaping them from userspace.
Add a descriptor struct collecting all that is needed for a persistent
event, for ease of handling in the code later.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
---
include/linux/perf_event.h | 17 ++++++++++++++++-
kernel/events/core.c | 5 ++++-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 7602ccb3f40e..252aab74e64d 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -254,8 +254,9 @@ struct perf_event_attr {
exclude_host : 1, /* don't count in host */
exclude_guest : 1, /* don't count in guest */
+ persistent : 1, /* always-on event */
- __reserved_1 : 43;
+ __reserved_1 : 42;
union {
__u32 wakeup_events; /* wakeup every n events */
@@ -1078,6 +1079,20 @@ struct perf_output_handle {
int page;
};
+/*
+ * perf event descriptor to collect all attributes belonging to an event
+ */
+struct perf_event_desc {
+ struct perf_event *event;
+ struct perf_event_attr *pattr;
+ const struct file_operations *fops;
+ /* debugfs entry */
+ struct dentry *dentry;
+ const char *dir_name;
+ const char *fname;
+ int fd;
+};
+
#ifdef CONFIG_PERF_EVENTS
extern int perf_pmu_register(struct pmu *pmu, char *name, int type);
diff --git a/kernel/events/core.c b/kernel/events/core.c
index b7935fcec7d9..95026f2b3d55 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -3589,7 +3589,10 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
if (event->cpu == -1 && event->attr.inherit)
return -EINVAL;
- if (!(vma->vm_flags & VM_SHARED))
+ if (!(vma->vm_flags & VM_SHARED) && !event->attr.persistent)
+ return -EINVAL;
+
+ if (event->attr.persistent && (vma->vm_flags & VM_WRITE))
return -EINVAL;
vma_size = vma->vm_end - vma->vm_start;
--
1.7.11.rc1
next prev parent reply other threads:[~2012-08-16 17:45 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-16 17:45 [RFC PATCH -v2 0/4] Persistent events Borislav Petkov
2012-08-16 17:45 ` [RFC PATCH -v2 1/4] trace events: Interface to add files to debugfs Borislav Petkov
2012-08-16 22:06 ` Steven Rostedt
2012-08-17 7:26 ` Borislav Petkov
2012-08-16 17:45 ` Borislav Petkov [this message]
2012-08-16 17:45 ` [RFC PATCH -v2 3/4] perf: Add persistent event facilities Borislav Petkov
2012-08-16 22:12 ` Steven Rostedt
2012-08-17 7:27 ` Borislav Petkov
2012-12-09 12:06 ` Borislav Petkov
2012-08-21 10:08 ` Peter Zijlstra
2012-08-21 10:21 ` Peter Zijlstra
2012-08-16 17:45 ` [RFC PATCH -v2 4/4] persistent test Borislav Petkov
2012-08-16 20:12 ` [RFC PATCH -v2 0/4] Persistent events Jonathan Corbet
2012-08-16 20:55 ` Borislav Petkov
2012-08-16 21:13 ` Steven Rostedt
2012-08-16 21:41 ` Borislav Petkov
2012-08-16 22:00 ` Steven Rostedt
2012-08-17 7:38 ` Borislav Petkov
2012-08-17 15:20 ` Steven Rostedt
2012-08-17 17:06 ` Peter Zijlstra
2012-08-21 10:30 ` Peter Zijlstra
2012-08-21 13:11 ` Borislav Petkov
2012-08-21 13:41 ` Steven Rostedt
2012-08-21 13:50 ` Borislav Petkov
2012-08-21 14:03 ` Steven Rostedt
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=1345139123-15212-3-git-send-email-bp@amd64.org \
--to=bp@amd64.org \
--cc=borislav.petkov@amd.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.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.