[GIT PULL] perf changes for v3.5

From: Ingo Molnar
Date: Tue May 22 2012 - 06:58:34 EST


Linus,

Please pull the latest perf-core-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-core-for-linus

HEAD: 73787190d04a34e6da745da893b3ae8bedde418f Merge branch 'perf/parse-events-4' of git://github.com/fweisbec/tracing into perf/core

Lots of changes:

- (much) improved assembly annotation support in perf report,
with jump visualization, searching, navigation, visual output
improvements and more.

- kernel support for AMD IBS PMU hardware features. Notably
'perf record -e cycles:p' and 'perf top -e cycles:p' should
work without skid now, like PEBS does on the Intel side,
because it takes advantage of IBS transparently.

- the libtracevents library: it is the first step towards
unifying tracing tooling and perf, and it also gives a
tracing library for external tools like powertop to rely on.

- infrastructure: various improvements and refactoring of the
UI modules and related code

- infrastructure: cleanup and simplification of the profiling
targets code (--uid, --pid, --tid, --cpu, --all-cpus, etc.)

- tons of robustness fixes all around

- various ftrace updates: speedups, cleanups, robustness
improvements.

- typing 'make' in tools/ will now give you a menu of projects
to build and a short help text to explain what each does.

- ... and lots of other changes I forgot to list.

The perf record make bzImage + perf report regression you
reported should be fixed.

Thanks,

Ingo

------------------>
Arnaldo Carvalho de Melo (54):
perf ui browser: Return the current color when setting a new one
perf annotate: Allow printing objdump line addr in different color
perf ui annotate browser: Allow toggling addr offset view
perf ui annotate browser: Move callq handling to separate function
perf ui annotate browser: Add list based search for addr offset
perf annotate browser: Initial support for navigating jump instructions
perf annotate browser: string search: /?n
perf annotate: Rename objdump_line to disasm_line
perf annotate: Parse instruction
perf annotate browser: Use the disasm_line instruction name and operand fields
perf annotate: Disassembler instruction parsing
perf annotate: Parse call targets earlier
perf annotate: Introduce scnprintf ins_ops method
perf annotate browser: Rename disasm_line_rb_node
perf symbols: Introduce symbol__size method
perf annotate browser: Hide non jump target addresses in offset mode
perf annotate browser: Align jump labels
perf annotate browser: Make lines more compact
perf annotate browser: Use a vertical line as percentage separator
perf annotate: Add missing jump variants
perf annotate: Group operands members
perf annotate browser: Bandaid offsets/jump label objdump ambiguity
perf annotate browser: Suppress the callq address
perf annotate browser: Add visual cues on jump lines
perf annotate browser: Add visual cue for retq instruction
perf annotate browser: Handle retq instructions
ui browser: Add method to write graphical characters
perf annotate browser: Initial loop detection
perf annotate browser: Handle NULL jump targets
perf annotate: Disambiguage offsets and addresses in operands
perf annotate: Mark jump instructions with no offset
perf annotate browser: Don't draw jump connectors for out of function jumps
perf annotate browser: Add a right arrow before call instructions
perf ui browser: Add method to draw up/down arrow line
perf annotate browser: Show current jump, back or forward
perf annotate browser: Remove the vertical line after the percentages
perf annotate browser: Don't display 0.00 percentages
perf test: Make the rdpmc test honour 'verbose' mode
perf ui browser: Introduce routine to draw vertical line
perf annotate browser: More clearly separate columns
perf annotate browser: Don't change the asm line color when toggling source
perf top: Set target.system_wide
perf annotate browser: Do raw printing in 'o'ffset in a single place
perf annotate browser: Compact 'nop' output
perf top: Default to system wide using perf_target methods
perf hists browser: Use '/' for search/filter instead of 's'
perf annotate: Use raw form for register indirect call instructions
perf annotate: Resolve symbols using objdump comment
perf annotate: Resolve symbols using objdump comment for single op ins
perf annotate: Augment lock instruction output
perf annotate: Introduce ->free() method in ins_ops
perf annotate browser: Count the numbers of jump sources to a target
perf annotate browser: Show 'jumpy' functions
perf annotate browser: Add key bindings help window

Ashay Rane (1):
perf report: Correct display of samples and events in header

Borislav Petkov (5):
tools: Add Makefile.include
tools: Cleanup EXTRA_WARNINGS
tools: Add a toplevel Makefile
tools: Add a help target
tools: Connect to the kernel build system

Dan Carpenter (1):
tracing: Remove an unneeded check in trace_seq_buffer()

David Ahern (6):
perf record: Fix fallback to cpu-clock on ppc
perf stat: handle ENXIO error for perf_event_open
perf top: Update event name when falling back to cpu-clock
perf record: Reset event name when falling back to cpu-clock
perf annotate: shorten helpline so it fits in visible space
perf evsel: Create events initially disabled -- again

