Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Wed, Mar 07, 2018 at 03:09:08PM -0500, Agustin Vega-Frias escreveu:
> On 2018-03-07 14:58, Arnaldo Carvalho de Melo wrote:
> > Em Wed, Mar 07, 2018 at 02:49:50PM -0500, Agustin Vega-Frias escreveu:
> > > On 2018-03-07 14:39, Arnaldo Carvalho de Melo wrote:
> > > > Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo
> > > > escreveu:
> > > > > Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo
> > > > > escreveu:
> > > > > > Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > > > > > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU 
> > > > > > > > extension,
> > > > > > > > not POSIX, and the Alpine and Android runtimes likely don't 
> > > > > > > > implement
> > > > > > > > that...
> > > > > > > > I'll send a fix reverting back to the strncmp to ignore the 
> > > > > > > > uncore_ prefix,
> > > > > > > > and dropping that extension.
> > > > > > >
> > > > > > > Just don't set it? Even the basic glob patterns are useful.
> > > > > >
> > > > > > Or use:
> > > > > >
> > > > > > #ifndef FNM_EXTMATCH
> > > > > > #define FNM_EXTMATCH 0
> > > > > > #endif
> > > > > >
> > > > > > So on systems without it, its not used, while on GNU systems, we 
> > > > > > have
> > > > > > that functionality (pretty fancy, someone may need that... ;-))
> > > > >
> > > > > I'll try this route, btw, no need to send more patches for now.
> > > >
> > > > So, with the patch at the end of this message, it works now in those
> > > > systems:
> > > >
> > > > [root@jouet ~]# dm
> > > >1 alpine:3.4: Ok   gcc (Alpine 5.3.0) 5.3.0
> > > >2 alpine:3.5: Ok   gcc (Alpine 6.2.1) 6.2.1
> > > > 20160822
> > > >3 alpine:3.6: Ok   gcc (Alpine 6.3.0) 6.3.0
> > > >4 alpine:edge   : Ok   gcc (Alpine 6.4.0) 6.4.0
> > > >5 amazonlinux:1 : Ok   gcc (GCC) 4.8.5 20150623
> > > > (Red Hat 4.8.5-11)
> > > >6 amazonlinux:2 : Ok   gcc (GCC) 7.2.1 20170915
> > > > (Red Hat 7.2.1-2)
> > > >7 android-ndk:r12b-arm  : Ok   arm-linux-androideabi-gcc
> > > > (GCC) 4.9.x 20150123 (prerelease)
> > > >8 android-ndk:r15c-arm  : Ok   arm-linux-androideabi-gcc
> > > > (GCC) 4.9.x 20150123 (prerelease)
> > > >9 centos:5  : Ok   gcc (GCC) 4.1.2 20080704
> > > > (Red Hat 4.1.2-55)
> > > >   10 centos:6  : Ok   gcc (GCC) 4.4.7 20120313
> > > > (Red Hat 4.4.7-18)
> > > >
> > > > I stopped the test at this point to process some more patches, will
> > > > restart the tests with those extra patches and if all goes well with the
> > > > other 46 build environments, push upstream, thanks.
> > > >
> > > > - Arnaldo
> > > >
> > > > diff --git a/tools/perf/util/parse-events.y
> > > > b/tools/perf/util/parse-events.y
> > > > index 316ac073aa78..18473be7d787 100644
> > > > --- a/tools/perf/util/parse-events.y
> > > > +++ b/tools/perf/util/parse-events.y
> > > > @@ -9,6 +9,13 @@
> > > >  #define YYDEBUG 1
> > > >
> > > >  #include 
> > > > +/*
> > > > + * GNU extension, so better define it to 0 for systems such
> > > > + * as Android and Alpine Linux.
> > > > + */
> > > > +#ifndef FNM_EXTMATCH
> > > > +#define FNM_EXTMATCH 0
> > > > +#endif
> > > >  #include 
> > > >  #include 
> > > >  #include 
> > > 
> > > Hey Jiri,
> > > 
> > > The downside is that, while the compilation now works on those
> > > systems, the pattern will not work as intended in them :o(
> > > Let me cook something and send it ASAP.
> > 
> > Well, do you think this is really a big problem? Even if we add nice
> > docs?
> > 
> > I haven't tested something that works with this syntax on a capable
> > system and then on one that doesn't, to see how it would behave,
> > probably it would say something about a syntax error?
> > 
> 
> Most likely, yes, it would be flagged as a syntax error in the event name.
> I'd prefer we fix this. I have the new patch ready, do you want me to just
> send you that patch instead of the series?

Just that patch is ok.

- Arnaldo


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Jiri Olsa
On Wed, Mar 07, 2018 at 03:09:08PM -0500, Agustin Vega-Frias wrote:

SNIP

> > > >  #include 
> > > > +/*
> > > > + * GNU extension, so better define it to 0 for systems such
> > > > + * as Android and Alpine Linux.
> > > > + */
> > > > +#ifndef FNM_EXTMATCH
> > > > +#define FNM_EXTMATCH 0
> > > > +#endif
> > > >  #include 
> > > >  #include 
> > > >  #include 
> > > 
> > > Hey Jiri,
> > > 
> > > The downside is that, while the compilation now works on those
> > > systems, the pattern will not work as intended in them :o(
> > > Let me cook something and send it ASAP.
> > 
> > Well, do you think this is really a big problem? Even if we add nice
> > docs?
> > 
> > I haven't tested something that works with this syntax on a capable
> > system and then on one that doesn't, to see how it would behave,
> > probably it would say something about a syntax error?
> > 
> 
> Most likely, yes, it would be flagged as a syntax error in the event name.
> I'd prefer we fix this. I have the new patch ready, do you want me to just
> send you that patch instead of the series?

we could also detect the extension via build features
and have HAVE_FEATURE_ macro defined for it, so we'd
have full functionality on system with its support

but maybe that's little too much for feature this size,
or we can add it later.. now I'd be ok with the limited
functionality as well

jirka


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Agustin Vega-Frias

On 2018-03-07 14:58, Arnaldo Carvalho de Melo wrote:

Em Wed, Mar 07, 2018 at 02:49:50PM -0500, Agustin Vega-Frias escreveu:

On 2018-03-07 14:39, Arnaldo Carvalho de Melo wrote:
> Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo
> escreveu:
> > Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo
> > escreveu:
> > > Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU 
extension,
> > > > > not POSIX, and the Alpine and Android runtimes likely don't implement
> > > > > that...
> > > > > I'll send a fix reverting back to the strncmp to ignore the uncore_ 
prefix,
> > > > > and dropping that extension.
> > > >
> > > > Just don't set it? Even the basic glob patterns are useful.
> > >
> > > Or use:
> > >
> > > #ifndef FNM_EXTMATCH
> > > #define FNM_EXTMATCH 0
> > > #endif
> > >
> > > So on systems without it, its not used, while on GNU systems, we have
> > > that functionality (pretty fancy, someone may need that... ;-))
> >
> > I'll try this route, btw, no need to send more patches for now.
>
> So, with the patch at the end of this message, it works now in those
> systems:
>
> [root@jouet ~]# dm
>1 alpine:3.4: Ok   gcc (Alpine 5.3.0) 5.3.0
>2 alpine:3.5: Ok   gcc (Alpine 6.2.1) 6.2.1
> 20160822
>3 alpine:3.6: Ok   gcc (Alpine 6.3.0) 6.3.0
>4 alpine:edge   : Ok   gcc (Alpine 6.4.0) 6.4.0
>5 amazonlinux:1 : Ok   gcc (GCC) 4.8.5 20150623
> (Red Hat 4.8.5-11)
>6 amazonlinux:2 : Ok   gcc (GCC) 7.2.1 20170915
> (Red Hat 7.2.1-2)
>7 android-ndk:r12b-arm  : Ok   arm-linux-androideabi-gcc
> (GCC) 4.9.x 20150123 (prerelease)
>8 android-ndk:r15c-arm  : Ok   arm-linux-androideabi-gcc
> (GCC) 4.9.x 20150123 (prerelease)
>9 centos:5  : Ok   gcc (GCC) 4.1.2 20080704
> (Red Hat 4.1.2-55)
>   10 centos:6  : Ok   gcc (GCC) 4.4.7 20120313
> (Red Hat 4.4.7-18)
>
> I stopped the test at this point to process some more patches, will
> restart the tests with those extra patches and if all goes well with the
> other 46 build environments, push upstream, thanks.
>
> - Arnaldo
>
> diff --git a/tools/perf/util/parse-events.y
> b/tools/perf/util/parse-events.y
> index 316ac073aa78..18473be7d787 100644
> --- a/tools/perf/util/parse-events.y
> +++ b/tools/perf/util/parse-events.y
> @@ -9,6 +9,13 @@
>  #define YYDEBUG 1
>
>  #include 
> +/*
> + * GNU extension, so better define it to 0 for systems such
> + * as Android and Alpine Linux.
> + */
> +#ifndef FNM_EXTMATCH
> +#define FNM_EXTMATCH 0
> +#endif
>  #include 
>  #include 
>  #include 

Hey Jiri,

The downside is that, while the compilation now works on those
systems, the pattern will not work as intended in them :o(
Let me cook something and send it ASAP.


Well, do you think this is really a big problem? Even if we add nice
docs?

I haven't tested something that works with this syntax on a capable
system and then on one that doesn't, to see how it would behave,
probably it would say something about a syntax error?



Most likely, yes, it would be flagged as a syntax error in the event 
name.
I'd prefer we fix this. I have the new patch ready, do you want me to 
just

send you that patch instead of the series?

Thanks,
Agustín

--
Qualcomm Datacenter Technologies, Inc. on behalf of the Qualcomm 
Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a 
Linux Foundation Collaborative Project.


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Wed, Mar 07, 2018 at 02:49:50PM -0500, Agustin Vega-Frias escreveu:
> On 2018-03-07 14:39, Arnaldo Carvalho de Melo wrote:
> > Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo
> > escreveu:
> > > Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo
> > > escreveu:
> > > > Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > > > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU 
> > > > > > extension,
> > > > > > not POSIX, and the Alpine and Android runtimes likely don't 
> > > > > > implement
> > > > > > that...
> > > > > > I'll send a fix reverting back to the strncmp to ignore the uncore_ 
> > > > > > prefix,
> > > > > > and dropping that extension.
> > > > >
> > > > > Just don't set it? Even the basic glob patterns are useful.
> > > >
> > > > Or use:
> > > >
> > > > #ifndef FNM_EXTMATCH
> > > > #define FNM_EXTMATCH 0
> > > > #endif
> > > >
> > > > So on systems without it, its not used, while on GNU systems, we have
> > > > that functionality (pretty fancy, someone may need that... ;-))
> > > 
> > > I'll try this route, btw, no need to send more patches for now.
> > 
> > So, with the patch at the end of this message, it works now in those
> > systems:
> > 
> > [root@jouet ~]# dm
> >1 alpine:3.4: Ok   gcc (Alpine 5.3.0) 5.3.0
> >2 alpine:3.5: Ok   gcc (Alpine 6.2.1) 6.2.1
> > 20160822
> >3 alpine:3.6: Ok   gcc (Alpine 6.3.0) 6.3.0
> >4 alpine:edge   : Ok   gcc (Alpine 6.4.0) 6.4.0
> >5 amazonlinux:1 : Ok   gcc (GCC) 4.8.5 20150623
> > (Red Hat 4.8.5-11)
> >6 amazonlinux:2 : Ok   gcc (GCC) 7.2.1 20170915
> > (Red Hat 7.2.1-2)
> >7 android-ndk:r12b-arm  : Ok   arm-linux-androideabi-gcc
> > (GCC) 4.9.x 20150123 (prerelease)
> >8 android-ndk:r15c-arm  : Ok   arm-linux-androideabi-gcc
> > (GCC) 4.9.x 20150123 (prerelease)
> >9 centos:5  : Ok   gcc (GCC) 4.1.2 20080704
> > (Red Hat 4.1.2-55)
> >   10 centos:6  : Ok   gcc (GCC) 4.4.7 20120313
> > (Red Hat 4.4.7-18)
> > 
> > I stopped the test at this point to process some more patches, will
> > restart the tests with those extra patches and if all goes well with the
> > other 46 build environments, push upstream, thanks.
> > 
> > - Arnaldo
> > 
> > diff --git a/tools/perf/util/parse-events.y
> > b/tools/perf/util/parse-events.y
> > index 316ac073aa78..18473be7d787 100644
> > --- a/tools/perf/util/parse-events.y
> > +++ b/tools/perf/util/parse-events.y
> > @@ -9,6 +9,13 @@
> >  #define YYDEBUG 1
> > 
> >  #include 
> > +/*
> > + * GNU extension, so better define it to 0 for systems such
> > + * as Android and Alpine Linux.
> > + */
> > +#ifndef FNM_EXTMATCH
> > +#define FNM_EXTMATCH 0
> > +#endif
> >  #include 
> >  #include 
> >  #include 
> 
> Hey Jiri,
> 
> The downside is that, while the compilation now works on those
> systems, the pattern will not work as intended in them :o(
> Let me cook something and send it ASAP.

Well, do you think this is really a big problem? Even if we add nice
docs?

I haven't tested something that works with this syntax on a capable
system and then on one that doesn't, to see how it would behave,
probably it would say something about a syntax error?

- Arnaldo


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Agustin Vega-Frias

On 2018-03-07 14:39, Arnaldo Carvalho de Melo wrote:
Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo 
escreveu:
Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo 
escreveu:

> Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU extension,
> > > not POSIX, and the Alpine and Android runtimes likely don't implement
> > > that...
> > > I'll send a fix reverting back to the strncmp to ignore the uncore_ 
prefix,
> > > and dropping that extension.
> >
> > Just don't set it? Even the basic glob patterns are useful.
>
> Or use:
>
> #ifndef FNM_EXTMATCH
> #define FNM_EXTMATCH 0
> #endif
>
> So on systems without it, its not used, while on GNU systems, we have
> that functionality (pretty fancy, someone may need that... ;-))

I'll try this route, btw, no need to send more patches for now.


So, with the patch at the end of this message, it works now in those
systems:

[root@jouet ~]# dm
   1 alpine:3.4: Ok   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5: Ok   gcc (Alpine 6.2.1) 6.2.1 
20160822

   3 alpine:3.6: Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:edge   : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 amazonlinux:1 : Ok   gcc (GCC) 4.8.5 20150623
(Red Hat 4.8.5-11)
   6 amazonlinux:2 : Ok   gcc (GCC) 7.2.1 20170915
(Red Hat 7.2.1-2)
   7 android-ndk:r12b-arm  : Ok   arm-linux-androideabi-gcc
(GCC) 4.9.x 20150123 (prerelease)
   8 android-ndk:r15c-arm  : Ok   arm-linux-androideabi-gcc
(GCC) 4.9.x 20150123 (prerelease)
   9 centos:5  : Ok   gcc (GCC) 4.1.2 20080704
(Red Hat 4.1.2-55)
  10 centos:6  : Ok   gcc (GCC) 4.4.7 20120313
(Red Hat 4.4.7-18)

I stopped the test at this point to process some more patches, will
restart the tests with those extra patches and if all goes well with 
the

other 46 build environments, push upstream, thanks.

- Arnaldo

diff --git a/tools/perf/util/parse-events.y 
b/tools/perf/util/parse-events.y

index 316ac073aa78..18473be7d787 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -9,6 +9,13 @@
 #define YYDEBUG 1

 #include 
+/*
+ * GNU extension, so better define it to 0 for systems such
+ * as Android and Alpine Linux.
+ */
+#ifndef FNM_EXTMATCH
+#define FNM_EXTMATCH 0
+#endif
 #include 
 #include 
 #include 


Hey Jiri,

The downside is that, while the compilation now works on those
systems, the pattern will not work as intended in them :o(
Let me cook something and send it ASAP.

Thanks,
Agustín

--
Qualcomm Datacenter Technologies, Inc. on behalf of the Qualcomm 
Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a 
Linux Foundation Collaborative Project.


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU 
> > > > extension,
> > > > not POSIX, and the Alpine and Android runtimes likely don't implement
> > > > that...
> > > > I'll send a fix reverting back to the strncmp to ignore the uncore_ 
> > > > prefix,
> > > > and dropping that extension.
> > > 
> > > Just don't set it? Even the basic glob patterns are useful.
> > 
> > Or use:
> > 
> > #ifndef FNM_EXTMATCH
> > #define FNM_EXTMATCH 0
> > #endif
> > 
> > So on systems without it, its not used, while on GNU systems, we have
> > that functionality (pretty fancy, someone may need that... ;-))
> 
> I'll try this route, btw, no need to send more patches for now.

So, with the patch at the end of this message, it works now in those
systems:

[root@jouet ~]# dm
   1 alpine:3.4: Ok   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5: Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6: Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:edge   : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 amazonlinux:1 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 
4.8.5-11)
   6 amazonlinux:2 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 
