[RFC 0/5] perf, signal x86: Fix breakpoint events overflow handling

From: Jiri Olsa
Date: Fri Mar 01 2013 - 13:13:26 EST


hi,
while porting Vince's overflow tests I found perf event
breakpoint overflow does not work properly.

I found the x86 RF EFLAG bit not being set when returning
from debug exception after triggering signal handler. Which
is exactly what you get when you set perf breakpoint overflow
SIGIO handler.

Patches 1 and 2 are trying to fix that and make attached
tests pass. But it's very likely I'm breaking something
else by these changes, so please consider those as RFC
patches.. pure suggestions to make my point ;-)

Patch 3 fixes the period handling for breakpoint events.

Patches 4 and 5 provide automated perf tests for testing
all 3 kernel changes.

Also available at:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/linux.git
perf/RF1

thanks for comments,
jirka


Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: H. Peter Anvin <hpa@xxxxxxxxx>
Cc: Andi Kleen <andi@xxxxxxxxxxxxxx>
Cc: Oleg Nesterov <oleg@xxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxxxx>
Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxx>
Cc: Paul Mackerras <paulus@xxxxxxxxx>
Cc: Corey Ashford <cjashfor@xxxxxxxxxxxxxxxxxx>
Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx>
Cc: Vince Weaver <vincent.weaver@xxxxxxxxx>
---
Jiri Olsa (5):
signal x86: Propage RF EFLAGS bit throught the signal restore call
signal x86: Clear RF EFLAGS bit for signal handler
perf: Fix hw breakpoints overflow period sampling
perf tests: Test breakpoint overflow signal handler
perf tests: Test breakpoint overflow signal handler counts

arch/x86/ia32/ia32_signal.c | 2 -
arch/x86/include/asm/sighandling.h | 4 +-
arch/x86/kernel/signal.c | 13 ++++---
include/linux/perf_event.h | 2 +
kernel/events/core.c | 2 +-
kernel/events/hw_breakpoint.c | 5 +++
tools/perf/Makefile | 2 +
tools/perf/tests/bp_signal.c | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/perf/tests/bp_signal_overflow.c | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/perf/tests/builtin-test.c | 8 ++++
tools/perf/tests/tests.h | 2 +
11 files changed, 342 insertions(+), 11 deletions(-)
create mode 100644 tools/perf/tests/bp_signal.c
create mode 100644 tools/perf/tests/bp_signal_overflow.c
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/