linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] perf, tools: Handle events including .c and .o
@ 2016-09-18  1:02 Andi Kleen
  2016-09-18  9:03 ` Jiri Olsa
  2016-09-18 10:20 ` Wangnan (F)
  0 siblings, 2 replies; 7+ messages in thread
From: Andi Kleen @ 2016-09-18  1:02 UTC (permalink / raw)
  To: acme; +Cc: jolsa, linux-kernel, Andi Kleen, wangnan0, sukadev

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 7a2519435da0..64ca26e4ed2d 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -162,8 +162,8 @@ modifier_bp	[rwx]{1,3}
 		}
 
 {event_pmu}	|
-{bpf_object}	|
-{bpf_source}	|
+({bpf_object}$)	|
+({bpf_source}$)	|
 {event}		{
 			BEGIN(INITIAL);
 			REWIND(1);
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] perf, tools: Handle events including .c and .o
  2016-09-18  1:02 [PATCH] perf, tools: Handle events including .c and .o Andi Kleen
@ 2016-09-18  9:03 ` Jiri Olsa
  2016-09-18 14:52   ` Andi Kleen
  2016-09-18 10:20 ` Wangnan (F)
  1 sibling, 1 reply; 7+ messages in thread
From: Jiri Olsa @ 2016-09-18  9:03 UTC (permalink / raw)
  To: Andi Kleen; +Cc: acme, jolsa, linux-kernel, Andi Kleen, wangnan0, sukadev

On Sat, Sep 17, 2016 at 06:02:46PM -0700, Andi Kleen wrote:
> 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 7a2519435da0..64ca26e4ed2d 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -162,8 +162,8 @@ modifier_bp	[rwx]{1,3}
>  		}
>  
>  {event_pmu}	|
> -{bpf_object}	|
> -{bpf_source}	|
> +({bpf_object}$)	|
> +({bpf_source}$)	|

why are the () braces necessary? anyway:

Acked-by: Jiri Olsa <jolsa@kernel.org>

thanks,
jirka

>  {event}		{
>  			BEGIN(INITIAL);
>  			REWIND(1);
> -- 
> 2.5.5
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] perf, tools: Handle events including .c and .o
  2016-09-18  1:02 [PATCH] perf, tools: Handle events including .c and .o Andi Kleen
  2016-09-18  9:03 ` Jiri Olsa
@ 2016-09-18 10:20 ` Wangnan (F)
  2016-09-18 14:56   ` Andi Kleen
  1 sibling, 1 reply; 7+ messages in thread
From: Wangnan (F) @ 2016-09-18 10:20 UTC (permalink / raw)
  To: Andi Kleen, acme; +Cc: jolsa, linux-kernel, Andi Kleen, sukadev



On 2016/9/18 9:02, Andi Kleen wrote:
> 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>

I tested '.c' in middle of an event:

  # perf trace --event 'aaa.ccc'
  invalid or unsupported event: 'aaa.ccc'
  Run 'perf list' for a list of valid events
  ...

It is not recongnized as a BPF source.

So could you please provide an example to show how
this potential bug breaks the parsing of new events?

> ---
>   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 7a2519435da0..64ca26e4ed2d 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -162,8 +162,8 @@ modifier_bp	[rwx]{1,3}
>   		}
>   
>   {event_pmu}	|
> -{bpf_object}	|
> -{bpf_source}	|
> +({bpf_object}$)	|
> +({bpf_source}$)	|

What about putting '$' at the definition of bpf_xxx like this?

diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 9f43fda..d9ff690 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]+

Thank you.

>   {event}		{
>   			BEGIN(INITIAL);
>   			REWIND(1);

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] perf, tools: Handle events including .c and .o
  2016-09-18  9:03 ` Jiri Olsa
@ 2016-09-18 14:52   ` Andi Kleen
  0 siblings, 0 replies; 7+ messages in thread
From: Andi Kleen @ 2016-09-18 14:52 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: Andi Kleen, acme, jolsa, linux-kernel, wangnan0, sukadev

