diff options
| author | Dave Jiang <dave.jiang@intel.com> | 2026-08-05 08:59:11 -0700 |
|---|---|---|
| committer | Will Deacon <will@kernel.org> | 2026-10-04 17:02:29 +0000 |
| commit | 05d82cf377f706d0b566b572bc66e3a2057bd68e (patch) | |
| tree | e43e63348dec82cf5e8ce6551fabba54fe03da4f /tools/perf/scripts/python/stackcollapse.py | |
| parent | 984920c893f0e6832351bc03deeb5ef9a42fbdbb (diff) | |
perf/cxl: Clear stale overflow status before using a counter
cxl_pmu_event_stop() leaves the counter's bit set in the overflow status
register and only cxl_pmu_irq() ever clears it, so a counter handed from
one event to the next starts with the previous owner's overflow pending.
The perf core stops and starts back to back with interrupts off, so an
interrupt latched over the handover lands on the new event. prev_count is 0
by then, so the read path adds a full period: 2^counter_width phantom
counts.
Clear the bit in cxl_pmu_event_start(), before the config write arms
Interrupt on Overflow. Clear the whole register at probe too, for counters
no event ever owns - the driver never touched it, so firmware or a previous
kernel can leave a bit set there.
Fixes: 5d7107c72796 ("perf: CXL Performance Monitoring Unit driver")
Reported-by: Richard Cheng <icheng@nvidia.com>
Closes: https://lore.kernel.org/linux-cxl/anAVpO--i5heVfz9@MWDK4CY14F/
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
