Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1485656 > unrolled thread

[PATCH] perf, tools: Handle events including .c and .o

Started byAndi Kleen <andi@firstfloor.org>
First post2016-09-18 03:10 +0200
Last post2016-09-19 05:00 +0200
Articles 6 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] perf, tools: Handle events including .c and .o Andi Kleen <andi@firstfloor.org> - 2016-09-18 03:10 +0200
    Re: [PATCH] perf, tools: Handle events including .c and .o Jiri Olsa <jolsa@redhat.com> - 2016-09-18 11:10 +0200
      Re: [PATCH] perf, tools: Handle events including .c and .o Andi Kleen <ak@linux.intel.com> - 2016-09-18 17:00 +0200
    Re: [PATCH] perf, tools: Handle events including .c and .o "Wangnan (F)" <wangnan0@huawei.com> - 2016-09-18 12:30 +0200
      Re: [PATCH] perf, tools: Handle events including .c and .o Andi Kleen <ak@linux.intel.com> - 2016-09-18 17:00 +0200
        Re: [PATCH] perf, tools: Handle events including .c and .o "Wangnan (F)" <wangnan0@huawei.com> - 2016-09-19 05:00 +0200

#1485656 — [PATCH] perf, tools: Handle events including .c and .o

FromAndi Kleen <andi@firstfloor.org>
Date2016-09-18 03:10 +0200
Subject[PATCH] perf, tools: Handle events including .c and .o
Message-ID<siyMi-1pU-5@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 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

[toc] | [next] | [standalone]


#1485738

FromJiri Olsa <jolsa@redhat.com>
Date2016-09-18 11:10 +0200
Message-ID<siGgN-6gf-1@gated-at.bofh.it>
In reply to#1485656
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
> 

[toc] | [prev] | [next] | [standalone]


#1485829

FromAndi Kleen <ak@linux.intel.com>
Date2016-09-18 17:00 +0200
Message-ID<siLJw-W8-15@gated-at.bofh.it>
In reply to#1485738
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

[toc] | [prev] | [next] | [standalone]


#1485756

From"Wangnan (F)" <wangnan0@huawei.com>
Date2016-09-18 12:30 +0200
Message-ID<siHwe-6V1-17@gated-at.bofh.it>
In reply to#1485656

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

[toc] | [prev] | [next] | [standalone]


#1485830

FromAndi Kleen <ak@linux.intel.com>
Date2016-09-18 17:00 +0200
Message-ID<siLJw-W8-7@gated-at.bofh.it>
In reply to#1485756
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

[toc] | [prev] | [next] | [standalone]


#1486104

From"Wangnan (F)" <wangnan0@huawei.com>
Date2016-09-19 05:00 +0200
Message-ID<siWYh-8ag-1@gated-at.bofh.it>
In reply to#1485830

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>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web