From: "feng.zhou" <realsummitzhou@gmail.com>
To: Will Deacon <will@kernel.org>, Mark Rutland <mark.rutland@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [QUESTION] ARM DSU PMU: 32-bit counter assumption and handling of 64-bit event counters
Date: Fri, 6 Feb 2026 11:51:38 +0800 [thread overview]
Message-ID: <20260206035138.1377-1-realsummitzhou@gmail.com> (raw)
Hi Will and Mark,
I have a question regarding the ARM DSU PMU driver implementation in
drivers/perf/arm_dsu_pmu.c, specifically about the counter width
assumptions.
Current Implementation:
======================
The driver currently assumes all event counters are 32-bit wide, with
only the cycle counter being 64-bit (lines 69-71):
/* All event counters are 32bit, with a 64bit Cycle counter */
#define DSU_PMU_COUNTER_WIDTH(idx) \
(((idx) == DSU_PMU_IDX_CYCLE_COUNTER) ? 64 : 32)
This assumption is used throughout the code for handling counter
overflow and calculating deltas (e.g., line 344 in dsu_pmu_event_update).
Issue Observed:
===============
I've encountered overflow issues when using perf tools on newer ARM CPUs
where the event counters appear to be 64-bit rather than 32-bit. The
current implementation causes incorrect event counting and potential data
loss due to premature overflow handling based on the 32-bit mask.
Questions:
==========
1. Is the 32-bit event counter assumption based on the ARMv8 PMU
specification or DSU-specific hardware documentation?
2. Are there known ARM CPU implementations where DSU event counters
exceed 32 bits? If so, how should the driver handle this variation?
3. Would it be appropriate to detect the actual counter width at runtime
(similar to how num_counters is probed in dsu_pmu_probe_pmu), or
should this be handled through device tree / ACPI properties?
4. Should there be a mechanism to query the hardware for the actual
counter width to ensure compatibility with future implementations?
Thank you for your time and any insights you can provide.
Best regards,
Feng
next reply other threads:[~2026-02-06 3:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-06 3:51 feng.zhou [this message]
2026-03-12 14:28 ` [QUESTION] ARM DSU PMU: 32-bit counter assumption and handling of 64-bit event counters Will Deacon
2026-03-12 14:51 ` Robin Murphy
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=20260206035138.1377-1-realsummitzhou@gmail.com \
--to=realsummitzhou@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=will@kernel.org \
/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