Re: [RFC PATCH] perf pmu-events: Don't lower case MetricExpr

From: Arnaldo Carvalho de Melo
Date: Wed Jan 12 2022 - 12:53:51 EST


Em Wed, Jan 12, 2022 at 02:45:07PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Jan 12, 2022 at 09:22:51AM -0800, Ian Rogers escreveu:
> > On Thu, Nov 25, 2021 at 11:13 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
> > >
> > > This patch changes MetricExpr to be written out in the same case. This
> > > enables events in metrics to use modifiers like 'G' which currently
> > > yield parse errors when made lower case. To keep tests passing the
> > > literal #smt_on is compared in a non-case sensitive way - #SMT_on is
> > > present in at least SkylakeX metrics.
> >
> > Ping.
>
> I tried applying 20211124001231.3277836-1-irogers@xxxxxxxxxx on top of
> your perf_cpu series, it failed, will check.
>
> BTW, I got the two other patches in that series:
>
> ⬢[acme@toolbox perf]$ git log --oneline -2
> 6dd8646939a770e4 (HEAD -> perf/core) perf tools: Probe non-deprecated sysfs path 1st
> 0ce05781f4905fcf perf tools: Fix SMT fallback with large core counts
> ⬢[acme@toolbox perf]$

Ok, I have that one now on, but could Andi or somebody else that works
more frequently with that code provide an Acked-by or Reviewed-by?

- Arnaldo

> - Arnaldo
>
> > Thanks,
> > Ian
> >
> > > This patch is on top of:
> > > https://lore.kernel.org/lkml/20211124001231.3277836-1-irogers@xxxxxxxxxx/
> > >
> > > Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> > > ---
> > > tools/perf/pmu-events/jevents.c | 2 --
> > > tools/perf/util/expr.c | 2 +-
> > > 2 files changed, 1 insertion(+), 3 deletions(-)
> > >
> > > diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
> > > index 2e7c4153875b..1a57c3f81dd4 100644
> > > --- a/tools/perf/pmu-events/jevents.c
> > > +++ b/tools/perf/pmu-events/jevents.c
> > > @@ -672,8 +672,6 @@ static int json_events(const char *fn,
> > > addfield(map, &je.metric_constraint, "", "", val);
> > > } else if (json_streq(map, field, "MetricExpr")) {
> > > addfield(map, &je.metric_expr, "", "", val);
> > > - for (s = je.metric_expr; *s; s++)
> > > - *s = tolower(*s);
> > > } else if (json_streq(map, field, "ArchStdEvent")) {
> > > addfield(map, &arch_std, "", "", val);
> > > for (s = arch_std; *s; s++)
> > > diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c
> > > index cdbab4f959fe..5cd6b9ff2489 100644
> > > --- a/tools/perf/util/expr.c
> > > +++ b/tools/perf/util/expr.c
> > > @@ -397,7 +397,7 @@ double expr__get_literal(const char *literal)
> > > static struct cpu_topology *topology;
> > > double result = NAN;
> > >
> > > - if (!strcmp("#smt_on", literal)) {
> > > + if (!strcasecmp("#smt_on", literal)) {
> > > result = smt_on() > 0 ? 1.0 : 0.0;
> > > goto out;
> > > }
> > > --
> > > 2.34.0.rc2.393.gf8c9666880-goog
> > >
>
> --
>
> - Arnaldo

--

- Arnaldo