summaryrefslogtreecommitdiff
path: root/arch/powerpc/configs/g5_defconfig
diff options
context:
space:
mode:
authorSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>2012-08-07 19:07:19 +0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-08-24 14:26:10 +0400
commit813312110bede27bffd082c25cd31730bd567beb (patch)
treea647b146b9f6e079e77c28a7775b0320344ea3e5 /arch/powerpc/configs/g5_defconfig
parent2fae7cdb60240e2e2d9b378afbf6d9fcce8a3890 (diff)
downloadlinux-813312110bede27bffd082c25cd31730bd567beb.tar.xz
powerpc/perf: Use pmc_overflow() to detect rolled back events
For certain speculative events on Power7, 'perf stat' reports far higher event count than 'perf record' for the same event. As described in following commit, a performance monitor exception is raised even when the the performance events are rolled back. commit 0837e3242c73566fc1c0196b4ec61779c25ffc93 Author: Anton Blanchard <anton@samba.org> Date: Wed Mar 9 14:38:42 2011 +1100 perf_event_interrupt() records an event only when an overflow occurs. But this check for overflow is a simple 'if (val < 0)'. Because the events are rolled back, this check for overflow fails and the event is not recorded. perf_event_interrupt() later uses pmc_overflow() to detect the overflow and resets the counters and the events are lost completely. To properly detect the overflow of rolled back events, use pmc_overflow() even when recording events. To reproduce: $ cat strcpy.c #include <stdio.h> #include <string.h> main() { char buf[256]; alarm(5); while(1) strcpy(buf, "string1"); } $ perf record -e r20014 ./strcpy $ perf report -n > report.1 $ perf stat -e r20014 > report.2 # Compare report.1 and report.2 Reported-by: Maynard Johnson <mpjohn@us.ibm.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/configs/g5_defconfig')
0 files changed, 0 insertions, 0 deletions