aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/events/intel/core.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index f9451566cd9b..d35f4775d5f1 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -2091,15 +2091,19 @@ static void intel_pmu_disable_event(struct perf_event *event)
2091 cpuc->intel_ctrl_host_mask &= ~(1ull << hwc->idx); 2091 cpuc->intel_ctrl_host_mask &= ~(1ull << hwc->idx);
2092 cpuc->intel_cp_status &= ~(1ull << hwc->idx); 2092 cpuc->intel_cp_status &= ~(1ull << hwc->idx);
2093 2093
2094 if (unlikely(event->attr.precise_ip))
2095 intel_pmu_pebs_disable(event);
2096
2097 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) { 2094 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) {
2098 intel_pmu_disable_fixed(hwc); 2095 intel_pmu_disable_fixed(hwc);
2099 return; 2096 return;
2100 } 2097 }
2101 2098
2102 x86_pmu_disable_event(event); 2099 x86_pmu_disable_event(event);
2100
2101 /*
2102 * Needs to be called after x86_pmu_disable_event,
2103 * so we don't trigger the event without PEBS bit set.
2104 */
2105 if (unlikely(event->attr.precise_ip))
2106 intel_pmu_pebs_disable(event);
2103} 2107}
2104 2108
2105static void intel_pmu_del_event(struct perf_event *event) 2109static void intel_pmu_del_event(struct perf_event *event)