projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d8020be
)
perf/x86/intel: Move PMU ACK to after LBR read
author
Andi Kleen
<
[email protected]
>
Sun, 10 May 2015 19:22:47 +0000
(12:22 -0700)
committer
Ingo Molnar
<
[email protected]
>
Tue, 4 Aug 2015 08:16:58 +0000
(10:16 +0200)
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: Andi Kleen <
[email protected]
>
Signed-off-by: Peter Zijlstra (Intel) <
[email protected]
>
Cc: Linus Torvalds <
[email protected]
>
Cc: Peter Zijlstra <
[email protected]
>
Cc: Thomas Gleixner <
[email protected]
>
Cc:
[email protected]
Link:
http://lkml.kernel.org/r/
[email protected]
Signed-off-by: Ingo Molnar <
[email protected]
>
arch/x86/kernel/cpu/perf_event_intel.c
patch
|
blob
|
history
diff --git
a/arch/x86/kernel/cpu/perf_event_intel.c
b/arch/x86/kernel/cpu/perf_event_intel.c
index 52c9ded70f6c77e5f65ddd7e242cdfca4cf0ea7f..da93b4bde96330ff11ac85ab052d3c31d56d982d 100644
(file)
--- a/
arch/x86/kernel/cpu/perf_event_intel.c
+++ b/
arch/x86/kernel/cpu/perf_event_intel.c
@@
-1594,6
+1594,7
@@
static int intel_pmu_handle_irq(struct pt_regs *regs)
loops = 0;
again:
+ intel_pmu_lbr_read();
intel_pmu_ack_status(status);
if (++loops > 100) {
static bool warned = false;
@@
-1608,7
+1609,6
@@
again:
inc_irq_stat(apic_perf_irqs);
- intel_pmu_lbr_read();
/*
* Ignore a range of extra bits in status that do not indicate