Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1354434 > unrolled thread
| Started by | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| First post | 2016-03-09 21:50 +0100 |
| Last post | 2016-03-11 09:40 +0100 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event Jiri Olsa <jolsa@kernel.org> - 2016-03-09 21:50 +0100
Re: [PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event Namhyung Kim <namhyung@kernel.org> - 2016-03-10 01:50 +0100
Re: [PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event Jiri Olsa <jolsa@redhat.com> - 2016-03-11 09:40 +0100
| From | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| Date | 2016-03-09 21:50 +0100 |
| Subject | [PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event |
| Message-ID | <raTdo-4Ll-5@gated-at.bofh.it> |
We suppress events with attr::exclude_kernel set when
the event is generated, so following capture will
give no warning but won't produce any data:
$ sudo perf record -e sched:sched_switch:u ls
$ sudo /perf script | wc -l
0
Checking the attr::exclude_(kernel|user) at the event
init time and failing right away for tracepoints from
uprobes/kprobes and native ones:
$ sudo perf record -e sched:sched_switch:u ls
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (sched:sched_switch).
/bin/dmesg may provide additional information.
No CONFIG_PERF_EVENTS=y kernel support configured?
$ sudo perf record -e probe:sys_read:u ls
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe:sys_read).
/bin/dmesg may provide additional information.
No CONFIG_PERF_EVENTS=y kernel support configured?
$ ./perf record -e probe_ex:main:k ./ex
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe_ex:main).
/bin/dmesg may provide additional information.
No CONFIG_PERF_EVENTS=y kernel support configured?
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
kernel/events/core.c | 5 -----
kernel/trace/trace_event_perf.c | 25 +++++++++++++++++++++++++
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index c15fd097af93..ca68fdcf47ce 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -6898,11 +6898,6 @@ static int perf_tp_event_match(struct perf_event *event,
{
if (event->hw.state & PERF_HES_STOPPED)
return 0;
- /*
- * All tracepoints are from kernel-space.
- */
- if (event->attr.exclude_kernel)
- return 0;
if (!perf_tp_filter_match(event, data))
return 0;
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
index a7171ec2c1ca..0a3779bd18a1 100644
--- a/kernel/trace/trace_event_perf.c
+++ b/kernel/trace/trace_event_perf.c
@@ -182,11 +182,36 @@ static void perf_trace_event_close(struct perf_event *p_event)
tp_event->class->reg(tp_event, TRACE_REG_PERF_CLOSE, p_event);
}
+static int perf_trace_event_attr(struct trace_event_call *tp_event,
+ struct perf_event *event)
+{
+ /*
+ * All tracepoints and kprobes are from kernel-space.
+ */
+ if (((tp_event->flags & TRACE_EVENT_FL_TRACEPOINT) ||
+ (tp_event->flags & TRACE_EVENT_FL_KPROBE)) &&
+ event->attr.exclude_kernel)
+ return -EINVAL;
+
+ /*
+ * All uprobes are from user-space.
+ */
+ if ((tp_event->flags & TRACE_EVENT_FL_UPROBE) &&
+ event->attr.exclude_user)
+ return -EINVAL;
+
+ return 0;
+}
+
static int perf_trace_event_init(struct trace_event_call *tp_event,
struct perf_event *p_event)
{
int ret;
+ ret = perf_trace_event_attr(tp_event, p_event);
+ if (ret)
+ return ret;
+
ret = perf_trace_event_perm(tp_event, p_event);
if (ret)
return ret;
--
2.4.3
[toc] | [next] | [standalone]
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2016-03-10 01:50 +0100 |
| Subject | Re: [PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event |
| Message-ID | <raWXF-7BC-21@gated-at.bofh.it> |
| In reply to | #1354434 |
On Wed, Mar 09, 2016 at 09:46:42PM +0100, Jiri Olsa wrote:
> We suppress events with attr::exclude_kernel set when
> the event is generated, so following capture will
> give no warning but won't produce any data:
>
> $ sudo perf record -e sched:sched_switch:u ls
> $ sudo /perf script | wc -l
> 0
>
> Checking the attr::exclude_(kernel|user) at the event
> init time and failing right away for tracepoints from
> uprobes/kprobes and native ones:
>
> $ sudo perf record -e sched:sched_switch:u ls
> Error:
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (sched:sched_switch).
> /bin/dmesg may provide additional information.
> No CONFIG_PERF_EVENTS=y kernel support configured?
>
> $ sudo perf record -e probe:sys_read:u ls
> Error:
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe:sys_read).
> /bin/dmesg may provide additional information.
> No CONFIG_PERF_EVENTS=y kernel support configured?
>
> $ ./perf record -e probe_ex:main:k ./ex
> Error:
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe_ex:main).
> /bin/dmesg may provide additional information.
> No CONFIG_PERF_EVENTS=y kernel support configured?
>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Maybe we need to improve the error message later.
Thanks,
Namhyung
> ---
> kernel/events/core.c | 5 -----
> kernel/trace/trace_event_perf.c | 25 +++++++++++++++++++++++++
> 2 files changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index c15fd097af93..ca68fdcf47ce 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -6898,11 +6898,6 @@ static int perf_tp_event_match(struct perf_event *event,
> {
> if (event->hw.state & PERF_HES_STOPPED)
> return 0;
> - /*
> - * All tracepoints are from kernel-space.
> - */
> - if (event->attr.exclude_kernel)
> - return 0;
>
> if (!perf_tp_filter_match(event, data))
> return 0;
> diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
> index a7171ec2c1ca..0a3779bd18a1 100644
> --- a/kernel/trace/trace_event_perf.c
> +++ b/kernel/trace/trace_event_perf.c
> @@ -182,11 +182,36 @@ static void perf_trace_event_close(struct perf_event *p_event)
> tp_event->class->reg(tp_event, TRACE_REG_PERF_CLOSE, p_event);
> }
>
> +static int perf_trace_event_attr(struct trace_event_call *tp_event,
> + struct perf_event *event)
> +{
> + /*
> + * All tracepoints and kprobes are from kernel-space.
> + */
> + if (((tp_event->flags & TRACE_EVENT_FL_TRACEPOINT) ||
> + (tp_event->flags & TRACE_EVENT_FL_KPROBE)) &&
> + event->attr.exclude_kernel)
> + return -EINVAL;
> +
> + /*
> + * All uprobes are from user-space.
> + */
> + if ((tp_event->flags & TRACE_EVENT_FL_UPROBE) &&
> + event->attr.exclude_user)
> + return -EINVAL;
> +
> + return 0;
> +}
> +
> static int perf_trace_event_init(struct trace_event_call *tp_event,
> struct perf_event *p_event)
> {
> int ret;
>
> + ret = perf_trace_event_attr(tp_event, p_event);
> + if (ret)
> + return ret;
> +
> ret = perf_trace_event_perm(tp_event, p_event);
> if (ret)
> return ret;
> --
> 2.4.3
>
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-03-11 09:40 +0100 |
| Subject | Re: [PATCH 2/5] ftrace perf: Move exclude_kernel tracepoint check to init event |
| Message-ID | <rbqM2-3qq-11@gated-at.bofh.it> |
| In reply to | #1354724 |
On Thu, Mar 10, 2016 at 09:39:55AM +0900, Namhyung Kim wrote: > On Wed, Mar 09, 2016 at 09:46:42PM +0100, Jiri Olsa wrote: > > We suppress events with attr::exclude_kernel set when > > the event is generated, so following capture will > > give no warning but won't produce any data: > > > > $ sudo perf record -e sched:sched_switch:u ls > > $ sudo /perf script | wc -l > > 0 > > > > Checking the attr::exclude_(kernel|user) at the event > > init time and failing right away for tracepoints from > > uprobes/kprobes and native ones: > > > > $ sudo perf record -e sched:sched_switch:u ls > > Error: > > The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (sched:sched_switch). > > /bin/dmesg may provide additional information. > > No CONFIG_PERF_EVENTS=y kernel support configured? > > > > $ sudo perf record -e probe:sys_read:u ls > > Error: > > The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe:sys_read). > > /bin/dmesg may provide additional information. > > No CONFIG_PERF_EVENTS=y kernel support configured? > > > > $ ./perf record -e probe_ex:main:k ./ex > > Error: > > The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (probe_ex:main). > > /bin/dmesg may provide additional information. > > No CONFIG_PERF_EVENTS=y kernel support configured? > > > > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > > Acked-by: Namhyung Kim <namhyung@kernel.org> > > Maybe we need to improve the error message later. yep, working on that ;-) thanks, jirka
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web