From: Jing Zhang <renyu.zj@linux.alibaba.com>
To: John Garry <john.g.garry@oracle.com>, Ian Rogers <irogers@google.com>
Cc: Will Deacon <will@kernel.org>, James Clark <james.clark@arm.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org,
Zhuo Song <zhuo.song@linux.alibaba.com>,
Jing Zhang <renyu.zj@linux.alibaba.com>,
Shuai Xue <xueshuai@linux.alibaba.com>
Subject: [PATCH v7 4/8] perf jevents: Support more event fields
Date: Mon, 21 Aug 2023 16:36:13 +0800 [thread overview]
Message-ID: <1692606977-92009-5-git-send-email-renyu.zj@linux.alibaba.com> (raw)
In-Reply-To: <1692606977-92009-1-git-send-email-renyu.zj@linux.alibaba.com>
The previous code assumes an event has either an "event=" or "config"
field at the beginning. For CMN neither of these may be present, as an
event is typically "type=xx,eventid=xxx".
If EventCode and ConfigCode is not added in the alias JSON file, the
event description will add "event=0" by default. So, even if the event
field is added "eventid=xxx" and "type=xxx", the CMN events final
parsing result will be "event=0, eventid=xxx, type=xxx".
Therefore, when EventCode and ConfigCode are missing in JSON, "event=0"
is no longer added by default. And add EventIdCode and Type to the event
field.
I compared pmu_event.c before and after compiling with JEVENT_ARCH=all,
they are consistent.
Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com>
---
tools/perf/pmu-events/jevents.py | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
index f57a8f2..369c8bf 100755
--- a/tools/perf/pmu-events/jevents.py
+++ b/tools/perf/pmu-events/jevents.py
@@ -275,11 +275,14 @@ class JsonEvent:
}
return table[unit] if unit in table else f'uncore_{unit.lower()}'
- eventcode = 0
+ eventcode = None
if 'EventCode' in jd:
eventcode = int(jd['EventCode'].split(',', 1)[0], 0)
if 'ExtSel' in jd:
- eventcode |= int(jd['ExtSel']) << 8
+ if eventcode is None:
+ eventcode = int(jd['ExtSel']) << 8
+ else:
+ eventcode |= int(jd['ExtSel']) << 8
configcode = int(jd['ConfigCode'], 0) if 'ConfigCode' in jd else None
self.name = jd['EventName'].lower() if 'EventName' in jd else None
self.topic = ''
@@ -317,7 +320,11 @@ class JsonEvent:
if precise and self.desc and '(Precise Event)' not in self.desc:
extra_desc += ' (Must be precise)' if precise == '2' else (' (Precise '
'event)')
- event = f'config={llx(configcode)}' if configcode is not None else f'event={llx(eventcode)}'
+ event = None
+ if eventcode is not None:
+ event = f'event={llx(eventcode)}'
+ elif configcode is not None:
+ event = f'config={llx(configcode)}'
event_fields = [
('AnyThread', 'any='),
('PortMask', 'ch_mask='),
@@ -327,10 +334,15 @@ class JsonEvent:
('Invert', 'inv='),
('SampleAfterValue', 'period='),
('UMask', 'umask='),
+ ('NodeType', 'type='),
+ ('EventIdCode', 'eventid='),
]
for key, value in event_fields:
if key in jd and jd[key] != '0':
- event += ',' + value + jd[key]
+ if event:
+ event += ',' + value + jd[key]
+ else:
+ event = value + jd[key]
if filter:
event += f',{filter}'
if msr:
--
1.8.3.1
next prev parent reply other threads:[~2023-08-21 8:36 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-21 8:36 [PATCH v7 0/8] perf vendor events: Add JSON metrics for Arm CMN Jing Zhang
2023-08-21 8:36 ` [PATCH v7 1/8] perf pmu: "Compat" supports matching multiple identifiers Jing Zhang
2023-08-24 15:05 ` Robin Murphy
2023-08-25 8:40 ` Jing Zhang
2023-08-25 4:11 ` Ian Rogers
2023-08-25 6:12 ` Jing Zhang
2023-08-21 8:36 ` [PATCH v7 2/8] perf metric: " Jing Zhang
2023-08-25 4:16 ` Ian Rogers
2023-08-21 8:36 ` Jing Zhang [this message]
2023-08-23 9:12 ` [PATCH v7 4/8] perf jevents: Support more event fields Robin Murphy
2023-08-25 4:42 ` Ian Rogers
2023-08-21 8:36 ` [PATCH v7 5/8] perf test: Make matching_pmu effective Jing Zhang
2023-08-25 4:27 ` Ian Rogers
2023-08-25 6:30 ` Jing Zhang
2023-08-21 8:36 ` [PATCH v7 6/8] perf test: Add pmu-event test for "Compat" and new event_field Jing Zhang
2023-08-25 4:30 ` Ian Rogers
2023-08-25 6:30 ` Jing Zhang
2023-08-21 8:36 ` [PATCH v7 7/8] perf jevents: Add support for Arm CMN PMU aliasing Jing Zhang
2023-08-23 9:33 ` Robin Murphy
2023-08-24 2:12 ` Jing Zhang
2023-08-21 8:36 ` [PATCH v7 8/8] perf vendor events: Add JSON metrics for Arm CMN Jing Zhang
2023-08-25 4:13 ` Ian Rogers
2023-08-25 6:47 ` Jing Zhang
2023-08-23 8:12 ` [PATCH v7 0/8] " John Garry
2023-08-24 2:33 ` Jing Zhang
2023-09-06 16:05 ` Arnaldo Carvalho de Melo
2023-09-07 2:42 ` Jing Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1692606977-92009-5-git-send-email-renyu.zj@linux.alibaba.com \
--to=renyu.zj@linux.alibaba.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mike.leach@linaro.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
--cc=xueshuai@linux.alibaba.com \
--cc=zhuo.song@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).