Re: [PATCH v2] perf list: Display hybrid pmu events with cpu type

From: John Garry
Date: Wed Dec 15 2021 - 11:19:03 EST


On 19/10/2021 22:14, Arnaldo Carvalho de Melo wrote:
Em Fri, Sep 03, 2021 at 10:52:39AM +0800, Jin Yao escreveu:
Add a new option '--cputype' to perf-list to display core-only pmu events
or atom-only pmu events.

Each hybrid pmu event has been assigned with a pmu name, this patch
compares the pmu name before listing the result.

For example,

perf list --cputype atom
...
cache:
core_reject_l2q.any
[Counts the number of request that were not accepted into the L2Q because the L2Q is FULL. Unit: cpu_atom]
...

The "Unit: cpu_atom" is displayed in the brief description section
to indicate this is an atom event.
Thanks, applied.

It seems that this buggers "perf list" for uncore events on my arm64 platform.

Before:

./perf list "uncore ddrc"
uncore ddrc:
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
flux_rcmd
[DDRC read commands. Unit: hisi_sccl,ddrc]
flux_rd
[DDRC total read operations. Unit: hisi_sccl,ddrc]
flux_wcmd
[DDRC write commands. Unit: hisi_sccl,ddrc]
flux_wr
[DDRC total write operations. Unit: hisi_sccl,ddrc]
pre_cmd
[DDRC precharge commands. Unit: hisi_sccl,ddrc]
rnk_chg
[DDRC rank commands. Unit: hisi_sccl,ddrc]
rw_chg
[DDRC read and write changes. Unit: hisi_sccl,ddrc]


After:

./perf list "uncore ddrc"

uncore ddrc:
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,ddrc]
act_cmd
[DDRC active commands. Unit: hisi_sccl,dd

Notice how the events are repeated.

And then gets broken even worse later some point before v5.16-rc6 such that aliasing gets broken altogether.

./perf list | grep hisi_sccl | grep act_cmd| wc -l
16

Good should be 0.

I'll have a look. Obviously we need a test case to stop such breakages.

Thanks,
John