aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/perf_event_intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_intel.c')
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
index fc6dbc46af4a..b7b3ff21c832 100644
--- a/arch/x86/kernel/cpu/perf_event_intel.c
+++ b/arch/x86/kernel/cpu/perf_event_intel.c
@@ -1942,6 +1942,17 @@ static int intel_pmu_hw_config(struct perf_event *event)
1942 ret = intel_pmu_setup_lbr_filter(event); 1942 ret = intel_pmu_setup_lbr_filter(event);
1943 if (ret) 1943 if (ret)
1944 return ret; 1944 return ret;
1945
1946 /*
1947 * BTS is set up earlier in this path, so don't account twice
1948 */
1949 if (!intel_pmu_has_bts(event)) {
1950 /* disallow lbr if conflicting events are present */
1951 if (x86_add_exclusive(x86_lbr_exclusive_lbr))
1952 return -EBUSY;
1953
1954 event->destroy = hw_perf_lbr_event_destroy;
1955 }
1945 } 1956 }
1946 1957
1947 if (event->attr.type != PERF_TYPE_RAW) 1958 if (event->attr.type != PERF_TYPE_RAW)