Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1496015 > unrolled thread
| Started by | Andi Kleen <andi@firstfloor.org> |
|---|---|
| First post | 2016-10-05 21:50 +0200 |
| Last post | 2016-10-08 06:20 +0200 |
| Articles | 7 — 4 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 1/3] perf, tools: Handle events including .c and .o Andi Kleen <andi@firstfloor.org> - 2016-10-05 21:50 +0200
Re: [PATCH 1/3] perf, tools: Handle events including .c and .o Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-06 00:50 +0200
Re: [PATCH 1/3] perf, tools: Handle events including .c and .o Andi Kleen <andi@firstfloor.org> - 2016-10-06 19:00 +0200
Re: [PATCH 1/3] perf, tools: Handle events including .c and .o Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-06 22:20 +0200
Re: [PATCH 1/3] perf, tools: Handle events including .c and .o Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-10-06 22:20 +0200
Re: [PATCH 1/3] perf, tools: Handle events including .c and .o "Wangnan (F)" <wangnan0@huawei.com> - 2016-10-08 06:10 +0200
[PATCH] perf, tools: Handle events including .c and .o Wang Nan <wangnan0@huawei.com> - 2016-10-08 06:20 +0200
| From | Andi Kleen <andi@firstfloor.org> |
|---|---|
| Date | 2016-10-05 21:50 +0200 |
| Subject | [PATCH 1/3] perf, tools: Handle events including .c and .o |
| Message-ID | <sp0mu-6bE-3@gated-at.bofh.it> |
From: Andi Kleen <ak@linux.intel.com>
This is a generic bug fix, but it helps with Sukadev's JSON event tree
where such events can happen.
Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading
and then an error. This can happen for some Intel JSON events, which cannot
be used.
Fix the scanner to only match for .o or .c or .bpf at the end.
This will prevent loading multiple BPF scripts separated with comma,
but I assume this is acceptable.
Cc: wangnan0@huawei.com
Cc: sukadev@linux.vnet.ibm.com
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/util/parse-events.l | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 9f43fda2570f..377147088a46 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -183,8 +183,8 @@ modifier_bp [rwx]{1,3}
}
{event_pmu} |
-{bpf_object} |
-{bpf_source} |
+({bpf_object}$) |
+({bpf_source}$) |
{event} {
BEGIN(INITIAL);
REWIND(1);
--
2.5.5
[toc] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2016-10-06 00:50 +0200 |
| Message-ID | <sp3aF-8kc-3@gated-at.bofh.it> |
| In reply to | #1496015 |
Em Wed, Oct 05, 2016 at 12:47:10PM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@linux.intel.com>
>
> This is a generic bug fix, but it helps with Sukadev's JSON event tree
> where such events can happen.
>
> Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading
> and then an error. This can happen for some Intel JSON events, which cannot
> be used.
>
> Fix the scanner to only match for .o or .c or .bpf at the end.
> This will prevent loading multiple BPF scripts separated with comma,
> but I assume this is acceptable.
Wang, may I have your Acked-by, please?
- Arnaldo
> Cc: wangnan0@huawei.com
> Cc: sukadev@linux.vnet.ibm.com
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> ---
> tools/perf/util/parse-events.l | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
> index 9f43fda2570f..377147088a46 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -183,8 +183,8 @@ modifier_bp [rwx]{1,3}
> }
>
> {event_pmu} |
> -{bpf_object} |
> -{bpf_source} |
> +({bpf_object}$) |
> +({bpf_source}$) |
> {event} {
> BEGIN(INITIAL);
> REWIND(1);
> --
> 2.5.5
[toc] | [prev] | [next] | [standalone]
| From | Andi Kleen <andi@firstfloor.org> |
|---|---|
| Date | 2016-10-06 19:00 +0200 |
| Message-ID | <spkbx-35y-97@gated-at.bofh.it> |
| In reply to | #1496108 |
On Wed, Oct 05, 2016 at 07:47:06PM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, Oct 05, 2016 at 12:47:10PM -0700, Andi Kleen escreveu: > > From: Andi Kleen <ak@linux.intel.com> > > > > This is a generic bug fix, but it helps with Sukadev's JSON event tree > > where such events can happen. > > > > Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading > > and then an error. This can happen for some Intel JSON events, which cannot > > be used. > > > > Fix the scanner to only match for .o or .c or .bpf at the end. > > This will prevent loading multiple BPF scripts separated with comma, > > but I assume this is acceptable. > > Wang, may I have your Acked-by, please? He acked it earlier here https://patchwork.kernel.org/patch/9337721/ Tested-by: Wang Nan <wangnan0@huawei.com> -Andi
[toc] | [prev] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2016-10-06 22:20 +0200 |
| Message-ID | <spnj3-5PE-13@gated-at.bofh.it> |
| In reply to | #1496769 |
Em Thu, Oct 06, 2016 at 09:55:05AM -0700, Andi Kleen escreveu: > On Wed, Oct 05, 2016 at 07:47:06PM -0300, Arnaldo Carvalho de Melo wrote: > > Em Wed, Oct 05, 2016 at 12:47:10PM -0700, Andi Kleen escreveu: > > > From: Andi Kleen <ak@linux.intel.com> > > > > > > This is a generic bug fix, but it helps with Sukadev's JSON event tree > > > where such events can happen. > > > > > > Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading > > > and then an error. This can happen for some Intel JSON events, which cannot > > > be used. > > > > > > Fix the scanner to only match for .o or .c or .bpf at the end. > > > This will prevent loading multiple BPF scripts separated with comma, > > > but I assume this is acceptable. > > > > Wang, may I have your Acked-by, please? > > He acked it earlier here > > https://patchwork.kernel.org/patch/9337721/ > > Tested-by: Wang Nan <wangnan0@huawei.com> Ok, will add the example where it breaks in the commit message, Thanks, - Arnaldo
[toc] | [prev] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2016-10-06 22:20 +0200 |
| Message-ID | <spnj3-5PE-15@gated-at.bofh.it> |
| In reply to | #1496015 |
Em Wed, Oct 05, 2016 at 12:47:10PM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@linux.intel.com>
>
> This is a generic bug fix, but it helps with Sukadev's JSON event tree
> where such events can happen.
>
> Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading
> and then an error. This can happen for some Intel JSON events, which cannot
> be used.
>
> Fix the scanner to only match for .o or .c or .bpf at the end.
> This will prevent loading multiple BPF scripts separated with comma,
> but I assume this is acceptable.
So, I tried it with the example provided in the thread for a previous
version of this patch (IIRC) and it still fails:
[acme@jouet linux]$ perf stat -e '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' -a -I 1000
ERROR: problems with path {unc_p_clockticks,unc_p_power_state_occupancy.c: No such file or directory
event syntax error: '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}'
\___ Failed to load {unc_p_clockticks,unc_p_power_state_occupancy.c from source: Error when compiling BPF scriptlet
(add -v to see detail)
Run 'perf list' for a list of valid events
Usage: perf stat [<options>] [<command>]
-e, --event <event> event selector. use 'perf list' to list available events
[acme@jouet linux]$
And with another event that for sure is available on this machine:
[acme@jouet linux]$ perf stat -e '{uops_executed.core_cycles_ge_2}' -I 1000 usleep 10
ERROR: problems with path {uops_executed.c: No such file or directory
event syntax error: '{uops_executed.core_cycles_ge_2}'
\___ Failed to load {uops_executed.c from source: Error when compiling BPF scriptlet
(add -v to see detail)
Run 'perf list' for a list of valid events
Usage: perf stat [<options>] [<command>]
-e, --event <event> event selector. use 'perf list' to list available events
[acme@jouet linux]$
I thought this was due to the Makefile not noticing the change in the .l files, but I made
sure I deleted the build dir and rebuilt from scratch, same problem.
- Arnaldo
> Cc: wangnan0@huawei.com
> Cc: sukadev@linux.vnet.ibm.com
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> ---
> tools/perf/util/parse-events.l | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
> index 9f43fda2570f..377147088a46 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -183,8 +183,8 @@ modifier_bp [rwx]{1,3}
> }
>
> {event_pmu} |
> -{bpf_object} |
> -{bpf_source} |
> +({bpf_object}$) |
> +({bpf_source}$) |
> {event} {
> BEGIN(INITIAL);
> REWIND(1);
> --
> 2.5.5
[toc] | [prev] | [next] | [standalone]
| From | "Wangnan (F)" <wangnan0@huawei.com> |
|---|---|
| Date | 2016-10-08 06:10 +0200 |
| Message-ID | <spR7r-22y-3@gated-at.bofh.it> |
| In reply to | #1496846 |
On 2016/10/7 4:18, Arnaldo Carvalho de Melo wrote:
> Em Wed, Oct 05, 2016 at 12:47:10PM -0700, Andi Kleen escreveu:
>> From: Andi Kleen <ak@linux.intel.com>
>>
>> This is a generic bug fix, but it helps with Sukadev's JSON event tree
>> where such events can happen.
>>
>> Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading
>> and then an error. This can happen for some Intel JSON events, which cannot
>> be used.
>>
>> Fix the scanner to only match for .o or .c or .bpf at the end.
>> This will prevent loading multiple BPF scripts separated with comma,
>> but I assume this is acceptable.
> So, I tried it with the example provided in the thread for a previous
> version of this patch (IIRC) and it still fails:
>
>
> [acme@jouet linux]$ perf stat -e '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' -a -I 1000
> ERROR: problems with path {unc_p_clockticks,unc_p_power_state_occupancy.c: No such file or directory
> event syntax error: '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}'
> \___ Failed to load {unc_p_clockticks,unc_p_power_state_occupancy.c from source: Error when compiling BPF scriptlet
>
> (add -v to see detail)
> Run 'perf list' for a list of valid events
>
> Usage: perf stat [<options>] [<command>]
>
> -e, --event <event> event selector. use 'perf list' to list available events
> [acme@jouet linux]$
>
> And with another event that for sure is available on this machine:
>
>
>
> [acme@jouet linux]$ perf stat -e '{uops_executed.core_cycles_ge_2}' -I 1000 usleep 10
> ERROR: problems with path {uops_executed.c: No such file or directory
> event syntax error: '{uops_executed.core_cycles_ge_2}'
> \___ Failed to load {uops_executed.c from source: Error when compiling BPF scriptlet
>
> (add -v to see detail)
> Run 'perf list' for a list of valid events
>
> Usage: perf stat [<options>] [<command>]
>
> -e, --event <event> event selector. use 'perf list' to list available events
> [acme@jouet linux]$
>
>
> I thought this was due to the Makefile not noticing the change in the .l files, but I made
> sure I deleted the build dir and rebuilt from scratch, same problem.
>
> - Arnaldo
>
Tested again, and thank you for giving us another chance for fixing this :)
The key problem here is not the ending '$' but the leading '{'. Flex's
greedy maching policy makes this problem.
According to the design of parse-events.l, when it see something like
'...{...}...', it first matches a 'group' in '<event>' scope, then rewind
to INITIAL scope to match events in the group. In INITIAL scope, when
it see a '{', flex consume this char and goes back to '<event>' scope
to match next event. It works well before match BPF file path using
unlimited '.*\.c' because '.*' will match the leading '{' in INITIAL
scope without consuming it.
The simplest method for this problem is fixing the '.*' part: like
what we define for 'event', don't match ',', '{' and '}'. Doesn't
like 'event', '/' is required because this is a path.
Will post a patch for it. Please test it again.
Thank you.
[toc] | [prev] | [next] | [standalone]
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2016-10-08 06:20 +0200 |
| Subject | [PATCH] perf, tools: Handle events including .c and .o |
| Message-ID | <spRh7-28C-5@gated-at.bofh.it> |
| In reply to | #1496846 |
This patch helps with Sukadev's JSON event tree where such events can happen.
From Andi Kleen:
Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading
and then an error. This can happen for some Intel JSON events, which cannot
be used.
This patch fixes this problem by forbidding BPF file patch containing '{', '}'
and ',', make sure flex consumes the leading '{', instead of matcing it using
a BPF file path.
Tested result:
$ perf stat -e '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' -a -I 1000
invalid or unsupported event: '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}'
Run 'perf list' for a list of valid events
(as expected, interperted as event)
$ perf stat -e 'aaa.c' -a -I 1000
ERROR: problems with path aaa.c: No such file or directory
(as expected, interperted as BPF source)
$ perf stat -e 'aaa.ccc' -a -I 1000
invalid or unsupported event: 'aaa.ccc'
(as expected, interperted as event)
$ perf stat -e '{aaa.c}' -a -I 1000
ERROR: problems with path aaa.c: No such file or directory
event syntax error: '{aaa.c}'
<SKIP>
(as expected, interperted as BPF source)
$ perf stat -e '{cycles,aaa.c}' -a -I 1000
ERROR: problems with path aaa.c: No such file or directory
event syntax error: '{cycles,aaa.c}'
(as expected, interperted as BPF source)
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/util/parse-events.l | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 9f43fda..660fca0 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -136,8 +136,8 @@ do { \
group [^,{}/]*[{][^}]*[}][^,{}/]*
event_pmu [^,{}/]+[/][^/]*[/][^,{}/]*
event [^,{}/]+
-bpf_object .*\.(o|bpf)
-bpf_source .*\.c
+bpf_object [^,{}]+\.(o|bpf)
+bpf_source [^,{}]+\.c
num_dec [0-9]+
num_hex 0x[a-fA-F0-9]+
--
1.8.3.4
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web