diff options
author | 2023-01-27 12:56:45 -0800 | |
---|---|---|
committer | 2023-01-27 12:56:45 -0800 | |
commit | 0d1e013fd9246fcf73a078999487ba47d1dd1bb9 (patch) | |
tree | 0247f57f6c9b6b6568435f13f6207685d1439fcc | |
parent | Merge tag 'riscv-for-linus-6.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux (diff) | |
parent | Partially revert "perf/arm-cmn: Optimise DTC counter accesses" (diff) | |
download | wireguard-linux-0d1e013fd9246fcf73a078999487ba47d1dd1bb9.tar.xz wireguard-linux-0d1e013fd9246fcf73a078999487ba47d1dd1bb9.zip |
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 fix from Will Deacon:
- Fix event counting regression in Arm CMN PMU driver due to broken
optimisation
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
Partially revert "perf/arm-cmn: Optimise DTC counter accesses"
-rw-r--r-- | drivers/perf/arm-cmn.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c index b80a9b74662b..1deb61b22bc7 100644 --- a/drivers/perf/arm-cmn.c +++ b/drivers/perf/arm-cmn.c @@ -1576,7 +1576,6 @@ static int arm_cmn_event_init(struct perf_event *event) hw->dn++; continue; } - hw->dtcs_used |= arm_cmn_node_to_xp(cmn, dn)->dtc; hw->num_dns++; if (bynodeid) break; @@ -1589,6 +1588,12 @@ static int arm_cmn_event_init(struct perf_event *event) nodeid, nid.x, nid.y, nid.port, nid.dev, type); return -EINVAL; } + /* + * Keep assuming non-cycles events count in all DTC domains; turns out + * it's hard to make a worthwhile optimisation around this, short of + * going all-in with domain-local counter allocation as well. + */ + hw->dtcs_used = (1U << cmn->num_dtcs) - 1; return arm_cmn_validate_group(cmn, event); } |