Ingo Molnar (1):
perf/x86: Clean up register_nmi_handler() usage

Jiri Olsa (6):
perf tools: Fix parsers' rules to dependencies
perf session: Fail on processing event with unknown size
tracing: Use seq_*_private interface for some seq files
perf report: Fix format string for x86-32 compilation
perf hists: Fix callchain ip printf format
perf tools: Split term type into value type and term type

Julia Lawall (1):
perf/events: Correct size given to memset

Minho Ban (1):
tracing: Prevent wasting time evaluating parameters in trace_preempt_on/off

Namhyung Kim (26):
perf tools: Ignore auto-generated bison/flex files
perf annotate: Fix a build error
perf tools: Move UI bits to tools/perf/ui directory
perf tools: Move GTK+ bits to tools/perf/ui/gtk directory
perf tools: Introduce struct perf_target
perf stat: Convert to struct perf_target
perf top: Convert to struct perf_target
perf tools: Introduce perf_target__validate() helper
perf evlist: Make create_maps() take struct perf_target
perf tools: Check more combinations of PID/TID, UID and CPU switches
perf target: Split out perf_target handling code
perf ui: Make setup_browser() generic
perf ui gtk: Drop arg[cv] arguments from perf_gtk_setup_browser()
perf ui gtk: Rename functions for consistency
perf ui: Add gtk2 support into setup_browser()
perf ui: Change fallback policy of setup_browser()
perf evlist: Fix creation of cpu map
perf target: Introduce perf_target_errno
perf target: Introduce perf_target__parse_uid()
perf tools: Introduce perf_target__strerror()
perf target: Consolidate target task/cpu checking
perf stat: Use perf_evlist__create_maps
perf target: Rename functions to avoid double negation
Revert 'perf evlist: Fix creation of cpu map'
tracing: Check return value of tracing_dentry_percpu()
perf target: Add uses_mmap field

Peter Zijlstra (1):
sched, perf: Use a single callback into the scheduler

Richard Weinberger (1):
tracing: Remove kernel_lock annotations