7.2.1-2)
   7 android-ndk:r12b-arm  : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 
20150123 (prerelease)
   8 android-ndk:r15c-arm  : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 
20150123 (prerelease)
   9 centos:5  : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 
4.1.2-55)
  10 centos:6  : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 
4.4.7-18)

I stopped the test at this point to process some more patches, will
restart the tests with those extra patches and if all goes well with the
other 46 build environments, push upstream, thanks.

- Arnaldo

diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 316ac073aa78..18473be7d787 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -9,6 +9,13 @@
 #define YYDEBUG 1
 
 #include 
+/*
+ * GNU extension, so better define it to 0 for systems such
+ * as Android and Alpine Linux.
+ */
+#ifndef FNM_EXTMATCH
+#define FNM_EXTMATCH 0
+#endif
 #include 
 #include 
 #include 


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU extension,
> > > not POSIX, and the Alpine and Android runtimes likely don't implement
> > > that...
> > > I'll send a fix reverting back to the strncmp to ignore the uncore_ 
> > > prefix,
> > > and dropping that extension.
> > 
> > Just don't set it? Even the basic glob patterns are useful.
> 
> Or use:
> 
> #ifndef FNM_EXTMATCH
> #define FNM_EXTMATCH 0
> #endif
> 
> So on systems without it, its not used, while on GNU systems, we have
> that functionality (pretty fancy, someone may need that... ;-))

