Messages in this thread | | | From | Frederic Weisbecker <> | Subject | [GIT PULL v2] hw-breakpoints: Rewrite on top of perf events | Date | Sat, 24 Oct 2009 16:16:52 +0200 |
| |
Hi all,
This is the v2 of the hw-breakpoints API rewrite on top of perf events. You can find the previous version here: http://lwn.net/Articles/351922/
Changes in v2:
- Follow the perf "event " rename - The ptrace regression have been fixed (ptrace breakpoint perf events weren't released when a task ended) - Drop the struct hw_breakpoint and store generic fields in perf_event_attr. - Separate core and arch specific headers, drop asm-generic/hw_breakpoint.h and create linux/hw_breakpoint.h - Use new generic len/type for breakpoint - Handle off case: when breakpoints api is not supported by an arch - Use proper in-kernel perf api provided by Arjan.
There are still a lot of things that need to be cleaned, simplified, improved (ptrace side, the bp api, etc....) I guess these things can be done incrementally if you agree.
I've also tried to get an arch-independent api. Generic fields for breakpoints are stored in perf_event_attr structure (type, len, addr). This needs to be discussed and improved before it becomes a perf userspace ABI. We need to find a generic enough structure to host the breakpoints parameters, something that can better fit to most arch (handling breakpoint ranges in powerpc, etc...).
Thanks.
---
The following patchset are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git perfevents/hw-breakpoint
Arjan van de Ven (1): perf/core: Provide a kernel-internal interface to get to performance counters
Frederic Weisbecker (3): perf/core: Add a callback to perf events hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events hw-breakpoints: Arbitrate access to pmu following registers constraints
Li Zefan (1): ksym_tracer: Remove KSYM_SELFTEST_ENTRY
Paul Mundt (1): x86/hw-breakpoints: Actually flush thread breakpoints in flush_thread().
arch/Kconfig | 3 + arch/x86/include/asm/debugreg.h | 7 - arch/x86/include/asm/hw_breakpoint.h | 58 +++-- arch/x86/include/asm/processor.h | 12 +- arch/x86/kernel/hw_breakpoint.c | 376 ++++++++++++++-------- arch/x86/kernel/process.c | 9 +- arch/x86/kernel/process_32.c | 26 +-- arch/x86/kernel/process_64.c | 26 +-- arch/x86/kernel/ptrace.c | 182 +++++++---- arch/x86/kernel/smpboot.c | 3 - arch/x86/power/cpu.c | 6 - include/asm-generic/hw_breakpoint.h | 139 -------- include/linux/hw_breakpoint.h | 131 ++++++++ include/linux/perf_event.h | 37 ++- kernel/exit.c | 5 + kernel/hw_breakpoint.c | 595 +++++++++++++++++++++------------- kernel/perf_event.c | 137 ++++++++- kernel/trace/trace.h | 1 - kernel/trace/trace_entries.h | 6 +- kernel/trace/trace_ksym.c | 126 ++++---- kernel/trace/trace_selftest.c | 2 +- 21 files changed, 1154 insertions(+), 733 deletions(-) delete mode 100644 include/asm-generic/hw_breakpoint.h create mode 100644 include/linux/hw_breakpoint.h
| |