Commit 0f29e573 authored by Andi Kleen's avatar Andi Kleen Committed by Ingo Molnar

perf/x86/intel: Move PMU ACK to after LBR read

With Arch Perfmon v4 the PMU ack unfreezes the LBRs. So we need to do
the PMU ack after the LBR reading, otherwise the LBRs would be polluted
by the PMI handler.

This is a minimal change. In principle the ACK could be moved much later.
Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: eranian@google.com
Link: http://lkml.kernel.org/r/1431285767-27027-10-git-send-email-andi@firstfloor.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent d8020bee
...@@ -1594,6 +1594,7 @@ static int intel_pmu_handle_irq(struct pt_regs *regs) ...@@ -1594,6 +1594,7 @@ static int intel_pmu_handle_irq(struct pt_regs *regs)
loops = 0; loops = 0;
again: again:
intel_pmu_lbr_read();
intel_pmu_ack_status(status); intel_pmu_ack_status(status);
if (++loops > 100) { if (++loops > 100) {
static bool warned = false; static bool warned = false;
...@@ -1608,7 +1609,6 @@ static int intel_pmu_handle_irq(struct pt_regs *regs) ...@@ -1608,7 +1609,6 @@ static int intel_pmu_handle_irq(struct pt_regs *regs)
inc_irq_stat(apic_perf_irqs); inc_irq_stat(apic_perf_irqs);
intel_pmu_lbr_read();
/* /*
* Ignore a range of extra bits in status that do not indicate * Ignore a range of extra bits in status that do not indicate
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment