[Patch v2 1/4] perf/x86/intel: Clear stale ACR mask before updating new mask
From: Dapeng Mi
Date: Sun Apr 19 2026 - 22:50:55 EST
The current implementation forgets to clear the ACR mask before applying
a new one. During event rescheduling, this allow bits from a previous
stale ACR mask to persist, leading to an incorrect hardware state.
Ensure that the ACR mask is zeroed out before setting the new mask to
prevent state pollution.
Cc: stable@xxxxxxxxxxxxxxx
Fixes: ec980e4facef ("perf/x86/intel: Support auto counter reload")
Signed-off-by: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
---
V2: Clear stale acr_mask for all events.
arch/x86/events/intel/core.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 4768236c054b..774ae9a4eeaf 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -3334,6 +3334,12 @@ static void intel_pmu_acr_late_setup(struct cpu_hw_events *cpuc)
struct perf_event *event, *leader;
int i, j, idx;
+ /* Clear stale ACR mask first. */
+ for (i = 0; i < cpuc->n_events; i++) {
+ event = cpuc->event_list[i];
+ event->hw.config1 = 0;
+ }
+
for (i = 0; i < cpuc->n_events; i++) {
leader = cpuc->event_list[i];
if (!is_acr_event_group(leader))
--
2.34.1