linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Ian Rogers <irogers@google.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	John Garry <john.garry@huawei.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Andi Kleen <ak@linux.intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Michael Petlan <mpetlan@redhat.com>,
	Stephane Eranian <eranian@google.com>,
	Namhyung Kim <namhyung@kernel.org>,
	linux-perf-users@vger.kernel.org
Subject: Re: [RFC 00/59] libperf: Move in event parse code
Date: Mon, 8 Nov 2021 22:50:31 +0100	[thread overview]
Message-ID: <YYmbp9qQGpf5xdqS@krava> (raw)
In-Reply-To: <CAP-5=fVB8G4bdb9T=FncRTh9oBVKCS=+=eowAO+YSgAhab+Dtg@mail.gmail.com>

On Mon, Nov 08, 2021 at 10:50:01AM -0800, Ian Rogers wrote:
> On Mon, Nov 8, 2021 at 5:37 AM Jiri Olsa <jolsa@redhat.com> wrote:
> >
> > hi,
> > this *RFC* patchset moves event parser code to libperf.
> >
> > It keeps the current perf functionality intact (hopefully)
> > and adds new libperf_parse_events API to libperf that
> > provides events parsing.
> >
> > At the moment libperf_parse_events function supports only
> > breakpoint events, so it can be used to do things like:
> > (see the new libperf test)
> >
> >   evlist = perf_evlist__new();
> >   err = libperf_parse_events(evlist, "mem:0:rw");
> >
> >
> > The other pmus parsing code directly depends on parsing
> > code, so now when the parser is in the libperf, it will
> > be easier to add the rest of pmus support.
> >
> > I'm curious on any early feedback because it's big change.
> > My primary target is using this interface for bpftool prog
> > profile to allow using all the perf events there.
> >
> > Also available in here:
> >   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
> >   libperf/parse
> >
> >
> > I'm Cc-ing most of the folks just on the cover email,
> > because it's a lot of changes and most people won't be
> > interested ;-)
> >
> > Please check the linux-perf-users mailing list or the git
> > branch above for all the changes.
> >
> > thanks,
> > jirka
> 
> It is a big change but I'm positive about it. Perhaps bpftool can use
> libpfm4 in the short-term ;-) There are lots of small cleanups and
> documentation improvements that can be done. Getting the main move
> done quickly will help avoid the merge conflicts. I foresee conflicts
> with my un-merged changes (reviews welcome :-) ):

I rebased this several times already and it's not actually that bad,
so I don't mind ;-)

but there's pmu-events move and perhaps others that could be done
separately if nobody objects the whole event parser move idea

> 
> new literals in metrics and a source_count function:
> https://lore.kernel.org/lkml/20211105170943.3479315-1-irogers@google.com/
> 
> kunit style cleanup:
> https://lore.kernel.org/lkml/20211104064208.3156807-1-irogers@google.com/

yep, it's on my radar

> 
> I would like to see pmu-events cleaned up. Some ideas here are:
> 
> 1) moving jevents to a python program to simplify its maintenance -
> 100s of lines of json parsing code would turn into a single import and
> we'd cease having an out dated for of jsmn

I think we have some tests for jevents, but we'd need more
if we wanted to do this imo

> 
> 2) the pmu_events_map holds both events and metrics. Moving pmu-events
> into libperf probably means something for the metrics code, should it
> move to libperf too?

yes when we want metrics parsing in libperf, pmu-events is base
for both event and metric parsing, metric code in perf should not
be affected by this move

> 
> 3) an issue with the existing pmu_events_map is that it is a struct
> with lots of pointers. Most of the pointers are to .rodata strings.
> With PIE the strings can end up anywhere in memory and so relocations
> are needed for what is about 1.5MB worth of data. It'd be nice if perf
> wasn't relocating all of that every time it starts. A solution would
> be to turn all the events into a giant string (with deduplication,
> etc.) and then to do something like leb128 encode offsets into the
> string (many offsets are 0 and leb128 would encode that as a single
> byte). As the string offsets, or leb128 encoded offsets, are constant
> then they can go in .rodata and don't require relocating. We should be
> able to shave something like 1MB off the binary size while improving
> startup performance. Adding the logic to jevents.c would be more yucky
> than in python imo.

nice catch! I'm ok with python, but I wouldn't mind even the jevens solution ;-)

thanks,
jirka