On Sun, Sep 18, 2016 at 11:03:27AM +0200, Jiri Olsa wrote:
> On Sat, Sep 17, 2016 at 06:02:46PM -0700, Andi Kleen wrote:
> > 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 7a2519435da0..64ca26e4ed2d 100644
> > --- a/tools/perf/util/parse-events.l
> > +++ b/tools/perf/util/parse-events.l
> > @@ -162,8 +162,8 @@ modifier_bp	[rwx]{1,3}
> >  		}
> >  
> >  {event_pmu}	|
> > -{bpf_object}	|
> > -{bpf_source}	|
> > +({bpf_object}$)	|
> > +({bpf_source}$)	|
> 
> why are the () braces necessary? anyway:

Flex complains otherwise, I think because it's used with OR (|)

-Andi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] perf, tools: Handle events including .c and .o
  2016-09-18 10:20 ` Wangnan (F)
@ 2016-09-18 14:56   ` Andi Kleen
  2016-09-19  2:50     ` Wangnan (F)
  0 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2016-09-18 14:56 UTC (permalink / raw)
  To: Wangnan (F); +Cc: Andi Kleen, acme, jolsa, linux-kernel, sukadev

On Sun, Sep 18, 2016 at 06:20:04PM +0800, Wangnan (F) wrote:
> 
> 
> On 2016/9/18 9:02, Andi Kleen wrote:
> > 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>
> 
> I tested '.c' in middle of an event:
> 
>  # perf trace --event 'aaa.ccc'
>  invalid or unsupported event: 'aaa.ccc'
>  Run 'perf list' for a list of valid events
>  ...
> 
> It is not recongnized as a BPF source.
> 
> So could you please provide an example to show how
> this potential bug breaks the parsing of new events?

This is with the upcoming JSON uncore events:

$ 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

-Andi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] perf, tools: Handle events including .c and .o
  2016-09-18 14:56   ` Andi Kleen
@ 2016-09-19  2:50     ` Wangnan (F)
  0 siblings, 0 replies; 7+ messages in thread
From: Wangnan (F) @ 2016-09-19  2:50 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Andi Kleen, acme, jolsa, linux-kernel, sukadev



On 2016/9/18 22:56, Andi Kleen wrote:
> On Sun, Sep 18, 2016 at 06:20:04PM +0800, Wangnan (F) wrote:
>>
>> On 2016/9/18 9:02, Andi Kleen wrote:
>>> 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>
>> I tested '.c' in middle of an event:
>>
>>   # perf trace --event 'aaa.ccc'
>>   invalid or unsupported event: 'aaa.ccc'
>>   Run 'perf list' for a list of valid events
>>   ...
>>
>> It is not recongnized as a BPF source.
>>
>> So could you please provide an example to show how
>> this potential bug breaks the parsing of new events?
> This is with the upcoming JSON uncore events:
>
> $ 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
>
> -Andi

I see, and your patch solve problem like this.

Tested-by: Wang Nan <wangnan0@huawei.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] perf, tools: Handle events including .c and .o
  2016-10-06 20:18 [PATCH 1/3] " Arnaldo Carvalho de Melo
@ 2016-10-08  4:16 ` Wang Nan
  0 siblings, 0 replies; 7+ messages in thread
From: Wang Nan @ 2016-10-08  4:16 UTC (permalink / raw)
  To: acme
  Cc: lizefan, linux-kernel, pi3orama, ak, Wang Nan,
	Sukadev Bhattiprolu, Arnaldo Carvalho de Melo, Jiri Olsa

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-10-08  4:17 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-18  1:02 [PATCH] perf, tools: Handle events including .c and .o Andi Kleen
2016-09-18  9:03 ` Jiri Olsa
2016-09-18 14:52   ` Andi Kleen
2016-09-18 10:20 ` Wangnan (F)
2016-09-18 14:56   ` Andi Kleen
2016-09-19  2:50     ` Wangnan (F)
2016-10-06 20:18 [PATCH 1/3] " Arnaldo Carvalho de Melo
2016-10-08  4:16 ` [PATCH] " Wang Nan

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).