diff options
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel_ds.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel_ds.c b/arch/x86/kernel/cpu/perf_event_intel_ds.c index ed3e5533ce33..3065c57a63c1 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c | |||
@@ -653,6 +653,12 @@ void intel_pmu_pebs_disable(struct perf_event *event) | |||
653 | struct hw_perf_event *hwc = &event->hw; | 653 | struct hw_perf_event *hwc = &event->hw; |
654 | 654 | ||
655 | cpuc->pebs_enabled &= ~(1ULL << hwc->idx); | 655 | cpuc->pebs_enabled &= ~(1ULL << hwc->idx); |
656 | |||
657 | if (event->hw.constraint->flags & PERF_X86_EVENT_PEBS_LDLAT) | ||
658 | cpuc->pebs_enabled &= ~(1ULL << (hwc->idx + 32)); | ||
659 | else if (event->hw.constraint->flags & PERF_X86_EVENT_PEBS_ST) | ||
660 | cpuc->pebs_enabled &= ~(1ULL << 63); | ||
661 | |||
656 | if (cpuc->enabled) | 662 | if (cpuc->enabled) |
657 | wrmsrl(MSR_IA32_PEBS_ENABLE, cpuc->pebs_enabled); | 663 | wrmsrl(MSR_IA32_PEBS_ENABLE, cpuc->pebs_enabled); |
658 | 664 | ||