aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
index d8d86d014008..1297bf15cb88 100644
--- a/arch/x86/kernel/cpu/perf_event_intel.c
+++ b/arch/x86/kernel/cpu/perf_event_intel.c
@@ -712,7 +712,7 @@ static int intel_pmu_handle_irq(struct pt_regs *regs)
712 struct perf_sample_data data; 712 struct perf_sample_data data;
713 struct cpu_hw_events *cpuc; 713 struct cpu_hw_events *cpuc;
714 int bit, loops; 714 int bit, loops;
715 u64 ack, status; 715 u64 status;
716 716
717 perf_sample_data_init(&data, 0); 717 perf_sample_data_init(&data, 0);
718 718
@@ -728,6 +728,7 @@ static int intel_pmu_handle_irq(struct pt_regs *regs)
728 728
729 loops = 0; 729 loops = 0;
730again: 730again:
731 intel_pmu_ack_status(status);
731 if (++loops > 100) { 732 if (++loops > 100) {
732 WARN_ONCE(1, "perfevents: irq loop stuck!\n"); 733 WARN_ONCE(1, "perfevents: irq loop stuck!\n");
733 perf_event_print_debug(); 734 perf_event_print_debug();
@@ -736,7 +737,6 @@ again:
736 } 737 }
737 738
738 inc_irq_stat(apic_perf_irqs); 739 inc_irq_stat(apic_perf_irqs);
739 ack = status;
740 740
741 intel_pmu_lbr_read(); 741 intel_pmu_lbr_read();
742 742
@@ -761,8 +761,6 @@ again:
761 x86_pmu_stop(event); 761 x86_pmu_stop(event);
762 } 762 }
763 763
764 intel_pmu_ack_status(ack);
765
766 /* 764 /*
767 * Repeat if there is more work to be done: 765 * Repeat if there is more work to be done:
768 */ 766 */