Robert Richter (25):
perf/x86: Implement IBS event configuration
perf/x86: Implement IBS interrupt handler
perf/x86: Implement IBS pmu control ops
perf/x86: Implement 64-bit counter support for IBS
perf stat: Declare some references static
perf tools: Fix thread map that is type pid_t
perf record: Use sw counter only if hw pmu is not detected
perf: Trivial cleanup of duplicate code
perf/x86: Fix cmpxchg() usage in amd_put_event_constraints()
perf: Use static variant of perf_event_overflow in core.c
perf: Remove PERF_COUNTERS config option
perf tools: Fix include header files in util/parse-events.h
perf/x86-ibs: Fix update of period
perf: Pass last sampling period to perf_sample_data_init()
perf/x86-ibs: Enable ibs op micro-ops counting mode
perf/x86-ibs: Fix frequency profiling
perf/x86-ibs: Take instruction pointer from ibs sample
perf/x86-ibs: Precise event sampling with IBS for AMD CPUs
perf/x86-ibs: Rename some variables
perf/x86-ibs: Trigger overflow if remaining period is too small
perf/x86-ibs: Extend hw period that triggers overflow
perf/x86-ibs: Implement workaround for IBS erratum #420
perf/x86-ibs: Catch spurious interrupts after stopping IBS
perf/x86-ibs: Fix usage of IBS op current count
perf/x86/ibs: Fix undefined reference to `get_ibs_caps'

Steven Rostedt (26):
tracing: Add percpu buffers for trace_printk()
perf: Separate out trace-cmd parse-events from perf files
tools/events: Add files to create libtraceevent.a
perf: Build libtraceevent.a
events: Update tools/lib/traceevent to work with perf
perf: Have perf use the new libtraceevent.a library
perf/events: Add flag to produce nsec output
parse-events: Let pevent_free() take a NULL pointer
parse-events: Allow '*' and '/' operations in TP_printk
parse-event: Fix memset pointer size bug in handle
parse-events: Rename struct record to struct pevent_record
ftrace/x86: Have arch x86_64 use breakpoints instead of stop machine
ftrace/x86: Remove the complex ftrace NMI handling code
ftrace/x86: Use asm/kprobes.h instead of linux/kprobes.h
tracing: Remove ftrace_disable/enable_cpu()
tracing: Clean up tracing_mark_write()
ring-buffer: Add integrity check at end of iter read
ring-buffer: Reset head page before running self test
ftrace: Sort all function addresses, not just per page
ftrace: Remove extra helper functions
ftrace: Speed up search by skipping pages by address
ftrace: Consolidate ftrace_location() and ftrace_text_reserved()
ftrace: Return record ip addr for ftrace_location()
ftrace: Make ftrace_modify_all_code() global for archs to use
ftrace/x86: Have x86 ftrace use the ftrace_modify_all_code()
ftrace: Remove selecting FRAME_POINTER with FUNCTION_TRACER

Tom Zanussi (1):
perf/events: Add flag/symbol format_flags

Ulrich Drepper (1):
perf tools: Cleanup realloc use

Vaibhav Nagarnaik (9):
ring-buffer: Add per_cpu ring buffer control files
parse-events: Handle invalid opcode parsing gracefully
parse-events: Handle opcode parsing error
parse-events: Support '+' opcode in print format
ring-buffer: Make removal of ring buffer pages atomic
ring-buffer: Make addition of pages in ring buffer atomic
tracing: change CPU ring buffer state from tracing_cpumask
ring-buffer: Merge separate resize loops
tracing: Fix initial buffer_size_kb state


Makefile | 7 +
arch/alpha/kernel/perf_event.c | 3 +-
arch/arm/configs/bcmring_defconfig | 2 +-
arch/arm/kernel/perf_event_v6.c | 4 +-
arch/arm/kernel/perf_event_v7.c | 4 +-
arch/arm/kernel/perf_event_xscale.c | 8 +-
arch/mips/kernel/perf_event_mipsxx.c | 2 +-
arch/powerpc/configs/chroma_defconfig | 2 +-
arch/powerpc/configs/gamecube_defconfig | 2 +-
arch/powerpc/configs/wii_defconfig | 2 +-
arch/powerpc/perf/core-book3s.c | 3 +-
arch/powerpc/perf/core-fsl-emb.c | 3 +-
arch/sh/configs/sh7785lcr_32bit_defconfig | 2 +-
arch/sparc/configs/sparc64_defconfig | 2 +-
arch/sparc/kernel/perf_event.c | 4 +-
arch/x86/Kconfig | 1 -
arch/x86/include/asm/ftrace.h | 3 +
arch/x86/include/asm/msr-index.h | 5 +
arch/x86/include/asm/perf_event.h | 12 +-
arch/x86/kernel/cpu/perf_event.c | 7 +-
arch/x86/kernel/cpu/perf_event_amd.c | 11 +-
arch/x86/kernel/cpu/perf_event_amd_ibs.c | 570 +++-
arch/x86/kernel/cpu/perf_event_intel.c | 4 +-
arch/x86/kernel/cpu/perf_event_intel_ds.c | 6 +-
arch/x86/kernel/cpu/perf_event_p4.c | 6 +-
arch/x86/kernel/ftrace.c | 500 ++-
arch/x86/kernel/nmi.c | 10 +-
arch/x86/kernel/traps.c | 8 +-
include/asm-generic/vmlinux.lds.h | 2 +-
include/linux/ftrace.h | 19 +-
include/linux/kernel.h | 13 +-
include/linux/perf_event.h | 29 +-
include/linux/ring_buffer.h | 6 +-
init/Kconfig | 14 +-
kernel/events/core.c | 25 +-
kernel/sched/core.c | 9 +-
kernel/trace/Kconfig | 1 -
kernel/trace/ftrace.c | 242 +-
kernel/trace/ring_buffer.c | 585 ++-
kernel/trace/trace.c | 503 ++-
kernel/trace/trace.h | 4 +-
kernel/trace/trace_printk.c | 4 +
tools/Makefile | 77 +
tools/lib/traceevent/Makefile | 303 ++
tools/lib/traceevent/event-parse.c | 5065 ++++++++++++++++++++
tools/lib/traceevent/event-parse.h | 804 ++++
tools/lib/traceevent/event-utils.h | 80 +
tools/lib/traceevent/parse-filter.c | 2262 +++++++++
tools/lib/traceevent/parse-utils.c | 110 +
tools/lib/traceevent/trace-seq.c | 200 +
tools/perf/Documentation/perfconfig.example | 1 +
tools/perf/Makefile | 117 +-
tools/perf/builtin-kmem.c | 6 +-
tools/perf/builtin-lock.c | 26 +-
tools/perf/builtin-record.c | 63 +-
tools/perf/builtin-report.c | 21 +-
tools/perf/builtin-sched.c | 42 +-
tools/perf/builtin-script.c | 2 +-
tools/perf/builtin-stat.c | 86 +-
tools/perf/builtin-test.c | 13 +-
tools/perf/builtin-top.c | 54 +-
tools/perf/perf.h | 8 +-
tools/perf/{util => }/ui/browser.c | 116 +-
tools/perf/{util => }/ui/browser.h | 9 +-
tools/perf/ui/browsers/annotate.c | 867 ++++
tools/perf/{util => }/ui/browsers/hists.c | 26 +-
tools/perf/{util => }/ui/browsers/map.c | 6 +-
tools/perf/{util => }/ui/browsers/map.h | 0
tools/perf/{util => ui}/gtk/browser.c | 31 +-
tools/perf/{util => ui}/gtk/gtk.h | 0
tools/perf/ui/gtk/setup.c | 12 +
tools/perf/{util => }/ui/helpline.c | 0
tools/perf/{util => }/ui/helpline.h | 0
tools/perf/{util => }/ui/keysyms.h | 0
tools/perf/{util => }/ui/libslang.h | 0
tools/perf/{util => }/ui/progress.c | 0
tools/perf/{util => }/ui/progress.h | 0
tools/perf/ui/setup.c | 45 +
tools/perf/{util/ui => ui/tui}/setup.c | 77 +-
tools/perf/{util => }/ui/ui.h | 0
tools/perf/{util => }/ui/util.c | 0
tools/perf/{util => }/ui/util.h | 0
tools/perf/util/annotate.c | 599 +++-
tools/perf/util/annotate.h | 67 +-
tools/perf/util/cache.h | 24 +-
tools/perf/util/debug.c | 1 +
tools/perf/util/debug.h | 2 +-
tools/perf/util/evlist.c | 16 +-
tools/perf/util/evlist.h | 4 +-
tools/perf/util/evsel.c | 11 +-
tools/perf/util/header.c | 17 +-
tools/perf/util/hist.c | 2 +-
tools/perf/util/hist.h | 2 +-
tools/perf/util/parse-events.c | 45 +-
tools/perf/util/parse-events.h | 23 +-
tools/perf/util/parse-events.y | 16 +-
tools/perf/util/pmu.c | 70 +-
.../util/scripting-engines/trace-event-python.c | 16 +-
tools/perf/util/session.c | 30 +-
tools/perf/util/symbol.h | 5 +
tools/perf/util/target.c | 142 +
tools/perf/util/target.h | 65 +
tools/perf/util/thread_map.h | 2 +-
tools/perf/util/top.c | 19 +-
tools/perf/util/top.h | 6 +-
tools/perf/util/trace-event-info.c | 4 +-
tools/perf/util/trace-event-parse.c | 3220 +------------
tools/perf/util/trace-event-read.c | 44 +-
tools/perf/util/trace-event.h | 269 +-
tools/perf/util/ui/browsers/annotate.c | 433 --
tools/perf/util/usage.c | 38 -
tools/perf/util/util.c | 10 +
tools/perf/util/util.h | 5 +-
tools/scripts/Makefile.include | 58 +
114 files changed, 13439 insertions(+), 5004 deletions(-)
create mode 100644 tools/Makefile
create mode 100644 tools/lib/traceevent/Makefile
create mode 100644 tools/lib/traceevent/event-parse.c
create mode 100644 tools/lib/traceevent/event-parse.h
create mode 100644 tools/lib/traceevent/event-utils.h
create mode 100644 tools/lib/traceevent/parse-filter.c
create mode 100644 tools/lib/traceevent/parse-utils.c
create mode 100644 tools/lib/traceevent/trace-seq.c
rename tools/perf/{util => }/ui/browser.c (81%)
rename tools/perf/{util => }/ui/browser.h (86%)
create mode 100644 tools/perf/ui/browsers/annotate.c
rename tools/perf/{util => }/ui/browsers/hists.c (98%)
rename tools/perf/{util => }/ui/browsers/map.c (97%)
rename tools/perf/{util => }/ui/browsers/map.h (100%)
rename tools/perf/{util => ui}/gtk/browser.c (85%)
rename tools/perf/{util => ui}/gtk/gtk.h (100%)
create mode 100644 tools/perf/ui/gtk/setup.c
rename tools/perf/{util => }/ui/helpline.c (100%)
rename tools/perf/{util => }/ui/helpline.h (100%)
rename tools/perf/{util => }/ui/keysyms.h (100%)
rename tools/perf/{util => }/ui/libslang.h (100%)
rename tools/perf/{util => }/ui/progress.c (100%)
rename tools/perf/{util => }/ui/progress.h (100%)
create mode 100644 tools/perf/ui/setup.c
rename tools/perf/{util/ui => ui/tui}/setup.c (74%)
rename tools/perf/{util => }/ui/ui.h (100%)
rename tools/perf/{util => }/ui/util.c (100%)
rename tools/perf/{util => }/ui/util.h (100%)
create mode 100644 tools/perf/util/target.c
create mode 100644 tools/perf/util/target.h
delete mode 100644 tools/perf/util/ui/browsers/annotate.c
create mode 100644 tools/scripts/Makefile.include
--
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/