> 
> Thanks,
> Ian
> 
> > Cc: John Garry <john.garry@huawei.com>
> > Cc: Jin Yao <yao.jin@linux.intel.com>
> > Cc: Andi Kleen <ak@linux.intel.com>
> > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> > Cc: Ingo Molnar <mingo@kernel.org>
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> > Cc: Michael Petlan <mpetlan@redhat.com>
> > Cc: Stephane Eranian <eranian@google.com>
> > ---
> > Jiri Olsa (59):
> >       libperf: Move pmu-events.h file to libperf
> >       libperf: Move pmu-events framework to libperf
> >       libperf: Move pmu-events build to libperf
> >       libperf: Move perf_pmu__format_parse to libperf
> >       tools api fs: Move in the fncache from perf
> >       libperf: Move in the pmu hybrid support
> >       libperf: Move name to perf_evsel
> >       libperf: Move auto_merge_stats to perf_evsel
> >       libperf: Move config_terms to perf_evsel
> >       libperf: Move metric_id to perf_evsel
> >       libperf: Move tool_event to perf_evsel
> >       libperf: Move unit to perf_evsel
> >       libperf: Move exclude_GH to perf_evsel
> >       libperf: Move sample_read to perf_evsel
> >       libperf: Move precise_max to perf_evsel
> >       libperf: Move weak_group to perf_evsel
> >       libperf: Move bpf_counter to perf_evsel
> >       libperf: Move group_name to perf_evsel
> >       perf tools: Fix parse_events_term__num call
> >       perf tools: Pass parse_state all the way down to __add_event
> >       perf tools: Pass parse_state all the way down to add_tracepoint
> >       perf tools: Add evsel__new callback to parse_state_ops
> >       perf tools: Add evsel__new_tp callback to parse_state_ops
> >       perf tools: Add loc_term and loc_val helpers to parse_events_term__str
> >       perf tools: Add loc_term and loc_val helpers to parse_events_term__num
> >       libperf: Move in the event_symbols_hw/event_symbols_sw
> >       libperf: Move in struct parse_events_term code
> >       perf tools: Add perf_evsel__add_event function
> >       perf tools: Change struct parse_events_state::evlist to perf_evlist
> >       libperf: Move in struct parse_events_state
> >       perf tools: Move event_attr_init in evsel__new_idx function
> >       libperf: Move in perf_pmu__warn_invalid_config function
> >       libperf: Move in perf_evsel__add_event function
> >       perf tools: Move parse_events_update_lists to parser unit
> >       libperf: Add perf_evsel__is_group_leader function
> >       perf tools: Make parse_events__modifier_event work over perf_evsel
> >       perf tool: Pass perf_guest in struct parse_events_state
> >       libperf: Move in parse_events__modifier_group/event functions
> >       libperf: Move in parse_events__handle_error function
> >       libperf: Move in parse_events_evlist_error function
> >       perf tools: Add perf_evsel__delete callback to struct parse_events_ops
> >       libperf: Move in parse_events_name function
> >       perf tools: Move out parse_events_add_pmu fallback from parser code
> >       perf tools: Add add_pmu callback to struct parse_events_ops
> >       perf tools: Add add_pmu_multi callback to struct parse_events_ops
> >       perf tools: Add add_numeric callback to struct parse_events_ops
> >       perf tools: Add add_cache callback to struct parse_events_ops
> >       perf tools: Add add_breakpoint callback to struct parse_events_ops
> >       perf tools: Add add_tracepoint callback to struct parse_events_ops
> >       perf tools: Add add_bpf callback to struct parse_events_ops
> >       perf tools: Add add_tool callback to struct parse_events_ops
> >       perf tools: Add set_leader callback to struct parse_events_ops
> >       perf tools: Add parse_check callback to struct parse_events_ops
> >       perf tools: Move PE_* enums in parse_events__scanner
> >       libperf: Move in parse-events flex/bison parser
> >       libperf: Move in parse_events_add_breakpoint function
> >       libperf: Move in some lib objects from perf
> >       libperf: Add libperf_parse_events function
> >       libperf: Add parse-events test
> >
> >  tools/lib/api/fs/Build                             |   1 +
> >  tools/{perf/util => lib/api/fs}/fncache.c          |   4 +-
> >  tools/lib/api/fs/fs.h                              |   2 +
> >  tools/lib/perf/Build                               |  79 ++
> >  tools/lib/perf/Makefile                            |  40 +-
> >  tools/lib/perf/include/internal/evsel.h            |  30 +
> >  tools/lib/perf/include/internal/parse-events.h     | 203 +++++
> >  .../perf/include/internal}/pmu-hybrid.h            |   2 +-
> >  tools/lib/perf/include/internal/pmu.h              |  59 ++
> >  tools/lib/perf/include/perf/evlist.h               |   2 +
> >  .../perf/include/perf}/pmu-events.h                |   0
> >  tools/lib/perf/libperf.map                         |   1 +
> >  tools/lib/perf/parse-events.c                      | 875 +++++++++++++++++++
> >  tools/{perf/util => lib/perf}/parse-events.l       |  16 +-
> >  tools/{perf/util => lib/perf}/parse-events.y       | 197 +++--
> >  tools/{ => lib}/perf/pmu-events/Build              |   2 +-
> >  tools/{ => lib}/perf/pmu-events/README             |   0
> >  .../pmu-events/arch/arm64/ampere/emag/branch.json  |   0
> >  .../pmu-events/arch/arm64/ampere/emag/bus.json     |   0
> >  .../pmu-events/arch/arm64/ampere/emag/cache.json   |   0
> >  .../pmu-events/arch/arm64/ampere/emag/clock.json   |   0
> >  .../arch/arm64/ampere/emag/exception.json          |   0
> >  .../arch/arm64/ampere/emag/instruction.json        |   0
> >  .../arch/arm64/ampere/emag/intrinsic.json          |   0
> >  .../pmu-events/arch/arm64/ampere/emag/memory.json  |   0
> >  .../arch/arm64/ampere/emag/pipeline.json           |   0
> >  .../arch/arm64/arm/cortex-a53/branch.json          |   0
> >  .../pmu-events/arch/arm64/arm/cortex-a53/bus.json  |   0
> >  .../arch/arm64/arm/cortex-a53/cache.json           |   0
> >  .../arch/arm64/arm/cortex-a53/memory.json          |   0
> >  .../arch/arm64/arm/cortex-a53/other.json           |   0
> >  .../arch/arm64/arm/cortex-a53/pipeline.json        |   0
> >  .../arm64/arm/cortex-a57-a72/core-imp-def.json     |   0
> >  .../arch/arm64/arm/cortex-a76-n1/branch.json       |   0
> >  .../arch/arm64/arm/cortex-a76-n1/bus.json          |   0
> >  .../arch/arm64/arm/cortex-a76-n1/cache.json        |   0
> >  .../arch/arm64/arm/cortex-a76-n1/exception.json    |   0
> >  .../arch/arm64/arm/cortex-a76-n1/instruction.json  |   0
> >  .../arch/arm64/arm/cortex-a76-n1/memory.json       |   0
> >  .../arch/arm64/arm/cortex-a76-n1/other.json        |   0
> >  .../arch/arm64/arm/cortex-a76-n1/pipeline.json     |   0
> >  .../arch/arm64/arm/neoverse-v1/branch.json         |   0
> >  .../pmu-events/arch/arm64/arm/neoverse-v1/bus.json |   0
> >  .../arch/arm64/arm/neoverse-v1/cache.json          |   0
> >  .../arch/arm64/arm/neoverse-v1/exception.json      |   0
> >  .../arch/arm64/arm/neoverse-v1/instruction.json    |   0
> >  .../arch/arm64/arm/neoverse-v1/memory.json         |   0
> >  .../arch/arm64/arm/neoverse-v1/other.json          |   0
> >  .../arch/arm64/arm/neoverse-v1/pipeline.json       |   0
> >  .../arch/arm64/armv8-common-and-microarch.json     |   0
> >  .../pmu-events/arch/arm64/armv8-recommended.json   |   0
> >  .../arch/arm64/cavium/thunderx2/core-imp-def.json  |   0
> >  .../arch/arm64/freescale/imx8mm/sys/ddrc.json      |   0
> >  .../arch/arm64/freescale/imx8mm/sys/metrics.json   |   0
> >  .../arch/arm64/freescale/imx8mn/sys/ddrc.json      |   0
> >  .../arch/arm64/freescale/imx8mn/sys/metrics.json   |   0
> >  .../arch/arm64/freescale/imx8mp/sys/ddrc.json      |   0
> >  .../arch/arm64/freescale/imx8mp/sys/metrics.json   |   0
> >  .../arch/arm64/freescale/imx8mq/sys/ddrc.json      |   0
> >  .../arch/arm64/freescale/imx8mq/sys/metrics.json   |   0
> >  .../arch/arm64/fujitsu/a64fx/branch.json           |   0
> >  .../pmu-events/arch/arm64/fujitsu/a64fx/bus.json   |   0
> >  .../pmu-events/arch/arm64/fujitsu/a64fx/cache.json |   0
> >  .../pmu-events/arch/arm64/fujitsu/a64fx/cycle.json |   0
> >  .../arch/arm64/fujitsu/a64fx/exception.json        |   0
> >  .../arch/arm64/fujitsu/a64fx/instruction.json      |   0
> >  .../arch/arm64/fujitsu/a64fx/memory.json           |   0
> >  .../pmu-events/arch/arm64/fujitsu/a64fx/other.json |   0
> >  .../arch/arm64/fujitsu/a64fx/pipeline.json         |   0
> >  .../pmu-events/arch/arm64/fujitsu/a64fx/sve.json   |   0
> >  .../arch/arm64/hisilicon/hip08/core-imp-def.json   |   0
> >  .../arch/arm64/hisilicon/hip08/metrics.json        |   0
> >  .../arch/arm64/hisilicon/hip08/uncore-ddrc.json    |   0
> >  .../arch/arm64/hisilicon/hip08/uncore-hha.json     |   0
> >  .../arch/arm64/hisilicon/hip08/uncore-l3c.json     |   0
> >  .../perf/pmu-events/arch/arm64/mapfile.csv         |   0
> >  .../perf/pmu-events/arch/nds32/mapfile.csv         |   0
> >  .../perf/pmu-events/arch/nds32/n13/atcpmu.json     |   0
> >  .../perf/pmu-events/arch/powerpc/mapfile.csv       |   0
> >  .../pmu-events/arch/powerpc/power10/cache.json     |   0
> >  .../arch/powerpc/power10/floating_point.json       |   0
> >  .../pmu-events/arch/powerpc/power10/frontend.json  |   0
> >  .../pmu-events/arch/powerpc/power10/locks.json     |   0
> >  .../pmu-events/arch/powerpc/power10/marked.json    |   0
> >  .../pmu-events/arch/powerpc/power10/memory.json    |   0
> >  .../arch/powerpc/power10/nest_metrics.json         |   0
> >  .../pmu-events/arch/powerpc/power10/others.json    |   0
> >  .../pmu-events/arch/powerpc/power10/pipeline.json  |   0
> >  .../perf/pmu-events/arch/powerpc/power10/pmc.json  |   0
> >  .../arch/powerpc/power10/translation.json          |   0
> >  .../perf/pmu-events/arch/powerpc/power8/cache.json |   0
> >  .../arch/powerpc/power8/floating-point.json        |   0
> >  .../pmu-events/arch/powerpc/power8/frontend.json   |   0
> >  .../pmu-events/arch/powerpc/power8/marked.json     |   0
> >  .../pmu-events/arch/powerpc/power8/memory.json     |   0
> >  .../pmu-events/arch/powerpc/power8/metrics.json    |   0
> >  .../perf/pmu-events/arch/powerpc/power8/other.json |   0
> >  .../pmu-events/arch/powerpc/power8/pipeline.json   |   0
> >  .../perf/pmu-events/arch/powerpc/power8/pmc.json   |   0
> >  .../arch/powerpc/power8/translation.json           |   0
> >  .../perf/pmu-events/arch/powerpc/power9/cache.json |   0
> >  .../arch/powerpc/power9/floating-point.json        |   0
> >  .../pmu-events/arch/powerpc/power9/frontend.json   |   0
> >  .../pmu-events/arch/powerpc/power9/marked.json     |   0
> >  .../pmu-events/arch/powerpc/power9/memory.json     |   0
> >  .../pmu-events/arch/powerpc/power9/metrics.json    |   0
> >  .../arch/powerpc/power9/nest_metrics.json          |   0
> >  .../perf/pmu-events/arch/powerpc/power9/other.json |   0
> >  .../pmu-events/arch/powerpc/power9/pipeline.json   |   0
> >  .../perf/pmu-events/arch/powerpc/power9/pmc.json   |   0
> >  .../arch/powerpc/power9/translation.json           |   0
> >  .../perf/pmu-events/arch/s390/cf_z10/basic.json    |   0
> >  .../perf/pmu-events/arch/s390/cf_z10/crypto.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z10/extended.json |   0
> >  .../perf/pmu-events/arch/s390/cf_z13/basic.json    |   0
> >  .../perf/pmu-events/arch/s390/cf_z13/crypto.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z13/extended.json |   0
> >  .../pmu-events/arch/s390/cf_z13/transaction.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z14/basic.json    |   0
> >  .../perf/pmu-events/arch/s390/cf_z14/crypto.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z14/extended.json |   0
> >  .../pmu-events/arch/s390/cf_z14/transaction.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z15/basic.json    |   0
> >  .../perf/pmu-events/arch/s390/cf_z15/crypto.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z15/crypto6.json  |   0
> >  .../perf/pmu-events/arch/s390/cf_z15/extended.json |   0
> >  .../pmu-events/arch/s390/cf_z15/transaction.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z196/basic.json   |   0
> >  .../perf/pmu-events/arch/s390/cf_z196/crypto.json  |   0
> >  .../pmu-events/arch/s390/cf_z196/extended.json     |   0
> >  .../perf/pmu-events/arch/s390/cf_zec12/basic.json  |   0
> >  .../perf/pmu-events/arch/s390/cf_zec12/crypto.json |   0
> >  .../pmu-events/arch/s390/cf_zec12/extended.json    |   0
> >  .../pmu-events/arch/s390/cf_zec12/transaction.json |   0
> >  .../perf/pmu-events/arch/s390/mapfile.csv          |   0
> >  .../perf/pmu-events/arch/test/arch-std-events.json |   0
> >  .../pmu-events/arch/test/test_soc/cpu/branch.json  |   0
> >  .../pmu-events/arch/test/test_soc/cpu/cache.json   |   0
> >  .../pmu-events/arch/test/test_soc/cpu/other.json   |   0
> >  .../pmu-events/arch/test/test_soc/cpu/uncore.json  |   0
> >  .../pmu-events/arch/test/test_soc/sys/uncore.json  |   0
> >  .../perf/pmu-events/arch/x86/amdzen1/branch.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen1/cache.json    |   0
> >  .../perf/pmu-events/arch/x86/amdzen1/core.json     |   0
> >  .../pmu-events/arch/x86/amdzen1/data-fabric.json   |   0
> >  .../arch/x86/amdzen1/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/amdzen1/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen1/other.json    |   0
> >  .../pmu-events/arch/x86/amdzen1/recommended.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen2/branch.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen2/cache.json    |   0
> >  .../perf/pmu-events/arch/x86/amdzen2/core.json     |   0
> >  .../pmu-events/arch/x86/amdzen2/data-fabric.json   |   0
> >  .../arch/x86/amdzen2/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/amdzen2/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen2/other.json    |   0
> >  .../pmu-events/arch/x86/amdzen2/recommended.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen3/branch.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen3/cache.json    |   0
> >  .../perf/pmu-events/arch/x86/amdzen3/core.json     |   0
> >  .../pmu-events/arch/x86/amdzen3/data-fabric.json   |   0
> >  .../arch/x86/amdzen3/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/amdzen3/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/amdzen3/other.json    |   0
> >  .../pmu-events/arch/x86/amdzen3/recommended.json   |   0
> >  .../perf/pmu-events/arch/x86/bonnell/cache.json    |   0
> >  .../arch/x86/bonnell/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/bonnell/frontend.json |   0
> >  .../perf/pmu-events/arch/x86/bonnell/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/bonnell/other.json    |   0
> >  .../perf/pmu-events/arch/x86/bonnell/pipeline.json |   0
> >  .../arch/x86/bonnell/virtual-memory.json           |   0
> >  .../pmu-events/arch/x86/broadwell/bdw-metrics.json |   0
> >  .../perf/pmu-events/arch/x86/broadwell/cache.json  |   0
> >  .../arch/x86/broadwell/floating-point.json         |   0
> >  .../pmu-events/arch/x86/broadwell/frontend.json    |   0
> >  .../perf/pmu-events/arch/x86/broadwell/memory.json |   0
> >  .../perf/pmu-events/arch/x86/broadwell/other.json  |   0
> >  .../pmu-events/arch/x86/broadwell/pipeline.json    |   0
> >  .../perf/pmu-events/arch/x86/broadwell/uncore.json |   0
> >  .../arch/x86/broadwell/virtual-memory.json         |   0
> >  .../arch/x86/broadwellde/bdwde-metrics.json        |   0
> >  .../pmu-events/arch/x86/broadwellde/cache.json     |   0
> >  .../arch/x86/broadwellde/floating-point.json       |   0
> >  .../pmu-events/arch/x86/broadwellde/frontend.json  |   0
> >  .../pmu-events/arch/x86/broadwellde/memory.json    |   0
> >  .../pmu-events/arch/x86/broadwellde/other.json     |   0
> >  .../pmu-events/arch/x86/broadwellde/pipeline.json  |   0
> >  .../arch/x86/broadwellde/uncore-cache.json         |   0
> >  .../arch/x86/broadwellde/uncore-memory.json        |   0
> >  .../arch/x86/broadwellde/uncore-power.json         |   0
> >  .../arch/x86/broadwellde/virtual-memory.json       |   0
> >  .../arch/x86/broadwellx/bdx-metrics.json           |   0
> >  .../perf/pmu-events/arch/x86/broadwellx/cache.json |   0
> >  .../arch/x86/broadwellx/floating-point.json        |   0
> >  .../pmu-events/arch/x86/broadwellx/frontend.json   |   0
> >  .../pmu-events/arch/x86/broadwellx/memory.json     |   0
> >  .../perf/pmu-events/arch/x86/broadwellx/other.json |   0
> >  .../pmu-events/arch/x86/broadwellx/pipeline.json   |   0
> >  .../arch/x86/broadwellx/uncore-cache.json          |   0
> >  .../arch/x86/broadwellx/uncore-interconnect.json   |   0
> >  .../arch/x86/broadwellx/uncore-memory.json         |   0
> >  .../arch/x86/broadwellx/uncore-power.json          |   0
> >  .../arch/x86/broadwellx/virtual-memory.json        |   0
> >  .../pmu-events/arch/x86/cascadelakex/cache.json    |   0
> >  .../arch/x86/cascadelakex/clx-metrics.json         |   0
> >  .../arch/x86/cascadelakex/floating-point.json      |   0
> >  .../pmu-events/arch/x86/cascadelakex/frontend.json |   0
> >  .../pmu-events/arch/x86/cascadelakex/memory.json   |   0
> >  .../pmu-events/arch/x86/cascadelakex/other.json    |   0
> >  .../pmu-events/arch/x86/cascadelakex/pipeline.json |   0
> >  .../arch/x86/cascadelakex/uncore-memory.json       |   0
> >  .../arch/x86/cascadelakex/uncore-other.json        |   0
> >  .../arch/x86/cascadelakex/virtual-memory.json      |   0
> >  .../pmu-events/arch/x86/elkhartlake/cache.json     |   0
> >  .../arch/x86/elkhartlake/ehl-metrics.json          |   0
> >  .../arch/x86/elkhartlake/floating-point.json       |   0
> >  .../pmu-events/arch/x86/elkhartlake/frontend.json  |   0
> >  .../pmu-events/arch/x86/elkhartlake/memory.json    |   0
> >  .../pmu-events/arch/x86/elkhartlake/other.json     |   0
> >  .../pmu-events/arch/x86/elkhartlake/pipeline.json  |   0
> >  .../arch/x86/elkhartlake/virtual-memory.json       |   0
> >  .../perf/pmu-events/arch/x86/goldmont/cache.json   |   0
> >  .../pmu-events/arch/x86/goldmont/frontend.json     |   0
> >  .../perf/pmu-events/arch/x86/goldmont/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/goldmont/other.json   |   0
> >  .../pmu-events/arch/x86/goldmont/pipeline.json     |   0
> >  .../arch/x86/goldmont/virtual-memory.json          |   0
> >  .../pmu-events/arch/x86/goldmontplus/cache.json    |   0
> >  .../pmu-events/arch/x86/goldmontplus/frontend.json |   0
> >  .../pmu-events/arch/x86/goldmontplus/memory.json   |   0
> >  .../pmu-events/arch/x86/goldmontplus/other.json    |   0
> >  .../pmu-events/arch/x86/goldmontplus/pipeline.json |   0
> >  .../arch/x86/goldmontplus/virtual-memory.json      |   0
> >  .../perf/pmu-events/arch/x86/haswell/cache.json    |   0
> >  .../arch/x86/haswell/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/haswell/frontend.json |   0
> >  .../pmu-events/arch/x86/haswell/hsw-metrics.json   |   0
> >  .../perf/pmu-events/arch/x86/haswell/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/haswell/other.json    |   0
> >  .../perf/pmu-events/arch/x86/haswell/pipeline.json |   0
> >  .../perf/pmu-events/arch/x86/haswell/uncore.json   |   0
> >  .../arch/x86/haswell/virtual-memory.json           |   0
> >  .../perf/pmu-events/arch/x86/haswellx/cache.json   |   0
> >  .../arch/x86/haswellx/floating-point.json          |   0
> >  .../pmu-events/arch/x86/haswellx/frontend.json     |   0
> >  .../pmu-events/arch/x86/haswellx/hsx-metrics.json  |   0
> >  .../perf/pmu-events/arch/x86/haswellx/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/haswellx/other.json   |   0
> >  .../pmu-events/arch/x86/haswellx/pipeline.json     |   0
> >  .../pmu-events/arch/x86/haswellx/uncore-cache.json |   0
> >  .../arch/x86/haswellx/uncore-interconnect.json     |   0
> >  .../arch/x86/haswellx/uncore-memory.json           |   0
> >  .../pmu-events/arch/x86/haswellx/uncore-power.json |   0
> >  .../arch/x86/haswellx/virtual-memory.json          |   0
> >  .../perf/pmu-events/arch/x86/icelake/cache.json    |   0
> >  .../arch/x86/icelake/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/icelake/frontend.json |   0
> >  .../pmu-events/arch/x86/icelake/icl-metrics.json   |   0
> >  .../perf/pmu-events/arch/x86/icelake/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/icelake/other.json    |   0
> >  .../perf/pmu-events/arch/x86/icelake/pipeline.json |   0
> >  .../arch/x86/icelake/virtual-memory.json           |   0
> >  .../perf/pmu-events/arch/x86/icelakex/cache.json   |   0
> >  .../arch/x86/icelakex/floating-point.json          |   0
> >  .../pmu-events/arch/x86/icelakex/frontend.json     |   0
> >  .../pmu-events/arch/x86/icelakex/icx-metrics.json  |   0
> >  .../perf/pmu-events/arch/x86/icelakex/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/icelakex/other.json   |   0
> >  .../pmu-events/arch/x86/icelakex/pipeline.json     |   0
> >  .../arch/x86/icelakex/uncore-memory.json           |   0
> >  .../pmu-events/arch/x86/icelakex/uncore-other.json |   0
> >  .../pmu-events/arch/x86/icelakex/uncore-power.json |   0
> >  .../arch/x86/icelakex/virtual-memory.json          |   0
> >  .../perf/pmu-events/arch/x86/ivybridge/cache.json  |   0
> >  .../arch/x86/ivybridge/floating-point.json         |   0
> >  .../pmu-events/arch/x86/ivybridge/frontend.json    |   0
> >  .../pmu-events/arch/x86/ivybridge/ivb-metrics.json |   0
> >  .../perf/pmu-events/arch/x86/ivybridge/memory.json |   0
> >  .../perf/pmu-events/arch/x86/ivybridge/other.json  |   0
> >  .../pmu-events/arch/x86/ivybridge/pipeline.json    |   0
> >  .../perf/pmu-events/arch/x86/ivybridge/uncore.json |   0
> >  .../arch/x86/ivybridge/virtual-memory.json         |   0
> >  .../perf/pmu-events/arch/x86/ivytown/cache.json    |   0
> >  .../arch/x86/ivytown/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/ivytown/frontend.json |   0
> >  .../pmu-events/arch/x86/ivytown/ivt-metrics.json   |   0
> >  .../perf/pmu-events/arch/x86/ivytown/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/ivytown/other.json    |   0
> >  .../perf/pmu-events/arch/x86/ivytown/pipeline.json |   0
> >  .../pmu-events/arch/x86/ivytown/uncore-cache.json  |   0
> >  .../arch/x86/ivytown/uncore-interconnect.json      |   0
> >  .../pmu-events/arch/x86/ivytown/uncore-memory.json |   0
> >  .../pmu-events/arch/x86/ivytown/uncore-power.json  |   0
> >  .../arch/x86/ivytown/virtual-memory.json           |   0
> >  .../perf/pmu-events/arch/x86/jaketown/cache.json   |   0
> >  .../arch/x86/jaketown/floating-point.json          |   0
> >  .../pmu-events/arch/x86/jaketown/frontend.json     |   0
> >  .../pmu-events/arch/x86/jaketown/jkt-metrics.json  |   0
> >  .../perf/pmu-events/arch/x86/jaketown/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/jaketown/other.json   |   0
> >  .../pmu-events/arch/x86/jaketown/pipeline.json     |   0
> >  .../pmu-events/arch/x86/jaketown/uncore-cache.json |   0
> >  .../arch/x86/jaketown/uncore-interconnect.json     |   0
> >  .../arch/x86/jaketown/uncore-memory.json           |   0
> >  .../pmu-events/arch/x86/jaketown/uncore-power.json |   0
> >  .../arch/x86/jaketown/virtual-memory.json          |   0
> >  .../pmu-events/arch/x86/knightslanding/cache.json  |   0
> >  .../arch/x86/knightslanding/frontend.json          |   0
> >  .../pmu-events/arch/x86/knightslanding/memory.json |   0
> >  .../arch/x86/knightslanding/pipeline.json          |   0
> >  .../arch/x86/knightslanding/uncore-memory.json     |   0
> >  .../arch/x86/knightslanding/virtual-memory.json    |   0
> >  .../{ => lib}/perf/pmu-events/arch/x86/mapfile.csv |   0
> >  .../perf/pmu-events/arch/x86/nehalemep/cache.json  |   0
> >  .../arch/x86/nehalemep/floating-point.json         |   0
> >  .../pmu-events/arch/x86/nehalemep/frontend.json    |   0
> >  .../perf/pmu-events/arch/x86/nehalemep/memory.json |   0
> >  .../perf/pmu-events/arch/x86/nehalemep/other.json  |   0
> >  .../pmu-events/arch/x86/nehalemep/pipeline.json    |   0
> >  .../arch/x86/nehalemep/virtual-memory.json         |   0
> >  .../perf/pmu-events/arch/x86/nehalemex/cache.json  |   0
> >  .../arch/x86/nehalemex/floating-point.json         |   0
> >  .../pmu-events/arch/x86/nehalemex/frontend.json    |   0
> >  .../perf/pmu-events/arch/x86/nehalemex/memory.json |   0
> >  .../perf/pmu-events/arch/x86/nehalemex/other.json  |   0
> >  .../pmu-events/arch/x86/nehalemex/pipeline.json    |   0
> >  .../arch/x86/nehalemex/virtual-memory.json         |   0
> >  .../pmu-events/arch/x86/sandybridge/cache.json     |   0
> >  .../arch/x86/sandybridge/floating-point.json       |   0
> >  .../pmu-events/arch/x86/sandybridge/frontend.json  |   0
> >  .../pmu-events/arch/x86/sandybridge/memory.json    |   0
> >  .../pmu-events/arch/x86/sandybridge/other.json     |   0
> >  .../pmu-events/arch/x86/sandybridge/pipeline.json  |   0
> >  .../arch/x86/sandybridge/snb-metrics.json          |   0
> >  .../pmu-events/arch/x86/sandybridge/uncore.json    |   0
> >  .../arch/x86/sandybridge/virtual-memory.json       |   0
> >  .../perf/pmu-events/arch/x86/silvermont/cache.json |   0
> >  .../pmu-events/arch/x86/silvermont/frontend.json   |   0
> >  .../pmu-events/arch/x86/silvermont/memory.json     |   0
> >  .../perf/pmu-events/arch/x86/silvermont/other.json |   0
> >  .../pmu-events/arch/x86/silvermont/pipeline.json   |   0
> >  .../arch/x86/silvermont/virtual-memory.json        |   0
> >  .../perf/pmu-events/arch/x86/skylake/cache.json    |   0
> >  .../arch/x86/skylake/floating-point.json           |   0
> >  .../perf/pmu-events/arch/x86/skylake/frontend.json |   0
> >  .../perf/pmu-events/arch/x86/skylake/memory.json   |   0
> >  .../perf/pmu-events/arch/x86/skylake/other.json    |   0
> >  .../perf/pmu-events/arch/x86/skylake/pipeline.json |   0
> >  .../pmu-events/arch/x86/skylake/skl-metrics.json   |   0
> >  .../perf/pmu-events/arch/x86/skylake/uncore.json   |   0
> >  .../arch/x86/skylake/virtual-memory.json           |   0
> >  .../perf/pmu-events/arch/x86/skylakex/cache.json   |   0
> >  .../arch/x86/skylakex/floating-point.json          |   0
> >  .../pmu-events/arch/x86/skylakex/frontend.json     |   0
> >  .../perf/pmu-events/arch/x86/skylakex/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/skylakex/other.json   |   0
> >  .../pmu-events/arch/x86/skylakex/pipeline.json     |   0
> >  .../pmu-events/arch/x86/skylakex/skx-metrics.json  |   0
> >  .../arch/x86/skylakex/uncore-memory.json           |   0
> >  .../pmu-events/arch/x86/skylakex/uncore-other.json |   0
> >  .../arch/x86/skylakex/virtual-memory.json          |   0
> >  .../perf/pmu-events/arch/x86/tigerlake/cache.json  |   0
> >  .../arch/x86/tigerlake/floating-point.json         |   0
> >  .../pmu-events/arch/x86/tigerlake/frontend.json    |   0
> >  .../perf/pmu-events/arch/x86/tigerlake/memory.json |   0
> >  .../perf/pmu-events/arch/x86/tigerlake/other.json  |   0
> >  .../pmu-events/arch/x86/tigerlake/pipeline.json    |   0
> >  .../pmu-events/arch/x86/tigerlake/tgl-metrics.json |   0
> >  .../arch/x86/tigerlake/virtual-memory.json         |   0
> >  .../perf/pmu-events/arch/x86/tremontx/cache.json   |   0
> >  .../pmu-events/arch/x86/tremontx/frontend.json     |   0
> >  .../perf/pmu-events/arch/x86/tremontx/memory.json  |   0
> >  .../perf/pmu-events/arch/x86/tremontx/other.json   |   0
> >  .../pmu-events/arch/x86/tremontx/pipeline.json     |   0
> >  .../arch/x86/tremontx/uncore-memory.json           |   0
> >  .../pmu-events/arch/x86/tremontx/uncore-other.json |   0
> >  .../pmu-events/arch/x86/tremontx/uncore-power.json |   0
> >  .../arch/x86/tremontx/virtual-memory.json          |   0
> >  .../pmu-events/arch/x86/westmereep-dp/cache.json   |   0
> >  .../arch/x86/westmereep-dp/floating-point.json     |   0
> >  .../arch/x86/westmereep-dp/frontend.json           |   0
> >  .../pmu-events/arch/x86/westmereep-dp/memory.json  |   0
> >  .../pmu-events/arch/x86/westmereep-dp/other.json   |   0
> >  .../arch/x86/westmereep-dp/pipeline.json           |   0
> >  .../arch/x86/westmereep-dp/virtual-memory.json     |   0
> >  .../pmu-events/arch/x86/westmereep-sp/cache.json   |   0
> >  .../arch/x86/westmereep-sp/floating-point.json     |   0
> >  .../arch/x86/westmereep-sp/frontend.json           |   0
> >  .../pmu-events/arch/x86/westmereep-sp/memory.json  |   0
> >  .../pmu-events/arch/x86/westmereep-sp/other.json   |   0
> >  .../arch/x86/westmereep-sp/pipeline.json           |   0
> >  .../arch/x86/westmereep-sp/virtual-memory.json     |   0
> >  .../perf/pmu-events/arch/x86/westmereex/cache.json |   0
> >  .../arch/x86/westmereex/floating-point.json        |   0
> >  .../pmu-events/arch/x86/westmereex/frontend.json   |   0
> >  .../pmu-events/arch/x86/westmereex/memory.json     |   0
> >  .../perf/pmu-events/arch/x86/westmereex/other.json |   0
> >  .../pmu-events/arch/x86/westmereex/pipeline.json   |   0
> >  .../arch/x86/westmereex/virtual-memory.json        |   0
> >  tools/{ => lib}/perf/pmu-events/jevents.c          |   6 +-
> >  tools/{ => lib}/perf/pmu-events/jsmn.c             |   0
> >  tools/{ => lib}/perf/pmu-events/jsmn.h             |   0
> >  tools/{ => lib}/perf/pmu-events/json.c             |   0
> >  tools/{ => lib}/perf/pmu-events/json.h             |   0
> >  tools/{perf/util => lib/perf}/pmu-hybrid.c         |   3 +-
> >  tools/lib/perf/pmu.c                               | 117 +++
> >  tools/{perf/util => lib/perf}/pmu.l                |   3 +-
> >  tools/{perf/util => lib/perf}/pmu.y                |   2 +-
> >  tools/lib/perf/tests/Build                         |   1 +
> >  tools/lib/perf/tests/main.c                        |   1 +
> >  tools/lib/perf/tests/test-evlist.c                 |   2 +
> >  tools/lib/perf/tests/test-parse-events.c           |  43 +
> >  tools/lib/perf/tests/tests.h                       |   1 +
> >  tools/perf/Makefile.perf                           |  22 +-
> >  tools/perf/arch/x86/util/kvm-stat.c                |   8 +-
> >  tools/perf/arch/x86/util/pmu.c                     |   1 -
> >  tools/perf/builtin-c2c.c                           |   2 +-
> >  tools/perf/builtin-kvm.c                           |   6 +-
> >  tools/perf/builtin-list.c                          |   2 +-
> >  tools/perf/builtin-mem.c                           |   2 +-
> >  tools/perf/builtin-record.c                        |  12 +-
> >  tools/perf/builtin-stat.c                          |  18 +-
> >  tools/perf/builtin-top.c                           |   2 +-
> >  tools/perf/builtin-trace.c                         |  12 +-
> >  tools/perf/tests/event_update.c                    |   2 +-
> >  tools/perf/tests/evsel-roundtrip-name.c            |   2 +-
> >  tools/perf/tests/evsel-tp-sched.c                  |   6 +-
> >  tools/perf/tests/expand-cgroup.c                   |   8 +-
> >  tools/perf/tests/parse-events.c                    |  87 +-
> >  tools/perf/tests/parse-metric.c                    |   6 +-
> >  tools/perf/tests/perf-time-to-tsc.c                |   2 +-
> >  tools/perf/tests/pmu-events.c                      |   2 +-
> >  tools/perf/util/Build                              |  55 --
> >  tools/perf/util/amd-sample-raw.c                   |   2 +-
> >  tools/perf/util/arm-spe.c                          |   6 +-
> >  tools/perf/util/auxtrace.c                         |   6 +-
> >  tools/perf/util/bpf_counter.c                      |   2 +-
> >  tools/perf/util/cputopo.c                          |   2 +-
> >  tools/perf/util/evlist-hybrid.c                    |   5 +-
> >  tools/perf/util/evlist.c                           |  18 +-
> >  tools/perf/util/evsel.c                            | 109 +--
> >  tools/perf/util/evsel.h                            |  23 +-
> >  tools/perf/util/evsel_fprintf.c                    |   2 +-
> >  tools/perf/util/fncache.h                          |   7 -
> >  tools/perf/util/header.c                           |  32 +-
> >  tools/perf/util/intel-pt.c                         |   6 +-
> >  tools/perf/util/mem-events.c                       |   2 +-
> >  tools/perf/util/metricgroup.c                      |  22 +-
> >  tools/perf/util/metricgroup.h                      |   2 +-
> >  tools/perf/util/parse-events-hybrid.c              |  26 +-
> >  tools/perf/util/parse-events-hybrid.h              |   6 +-
> >  tools/perf/util/parse-events.c                     | 971 +++++----------------
> >  tools/perf/util/parse-events.h                     | 167 +---
> >  tools/perf/util/pmu.c                              | 113 +--
> >  tools/perf/util/pmu.h                              |  44 +-
> >  tools/perf/util/python-ext-sources                 |   2 -
> >  tools/perf/util/record.c                           |   4 +-
> >  tools/perf/util/s390-sample-raw.c                  |   2 +-
> >  tools/perf/util/sideband_evlist.c                  |   2 +-
> >  tools/perf/util/sort.c                             |   6 +-
> >  tools/perf/util/srccode.c                          |  10 +-
> >  tools/perf/util/stat-display.c                     |  29 +-
> >  tools/perf/util/stat-shadow.c                      |  14 +-
> >  tools/perf/util/synthetic-events.c                 |  10 +-
> >  tools/perf/util/trace-event-info.c                 |   6 +-
> >  466 files changed, 2051 insertions(+), 1556 deletions(-)
> >  rename tools/{perf/util => lib/api/fs}/fncache.c (95%)
> >  create mode 100644 tools/lib/perf/include/internal/parse-events.h
> >  rename tools/{perf/util => lib/perf/include/internal}/pmu-hybrid.h (96%)
> >  create mode 100644 tools/lib/perf/include/internal/pmu.h
> >  rename tools/{perf/pmu-events => lib/perf/include/perf}/pmu-events.h (100%)
> >  create mode 100644 tools/lib/perf/parse-events.c
> >  rename tools/{perf/util => lib/perf}/parse-events.l (96%)
> >  rename tools/{perf/util => lib/perf}/parse-events.y (76%)
> >  rename tools/{ => lib}/perf/pmu-events/Build (87%)
> >  rename tools/{ => lib}/perf/pmu-events/README (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/bus.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/clock.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/exception.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/instruction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/intrinsic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/ampere/emag/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/bus.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a57-a72/core-imp-def.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/bus.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/exception.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/instruction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/bus.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/exception.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/instruction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/arm/neoverse-v1/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/armv8-common-and-microarch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/armv8-recommended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mm/sys/ddrc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mm/sys/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mn/sys/ddrc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mn/sys/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mp/sys/ddrc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mp/sys/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mq/sys/ddrc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/freescale/imx8mq/sys/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/bus.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/cycle.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/exception.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/instruction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/fujitsu/a64fx/sve.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/arm64/mapfile.csv (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/nds32/mapfile.csv (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/nds32/n13/atcpmu.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/mapfile.csv (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/floating_point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/locks.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/marked.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/nest_metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/others.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/pmc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power10/translation.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/marked.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/pmc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power8/translation.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/marked.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/nest_metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/pmc.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/powerpc/power9/translation.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z10/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z10/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z10/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z13/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z13/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z13/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z13/transaction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z14/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z14/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z14/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z14/transaction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z15/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z15/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z15/crypto6.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z15/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z15/transaction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z196/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z196/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_z196/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_zec12/basic.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_zec12/crypto.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_zec12/extended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/cf_zec12/transaction.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/s390/mapfile.csv (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/arch-std-events.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/test_soc/cpu/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/test_soc/cpu/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/test_soc/cpu/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/test_soc/cpu/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/test/test_soc/sys/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/core.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/data-fabric.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen1/recommended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/core.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/data-fabric.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen2/recommended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/branch.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/core.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/data-fabric.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/amdzen3/recommended.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/bonnell/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwell/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/bdwde-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellde/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/bdx-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/broadwellx/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/uncore-other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/cascadelakex/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/ehl-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/elkhartlake/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmont/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/goldmontplus/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/hsw-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswell/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/hsx-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/uncore-cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/haswellx/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/icl-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelake/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/icx-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/uncore-other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/icelakex/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/ivb-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivybridge/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/ivt-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/uncore-cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/ivytown/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/jkt-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/uncore-cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/jaketown/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/knightslanding/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/mapfile.csv (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemep/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/nehalemex/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/snb-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/sandybridge/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/silvermont/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/skl-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/uncore.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylake/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/skx-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/uncore-other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/skylakex/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/tgl-metrics.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tigerlake/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/uncore-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/uncore-other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/uncore-power.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/tremontx/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-dp/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereep-sp/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/cache.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/floating-point.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/frontend.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/other.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/pipeline.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/arch/x86/westmereex/virtual-memory.json (100%)
> >  rename tools/{ => lib}/perf/pmu-events/jevents.c (99%)
> >  rename tools/{ => lib}/perf/pmu-events/jsmn.c (100%)
> >  rename tools/{ => lib}/perf/pmu-events/jsmn.h (100%)
> >  rename tools/{ => lib}/perf/pmu-events/json.c (100%)
> >  rename tools/{ => lib}/perf/pmu-events/json.h (100%)
> >  rename tools/{perf/util => lib/perf}/pmu-hybrid.c (97%)
> >  create mode 100644 tools/lib/perf/pmu.c
> >  rename tools/{perf/util => lib/perf}/pmu.l (91%)
> >  rename tools/{perf/util => lib/perf}/pmu.y (98%)
> >  create mode 100644 tools/lib/perf/tests/test-parse-events.c
> >  delete mode 100644 tools/perf/util/fncache.h
> >
> 


      reply	other threads:[~2021-11-08 21:50 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-08 13:36 [RFC 00/59] libperf: Move in event parse code Jiri Olsa
2021-11-08 13:36 ` [PATCH 01/59] libperf: Move pmu-events.h file to libperf Jiri Olsa
2021-11-08 13:36 ` [PATCH 03/59] libperf: Move pmu-events build " Jiri Olsa
2021-11-08 13:36 ` [PATCH 04/59] libperf: Move perf_pmu__format_parse " Jiri Olsa
2021-11-08 13:36 ` [PATCH 05/59] tools api fs: Move in the fncache from perf Jiri Olsa
2021-11-08 17:46   ` Ian Rogers
2021-11-08 21:15     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 06/59] libperf: Move in the pmu hybrid support Jiri Olsa
2021-11-08 13:36 ` [PATCH 07/59] libperf: Move name to perf_evsel Jiri Olsa
2021-11-08 13:36 ` [PATCH 08/59] libperf: Move auto_merge_stats " Jiri Olsa
2021-11-08 13:36 ` [PATCH 09/59] libperf: Move config_terms " Jiri Olsa
2021-11-08 13:36 ` [PATCH 10/59] libperf: Move metric_id " Jiri Olsa
2021-11-08 13:36 ` [PATCH 11/59] libperf: Move tool_event " Jiri Olsa
2021-11-08 13:36 ` [PATCH 12/59] libperf: Move unit " Jiri Olsa
2021-11-08 13:36 ` [PATCH 13/59] libperf: Move exclude_GH " Jiri Olsa
2021-11-08 17:53   ` Ian Rogers
2021-11-08 21:16     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 14/59] libperf: Move sample_read " Jiri Olsa
2021-11-08 13:36 ` [PATCH 15/59] libperf: Move precise_max " Jiri Olsa
2021-11-08 13:36 ` [PATCH 16/59] libperf: Move weak_group " Jiri Olsa
2021-11-08 13:36 ` [PATCH 17/59] libperf: Move bpf_counter " Jiri Olsa
2021-11-08 13:36 ` [PATCH 18/59] libperf: Move group_name " Jiri Olsa
2021-11-08 17:58   ` Ian Rogers
2021-11-08 18:07     ` Arnaldo Carvalho de Melo
2021-11-08 21:19       ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 19/59] perf tools: Fix parse_events_term__num call Jiri Olsa
2021-11-08 18:15   ` Ian Rogers
2021-11-08 21:21     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 20/59] perf tools: Pass parse_state all the way down to __add_event Jiri Olsa
2021-11-08 13:36 ` [PATCH 21/59] perf tools: Pass parse_state all the way down to add_tracepoint Jiri Olsa
2021-11-08 13:36 ` [PATCH 22/59] perf tools: Add evsel__new callback to parse_state_ops Jiri Olsa
2021-11-08 13:36 ` [PATCH 23/59] perf tools: Add evsel__new_tp " Jiri Olsa
2021-11-08 13:36 ` [PATCH 24/59] perf tools: Add loc_term and loc_val helpers to parse_events_term__str Jiri Olsa
2021-11-08 13:36 ` [PATCH 25/59] perf tools: Add loc_term and loc_val helpers to parse_events_term__num Jiri Olsa
2021-11-08 13:36 ` [PATCH 26/59] libperf: Move in the event_symbols_hw/event_symbols_sw Jiri Olsa
2021-11-08 13:36 ` [PATCH 27/59] libperf: Move in struct parse_events_term code Jiri Olsa
2021-11-08 13:36 ` [PATCH 28/59] perf tools: Add perf_evsel__add_event function Jiri Olsa
2021-11-08 13:36 ` [PATCH 29/59] perf tools: Change struct parse_events_state::evlist to perf_evlist Jiri Olsa
2021-11-08 13:36 ` [PATCH 30/59] libperf: Move in struct parse_events_state Jiri Olsa
2021-11-08 18:21   ` Ian Rogers
2021-11-08 21:24     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 31/59] perf tools: Move event_attr_init in evsel__new_idx function Jiri Olsa
2021-11-08 13:36 ` [PATCH 32/59] libperf: Move in perf_pmu__warn_invalid_config function Jiri Olsa
2021-11-08 13:36 ` [PATCH 33/59] libperf: Move in perf_evsel__add_event function Jiri Olsa
2021-11-08 13:36 ` [PATCH 34/59] perf tools: Move parse_events_update_lists to parser unit Jiri Olsa
2021-11-08 13:36 ` [PATCH 35/59] libperf: Add perf_evsel__is_group_leader function Jiri Olsa
2021-11-08 13:36 ` [PATCH 36/59] perf tools: Make parse_events__modifier_event work over perf_evsel Jiri Olsa
2021-11-08 13:36 ` [PATCH 37/59] perf tool: Pass perf_guest in struct parse_events_state Jiri Olsa
2021-11-08 13:36 ` [PATCH 38/59] libperf: Move in parse_events__modifier_group/event functions Jiri Olsa
2021-11-08 13:36 ` [PATCH 39/59] libperf: Move in parse_events__handle_error function Jiri Olsa
2021-11-08 13:36 ` [PATCH 40/59] libperf: Move in parse_events_evlist_error function Jiri Olsa
2021-11-08 13:36 ` [PATCH 41/59] perf tools: Add perf_evsel__delete callback to struct parse_events_ops Jiri Olsa
2021-11-08 13:36 ` [PATCH 42/59] libperf: Move in parse_events_name function Jiri Olsa
2021-11-08 18:23   ` Ian Rogers
2021-11-08 21:24     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 43/59] perf tools: Move out parse_events_add_pmu fallback from parser code Jiri Olsa
2021-11-08 13:36 ` [PATCH 44/59] perf tools: Add add_pmu callback to struct parse_events_ops Jiri Olsa
2021-11-08 13:36 ` [PATCH 45/59] perf tools: Add add_pmu_multi " Jiri Olsa
2021-11-08 13:36 ` [PATCH 46/59] perf tools: Add add_numeric " Jiri Olsa
2021-11-08 18:27   ` Ian Rogers
2021-11-08 21:34     ` Jiri Olsa
2021-11-08 13:36 ` [PATCH 47/59] perf tools: Add add_cache " Jiri Olsa
2021-11-08 13:36 ` [PATCH 48/59] perf tools: Add add_breakpoint " Jiri Olsa
2021-11-08 13:37 ` [PATCH 49/59] perf tools: Add add_tracepoint " Jiri Olsa
2021-11-08 13:37 ` [PATCH 50/59] perf tools: Add add_bpf " Jiri Olsa
2021-11-08 13:37 ` [PATCH 51/59] perf tools: Add add_tool " Jiri Olsa
2021-11-08 13:37 ` [PATCH 52/59] perf tools: Add set_leader " Jiri Olsa
2021-11-08 13:37 ` [PATCH 53/59] perf tools: Add parse_check " Jiri Olsa
2021-11-08 13:37 ` [PATCH 54/59] perf tools: Move PE_* enums in parse_events__scanner Jiri Olsa
2021-11-08 13:37 ` [PATCH 55/59] libperf: Move in parse-events flex/bison parser Jiri Olsa
2021-11-08 13:37 ` [PATCH 56/59] libperf: Move in parse_events_add_breakpoint function Jiri Olsa
2021-11-08 13:37 ` [PATCH 57/59] libperf: Move in some lib objects from perf Jiri Olsa
2021-11-08 13:37 ` [PATCH 58/59] libperf: Add libperf_parse_events function Jiri Olsa
2021-11-08 13:37 ` [PATCH 59/59] libperf: Add parse-events test Jiri Olsa
2021-11-08 18:32   ` Ian Rogers
2021-11-08 21:37     ` Jiri Olsa
2021-11-08 18:50 ` [RFC 00/59] libperf: Move in event parse code Ian Rogers
2021-11-08 21:50   ` Jiri Olsa [this message]

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=YYmbp9qQGpf5xdqS@krava \
    --to=jolsa@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=john.garry@huawei.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=yao.jin@linux.intel.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).