I'll try this route, btw, no need to send more patches for now.

- Arnaldo


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > Sorry about that. That's probably because FNM_EXTMATCH is a GNU extension,
> > not POSIX, and the Alpine and Android runtimes likely don't implement
> > that...
> > I'll send a fix reverting back to the strncmp to ignore the uncore_ prefix,
> > and dropping that extension.
> 
> Just don't set it? Even the basic glob patterns are useful.

Or use:

#ifndef FNM_EXTMATCH
#define FNM_EXTMATCH 0
#endif

So on systems without it, its not used, while on GNU systems, we have
that functionality (pretty fancy, someone may need that... ;-))

- Arnaldo


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Andi Kleen
> Sorry about that. That's probably because FNM_EXTMATCH is a GNU extension,
> not POSIX, and the Alpine and Android runtimes likely don't implement
> that...
> I'll send a fix reverting back to the strncmp to ignore the uncore_ prefix,
> and dropping that extension.

Just don't set it? Even the basic glob patterns are useful.

-Andi


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Agustin Vega-Frias

On 2018-03-07 11:02, Arnaldo Carvalho de Melo wrote:

Em Tue, Mar 06, 2018 at 09:04:42AM -0500, Agustin Vega-Frias escreveu:


[snip]


This breaks the build in at least Alpine Linux 3.4, 3.5 and 3.6 and
android-ndk:r15c-arm

