[Patch v3 0/4] perf/x86/intel: Fix bugs of auto counter reload sampling
From: Dapeng Mi
Date: Mon Apr 27 2026 - 05:06:37 EST
Changes:
v2 -> v3:
- Fix the issue that user-space ACR-mask is not properly validated.
(Sashiko, patch 1/4)
v1 -> v2:
- Clear stale mask for all events (Sashiko, Patch 1/4)
- Enable auto counter reload for DMR. (Patch 3/4)
- Remove duplicated CFG_C MSR value tracking. (Patch 4/4)
This small patch-set fixes several issues in auto counter reload support.
- The stale ACR mask is not properly validated before setting a new one.
Patch 1/4 fixes this issue.
- PMI is enabled by default for self-reloaded ACR events which causes
suspicious NMI warning. Patch 2/4 fixes this issue.
- ACR sampling is not really enabled on DMR. Patch 3/4 fixes the issue.
- Two variables are used to trace CFG_C MSR value independently for ACR
and arch-PEBS. It's error-prone and fragile. Patch 4/4 fixes this
issue.
Besides an ACR unit test is added into perf tests which would be posted
in a separate session.
Tests:
Run below ACR sampling commands on CWF, DMR, PTL and NVL (hybrid
platforms), no issues are found.
1. Non-PEBS ACR sampling
perf record -e '{instructions/period=20000,acr_mask=0x2/u,cycles/period=40000,acr_mask=0x3/u}' ~/test
2. PEBS ACR sampling
perf record -e '{instructions/period=20000,acr_mask=0x2/pu,cycles/period=40000,acr_mask=0x3/u}' ~/test
3. Perf-tools ACR sampling test
The patch (https://lore.kernel.org/all/20260420024528.2130065-1-dapeng1.mi@xxxxxxxxxxxxxxx/)
adds ACR sampling test case in perf tools record test.
perf test 148
History:
v1: https://lore.kernel.org/all/20260413010157.535990-1-dapeng1.mi@xxxxxxxxxxxxxxx/
v2: https://lore.kernel.org/all/20260420024528.2130065-1-dapeng1.mi@xxxxxxxxxxxxxxx/
Dapeng Mi (4):
perf/x86/intel: Improve validation and configuration of ACR masks
perf/x86/intel: Disable PMI for self-reloaded ACR events
perf/x86/intel: Enable auto counter reload for DMR
perf/x86/intel: Consolidate MSR_IA32_PERF_CFG_C tracking
arch/x86/events/intel/core.c | 63 ++++++++++++++++++++++++++----------
arch/x86/events/perf_event.h | 14 ++++++--
2 files changed, 57 insertions(+), 20 deletions(-)
--
2.34.1