Alpine 3.6 build failure:

  CC   /tmp/build/perf/util/parse-events-bison.o
util/parse-events.y: In function 'parse_events_parse':
util/parse-events.y:244:37: error: 'FNM_EXTMATCH' undeclared (first
use in this function)
if (!fnmatch(pattern, pmu->name, FNM_EXTMATCH)) {
 ^~~~
util/parse-events.y:244:37: note: each undeclared identifier is
reported only once for each function it appears in
  CC   /tmp/build/perf/bench/mem-functions.o
mv: can't rename '/tmp/build/perf/util/.parse-events-bison.o.tmp': No
such file or directory
make[4]: *** [/git/linux/tools/build/Makefile.build:96:
/tmp/build/perf/util/parse-events-bison.o] Error 1
make[3]: *** [/git/linux/tools/build/Makefile.build:139: util] Error 2
make[2]: *** [Makefile.perf:623: /tmp/build/perf/libperf-in.o] Error 2
make[2]: *** Waiting for unfinished jobs

Android NDK r15c ARM, cross built from, IIRC, Fedora 24:

 CC   /tmp/build/perf/util/parse-events-bison.o
util/parse-events.y: In function 'parse_events_parse':
util/parse-events.y:244:37: error: 'FNM_EXTMATCH' undeclared (first
use in this function)
if (!fnmatch(pattern, pmu->name, FNM_EXTMATCH)) {
 ^
util/parse-events.y:244:37: note: each undeclared identifier is
reported only once for each function it appears in
mv: cannot stat '/tmp/build/perf/util/.parse-events-bison.o.tmp': No
such file or directory
make[4]: *** [/git/linux/tools/build/Makefile.build:96:
/tmp/build/perf/util/parse-events-bison.o] Error 1
make[4]: *** Waiting for unfinished jobs
  CC   /tmp/build/perf/builtin-kmem.o
make[3]: *** [/git/linux/tools/build/Makefile.build:139: util] Error 2
make[2]: *** [Makefile.perf:623: /tmp/build/perf/libperf-in.o] Error 2


Probably others, I'll investigate later, feel free to do it if you have
the time now :-)



Sorry about that. That's probably because FNM_EXTMATCH is a GNU 
extension,
not POSIX, and the Alpine and Android runtimes likely don't implement 
that...
I'll send a fix reverting back to the strncmp to ignore the uncore_ 
prefix,

and dropping that extension.

Agustín


Extra info:


   146.29 alpine:3.4: FAIL gcc (Alpine 5.3.0) 
5.3.0

   253.37 alpine:3.5: FAIL gcc (Alpine 6.2.1)
6.2.1 20160822
   348.42 alpine:3.6: FAIL gcc (Alpine 6.3.0) 
6.3.0
   435.88 alpine:edge   : FAIL gcc (Alpine 6.4.0) 
6.4.0

   596.79 amazonlinux:1 : Ok   gcc (GCC) 4.8.5
20150623 (Red Hat 4.8.5-11)
   6   116.40 amazonlinux:2 : Ok   gcc (GCC) 7.2.1
20170915 (Red Hat 7.2.1-2)
   734.30 android-ndk:r12b-arm  : FAIL
arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   833.69 android-ndk:r15c-arm  : FAIL
arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   960.50 centos:5  : Ok   gcc (GCC) 4.1.2
20080704 (Red Hat 4.1.2-55)
  1088.54 centos:6  : Ok   gcc (GCC) 4.4.7
20120313 (Red Hat 4.4.7-18)
  11   108.89 centos:7  : Ok   gcc (GCC) 4.8.5
20150623 (Red Hat 4.8.5-16)


The builds are still ongoing.

- Arnaldo


--
Qualcomm Datacenter Technologies, Inc. on behalf of the Qualcomm 
Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a 
Linux Foundation Collaborative Project.


Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-07 Thread Arnaldo Carvalho de Melo
Em Tue, Mar 06, 2018 at 09:04:42AM -0500, Agustin Vega-Frias escreveu:
> Starting on v4.12 event parsing code for dynamic pmu events already
> supports prefix-based matching of multiple pmus when creating dynamic
> events. E.g., in a system with the following dynamic pmus:
> 
> mypmu_0
> mypmu_1
> mypmu_2
> mypmu_4
> 
> passing mypmu// as an event spec will result in the creation
> of the event in all of the pmus. This change expands this matching
> through the use of fnmatch so glob-like expressions can be used to
> create events in multiple pmus. E.g., in the system described above
> if a user only wants to create the event in mypmu_0 and mypmu_1,
> mypmu_[01]// can be passed.
> 
> Change-Id: Icb25653fc5d5239c20f3bffdfdf4ab4c9c9bb20b
> Signed-off-by: Agustin Vega-Frias 
> ---
>  tools/perf/Documentation/perf-list.txt |  8 +++-
>  tools/perf/Documentation/perf-stat.txt | 13 +
>  tools/perf/util/parse-events.l |  2 +-
>  tools/perf/util/parse-events.y | 19 ---
>  4 files changed, 33 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/perf/Documentation/perf-list.txt 
> b/tools/perf/Documentation/perf-list.txt
> index e2a897a..2549c34 100644
> --- a/tools/perf/Documentation/perf-list.txt
> +++ b/tools/perf/Documentation/perf-list.txt
> @@ -141,7 +141,13 @@ on the first memory controller on socket 0 of a Intel 
> Xeon system
>  
>  Each memory controller has its own PMU.  Measuring the complete system
>  bandwidth would require specifying all imc PMUs (see perf list output),
> -and adding the values together.
> +and adding the values together. To simplify creation of multiple events,
> +prefix and glob matching is supported in the PMU name, and the prefix
> +'uncore_' is also ignored when performing the match. So the command above
> +can be expanded to all memory controllers by using the syntaxes:
> +
> +  perf stat -C 0 -a imc/cas_count_read/,imc/cas_count_write/ -I 1000 ...
> +  perf stat -C 0 -a *imc*/cas_count_read/,*imc*/cas_count_write/ -I 1000 ...
>  
>  This example measures the combined core power every second
>  
> diff --git a/tools/perf/Documentation/perf-stat.txt 
> b/tools/perf/Documentation/perf-stat.txt
> index 823fce7..5ee954f 100644
> --- a/tools/perf/Documentation/perf-stat.txt
> +++ b/tools/perf/Documentation/perf-stat.txt
> @@ -49,6 +49,13 @@ report::
> parameters are defined by corresponding entries in
> /sys/bus/event_source/devices//format/*
>  
> + Note that the last two syntaxes support prefix and glob matching in
> + the PMU name to simplify creation of events accross multiple instances
> + of the same type of PMU in large systems (e.g. memory controller PMUs).
> + Multiple PMU instances are typical for uncore PMUs, so the prefix
> + 'uncore_' is also ignored when performing this match.
> +
> +
>  -i::
>  --no-inherit::
>  child tasks do not inherit counters
> @@ -246,6 +253,12 @@ taskset.
>  --no-merge::
>  Do not merge results from same PMUs.
>  
> +When multiple events are created from a single event alias, stat will,
> +by default, aggregate the event counts and show the result in a single
> +row. This option disables that behavior and shows the individual events
> +and counts. Aliases are listed immediately after the Kernel PMU events
> +by perf list.
> +
>  --smi-cost::
>  Measure SMI cost if msr/aperf/ and msr/smi/ events are supported.
>  
> diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
> index 655ecff..a1a01b1 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -175,7 +175,7 @@ bpf_source[^,{}]+\.c[a-zA-Z0-9._]*
>  num_dec  [0-9]+
>  num_hex  0x[a-fA-F0-9]+
>  num_raw_hex  [a-fA-F0-9]+
> -name [a-zA-Z_*?][a-zA-Z0-9_*?.]*
> +name [a-zA-Z_*?\[\]][a-zA-Z0-9_*?.\[\]]*
>  name_minus   [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
>  drv_cfg_term [a-zA-Z0-9_\.]+(=[a-zA-Z0-9_*?\.:]+)?
>  /* If you add a modifier you need to update check_modifier() */
> diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
> index e81a20e..316ac07 100644
> --- a/tools/perf/util/parse-events.y
> +++ b/tools/perf/util/parse-events.y
> @@ -8,6 +8,7 @@
>  
>  #define YYDEBUG 1
>  
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -234,21 +235,25 @@ PE_NAME opt_event_config
>   if (parse_events_add_pmu(_parse_state, list, $1, $2)) {
>   struct perf_pmu *pmu = NULL;
>   int ok = 0;
> + char *pattern;
>  
> - while ((pmu = perf_pmu__scan(pmu)) != NULL) {
> - char *name = pmu->name;
> + if (asprintf(&pattern, "?(uncore_)%s*", $1) < 0)
> + YYABORT;
>  
> - if (!strncmp(name, "uncore_", 7) &&
> - strncmp($1, "uncore_", 7))
> - name += 7;
> - if (!strncmp($1, name, strlen($1))) 

[RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

2018-03-06 Thread Agustin Vega-Frias
Starting on v4.12 event parsing code for dynamic pmu events already
supports prefix-based matching of multiple pmus when creating dynamic
events. E.g., in a system with the following dynamic pmus:

mypmu_0
mypmu_1
mypmu_2
mypmu_4

passing mypmu// as an event spec will result in the creation
of the event in all of the pmus. This change expands this matching
through the use of fnmatch so glob-like expressions can be used to
create events in multiple pmus. E.g., in the system described above
if a user only wants to create the event in mypmu_0 and mypmu_1,
mypmu_[01]// can be passed.

Change-Id: Icb25653fc5d5239c20f3bffdfdf4ab4c9c9bb20b
Signed-off-by: Agustin Vega-Frias 
---
 tools/perf/Documentation/perf-list.txt |  8 +++-
 tools/perf/Documentation/perf-stat.txt | 13 +
 tools/perf/util/parse-events.l |  2 +-
 tools/perf/util/parse-events.y | 19 ---
 4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/tools/perf/Documentation/perf-list.txt 
b/tools/perf/Documentation/perf-list.txt
index e2a897a..2549c34 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -141,7 +141,13 @@ on the first memory controller on socket 0 of a Intel Xeon 
system
 
 Each memory controller has its own PMU.  Measuring the complete system
 bandwidth would require specifying all imc PMUs (see perf list output),
-and adding the values together.
+and adding the values together. To simplify creation of multiple events,
+prefix and glob matching is supported in the PMU name, and the prefix
+'uncore_' is also ignored when performing the match. So the command above
+can be expanded to all memory controllers by using the syntaxes:
+
+  perf stat -C 0 -a imc/cas_count_read/,imc/cas_count_write/ -I 1000 ...
+  perf stat -C 0 -a *imc*/cas_count_read/,*imc*/cas_count_write/ -I 1000 ...
 
 This example measures the combined core power every second
 
diff --git a/tools/perf/Documentation/perf-stat.txt 
b/tools/perf/Documentation/perf-stat.txt
index 823fce7..5ee954f 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -49,6 +49,13 @@ report::
  parameters are defined by corresponding entries in
  /sys/bus/event_source/devices//format/*
 
+   Note that the last two syntaxes support prefix and glob matching in
+   the PMU name to simplify creation of events accross multiple instances
+   of the same type of PMU in large systems (e.g. memory controller PMUs).
+   Multiple PMU instances are typical for uncore PMUs, so the prefix
+   'uncore_' is also ignored when performing this match.
+
+
 -i::
 --no-inherit::
 child tasks do not inherit counters
@@ -246,6 +253,12 @@ taskset.
 --no-merge::
 Do not merge results from same PMUs.
 
+When multiple events are created from a single event alias, stat will,
+by default, aggregate the event counts and show the result in a single
+row. This option disables that behavior and shows the individual events
+and counts. Aliases are listed immediately after the Kernel PMU events
+by perf list.
+
 --smi-cost::
 Measure SMI cost if msr/aperf/ and msr/smi/ events are supported.
 
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 655ecff..a1a01b1 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -175,7 +175,7 @@ bpf_source  [^,{}]+\.c[a-zA-Z0-9._]*
 num_dec[0-9]+
 num_hex0x[a-fA-F0-9]+
 num_raw_hex[a-fA-F0-9]+
-name   [a-zA-Z_*?][a-zA-Z0-9_*?.]*
+name   [a-zA-Z_*?\[\]][a-zA-Z0-9_*?.\[\]]*
 name_minus [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
 drv_cfg_term   [a-zA-Z0-9_\.]+(=[a-zA-Z0-9_*?\.:]+)?
 /* If you add a modifier you need to update check_modifier() */
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index e81a20e..316ac07 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -8,6 +8,7 @@
 
 #define YYDEBUG 1
 
+#include 
 #include 
 #include 
 #include 
@@ -234,21 +235,25 @@ PE_NAME opt_event_config
if (parse_events_add_pmu(_parse_state, list, $1, $2)) {
struct perf_pmu *pmu = NULL;
int ok = 0;
+   char *pattern;
 
-   while ((pmu = perf_pmu__scan(pmu)) != NULL) {
-   char *name = pmu->name;
+   if (asprintf(&pattern, "?(uncore_)%s*", $1) < 0)
+   YYABORT;
 
-   if (!strncmp(name, "uncore_", 7) &&
-   strncmp($1, "uncore_", 7))
-   name += 7;
-   if (!strncmp($1, name, strlen($1))) {
-   if (parse_events_copy_term_list(orig_terms, 
&terms))
+   while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+   if (!fnmatch(pattern, pmu->name, FNM_EXTMATCH)) {
+   if (p