* [GIT PULL 00/32] perf/core improvements and fixes
@ 2012-11-05 17:17 Arnaldo Carvalho de Melo
2012-11-13 18:18 ` Ingo Molnar
0 siblings, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-11-05 17:17 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen, Corey Ashford,
David Ahern, Feng Tang, Frederic Weisbecker, Irina Tirdea,
Jiri Olsa, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Arnaldo Carvalho de Melo, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, on top of a previous pull request.
- Arnaldo
The following changes since commit ffadcf090d468e9c4938b718649f38dd10cfdb02:
perf annotate: Handle XBEGIN like a jump (2012-10-31 12:18:26 -0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 8dfec403e39b7c37fd6e8813bacc01da1e1210ab:
perf tests: Removing 'optional' field (2012-11-05 14:03:59 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. Don't show scripts menu for 'perf top', fix from Feng Tang
. Add framework for automated perf_event_attr tests, where tools with different
command line options will be run from a 'perf test', via python glue, and the
perf syscall will be intercepted to verify that the perf_event_attr fields
set by the tool are those expected, from Jiri Olsa
. Use normalized arch name for searching objdump path. This fixes cases
where the system's objdump (e.g. x86_64) supports the architecture in
the perf.data file (e.g. i686), but is not the same, fix from Namhyung Kim.
. Postpone objdump check until annotation requested, from Namhyung Kim.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Feng Tang (1):
perf browser: Don't show scripts menu for 'perf top'
Jiri Olsa (28):
perf tools: Remove BINDIR define from exec_cmd.o compilation
perf tests: Move test objects into 'tests' directory
perf tests: Add framework for automated perf_event_attr tests
perf tests: Add attr record basic test
perf tests: Add attr tests under builtin test command
perf tests: Add attr record group test
perf tests: Add attr record event syntax group test
perf tests: Add attr record freq test
perf tests: Add attr record count test
perf tests: Add attr record graph test
perf tests: Add attr record period test
perf tests: Add attr record no samples test
perf tests: Add attr record no-inherit test
perf tests: Add attr record data test
perf tests: Add attr record raw test
perf tests: Add attr record no delay test
perf tests: Add attr record branch any test
perf tests: Add attr record branch filter tests
perf tests: Add attr stat no-inherit test
perf tests: Add attr stat group test
perf tests: Add attr stat event syntax group test
perf tests: Add attr stat default test
perf tests: Add attr stat default test
perf tests: Add documentation for attr tests
perf tests: Add missing attr stat basic test
perf tests: Factor attr tests WRITE_ASS macro
perf tests: Fix attr watermark field name typo
perf tests: Removing 'optional' field
Namhyung Kim (3):
perf tools: Use normalized arch name for searching objdump path
perf tools: Introduce struct hist_browser_timer
perf report: Postpone objdump check until annotation requested
tools/perf/Makefile | 20 +-
tools/perf/arch/common.c | 40 ++-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-report.c | 11 +-
tools/perf/builtin-top.c | 10 +-
tools/perf/perf.c | 2 +
tools/perf/perf.h | 17 +-
tools/perf/tests/attr.c | 174 +++++++++++
tools/perf/tests/attr.py | 320 ++++++++++++++++++++
tools/perf/tests/attr/README | 64 ++++
tools/perf/tests/attr/base-record | 39 +++
tools/perf/tests/attr/base-stat | 39 +++
tools/perf/tests/attr/test-record-basic | 5 +
tools/perf/tests/attr/test-record-branch-any | 8 +
.../perf/tests/attr/test-record-branch-filter-any | 8 +
.../tests/attr/test-record-branch-filter-any_call | 8 +
.../tests/attr/test-record-branch-filter-any_ret | 8 +
tools/perf/tests/attr/test-record-branch-filter-hv | 8 +
.../tests/attr/test-record-branch-filter-ind_call | 8 +
tools/perf/tests/attr/test-record-branch-filter-k | 8 +
tools/perf/tests/attr/test-record-branch-filter-u | 8 +
tools/perf/tests/attr/test-record-count | 8 +
tools/perf/tests/attr/test-record-data | 8 +
tools/perf/tests/attr/test-record-freq | 6 +
tools/perf/tests/attr/test-record-graph-default | 6 +
tools/perf/tests/attr/test-record-graph-dwarf | 10 +
tools/perf/tests/attr/test-record-graph-fp | 6 +
tools/perf/tests/attr/test-record-group | 17 ++
tools/perf/tests/attr/test-record-group1 | 20 ++
tools/perf/tests/attr/test-record-no-delay | 9 +
tools/perf/tests/attr/test-record-no-inherit | 7 +
tools/perf/tests/attr/test-record-no-samples | 6 +
tools/perf/tests/attr/test-record-period | 7 +
tools/perf/tests/attr/test-record-raw | 7 +
tools/perf/tests/attr/test-stat-basic | 6 +
tools/perf/tests/attr/test-stat-default | 64 ++++
tools/perf/tests/attr/test-stat-detailed-1 | 101 ++++++
tools/perf/tests/attr/test-stat-detailed-2 | 155 ++++++++++
tools/perf/tests/attr/test-stat-detailed-3 | 173 +++++++++++
tools/perf/tests/attr/test-stat-group | 15 +
tools/perf/tests/attr/test-stat-group1 | 17 ++
tools/perf/tests/attr/test-stat-no-inherit | 7 +
tools/perf/{ => tests}/builtin-test.c | 12 +-
.../{util/dso-test-data.c => tests/dso-data.c} | 0
.../parse-events-test.c => tests/parse-events.c} | 0
tools/perf/ui/browsers/annotate.c | 27 +-
tools/perf/ui/browsers/hists.c | 63 ++--
tools/perf/ui/gtk/browser.c | 4 +-
tools/perf/util/annotate.h | 8 +-
tools/perf/util/hist.h | 31 +-
50 files changed, 1515 insertions(+), 92 deletions(-)
create mode 100644 tools/perf/tests/attr.c
create mode 100644 tools/perf/tests/attr.py
create mode 100644 tools/perf/tests/attr/README
create mode 100644 tools/perf/tests/attr/base-record
create mode 100644 tools/perf/tests/attr/base-stat
create mode 100644 tools/perf/tests/attr/test-record-basic
create mode 100644 tools/perf/tests/attr/test-record-branch-any
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_call
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_ret
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-hv
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-ind_call
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-k
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-u
create mode 100644 tools/perf/tests/attr/test-record-count
create mode 100644 tools/perf/tests/attr/test-record-data
create mode 100644 tools/perf/tests/attr/test-record-freq
create mode 100644 tools/perf/tests/attr/test-record-graph-default
create mode 100644 tools/perf/tests/attr/test-record-graph-dwarf
create mode 100644 tools/perf/tests/attr/test-record-graph-fp
create mode 100644 tools/perf/tests/attr/test-record-group
create mode 100644 tools/perf/tests/attr/test-record-group1
create mode 100644 tools/perf/tests/attr/test-record-no-delay
create mode 100644 tools/perf/tests/attr/test-record-no-inherit
create mode 100644 tools/perf/tests/attr/test-record-no-samples
create mode 100644 tools/perf/tests/attr/test-record-period
create mode 100644 tools/perf/tests/attr/test-record-raw
create mode 100644 tools/perf/tests/attr/test-stat-basic
create mode 100644 tools/perf/tests/attr/test-stat-default
create mode 100644 tools/perf/tests/attr/test-stat-detailed-1
create mode 100644 tools/perf/tests/attr/test-stat-detailed-2
create mode 100644 tools/perf/tests/attr/test-stat-detailed-3
create mode 100644 tools/perf/tests/attr/test-stat-group
create mode 100644 tools/perf/tests/attr/test-stat-group1
create mode 100644 tools/perf/tests/attr/test-stat-no-inherit
rename tools/perf/{ => tests}/builtin-test.c (99%)
rename tools/perf/{util/dso-test-data.c => tests/dso-data.c} (100%)
rename tools/perf/{util/parse-events-test.c => tests/parse-events.c} (100%)
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2012-11-05 17:17 Arnaldo Carvalho de Melo
@ 2012-11-13 18:18 ` Ingo Molnar
0 siblings, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2012-11-13 18:18 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Andi Kleen, Corey Ashford, David Ahern, Feng Tang,
Frederic Weisbecker, Irina Tirdea, Jiri Olsa, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Jiri Olsa (28):
> perf tools: Remove BINDIR define from exec_cmd.o compilation
> perf tests: Move test objects into 'tests' directory
> perf tests: Add framework for automated perf_event_attr tests
> perf tests: Add attr record basic test
> perf tests: Add attr tests under builtin test command
> perf tests: Add attr record group test
> perf tests: Add attr record event syntax group test
> perf tests: Add attr record freq test
> perf tests: Add attr record count test
> perf tests: Add attr record graph test
> perf tests: Add attr record period test
> perf tests: Add attr record no samples test
> perf tests: Add attr record no-inherit test
> perf tests: Add attr record data test
> perf tests: Add attr record raw test
> perf tests: Add attr record no delay test
> perf tests: Add attr record branch any test
> perf tests: Add attr record branch filter tests
> perf tests: Add attr stat no-inherit test
> perf tests: Add attr stat group test
> perf tests: Add attr stat event syntax group test
> perf tests: Add attr stat default test
> perf tests: Add attr stat default test
> perf tests: Add documentation for attr tests
> perf tests: Add missing attr stat basic test
> perf tests: Factor attr tests WRITE_ASS macro
> perf tests: Fix attr watermark field name typo
> perf tests: Removing 'optional' field
These testcases are really nice!
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
* [GIT PULL 00/32] perf/core improvements and fixes
@ 2012-11-18 14:29 Arnaldo Carvalho de Melo
2012-12-08 14:20 ` Ingo Molnar
2012-12-08 14:27 ` Ingo Molnar
0 siblings, 2 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-11-18 14:29 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Anton Blanchard,
Arnaldo Carvalho de Melo, Borislav Petkov, Corey Ashford,
David Ahern, David Howells, Feng Tang, Frederic Weisbecker,
Jiri Olsa, Linus Torvalds, linuxppc-dev, Mike Galbraith,
Namhyung Kim, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Peter Zijlstra, Robert Richter, Stephane Eranian,
Sukadev Bhattiprolu, Thomas Gleixner, acme
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit ffadcf090d468e9c4938b718649f38dd10cfdb02:
perf annotate: Handle XBEGIN like a jump (2012-10-31 12:18:26 -0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf/core
for you to fetch changes up to 07ac002f2fcc74c5be47b656d9201d5de84dc53d:
perf evsel: Introduce is_group_member method (2012-11-14 16:53:45 -0300)
----------------------------------------------------------------
perf/core improvements and fixes
. UAPI fixes, from David Howels
. Separate perf tests into multiple objects, one per test, from Jiri Olsa.
. Fixes to /proc/pid/maps parsing, preparatory to supporting data maps,
from Namhyung Kim
. Fix compile error for non-NEWT builds, from Namhyung Kim
. Implement ui_progress for GTK, from Namhyung Kim
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (1):
perf tools: Add arbitary aliases and support names with -
Arnaldo Carvalho de Melo (13):
perf diff: Start moving to support matching more than two hists
perf diff: Move hists__match to the hists lib
perf hists: Introduce hists__link
perf diff: Use hists__link when not pairing just with baseline
perf machine: Move more methods to machine.[ch]
tools lib traceevent: Add __maybe_unused to unused parameters
tools lib traceevent: Avoid comparisions between signed/unsigned
tools lib traceevent: No need to check for < 0 on an unsigned enum
tools lib traceevent: Handle INVALID_ARG_TYPE errno in pevent_strerror
tools lib traceevent: Use 'const' in variables pointing to const strings
perf tools: Stop using 'self' in pstack
perf hists: Initialize all of he->stat with zeroes
perf evsel: Introduce is_group_member method
Daniel Walter (1):
tracing: Replace strict_strto* with kstrto*
David Howells (3):
tools: Define a Makefile function to do subdir processing
tools: Honour the O= flag when tool build called from a higher Makefile
tools: Pass the target in descend
David Sharp (2):
tracing: Trivial cleanup
tracing: Reset ring buffer when changing trace_clocks
Feng Tang (1):
perf browser: Don't show scripts menu for 'perf top'
Hiraku Toyooka (1):
tracing: Change tracer's integer flags to bool
Ingo Molnar (2):
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/.../acme/linux into perf/core
Merge branch 'tip/perf/core-2' of git://git.kernel.org/.../rostedt/linux-trace into perf/core
Jiri Olsa (47):
perf tools: Remove BINDIR define from exec_cmd.o compilation
perf tests: Move test objects into 'tests' directory
perf tests: Add framework for automated perf_event_attr tests
perf tests: Add attr record basic test
perf tests: Add attr tests under builtin test command
perf tests: Add attr record group test
perf tests: Add attr record event syntax group test
perf tests: Add attr record freq test
perf tests: Add attr record count test
perf tests: Add attr record graph test
perf tests: Add attr record period test
perf tests: Add attr record no samples test
perf tests: Add attr record no-inherit test
perf tests: Add attr record data test
perf tests: Add attr record raw test
perf tests: Add attr record no delay test
perf tests: Add attr record branch any test
perf tests: Add attr record branch filter tests
perf tests: Add attr stat no-inherit test
perf tests: Add attr stat group test
perf tests: Add attr stat event syntax group test
perf tests: Add attr stat default test
perf tests: Add attr stat default test
perf tests: Add documentation for attr tests
perf tests: Add missing attr stat basic test
perf tests: Factor attr tests WRITE_ASS macro
perf tests: Fix attr watermark field name typo
perf tests: Removing 'optional' field
perf tests: Move attr.py temp dir cleanup into finally section
perf tools: Add LIBDW_DIR Makefile variable to for alternate libdw
perf tests: Move test__vmlinux_matches_kallsyms into separate object
perf tests: Move test__open_syscall_event into separate object
perf tests: Move test__open_syscall_event_on_all_cpus into separate object
perf tests: Move test__basic_mmap into separate object
perf tests: Move test__PERF_RECORD into separate object
perf tests: Move test__rdpmc into separate object
perf tests: Move perf_evsel__roundtrip_name_test into separate object
perf tests: Move perf_evsel__tp_sched_test into separate object
perf tests: Move test__syscall_open_tp_fields into separate object
perf tests: Move pmu tests into separate object
perf tests: Final cleanup for builtin-test move
perf tests: Check for mkstemp return value in dso-data test
perf tools: Fix attributes for '{}' defined event groups
perf tools: Fix 'disabled' attribute config for record command
perf tools: Ensure single disable call per event in record comand
perf tools: Omit group members from perf_evlist__disable/enable
perf tools: Add basic event modifier sanity check
Michal Hocko (1):
linux/kernel.h: Remove duplicate trace_printk declaration
Namhyung Kim (18):
perf tools: Use normalized arch name for searching objdump path
perf tools: Introduce struct hist_browser_timer
perf report: Postpone objdump check until annotation requested
perf machine: Set kernel data mapping length
perf tools: Fix detection of stack area
perf hists: Free branch_info when freeing hist_entry
perf tools: Don't try to lookup objdump for live mode
perf annotate: Whitespace fixups
perf annotate: Don't try to follow jump target on PLT symbols
perf annotate: Merge same lines in summary view
perf tools: Fix compile error on NO_NEWT=1 build
perf tools: Add gtk.<command> config option for launching GTK browser
perf tools: Use sscanf for parsing /proc/pid/maps
perf ui tui: Move progress.c under ui/tui directory
perf ui: Introduce generic ui_progress helper
perf ui gtk: Implement ui_progress functions
perf ui: Add ui_progress__finish()
perf ui: Always compile browser setup code
Slava Pestov (1):
ring-buffer: Add a 'dropped events' counter
Steven Rostedt (11):
tracing: Allow tracers to start at core initcall
tracing: Expand ring buffer when trace_printk() is used
tracing: Enable comm recording if trace_printk() is used
tracing: Have tracing_sched_wakeup_trace() use standard unlock_commit
tracing: Cache comms only after an event occurred
tracing: Separate open function from set_event and available_events
tracing: Remove unused function unregister_tracer()
tracing: Make tracing_enabled be equal to tracing_on
tracing: Remove deprecated tracing_enabled file
tracing: Use irq_work for wake ups and remove *_nowake_*() functions
tracing: Add trace_options kernel command line parameter
Sukadev Bhattiprolu (1):
perf powerpc: Use uapi/unistd.h to fix build error
Vaibhav Nagarnaik (1):
tracing: Cleanup unnecessary function declarations
Yoshihiro YUNOMAE (1):
ring-buffer: Change unsigned long type of ring_buffer_oldest_event_ts() to u64
Zheng Liu (1):
perf test: fix a build error on builtin-test
Documentation/kernel-parameters.txt | 16 +
Makefile | 6 +-
include/linux/ftrace_event.h | 14 +-
include/linux/kernel.h | 7 +-
include/linux/ring_buffer.h | 3 +-
include/trace/ftrace.h | 3 +-
include/trace/syscall.h | 23 -
kernel/trace/Kconfig | 1 +
kernel/trace/ftrace.c | 6 +-
kernel/trace/ring_buffer.c | 51 +-
kernel/trace/trace.c | 372 ++---
kernel/trace/trace.h | 14 +-
kernel/trace/trace_branch.c | 4 +-
kernel/trace/trace_events.c | 51 +-
kernel/trace/trace_events_filter.c | 4 +-
kernel/trace/trace_functions.c | 5 +-
kernel/trace/trace_functions_graph.c | 6 +-
kernel/trace/trace_irqsoff.c | 14 +-
kernel/trace/trace_kprobe.c | 10 +-
kernel/trace/trace_probe.c | 14 +-
kernel/trace/trace_sched_switch.c | 4 +-
kernel/trace/trace_sched_wakeup.c | 10 +-
kernel/trace/trace_selftest.c | 13 +-
kernel/trace/trace_syscalls.c | 61 +-
kernel/trace/trace_uprobe.c | 2 +-
tools/Makefile | 24 +-
tools/lib/traceevent/event-parse.c | 22 +-
tools/perf/Makefile | 50 +-
tools/perf/arch/common.c | 47 +-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-diff.c | 48 +-
tools/perf/builtin-record.c | 26 +-
tools/perf/builtin-report.c | 11 +-
tools/perf/builtin-stat.c | 12 +-
tools/perf/builtin-test.c | 1559 --------------------
tools/perf/builtin-top.c | 10 +-
tools/perf/perf.c | 17 +-
tools/perf/perf.h | 18 +-
tools/perf/tests/attr.c | 175 +++
tools/perf/tests/attr.py | 322 ++++
tools/perf/tests/attr/README | 64 +
tools/perf/tests/attr/base-record | 39 +
tools/perf/tests/attr/base-stat | 39 +
tools/perf/tests/attr/test-record-basic | 5 +
tools/perf/tests/attr/test-record-branch-any | 8 +
.../perf/tests/attr/test-record-branch-filter-any | 8 +
.../tests/attr/test-record-branch-filter-any_call | 8 +
.../tests/attr/test-record-branch-filter-any_ret | 8 +
tools/perf/tests/attr/test-record-branch-filter-hv | 8 +
.../tests/attr/test-record-branch-filter-ind_call | 8 +
tools/perf/tests/attr/test-record-branch-filter-k | 8 +
tools/perf/tests/attr/test-record-branch-filter-u | 8 +
tools/perf/tests/attr/test-record-count | 8 +
tools/perf/tests/attr/test-record-data | 8 +
tools/perf/tests/attr/test-record-freq | 6 +
tools/perf/tests/attr/test-record-graph-default | 6 +
tools/perf/tests/attr/test-record-graph-dwarf | 10 +
tools/perf/tests/attr/test-record-graph-fp | 6 +
tools/perf/tests/attr/test-record-group | 18 +
tools/perf/tests/attr/test-record-group1 | 19 +
tools/perf/tests/attr/test-record-no-delay | 9 +
tools/perf/tests/attr/test-record-no-inherit | 7 +
tools/perf/tests/attr/test-record-no-samples | 6 +
tools/perf/tests/attr/test-record-period | 7 +
tools/perf/tests/attr/test-record-raw | 7 +
tools/perf/tests/attr/test-stat-basic | 6 +
tools/perf/tests/attr/test-stat-default | 64 +
tools/perf/tests/attr/test-stat-detailed-1 | 101 ++
tools/perf/tests/attr/test-stat-detailed-2 | 155 ++
tools/perf/tests/attr/test-stat-detailed-3 | 173 +++
tools/perf/tests/attr/test-stat-group | 15 +
tools/perf/tests/attr/test-stat-group1 | 15 +
tools/perf/tests/attr/test-stat-no-inherit | 7 +
tools/perf/tests/builtin-test.c | 173 +++
.../{util/dso-test-data.c => tests/dso-data.c} | 8 +-
tools/perf/tests/evsel-roundtrip-name.c | 114 ++
tools/perf/tests/evsel-tp-sched.c | 84 ++
tools/perf/tests/mmap-basic.c | 162 ++
tools/perf/tests/open-syscall-all-cpus.c | 120 ++
tools/perf/tests/open-syscall-tp-fields.c | 117 ++
tools/perf/tests/open-syscall.c | 66 +
.../parse-events-test.c => tests/parse-events.c} | 23 +-
tools/perf/tests/perf-record.c | 312 ++++
tools/perf/tests/pmu.c | 178 +++
tools/perf/tests/rdpmc.c | 175 +++
tools/perf/tests/tests.h | 22 +
tools/perf/tests/util.c | 30 +
tools/perf/tests/vmlinux-kallsyms.c | 230 +++
tools/perf/ui/browsers/annotate.c | 39 +-
tools/perf/ui/browsers/hists.c | 63 +-
tools/perf/ui/gtk/browser.c | 4 +-
tools/perf/ui/gtk/gtk.h | 1 +
tools/perf/ui/gtk/progress.c | 59 +
tools/perf/ui/gtk/setup.c | 2 +
tools/perf/ui/gtk/util.c | 11 -
tools/perf/ui/hist.c | 10 +-
tools/perf/ui/progress.c | 44 +-
tools/perf/ui/progress.h | 10 +
tools/perf/ui/tui/progress.c | 42 +
tools/perf/ui/tui/setup.c | 1 +
tools/perf/ui/ui.h | 28 +
tools/perf/util/annotate.c | 69 +-
tools/perf/util/annotate.h | 9 +-
tools/perf/util/cache.h | 39 +-
tools/perf/util/debug.h | 1 +
tools/perf/util/dso.c | 1 +
tools/perf/util/event.c | 74 +-
tools/perf/util/evlist.c | 10 +-
tools/perf/util/evsel.c | 52 +-
tools/perf/util/evsel.h | 9 +-
tools/perf/util/hist.c | 99 ++
tools/perf/util/hist.h | 36 +-
tools/perf/util/machine.c | 205 ++-
tools/perf/util/machine.h | 131 +-
tools/perf/util/map.c | 181 +--
tools/perf/util/map.h | 93 --
tools/perf/util/parse-events.c | 24 +
tools/perf/util/parse-events.h | 1 -
tools/perf/util/parse-events.l | 4 +-
tools/perf/util/pmu.c | 185 +--
tools/perf/util/pmu.h | 4 +
tools/perf/util/pstack.c | 46 +-
tools/perf/util/session.c | 1 +
tools/perf/util/session.h | 5 +-
tools/perf/util/sort.h | 27 +-
tools/perf/util/symbol.c | 1 +
tools/perf/util/symbol.h | 21 -
tools/scripts/Makefile.include | 23 +-
128 files changed, 4649 insertions(+), 2751 deletions(-)
delete mode 100644 tools/perf/builtin-test.c
create mode 100644 tools/perf/tests/attr.c
create mode 100644 tools/perf/tests/attr.py
create mode 100644 tools/perf/tests/attr/README
create mode 100644 tools/perf/tests/attr/base-record
create mode 100644 tools/perf/tests/attr/base-stat
create mode 100644 tools/perf/tests/attr/test-record-basic
create mode 100644 tools/perf/tests/attr/test-record-branch-any
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_call
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_ret
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-hv
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-ind_call
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-k
create mode 100644 tools/perf/tests/attr/test-record-branch-filter-u
create mode 100644 tools/perf/tests/attr/test-record-count
create mode 100644 tools/perf/tests/attr/test-record-data
create mode 100644 tools/perf/tests/attr/test-record-freq
create mode 100644 tools/perf/tests/attr/test-record-graph-default
create mode 100644 tools/perf/tests/attr/test-record-graph-dwarf
create mode 100644 tools/perf/tests/attr/test-record-graph-fp
create mode 100644 tools/perf/tests/attr/test-record-group
create mode 100644 tools/perf/tests/attr/test-record-group1
create mode 100644 tools/perf/tests/attr/test-record-no-delay
create mode 100644 tools/perf/tests/attr/test-record-no-inherit
create mode 100644 tools/perf/tests/attr/test-record-no-samples
create mode 100644 tools/perf/tests/attr/test-record-period
create mode 100644 tools/perf/tests/attr/test-record-raw
create mode 100644 tools/perf/tests/attr/test-stat-basic
create mode 100644 tools/perf/tests/attr/test-stat-default
create mode 100644 tools/perf/tests/attr/test-stat-detailed-1
create mode 100644 tools/perf/tests/attr/test-stat-detailed-2
create mode 100644 tools/perf/tests/attr/test-stat-detailed-3
create mode 100644 tools/perf/tests/attr/test-stat-group
create mode 100644 tools/perf/tests/attr/test-stat-group1
create mode 100644 tools/perf/tests/attr/test-stat-no-inherit
create mode 100644 tools/perf/tests/builtin-test.c
rename tools/perf/{util/dso-test-data.c => tests/dso-data.c} (95%)
create mode 100644 tools/perf/tests/evsel-roundtrip-name.c
create mode 100644 tools/perf/tests/evsel-tp-sched.c
create mode 100644 tools/perf/tests/mmap-basic.c
create mode 100644 tools/perf/tests/open-syscall-all-cpus.c
create mode 100644 tools/perf/tests/open-syscall-tp-fields.c
create mode 100644 tools/perf/tests/open-syscall.c
rename tools/perf/{util/parse-events-test.c => tests/parse-events.c} (97%)
create mode 100644 tools/perf/tests/perf-record.c
create mode 100644 tools/perf/tests/pmu.c
create mode 100644 tools/perf/tests/rdpmc.c
create mode 100644 tools/perf/tests/tests.h
create mode 100644 tools/perf/tests/util.c
create mode 100644 tools/perf/tests/vmlinux-kallsyms.c
create mode 100644 tools/perf/ui/gtk/progress.c
create mode 100644 tools/perf/ui/tui/progress.c
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2012-11-18 14:29 Arnaldo Carvalho de Melo
@ 2012-12-08 14:20 ` Ingo Molnar
2012-12-08 14:27 ` Ingo Molnar
1 sibling, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2012-12-08 14:20 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Anton Blanchard, Arnaldo Carvalho de Melo,
Borislav Petkov, Corey Ashford, David Ahern, David Howells,
Feng Tang, Frederic Weisbecker, Jiri Olsa, Linus Torvalds,
linuxppc-dev, Mike Galbraith, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra, Peter Zijlstra,
Robert Richter, Stephane Eranian, Sukadev Bhattiprolu,
Thomas Gleixner, acme
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit ffadcf090d468e9c4938b718649f38dd10cfdb02:
>
> perf annotate: Handle XBEGIN like a jump (2012-10-31 12:18:26 -0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf/core
>
> for you to fetch changes up to 07ac002f2fcc74c5be47b656d9201d5de84dc53d:
>
> perf evsel: Introduce is_group_member method (2012-11-14 16:53:45 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes
>
> . UAPI fixes, from David Howels
>
> . Separate perf tests into multiple objects, one per test, from Jiri Olsa.
>
> . Fixes to /proc/pid/maps parsing, preparatory to supporting data maps,
> from Namhyung Kim
>
> . Fix compile error for non-NEWT builds, from Namhyung Kim
>
> . Implement ui_progress for GTK, from Namhyung Kim
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Andi Kleen (1):
> perf tools: Add arbitary aliases and support names with -
>
> Arnaldo Carvalho de Melo (13):
> perf diff: Start moving to support matching more than two hists
> perf diff: Move hists__match to the hists lib
> perf hists: Introduce hists__link
> perf diff: Use hists__link when not pairing just with baseline
> perf machine: Move more methods to machine.[ch]
> tools lib traceevent: Add __maybe_unused to unused parameters
> tools lib traceevent: Avoid comparisions between signed/unsigned
> tools lib traceevent: No need to check for < 0 on an unsigned enum
> tools lib traceevent: Handle INVALID_ARG_TYPE errno in pevent_strerror
> tools lib traceevent: Use 'const' in variables pointing to const strings
> perf tools: Stop using 'self' in pstack
> perf hists: Initialize all of he->stat with zeroes
> perf evsel: Introduce is_group_member method
>
> Daniel Walter (1):
> tracing: Replace strict_strto* with kstrto*
>
> David Howells (3):
> tools: Define a Makefile function to do subdir processing
> tools: Honour the O= flag when tool build called from a higher Makefile
> tools: Pass the target in descend
>
> David Sharp (2):
> tracing: Trivial cleanup
> tracing: Reset ring buffer when changing trace_clocks
>
> Feng Tang (1):
> perf browser: Don't show scripts menu for 'perf top'
>
> Hiraku Toyooka (1):
> tracing: Change tracer's integer flags to bool
>
> Ingo Molnar (2):
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/.../acme/linux into perf/core
> Merge branch 'tip/perf/core-2' of git://git.kernel.org/.../rostedt/linux-trace into perf/core
>
> Jiri Olsa (47):
> perf tools: Remove BINDIR define from exec_cmd.o compilation
> perf tests: Move test objects into 'tests' directory
> perf tests: Add framework for automated perf_event_attr tests
> perf tests: Add attr record basic test
> perf tests: Add attr tests under builtin test command
> perf tests: Add attr record group test
> perf tests: Add attr record event syntax group test
> perf tests: Add attr record freq test
> perf tests: Add attr record count test
> perf tests: Add attr record graph test
> perf tests: Add attr record period test
> perf tests: Add attr record no samples test
> perf tests: Add attr record no-inherit test
> perf tests: Add attr record data test
> perf tests: Add attr record raw test
> perf tests: Add attr record no delay test
> perf tests: Add attr record branch any test
> perf tests: Add attr record branch filter tests
> perf tests: Add attr stat no-inherit test
> perf tests: Add attr stat group test
> perf tests: Add attr stat event syntax group test
> perf tests: Add attr stat default test
> perf tests: Add attr stat default test
> perf tests: Add documentation for attr tests
> perf tests: Add missing attr stat basic test
> perf tests: Factor attr tests WRITE_ASS macro
> perf tests: Fix attr watermark field name typo
> perf tests: Removing 'optional' field
> perf tests: Move attr.py temp dir cleanup into finally section
> perf tools: Add LIBDW_DIR Makefile variable to for alternate libdw
> perf tests: Move test__vmlinux_matches_kallsyms into separate object
> perf tests: Move test__open_syscall_event into separate object
> perf tests: Move test__open_syscall_event_on_all_cpus into separate object
> perf tests: Move test__basic_mmap into separate object
> perf tests: Move test__PERF_RECORD into separate object
> perf tests: Move test__rdpmc into separate object
> perf tests: Move perf_evsel__roundtrip_name_test into separate object
> perf tests: Move perf_evsel__tp_sched_test into separate object
> perf tests: Move test__syscall_open_tp_fields into separate object
> perf tests: Move pmu tests into separate object
> perf tests: Final cleanup for builtin-test move
> perf tests: Check for mkstemp return value in dso-data test
> perf tools: Fix attributes for '{}' defined event groups
> perf tools: Fix 'disabled' attribute config for record command
> perf tools: Ensure single disable call per event in record comand
> perf tools: Omit group members from perf_evlist__disable/enable
> perf tools: Add basic event modifier sanity check
>
> Michal Hocko (1):
> linux/kernel.h: Remove duplicate trace_printk declaration
>
> Namhyung Kim (18):
> perf tools: Use normalized arch name for searching objdump path
> perf tools: Introduce struct hist_browser_timer
> perf report: Postpone objdump check until annotation requested
> perf machine: Set kernel data mapping length
> perf tools: Fix detection of stack area
> perf hists: Free branch_info when freeing hist_entry
> perf tools: Don't try to lookup objdump for live mode
> perf annotate: Whitespace fixups
> perf annotate: Don't try to follow jump target on PLT symbols
> perf annotate: Merge same lines in summary view
> perf tools: Fix compile error on NO_NEWT=1 build
> perf tools: Add gtk.<command> config option for launching GTK browser
> perf tools: Use sscanf for parsing /proc/pid/maps
> perf ui tui: Move progress.c under ui/tui directory
> perf ui: Introduce generic ui_progress helper
> perf ui gtk: Implement ui_progress functions
> perf ui: Add ui_progress__finish()
> perf ui: Always compile browser setup code
>
> Slava Pestov (1):
> ring-buffer: Add a 'dropped events' counter
>
> Steven Rostedt (11):
> tracing: Allow tracers to start at core initcall
> tracing: Expand ring buffer when trace_printk() is used
> tracing: Enable comm recording if trace_printk() is used
> tracing: Have tracing_sched_wakeup_trace() use standard unlock_commit
> tracing: Cache comms only after an event occurred
> tracing: Separate open function from set_event and available_events
> tracing: Remove unused function unregister_tracer()
> tracing: Make tracing_enabled be equal to tracing_on
> tracing: Remove deprecated tracing_enabled file
> tracing: Use irq_work for wake ups and remove *_nowake_*() functions
> tracing: Add trace_options kernel command line parameter
>
> Sukadev Bhattiprolu (1):
> perf powerpc: Use uapi/unistd.h to fix build error
>
> Vaibhav Nagarnaik (1):
> tracing: Cleanup unnecessary function declarations
>
> Yoshihiro YUNOMAE (1):
> ring-buffer: Change unsigned long type of ring_buffer_oldest_event_ts() to u64
>
> Zheng Liu (1):
> perf test: fix a build error on builtin-test
>
> Documentation/kernel-parameters.txt | 16 +
> Makefile | 6 +-
> include/linux/ftrace_event.h | 14 +-
> include/linux/kernel.h | 7 +-
> include/linux/ring_buffer.h | 3 +-
> include/trace/ftrace.h | 3 +-
> include/trace/syscall.h | 23 -
> kernel/trace/Kconfig | 1 +
> kernel/trace/ftrace.c | 6 +-
> kernel/trace/ring_buffer.c | 51 +-
> kernel/trace/trace.c | 372 ++---
> kernel/trace/trace.h | 14 +-
> kernel/trace/trace_branch.c | 4 +-
> kernel/trace/trace_events.c | 51 +-
> kernel/trace/trace_events_filter.c | 4 +-
> kernel/trace/trace_functions.c | 5 +-
> kernel/trace/trace_functions_graph.c | 6 +-
> kernel/trace/trace_irqsoff.c | 14 +-
> kernel/trace/trace_kprobe.c | 10 +-
> kernel/trace/trace_probe.c | 14 +-
> kernel/trace/trace_sched_switch.c | 4 +-
> kernel/trace/trace_sched_wakeup.c | 10 +-
> kernel/trace/trace_selftest.c | 13 +-
> kernel/trace/trace_syscalls.c | 61 +-
> kernel/trace/trace_uprobe.c | 2 +-
> tools/Makefile | 24 +-
> tools/lib/traceevent/event-parse.c | 22 +-
> tools/perf/Makefile | 50 +-
> tools/perf/arch/common.c | 47 +-
> tools/perf/builtin-annotate.c | 2 +-
> tools/perf/builtin-diff.c | 48 +-
> tools/perf/builtin-record.c | 26 +-
> tools/perf/builtin-report.c | 11 +-
> tools/perf/builtin-stat.c | 12 +-
> tools/perf/builtin-test.c | 1559 --------------------
> tools/perf/builtin-top.c | 10 +-
> tools/perf/perf.c | 17 +-
> tools/perf/perf.h | 18 +-
> tools/perf/tests/attr.c | 175 +++
> tools/perf/tests/attr.py | 322 ++++
> tools/perf/tests/attr/README | 64 +
> tools/perf/tests/attr/base-record | 39 +
> tools/perf/tests/attr/base-stat | 39 +
> tools/perf/tests/attr/test-record-basic | 5 +
> tools/perf/tests/attr/test-record-branch-any | 8 +
> .../perf/tests/attr/test-record-branch-filter-any | 8 +
> .../tests/attr/test-record-branch-filter-any_call | 8 +
> .../tests/attr/test-record-branch-filter-any_ret | 8 +
> tools/perf/tests/attr/test-record-branch-filter-hv | 8 +
> .../tests/attr/test-record-branch-filter-ind_call | 8 +
> tools/perf/tests/attr/test-record-branch-filter-k | 8 +
> tools/perf/tests/attr/test-record-branch-filter-u | 8 +
> tools/perf/tests/attr/test-record-count | 8 +
> tools/perf/tests/attr/test-record-data | 8 +
> tools/perf/tests/attr/test-record-freq | 6 +
> tools/perf/tests/attr/test-record-graph-default | 6 +
> tools/perf/tests/attr/test-record-graph-dwarf | 10 +
> tools/perf/tests/attr/test-record-graph-fp | 6 +
> tools/perf/tests/attr/test-record-group | 18 +
> tools/perf/tests/attr/test-record-group1 | 19 +
> tools/perf/tests/attr/test-record-no-delay | 9 +
> tools/perf/tests/attr/test-record-no-inherit | 7 +
> tools/perf/tests/attr/test-record-no-samples | 6 +
> tools/perf/tests/attr/test-record-period | 7 +
> tools/perf/tests/attr/test-record-raw | 7 +
> tools/perf/tests/attr/test-stat-basic | 6 +
> tools/perf/tests/attr/test-stat-default | 64 +
> tools/perf/tests/attr/test-stat-detailed-1 | 101 ++
> tools/perf/tests/attr/test-stat-detailed-2 | 155 ++
> tools/perf/tests/attr/test-stat-detailed-3 | 173 +++
> tools/perf/tests/attr/test-stat-group | 15 +
> tools/perf/tests/attr/test-stat-group1 | 15 +
> tools/perf/tests/attr/test-stat-no-inherit | 7 +
> tools/perf/tests/builtin-test.c | 173 +++
> .../{util/dso-test-data.c => tests/dso-data.c} | 8 +-
> tools/perf/tests/evsel-roundtrip-name.c | 114 ++
> tools/perf/tests/evsel-tp-sched.c | 84 ++
> tools/perf/tests/mmap-basic.c | 162 ++
> tools/perf/tests/open-syscall-all-cpus.c | 120 ++
> tools/perf/tests/open-syscall-tp-fields.c | 117 ++
> tools/perf/tests/open-syscall.c | 66 +
> .../parse-events-test.c => tests/parse-events.c} | 23 +-
> tools/perf/tests/perf-record.c | 312 ++++
> tools/perf/tests/pmu.c | 178 +++
> tools/perf/tests/rdpmc.c | 175 +++
> tools/perf/tests/tests.h | 22 +
> tools/perf/tests/util.c | 30 +
> tools/perf/tests/vmlinux-kallsyms.c | 230 +++
> tools/perf/ui/browsers/annotate.c | 39 +-
> tools/perf/ui/browsers/hists.c | 63 +-
> tools/perf/ui/gtk/browser.c | 4 +-
> tools/perf/ui/gtk/gtk.h | 1 +
> tools/perf/ui/gtk/progress.c | 59 +
> tools/perf/ui/gtk/setup.c | 2 +
> tools/perf/ui/gtk/util.c | 11 -
> tools/perf/ui/hist.c | 10 +-
> tools/perf/ui/progress.c | 44 +-
> tools/perf/ui/progress.h | 10 +
> tools/perf/ui/tui/progress.c | 42 +
> tools/perf/ui/tui/setup.c | 1 +
> tools/perf/ui/ui.h | 28 +
> tools/perf/util/annotate.c | 69 +-
> tools/perf/util/annotate.h | 9 +-
> tools/perf/util/cache.h | 39 +-
> tools/perf/util/debug.h | 1 +
> tools/perf/util/dso.c | 1 +
> tools/perf/util/event.c | 74 +-
> tools/perf/util/evlist.c | 10 +-
> tools/perf/util/evsel.c | 52 +-
> tools/perf/util/evsel.h | 9 +-
> tools/perf/util/hist.c | 99 ++
> tools/perf/util/hist.h | 36 +-
> tools/perf/util/machine.c | 205 ++-
> tools/perf/util/machine.h | 131 +-
> tools/perf/util/map.c | 181 +--
> tools/perf/util/map.h | 93 --
> tools/perf/util/parse-events.c | 24 +
> tools/perf/util/parse-events.h | 1 -
> tools/perf/util/parse-events.l | 4 +-
> tools/perf/util/pmu.c | 185 +--
> tools/perf/util/pmu.h | 4 +
> tools/perf/util/pstack.c | 46 +-
> tools/perf/util/session.c | 1 +
> tools/perf/util/session.h | 5 +-
> tools/perf/util/sort.h | 27 +-
> tools/perf/util/symbol.c | 1 +
> tools/perf/util/symbol.h | 21 -
> tools/scripts/Makefile.include | 23 +-
> 128 files changed, 4649 insertions(+), 2751 deletions(-)
> delete mode 100644 tools/perf/builtin-test.c
> create mode 100644 tools/perf/tests/attr.c
> create mode 100644 tools/perf/tests/attr.py
> create mode 100644 tools/perf/tests/attr/README
> create mode 100644 tools/perf/tests/attr/base-record
> create mode 100644 tools/perf/tests/attr/base-stat
> create mode 100644 tools/perf/tests/attr/test-record-basic
> create mode 100644 tools/perf/tests/attr/test-record-branch-any
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_call
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-any_ret
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-hv
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-ind_call
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-k
> create mode 100644 tools/perf/tests/attr/test-record-branch-filter-u
> create mode 100644 tools/perf/tests/attr/test-record-count
> create mode 100644 tools/perf/tests/attr/test-record-data
> create mode 100644 tools/perf/tests/attr/test-record-freq
> create mode 100644 tools/perf/tests/attr/test-record-graph-default
> create mode 100644 tools/perf/tests/attr/test-record-graph-dwarf
> create mode 100644 tools/perf/tests/attr/test-record-graph-fp
> create mode 100644 tools/perf/tests/attr/test-record-group
> create mode 100644 tools/perf/tests/attr/test-record-group1
> create mode 100644 tools/perf/tests/attr/test-record-no-delay
> create mode 100644 tools/perf/tests/attr/test-record-no-inherit
> create mode 100644 tools/perf/tests/attr/test-record-no-samples
> create mode 100644 tools/perf/tests/attr/test-record-period
> create mode 100644 tools/perf/tests/attr/test-record-raw
> create mode 100644 tools/perf/tests/attr/test-stat-basic
> create mode 100644 tools/perf/tests/attr/test-stat-default
> create mode 100644 tools/perf/tests/attr/test-stat-detailed-1
> create mode 100644 tools/perf/tests/attr/test-stat-detailed-2
> create mode 100644 tools/perf/tests/attr/test-stat-detailed-3
> create mode 100644 tools/perf/tests/attr/test-stat-group
> create mode 100644 tools/perf/tests/attr/test-stat-group1
> create mode 100644 tools/perf/tests/attr/test-stat-no-inherit
> create mode 100644 tools/perf/tests/builtin-test.c
> rename tools/perf/{util/dso-test-data.c => tests/dso-data.c} (95%)
> create mode 100644 tools/perf/tests/evsel-roundtrip-name.c
> create mode 100644 tools/perf/tests/evsel-tp-sched.c
> create mode 100644 tools/perf/tests/mmap-basic.c
> create mode 100644 tools/perf/tests/open-syscall-all-cpus.c
> create mode 100644 tools/perf/tests/open-syscall-tp-fields.c
> create mode 100644 tools/perf/tests/open-syscall.c
> rename tools/perf/{util/parse-events-test.c => tests/parse-events.c} (97%)
> create mode 100644 tools/perf/tests/perf-record.c
> create mode 100644 tools/perf/tests/pmu.c
> create mode 100644 tools/perf/tests/rdpmc.c
> create mode 100644 tools/perf/tests/tests.h
> create mode 100644 tools/perf/tests/util.c
> create mode 100644 tools/perf/tests/vmlinux-kallsyms.c
> create mode 100644 tools/perf/ui/gtk/progress.c
> create mode 100644 tools/perf/ui/tui/progress.c
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2012-11-18 14:29 Arnaldo Carvalho de Melo
2012-12-08 14:20 ` Ingo Molnar
@ 2012-12-08 14:27 ` Ingo Molnar
1 sibling, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2012-12-08 14:27 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Anton Blanchard, Arnaldo Carvalho de Melo,
Borislav Petkov, Corey Ashford, David Ahern, David Howells,
Feng Tang, Frederic Weisbecker, Jiri Olsa, Linus Torvalds,
linuxppc-dev, Mike Galbraith, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra, Peter Zijlstra,
Robert Richter, Stephane Eranian, Sukadev Bhattiprolu,
Thomas Gleixner, acme
Note that I had to do a number of conflict resolutions between
perf/urgent (now upstream) and perf/core, related to UAPI fixes:
commit f0b9abfb044649bc452fb2fb975ff2fd599cc6a3
Merge: adc1ef1 1b3c393
Author: Ingo Molnar <mingo@kernel.org>
Date: Sat Dec 8 15:25:06 2012 +0100
Merge branch 'linus' into perf/core
Conflicts:
tools/perf/Makefile
tools/perf/builtin-test.c
tools/perf/perf.h
tools/perf/tests/parse-events.c
tools/perf/util/evsel.h
Signed-off-by: Ingo Molnar <mingo@kernel.org>
I think I managed to resolve them all correctly - but please
double check the end result nevertheless.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
* [GIT PULL 00/32] perf/core improvements and fixes
@ 2014-10-28 13:31 Arnaldo Carvalho de Melo
2014-10-29 9:11 ` Ingo Molnar
0 siblings, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-10-28 13:31 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Yarygin, Andi Kleen, Anton Blanchard, Arun Sharma,
Borislav Petkov, Corey Ashford, David Ahern, Don Zickus,
Frederic Weisbecker, Hemant Kumar, Jean Pihet, Jiri Olsa,
Li Zefan, Masami Hiramatsu, Mike Galbraith, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
Stephane Eranian, Sukadev Bhattiprolu, Waiman Long, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit e53f6124af6516cee3063a3072767ee2717ff343:
Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2014-10-24 09:46:36 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to 8eeeb304ea2714962b10873f72aa7c5e24f5265f:
perf probe: Add --quiet option to suppress output result message (2014-10-27 17:16:34 -0200)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
* 'perf probe' --demangle typo fix and a new --quiet option (Masami Hiramatsu)
* Fix report -F (abort, in_tx, mispredict, etc) segfaults for sample.data files
without branch info (Jiri Olsa)
* Don't open the DWARF info multiple times, keeping instead a dwfl handle
in struct dso, greatly speeding up 'perf report' on powerpc. (Sukadev Bhattiprolu)
* Add patch that should have went in a previous patchkit to use global cache
provided by libunwind (Namhyung Kim)
* Make CPUINFO_PROC an array to support different kernels, problem
detected when the information reported via /proc/cpuinfo changed on ARM (Wang Nan)
* Introduce PARSE_OPT_DISABLED option flag and use it to avoid showing
undersired options in tools that provides frontends to 'perf record', like
sched, kvm, etc (Namhyung Kim)
Infrastructure:
* More Intel PT work, including a facility to export sample data (comms,
threads, symbol names, etc) in a database friendly way, with an script to use
this to create a postgresql database. (Adrian Hunter)
* Use make sure that thread->mg->machine points to the machine where
the thread exists (it was being set only for the kmaps kernel modules
case, do it as well for the mmaps) and use it to shorten function
signatures (Arnaldo Carvalho de Melo)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (7):
perf pmu: Let pmu's with no events show up on perf list
perf tools: Build programs to copy 32-bit compatibility
perf tools: Add support for 32-bit compatibility VDSOs
perf tools: Do not attempt to run perf-read-vdso32 if it wasn't built
perf tools: Add facility to export data in database-friendly way
perf scripting python: Extend interface to export data in a database-friendly way
perf script: Add Python script to export to postgresql
Arnaldo Carvalho de Melo (7):
perf tools: Set thread->mg.machine in all places
perf tools: A thread's machine can be found via thread->mg->machine
perf thread: Adopt resolve_callchain method from machine
perf callchains: Use thread->mg->machine
perf tests: Remove misplaced __maybe_unused
perf tests: Use thread->mg->machine
perf pmu: Add proper error handling to print_pmu_events()
Jiri Olsa (7):
perf tools: Fix report -F abort for data without branch info
perf tools: Fix report -F in_tx for data without branch info
perf tools: Fix report -F mispredict for data without branch info
perf tools: Fix report -F symbol_to for data without branch info
perf tools: Fix report -F symbol_from for data without branch info
perf tools: Fix report -F dso_to for data without branch info
perf tools: Fix report -F dso_from for data without branch info
Masami Hiramatsu (2):
perf probe: Trivial typo fix for --demangle
perf probe: Add --quiet option to suppress output result message
Namhyung Kim (6):
perf tools: Add PARSE_OPT_DISABLED flag
perf tools: Export usage string and option table of perf record
perf kvm: Print kvm specific --help output
perf tools: Add support for exclusive option
perf probe: Use PARSE_OPT_EXCLUSIVE flag
perf callchain: Use global caching provided by libunwind
Sukadev Bhattiprolu (1):
perf tools powerpc: Cache the DWARF debug info
Wang Nan (2):
perf tools: Ensure return negative value when write header error
perf tools: Make CPUINFO_PROC an array to support different kernel versions
tools/perf/Makefile.perf | 40 ++-
tools/perf/arch/powerpc/util/skip-callchain-idx.c | 38 ++-
tools/perf/builtin-inject.c | 3 +-
tools/perf/builtin-kvm.c | 25 ++
tools/perf/builtin-probe.c | 67 ++--
tools/perf/builtin-record.c | 7 +-
tools/perf/builtin-script.c | 8 +-
tools/perf/builtin-timechart.c | 9 +-
tools/perf/builtin-trace.c | 6 +-
tools/perf/config/Makefile | 29 +-
tools/perf/config/Makefile.arch | 8 +
tools/perf/config/feature-checks/Makefile | 10 +-
tools/perf/config/feature-checks/test-compile.c | 4 +
tools/perf/perf-read-vdso.c | 34 ++
tools/perf/perf-sys.h | 30 +-
tools/perf/perf.h | 3 +
.../scripts/python/bin/export-to-postgresql-record | 8 +
.../scripts/python/bin/export-to-postgresql-report | 24 ++
tools/perf/scripts/python/export-to-postgresql.py | 360 +++++++++++++++++++++
tools/perf/tests/code-reading.c | 13 +-
tools/perf/tests/dwarf-unwind.c | 18 +-
tools/perf/tests/hists_filter.c | 2 +-
tools/perf/tests/mmap-thread-lookup.c | 2 +-
tools/perf/util/build-id.c | 3 +-
tools/perf/util/callchain.c | 4 +-
tools/perf/util/callchain.h | 6 +-
tools/perf/util/comm.h | 4 +
tools/perf/util/db-export.c | 270 ++++++++++++++++
tools/perf/util/db-export.h | 86 +++++
tools/perf/util/dso.h | 6 +
tools/perf/util/event.c | 19 +-
tools/perf/util/event.h | 1 -
tools/perf/util/evsel.h | 2 +
tools/perf/util/find-vdso-map.c | 30 ++
tools/perf/util/header.c | 34 +-
tools/perf/util/machine.c | 55 ++--
tools/perf/util/machine.h | 17 +-
tools/perf/util/map.c | 8 +-
tools/perf/util/map.h | 4 +-
tools/perf/util/parse-options.c | 78 ++++-
tools/perf/util/parse-options.h | 4 +
tools/perf/util/pmu.c | 41 ++-
tools/perf/util/pmu.h | 1 +
tools/perf/util/probe-event.c | 18 +-
.../util/scripting-engines/trace-event-python.c | 292 ++++++++++++++++-
tools/perf/util/session.c | 6 +-
tools/perf/util/sort.c | 102 ++++--
tools/perf/util/thread.c | 9 +-
tools/perf/util/thread.h | 6 +-
tools/perf/util/unwind-libdw.c | 8 +-
tools/perf/util/unwind-libunwind.c | 29 +-
tools/perf/util/unwind.h | 5 +-
tools/perf/util/vdso.c | 217 +++++++++++--
tools/perf/util/vdso.h | 4 +-
54 files changed, 1808 insertions(+), 309 deletions(-)
create mode 100644 tools/perf/config/feature-checks/test-compile.c
create mode 100644 tools/perf/perf-read-vdso.c
create mode 100644 tools/perf/scripts/python/bin/export-to-postgresql-record
create mode 100644 tools/perf/scripts/python/bin/export-to-postgresql-report
create mode 100644 tools/perf/scripts/python/export-to-postgresql.py
create mode 100644 tools/perf/util/db-export.c
create mode 100644 tools/perf/util/db-export.h
create mode 100644 tools/perf/util/find-vdso-map.c
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2014-10-28 13:31 Arnaldo Carvalho de Melo
@ 2014-10-29 9:11 ` Ingo Molnar
2014-10-29 12:58 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 50+ messages in thread
From: Ingo Molnar @ 2014-10-29 9:11 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Yarygin, Andi Kleen, Anton Blanchard, Arun Sharma,
Borislav Petkov, Corey Ashford, David Ahern, Don Zickus,
Frederic Weisbecker, Hemant Kumar, Jean Pihet, Jiri Olsa,
Li Zefan, Masami Hiramatsu, Mike Galbraith, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
Stephane Eranian, Sukadev Bhattiprolu, Waiman Long, Wang Nan
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit e53f6124af6516cee3063a3072767ee2717ff343:
>
> Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2014-10-24 09:46:36 +0200)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to 8eeeb304ea2714962b10873f72aa7c5e24f5265f:
>
> perf probe: Add --quiet option to suppress output result message (2014-10-27 17:16:34 -0200)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> * 'perf probe' --demangle typo fix and a new --quiet option (Masami Hiramatsu)
So the fix part would be nice to have for perf/urgent I suspect?
> * Fix report -F (abort, in_tx, mispredict, etc) segfaults for sample.data files
> without branch info (Jiri Olsa)
Ditto.
> * Don't open the DWARF info multiple times, keeping instead a dwfl handle
> in struct dso, greatly speeding up 'perf report' on powerpc. (Sukadev Bhattiprolu)
>
> * Add patch that should have went in a previous patchkit to use global cache
> provided by libunwind (Namhyung Kim)
Given that this is already upstream, is this a required fix for
perf/urgent or can it wait and go into perf/core?
And then the remaining bits should be based on the urgent tree.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2014-10-29 9:11 ` Ingo Molnar
@ 2014-10-29 12:58 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-10-29 12:58 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Adrian Hunter, Alexander Yarygin, Andi Kleen,
Anton Blanchard, Arun Sharma, Borislav Petkov, Corey Ashford,
David Ahern, Don Zickus, Frederic Weisbecker, Hemant Kumar,
Jean Pihet, Jiri Olsa, Li Zefan, Masami Hiramatsu, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
Stephane Eranian, Sukadev Bhattiprolu, Waiman Long, Wang Nan
Em Wed, Oct 29, 2014 at 10:11:48AM +0100, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > * 'perf probe' --demangle typo fix and a new --quiet option (Masami Hiramatsu)
> So the fix part would be nice to have for perf/urgent I suspect?
> > * Fix report -F (abort, in_tx, mispredict, etc) segfaults for sample.data files
> > without branch info (Jiri Olsa)
> Ditto.
> > * Don't open the DWARF info multiple times, keeping instead a dwfl handle
> > in struct dso, greatly speeding up 'perf report' on powerpc. (Sukadev Bhattiprolu)
> > * Add patch that should have went in a previous patchkit to use global cache
> > provided by libunwind (Namhyung Kim)
> Given that this is already upstream, is this a required fix for
> perf/urgent or can it wait and go into perf/core?
> And then the remaining bits should be based on the urgent tree.
Ok, did the split, I thought that those were lower prio for corner cases
and it all going via the next release, but sure, if you think it can go
this time, lets do it :-)
- Arnaldo
^ permalink raw reply [flat|nested] 50+ messages in thread
* [GIT PULL 00/32] perf/core improvements and fixes
@ 2017-02-10 1:39 Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue Arnaldo Carvalho de Melo
` (32 more replies)
0 siblings, 33 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, Alexei Starovoitov, Alexis Berlemont,
Andi Kleen, Bintian Wang, Chris Phlipot, Daniel Borkmann,
David Ahern, David Carrillo-Cisneros, David S . Miller,
Dima Kogan, He Kuang, Jiri Olsa, Joe Stringer, Kan Liang, kernel,
linux-arm-kernel, Madhavan Srinivasan, Masami Hiramatsu,
Michael Ellerman, Michal Marek, Mickaël Salaün,
Namhyung Kim, Naveen N . Rao, Paul Turner, Peter Zijlstra,
Petr Holasek, Ravi Bangoria, Stephane Eranian, Taeung Song,
Uwe Kleine-König, Victor Kamensky, Wang Nan, Will Deacon,
William Cohen, xe-linux-external, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 53e74a112ce5c1c9b6a6923bdd6612133625d579:
Merge tag 'perf-urgent-for-mingo-4.10-20170203' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2017-02-03 20:42:30 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.11-20170209
for you to fetch changes up to 7ea6856d6f5629d742edc23b8b76e6263371ef45:
perf intel-pt: Use __fallthrough (2017-02-09 16:32:03 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Add support for parsing Intel uncore vendor event files and add uncore
vendor events for the Intel server processors (Haswell, Broadwell,
IvyBridge), Xeon Phi (Knights Landing) and Broadwell DE (Andi Kleen)
- Support --symfs in 'perf probe' (Uwe Kleine-König)
- Add support for generating bpf prologue on the aarch64 architecture (He Kuang)
- Show proper hint when SDT event not yet in place via 'perf probe' (Ravi Bangoria)
- Take into account symfs setting when reading file build ID (Victor Kamensky)
Infrastructure:
- Map gcc7's '__attribute__ ((fallthrough))', that warns when code
associated to case blocks in switches continue into the next case entry,
to '__falltrough' and use it where warned by gcc, tested on Fedora Rawhide
(Arnaldo Carvalho de Melo)
- Fix buffer sizes used with snprintf that could lead to truncation,
another warning introduced in gcc7 (Arnaldo Carvalho de Melo)
- Robustify do_generate_dynamic_list_file in libtraceevent (David Carrillo-Cisneros)
- Use zfree() in more places (Taeung Song)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (11):
perf jevents: Parse eventcode as number
perf jevents: Add support for parsing uncore json files
perf pmu: Support per pmu json aliases
perf pmu: Support event aliases for non cpu// pmus
perf list: Add debug support for outputing alias string
perf vendor events intel: Add uncore events for Haswell Server processor
perf vendor events intel: Add uncore events for Broadwell Server
perf vendor events intel: Add uncore events for IvyBridge Server
perf vendor events intel: Add uncore events for Sandy Bridge Server
perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing)
perf vendor events intel: Add uncore events for Broadwell DE
Arnaldo Carvalho de Melo (11):
Merge remote-tracking branch 'tip/perf/urgent' into perf/core
perf tools: Fix include of linux/mman.h
tools include: Add a __fallthrough statement
tools string: Use __fallthrough in perf_atoll()
tools strfilter: Use __fallthrough
perf top: Use __fallthrough
perf thread_map: Correctly size buffer used with dirent->dt_name
perf header: Fix handling of PERF_EVENT_UPDATE__SCALE
perf bench numa: Avoid possible truncation when using snprintf()
perf tests: Avoid possible truncation with dirent->d_name + snprintf
perf intel-pt: Use __fallthrough
David Carrillo-Cisneros (1):
tools lib traceevent: Robustify do_generate_dynamic_list_file
He Kuang (2):
perf tools arm64: Add support for generating bpf prologue
perf bpf: Add missing newline in debug messages
Mickaël Salaün (1):
tools lib bpf: Add missing header to the library
Ravi Bangoria (1):
perf sdt: Show proper hint when event not yet in place via 'perf probe'
Taeung Song (4):
perf tools: Only increase index if perf_evsel__new_idx() succeeds
perf tools: Add missing check for failure in a zalloc() call
perf tools: Use zfree() instead of ad hoc equivalent
perf tools: Use zfree() to avoid keeping dangling pointers
Uwe Kleine-König (1):
perf probe: Add option --symfs
Victor Kamensky (1):
perf symbols: Take into account symfs setting when reading file build ID
Makefile | 6 +-
arch/x86/events/Makefile | 13 +-
arch/x86/events/amd/Makefile | 7 +
arch/x86/events/amd/uncore.c | 204 ++++++++-----
arch/x86/events/intel/pt.c | 6 +
include/linux/kprobes.h | 30 +-
include/linux/perf_event.h | 2 +-
kernel/events/core.c | 223 ++++++++------
kernel/extable.c | 9 +-
kernel/kprobes.c | 73 +++--
tools/arch/arm/include/uapi/asm/kvm.h | 9 +
tools/arch/powerpc/include/uapi/asm/kvm.h | 5 +
tools/arch/x86/include/asm/cpufeatures.h | 11 +
tools/arch/x86/include/uapi/asm/vmx.h | 5 +
tools/build/Makefile.build | 10 +
tools/include/linux/compiler.h | 9 +
tools/lib/api/fs/fs.c | 16 +
tools/lib/api/fs/fs.h | 1 +
tools/lib/api/fs/tracing_path.c | 32 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/libbpf.c | 264 +++++++++++++++--
tools/lib/bpf/libbpf.h | 19 +-
tools/lib/subcmd/parse-options.h | 19 +-
tools/lib/traceevent/Makefile | 14 +-
tools/perf/Build | 5 +-
tools/perf/Documentation/perf-c2c.txt | 2 +-
tools/perf/Documentation/perf-ftrace.txt | 36 +++
tools/perf/Documentation/perf-kallsyms.txt | 24 ++
tools/perf/Documentation/perf-record.txt | 14 +-
tools/perf/Documentation/perf-sched.txt | 2 +
tools/perf/Documentation/perf-script.txt | 4 +-
tools/perf/Documentation/perf-trace.txt | 8 +-
tools/perf/Makefile.config | 6 +-
tools/perf/Makefile.perf | 1 +
tools/perf/arch/arm64/Makefile | 1 +
tools/perf/arch/arm64/include/dwarf-regs-table.h | 12 +-
tools/perf/arch/arm64/util/dwarf-regs.c | 15 +-
tools/perf/bench/numa.c | 6 +-
tools/perf/builtin-c2c.c | 3 +-
tools/perf/builtin-ftrace.c | 265 +++++++++++++++++
tools/perf/builtin-help.c | 8 +-
tools/perf/builtin-kallsyms.c | 67 +++++
tools/perf/builtin-kmem.c | 8 +-
tools/perf/builtin-list.c | 3 +
tools/perf/builtin-probe.c | 2 +
tools/perf/builtin-record.c | 158 +++++++++-
tools/perf/builtin-report.c | 4 +-
tools/perf/builtin-sched.c | 130 ++++++++-
tools/perf/builtin-script.c | 3 +-
tools/perf/builtin-top.c | 6 +-
tools/perf/builtin-trace.c | 120 ++++++--
tools/perf/builtin.h | 2 +
tools/perf/command-list.txt | 2 +
tools/perf/perf.c | 20 +-
.../arch/x86/broadwellde/uncore-cache.json | 317 ++++++++++++++++++++
.../arch/x86/broadwellde/uncore-memory.json | 83 ++++++
.../arch/x86/broadwellde/uncore-power.json | 84 ++++++
.../arch/x86/broadwellx/uncore-cache.json | 317 ++++++++++++++++++++
.../arch/x86/broadwellx/uncore-interconnect.json | 28 ++
.../arch/x86/broadwellx/uncore-memory.json | 83 ++++++
.../arch/x86/broadwellx/uncore-power.json | 84 ++++++
.../pmu-events/arch/x86/haswellx/uncore-cache.json | 317 ++++++++++++++++++++
.../arch/x86/haswellx/uncore-interconnect.json | 28 ++
.../arch/x86/haswellx/uncore-memory.json | 83 ++++++
.../pmu-events/arch/x86/haswellx/uncore-power.json | 84 ++++++
.../pmu-events/arch/x86/ivytown/uncore-cache.json | 322 +++++++++++++++++++++
.../arch/x86/ivytown/uncore-interconnect.json | 46 +++
.../pmu-events/arch/x86/ivytown/uncore-memory.json | 75 +++++
.../pmu-events/arch/x86/ivytown/uncore-power.json | 249 ++++++++++++++++
.../pmu-events/arch/x86/jaketown/uncore-cache.json | 209 +++++++++++++
.../arch/x86/jaketown/uncore-interconnect.json | 46 +++
.../arch/x86/jaketown/uncore-memory.json | 79 +++++
.../pmu-events/arch/x86/jaketown/uncore-power.json | 248 ++++++++++++++++
.../arch/x86/knightslanding/uncore-memory.json | 42 +++
tools/perf/pmu-events/jevents.c | 84 +++++-
tools/perf/pmu-events/jevents.h | 4 +-
tools/perf/pmu-events/pmu-events.h | 3 +
tools/perf/tests/Build | 1 +
tools/perf/tests/bpf.c | 42 ++-
tools/perf/tests/builtin-test.c | 4 +
tools/perf/tests/llvm.c | 2 +-
tools/perf/tests/parse-events.c | 8 +-
tools/perf/tests/tests.h | 1 +
tools/perf/tests/unit_number__scnprintf.c | 37 +++
tools/perf/ui/browsers/hists.c | 60 ++--
tools/perf/ui/setup.c | 1 +
tools/perf/util/Build | 1 +
tools/perf/util/bpf-loader.c | 4 +-
tools/perf/util/callchain.c | 16 +-
tools/perf/util/config.c | 23 +-
tools/perf/util/data-convert-bt.c | 7 +-
tools/perf/util/dso.c | 48 ++-
tools/perf/util/event.c | 2 +-
tools/perf/util/evlist.c | 12 +-
tools/perf/util/evlist.h | 2 +
tools/perf/util/header.c | 7 +-
tools/perf/util/hist.c | 4 +-
.../perf/util/intel-pt-decoder/intel-pt-decoder.c | 5 +
.../util/intel-pt-decoder/intel-pt-pkt-decoder.c | 2 +
tools/perf/util/intel-pt.c | 4 +-
tools/perf/util/llvm-utils.c | 4 +-
tools/perf/util/machine.c | 19 ++
tools/perf/util/machine.h | 1 +
tools/perf/util/parse-events.c | 69 +++--
tools/perf/util/parse-events.y | 35 ++-
tools/perf/util/pmu.c | 109 ++++---
tools/perf/util/pmu.h | 1 +
tools/perf/util/probe-event.c | 11 +-
.../perf/util/scripting-engines/trace-event-perl.c | 6 +-
tools/perf/util/session.c | 2 +-
tools/perf/util/strfilter.c | 1 +
tools/perf/util/string.c | 2 +
tools/perf/util/symbol.c | 6 +-
tools/perf/util/thread_map.c | 2 +-
tools/perf/util/trace-event-info.c | 71 +++--
tools/perf/util/trace-event-parse.c | 17 ++
tools/perf/util/trace-event-read.c | 77 ++++-
tools/perf/util/trace-event.h | 1 +
tools/perf/util/unwind-libunwind-local.c | 54 +++-
tools/perf/util/util.c | 15 +-
tools/perf/util/util.h | 3 +-
tools/scripts/Makefile.include | 12 +-
122 files changed, 5101 insertions(+), 550 deletions(-)
create mode 100644 arch/x86/events/amd/Makefile
create mode 100644 tools/perf/Documentation/perf-ftrace.txt
create mode 100644 tools/perf/Documentation/perf-kallsyms.txt
create mode 100644 tools/perf/builtin-ftrace.c
create mode 100644 tools/perf/builtin-kallsyms.c
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
create mode 100644 tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
create mode 100644 tools/perf/tests/unit_number__scnprintf.c
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
# dm
1 alpine:3.4: Ok
2 android-ndk:r12b-arm: Ok
3 archlinux:latest: Ok
4 centos:5: Ok
5 centos:6: Ok
6 centos:7: Ok
7 debian:7: Ok
8 debian:8: Ok
9 debian:experimental: Ok
10 debian:experimental-x-arm64: Ok
11 debian:experimental-x-mips: Ok
12 debian:experimental-x-mips64: Ok
13 debian:experimental-x-mipsel: Ok
14 fedora:20: Ok
15 fedora:21: Ok
16 fedora:22: Ok
17 fedora:23: Ok
18 fedora:24: Ok
19 fedora:24-x-ARC-uClibc: Ok
20 fedora:25: Ok
21 fedora:rawhide: Ok
22 mageia:5: Ok
23 opensuse:13.2: Ok
24 opensuse:42.1: Ok
25 opensuse:tumbleweed: Ok
26 ubuntu:12.04.5: Ok
27 ubuntu:14.04.4-x-linaro-arm64: Ok
28 ubuntu:15.10: Ok
29 ubuntu:16.04: Ok
30 ubuntu:16.04-x-arm: Ok
31 ubuntu:16.04-x-arm64: Ok
32 ubuntu:16.04-x-powerpc: Ok
33 ubuntu:16.04-x-powerpc64: Ok
34 ubuntu:16.04-x-powerpc64el: Ok
35 ubuntu:16.04-x-s390: Ok
36 ubuntu:16.10: Ok
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: PERF_RECORD_* events & perf_sample fields : Ok
7: Parse perf pmu format : Ok
8: DSO data read : Ok
9: DSO data cache : Ok
10: DSO data reopen : Ok
11: Roundtrip evsel->name : Ok
12: Parse sched tracepoints fields : Ok
13: syscalls:sys_enter_openat event fields : Ok
14: Setup struct perf_event_attr : Ok
15: Match and link multiple hists : Ok
16: 'import perf' in python : Ok
17: Breakpoint overflow signal handler : Ok
18: Breakpoint overflow sampling : Ok
19: Number of exit events of a simple workload : Ok
20: Software clock events period values : Ok
21: Object code reading : Ok
22: Sample parsing : Ok
23: Use a dummy software event to keep tracking: Ok
24: Parse with no sample_id_all bit set : Ok
25: Filter hist entries : Ok
26: Lookup mmap thread : Ok
27: Share thread mg : Ok
28: Sort output of hist entries : Ok
29: Cumulate child hist entries : Ok
30: Track with sched_switch : Ok
31: Filter fds with revents mask in a fdarray : Ok
32: Add fd to a fdarray, making it autogrow : Ok
33: kmod_path__parse : Ok
34: Thread map : Ok
35: LLVM search and compile :
35.1: Basic BPF llvm compile : Ok
35.2: kbuild searching : Ok
35.3: Compile source for BPF prologue generation: Ok
35.4: Compile source for BPF relocation : Ok
36: Session topology : Ok
37: BPF filter :
37.1: Basic BPF filtering : Ok
37.2: BPF pinning : Ok
37.3: BPF prologue generation : Ok
37.4: BPF relocation checker : Ok
38: Synthesize thread map : Ok
39: Remove thread map : Ok
40: Synthesize cpu map : Ok
41: Synthesize stat config : Ok
42: Synthesize stat : Ok
43: Synthesize stat round : Ok
44: Synthesize attr update : Ok
45: Event times : Ok
46: Read backward ring buffer : Ok
47: Print cpu map : Ok
48: Probe SDT events : Ok
49: is_printable_array : Ok
50: Print bitmap : Ok
51: perf hooks : Ok
52: builtin clang support : Skip (not compiled in)
53: unit_number__scnprintf : Ok
54: x86 rdpmc : Ok
55: Convert perf time to TSC : Ok
56: DWARF unwind : Ok
57: x86 instruction decoder - new instructions : Ok
58: Intel cqm nmi context read : Skip
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_libperl_O: make NO_LIBPERL=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_perf_o_O: make perf.o
make_pure_O: make
make_install_prefix_O: make install prefix=/tmp/krava
make_no_libunwind_O: make NO_LIBUNWIND=1
make_static_O: make LDFLAGS=-static
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_help_O: make help
make_doc_O: make doc
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_tags_O: make tags
make_debug_O: make DEBUG=1
make_install_bin_O: make install-bin
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_libbpf_O: make NO_LIBBPF=1
make_util_map_o_O: make util/map.o
make_no_libelf_O: make NO_LIBELF=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_gtk2_O: make NO_GTK2=1
make_clean_all_O: make clean all
make_no_newt_O: make NO_NEWT=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_install_O: make install
make_no_libpython_O: make NO_LIBPYTHON=1
make_no_demangle_O: make NO_DEMANGLE=1
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_slang_O: make NO_SLANG=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 02/32] perf bpf: Add missing newline in debug messages Arnaldo Carvalho de Melo
` (31 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, He Kuang, Alexander Shishkin, Bintian Wang,
Jiri Olsa, Peter Zijlstra, Wang Nan, linux-arm-kernel,
Arnaldo Carvalho de Melo
From: He Kuang <hekuang@huawei.com>
Since HAVE_KPROBES can be enabled in arm64, this patch introduces
regs_query_register_offset() to convert register name to offset for
arm64, so the BPF prologue feature is ready to use.
Signed-off-by: He Kuang <hekuang@huawei.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Bintian Wang <bintian.wang@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/20170207073412.26983-1-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/arm64/Makefile | 1 +
tools/perf/arch/arm64/util/dwarf-regs.c | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/tools/perf/arch/arm64/Makefile b/tools/perf/arch/arm64/Makefile
index 18b13518d8d8..eebe1ec9d2ee 100644
--- a/tools/perf/arch/arm64/Makefile
+++ b/tools/perf/arch/arm64/Makefile
@@ -2,3 +2,4 @@ ifndef NO_DWARF
PERF_HAVE_DWARF_REGS := 1
endif
PERF_HAVE_JITDUMP := 1
+PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1
diff --git a/tools/perf/arch/arm64/util/dwarf-regs.c b/tools/perf/arch/arm64/util/dwarf-regs.c
index d49efeb8172e..068b6189157b 100644
--- a/tools/perf/arch/arm64/util/dwarf-regs.c
+++ b/tools/perf/arch/arm64/util/dwarf-regs.c
@@ -10,17 +10,20 @@
#include <stddef.h>
#include <dwarf-regs.h>
+#include <linux/ptrace.h> /* for struct user_pt_regs */
+#include "util.h"
struct pt_regs_dwarfnum {
const char *name;
unsigned int dwarfnum;
};
-#define STR(s) #s
#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num}
#define GPR_DWARFNUM_NAME(num) \
{.name = STR(%x##num), .dwarfnum = num}
#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0}
+#define DWARFNUM2OFFSET(index) \
+ (index * sizeof((struct user_pt_regs *)0)->regs[0])
/*
* Reference:
@@ -78,3 +81,13 @@ const char *get_arch_regstr(unsigned int n)
return roff->name;
return NULL;
}
+
+int regs_query_register_offset(const char *name)
+{
+ const struct pt_regs_dwarfnum *roff;
+
+ for (roff = regdwarfnum_table; roff->name != NULL; roff++)
+ if (!strcmp(roff->name, name))
+ return DWARFNUM2OFFSET(roff->dwarfnum);
+ return -EINVAL;
+}
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 02/32] perf bpf: Add missing newline in debug messages
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 03/32] perf jevents: Parse eventcode as number Arnaldo Carvalho de Melo
` (30 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, He Kuang, Alexander Shishkin, Bintian Wang,
Jiri Olsa, Masami Hiramatsu, Peter Zijlstra, Wang Nan,
Will Deacon, linux-arm-kernel, Arnaldo Carvalho de Melo
From: He Kuang <hekuang@huawei.com>
These two debug messages are missing the trailing newline.
Signed-off-by: He Kuang <hekuang@huawei.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Bintian Wang <bintian.wang@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/20170207073412.26983-2-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/bpf-loader.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 36c861103291..bc6bc7062eb4 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -670,13 +670,13 @@ int bpf__probe(struct bpf_object *obj)
err = convert_perf_probe_events(pev, 1);
if (err < 0) {
- pr_debug("bpf_probe: failed to convert perf probe events");
+ pr_debug("bpf_probe: failed to convert perf probe events\n");
goto out;
}
err = apply_perf_probe_events(pev, 1);
if (err < 0) {
- pr_debug("bpf_probe: failed to apply perf probe events");
+ pr_debug("bpf_probe: failed to apply perf probe events\n");
goto out;
}
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 03/32] perf jevents: Parse eventcode as number
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 02/32] perf bpf: Add missing newline in debug messages Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 04/32] perf jevents: Add support for parsing uncore json files Arnaldo Carvalho de Melo
` (29 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
The next patch needs to modify event code. Previously eventcode was just
passed through as a string. Now parse it as a number.
v2: Don't special case 0
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170128020345.19007-2-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/pmu-events/jevents.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 41611d7f9873..551377bf8428 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -135,7 +135,6 @@ static struct field {
const char *field;
const char *kernel;
} fields[] = {
- { "EventCode", "event=" },
{ "UMask", "umask=" },
{ "CounterMask", "cmask=" },
{ "Invert", "inv=" },
@@ -343,6 +342,7 @@ int json_events(const char *fn,
jsmntok_t *tokens, *tok;
int i, j, len;
char *map;
+ char buf[128];
if (!fn)
return -ENOENT;
@@ -356,6 +356,7 @@ int json_events(const char *fn,
char *event = NULL, *desc = NULL, *name = NULL;
char *long_desc = NULL;
char *extra_desc = NULL;
+ unsigned long long eventcode = 0;
struct msrmap *msr = NULL;
jsmntok_t *msrval = NULL;
jsmntok_t *precise = NULL;
@@ -376,6 +377,11 @@ int json_events(const char *fn,
nz = !json_streq(map, val, "0");
if (match_field(map, field, nz, &event, val)) {
/* ok */
+ } else if (json_streq(map, field, "EventCode")) {
+ char *code = NULL;
+ addfield(map, &code, "", "", val);
+ eventcode |= strtoul(code, NULL, 0);
+ free(code);
} else if (json_streq(map, field, "EventName")) {
addfield(map, &name, "", "", val);
} else if (json_streq(map, field, "BriefDescription")) {
@@ -410,6 +416,8 @@ int json_events(const char *fn,
addfield(map, &extra_desc, " ",
"(Precise event)", NULL);
}
+ snprintf(buf, sizeof buf, "event=%#llx", eventcode);
+ addfield(map, &event, ",", buf, NULL);
if (desc && extra_desc)
addfield(map, &desc, " ", extra_desc, NULL);
if (long_desc && extra_desc)
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 04/32] perf jevents: Add support for parsing uncore json files
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 03/32] perf jevents: Parse eventcode as number Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 05/32] perf pmu: Support per pmu json aliases Arnaldo Carvalho de Melo
` (28 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
Handle the "Unit" field, which is needed to find the right PMU for an
event. We call it "pmu" and convert it to the perf pmu name with an
uncore prefix.
Handle the "ExtSel" field, which just extends the event mask with an
additional bit.
Handle the "Filter" field which adds parameters to the main event
to configure filtering.
Handle the "Unit" field which declares the unit the values should be
scaled too (similar to what the kernel exports)
Set up the "perpkg" field for uncore events so that perf knows they are
per package (similar to what the kernel exports)
Then output the fields into the pmu-events data structures which are
compiled into perf.
Filter out zero fields, except for the event itself.
v2: Fix compilation. Add uncore_ prefix at pre-processing time.
Move eventcode change to separate patch.
v3: Remove extra __maybe_unused
v4: dont duplicate aliases for cpu pmu events
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170128020345.19007-3-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/pmu-events/jevents.c | 74 +++++++++++++++++++++++++++++++++++---
tools/perf/pmu-events/jevents.h | 4 ++-
tools/perf/pmu-events/pmu-events.h | 3 ++
tools/perf/util/pmu.c | 30 +++++++++++-----
4 files changed, 98 insertions(+), 13 deletions(-)
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 551377bf8428..eed09346a72a 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -188,6 +188,27 @@ static struct msrmap *lookup_msr(char *map, jsmntok_t *val)
return NULL;
}
+static struct map {
+ const char *json;
+ const char *perf;
+} unit_to_pmu[] = {
+ { "CBO", "uncore_cbox" },
+ { "QPI LL", "uncore_qpi" },
+ { "SBO", "uncore_sbox" },
+ {}
+};
+
+static const char *field_to_perf(struct map *table, char *map, jsmntok_t *val)
+{
+ int i;
+
+ for (i = 0; table[i].json; i++) {
+ if (json_streq(map, val, table[i].json))
+ return table[i].perf;
+ }
+ return NULL;
+}
+
#define EXPECT(e, t, m) do { if (!(e)) { \
jsmntok_t *loc = (t); \
if (!(t)->start && (t) > tokens) \
@@ -269,7 +290,8 @@ static void print_events_table_prefix(FILE *fp, const char *tblname)
}
static int print_events_table_entry(void *data, char *name, char *event,
- char *desc, char *long_desc)
+ char *desc, char *long_desc,
+ char *pmu, char *unit, char *perpkg)
{
struct perf_entry_data *pd = data;
FILE *outfp = pd->outfp;
@@ -287,7 +309,12 @@ static int print_events_table_entry(void *data, char *name, char *event,
fprintf(outfp, "\t.topic = \"%s\",\n", topic);
if (long_desc && long_desc[0])
fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc);
-
+ if (pmu)
+ fprintf(outfp, "\t.pmu = \"%s\",\n", pmu);
+ if (unit)
+ fprintf(outfp, "\t.unit = \"%s\",\n", unit);
+ if (perpkg)
+ fprintf(outfp, "\t.perpkg = \"%s\",\n", perpkg);
fprintf(outfp, "},\n");
return 0;
@@ -334,7 +361,8 @@ static char *real_event(const char *name, char *event)
/* Call func with each event in the json file */
int json_events(const char *fn,
int (*func)(void *data, char *name, char *event, char *desc,
- char *long_desc),
+ char *long_desc,
+ char *pmu, char *unit, char *perpkg),
void *data)
{
int err = -EIO;
@@ -356,6 +384,10 @@ int json_events(const char *fn,
char *event = NULL, *desc = NULL, *name = NULL;
char *long_desc = NULL;
char *extra_desc = NULL;
+ char *pmu = NULL;
+ char *filter = NULL;
+ char *perpkg = NULL;
+ char *unit = NULL;
unsigned long long eventcode = 0;
struct msrmap *msr = NULL;
jsmntok_t *msrval = NULL;
@@ -382,6 +414,11 @@ int json_events(const char *fn,
addfield(map, &code, "", "", val);
eventcode |= strtoul(code, NULL, 0);
free(code);
+ } else if (json_streq(map, field, "ExtSel")) {
+ char *code = NULL;
+ addfield(map, &code, "", "", val);
+ eventcode |= strtoul(code, NULL, 0) << 21;
+ free(code);
} else if (json_streq(map, field, "EventName")) {
addfield(map, &name, "", "", val);
} else if (json_streq(map, field, "BriefDescription")) {
@@ -405,6 +442,28 @@ int json_events(const char *fn,
addfield(map, &extra_desc, ". ",
" Supports address when precise",
NULL);
+ } else if (json_streq(map, field, "Unit")) {
+ const char *ppmu;
+ char *s;
+
+ ppmu = field_to_perf(unit_to_pmu, map, val);
+ if (ppmu) {
+ pmu = strdup(ppmu);
+ } else {
+ if (!pmu)
+ pmu = strdup("uncore_");
+ addfield(map, &pmu, "", "", val);
+ for (s = pmu; *s; s++)
+ *s = tolower(*s);
+ }
+ addfield(map, &desc, ". ", "Unit: ", NULL);
+ addfield(map, &desc, "", pmu, NULL);
+ } else if (json_streq(map, field, "Filter")) {
+ addfield(map, &filter, "", "", val);
+ } else if (json_streq(map, field, "ScaleUnit")) {
+ addfield(map, &unit, "", "", val);
+ } else if (json_streq(map, field, "PerPkg")) {
+ addfield(map, &perpkg, "", "", val);
}
/* ignore unknown fields */
}
@@ -422,16 +481,23 @@ int json_events(const char *fn,
addfield(map, &desc, " ", extra_desc, NULL);
if (long_desc && extra_desc)
addfield(map, &long_desc, " ", extra_desc, NULL);
+ if (filter)
+ addfield(map, &event, ",", filter, NULL);
if (msr != NULL)
addfield(map, &event, ",", msr->pname, msrval);
fixname(name);
- err = func(data, name, real_event(name, event), desc, long_desc);
+ err = func(data, name, real_event(name, event), desc, long_desc,
+ pmu, unit, perpkg);
free(event);
free(desc);
free(name);
free(long_desc);
free(extra_desc);
+ free(pmu);
+ free(filter);
+ free(perpkg);
+ free(unit);
if (err)
break;
tok += j;
diff --git a/tools/perf/pmu-events/jevents.h b/tools/perf/pmu-events/jevents.h
index b0eb2744b498..71e13de31092 100644
--- a/tools/perf/pmu-events/jevents.h
+++ b/tools/perf/pmu-events/jevents.h
@@ -3,7 +3,9 @@
int json_events(const char *fn,
int (*func)(void *data, char *name, char *event, char *desc,
- char *long_desc),
+ char *long_desc,
+ char *pmu,
+ char *unit, char *perpkg),
void *data);
char *get_cpu_str(void);
diff --git a/tools/perf/pmu-events/pmu-events.h b/tools/perf/pmu-events/pmu-events.h
index 2eaef595d8a0..c669a3cdb9f0 100644
--- a/tools/perf/pmu-events/pmu-events.h
+++ b/tools/perf/pmu-events/pmu-events.h
@@ -10,6 +10,9 @@ struct pmu_event {
const char *desc;
const char *topic;
const char *long_desc;
+ const char *pmu;
+ const char *unit;
+ const char *perpkg;
};
/*
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 78b16100567d..6dc3cc050105 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -229,11 +229,13 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
}
static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
- char *desc, char *val, char *long_desc,
- char *topic)
+ char *desc, char *val,
+ char *long_desc, char *topic,
+ char *unit, char *perpkg)
{
struct perf_pmu_alias *alias;
int ret;
+ int num;
alias = malloc(sizeof(*alias));
if (!alias)
@@ -267,7 +269,12 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
alias->long_desc = long_desc ? strdup(long_desc) :
desc ? strdup(desc) : NULL;
alias->topic = topic ? strdup(topic) : NULL;
-
+ if (unit) {
+ if (convert_scale(unit, &unit, &alias->scale) < 0)
+ return -1;
+ snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
+ }
+ alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1;
list_add_tail(&alias->list, list);
return 0;
@@ -284,7 +291,8 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
buf[ret] = 0;
- return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL);
+ return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL, NULL,
+ NULL);
}
static inline bool pmu_alias_info_file(char *name)
@@ -504,7 +512,7 @@ char * __weak get_cpuid_str(void)
* to the current running CPU. Then, add all PMU events from that table
* as aliases.
*/
-static void pmu_add_cpu_aliases(struct list_head *head)
+static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
{
int i;
struct pmu_events_map *map;
@@ -540,14 +548,21 @@ static void pmu_add_cpu_aliases(struct list_head *head)
*/
i = 0;
while (1) {
+ const char *pname;
+
pe = &map->table[i++];
if (!pe->name)
break;
+ pname = pe->pmu ? pe->pmu : "cpu";
+ if (strncmp(pname, name, strlen(pname)))
+ continue;
+
/* need type casts to override 'const' */
__perf_pmu__new_alias(head, NULL, (char *)pe->name,
(char *)pe->desc, (char *)pe->event,
- (char *)pe->long_desc, (char *)pe->topic);
+ (char *)pe->long_desc, (char *)pe->topic,
+ (char *)pe->unit, (char *)pe->perpkg);
}
out:
@@ -578,8 +593,7 @@ static struct perf_pmu *pmu_lookup(const char *name)
if (pmu_aliases(name, &aliases))
return NULL;
- if (!strcmp(name, "cpu"))
- pmu_add_cpu_aliases(&aliases);
+ pmu_add_cpu_aliases(&aliases, name);
if (pmu_type(name, &type))
return NULL;
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 05/32] perf pmu: Support per pmu json aliases
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (3 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 04/32] perf jevents: Add support for parsing uncore json files Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 06/32] perf pmu: Support event aliases for non cpu// pmus Arnaldo Carvalho de Melo
` (27 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
Add support for registering json aliases per PMU. Any alias with an unit
matching the prefix is registered to the PMU. Uncore has multiple
instances of most units, so all these aliases get registered for each
individual PMU (this is important later to run the event on every
instance of the PMU).
To avoid printing the events multiple times in perf list filter out
duplicated events during printing.
v2: Rely on uncore_ prefix already in unit
v3: Document why calls were reordered
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170128020345.19007-4-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/pmu.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 6dc3cc050105..8e9d00fd418e 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -590,14 +590,16 @@ static struct perf_pmu *pmu_lookup(const char *name)
if (pmu_format(name, &format))
return NULL;
- if (pmu_aliases(name, &aliases))
+ /*
+ * Check the type first to avoid unnecessary work.
+ */
+ if (pmu_type(name, &type))
return NULL;
- pmu_add_cpu_aliases(&aliases, name);
-
- if (pmu_type(name, &type))
+ if (pmu_aliases(name, &aliases))
return NULL;
+ pmu_add_cpu_aliases(&aliases, name);
pmu = zalloc(sizeof(*pmu));
if (!pmu)
return NULL;
@@ -1195,6 +1197,9 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
len = j;
qsort(aliases, len, sizeof(struct sevent), cmp_sevent);
for (j = 0; j < len; j++) {
+ /* Skip duplicates */
+ if (j > 0 && !strcmp(aliases[j].name, aliases[j - 1].name))
+ continue;
if (name_only) {
printf("%s ", aliases[j].name);
continue;
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 06/32] perf pmu: Support event aliases for non cpu// pmus
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (4 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 05/32] perf pmu: Support per pmu json aliases Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 07/32] perf list: Add debug support for outputing alias string Arnaldo Carvalho de Melo
` (26 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
The code for handling pmu aliases without specifying the PMU hardcoded
only supported the cpu PMU.
This patch extends it to work for all PMUs. We always duplicate the
event for all PMUs that have an matching alias. This allows to
automatically expand an alias for all instances of a PMU (so for example
you can monitor all cache boxes with a single event)
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170128020345.19007-5-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 46 ++++++++++++++++++++++++------------------
tools/perf/util/parse-events.y | 32 ++++++++++++++++++++++-------
2 files changed, 51 insertions(+), 27 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 3c876b8ba4de..6dbcba7f0969 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1504,35 +1504,41 @@ static void perf_pmu__parse_init(void)
struct perf_pmu_alias *alias;
int len = 0;
- pmu = perf_pmu__find("cpu");
- if ((pmu == NULL) || list_empty(&pmu->aliases)) {
+ pmu = NULL;
+ while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+ list_for_each_entry(alias, &pmu->aliases, list) {
+ if (strchr(alias->name, '-'))
+ len++;
+ len++;
+ }
+ }
+
+ if (len == 0) {
perf_pmu_events_list_num = -1;
return;
}
- list_for_each_entry(alias, &pmu->aliases, list) {
- if (strchr(alias->name, '-'))
- len++;
- len++;
- }
perf_pmu_events_list = malloc(sizeof(struct perf_pmu_event_symbol) * len);
if (!perf_pmu_events_list)
return;
perf_pmu_events_list_num = len;
len = 0;
- list_for_each_entry(alias, &pmu->aliases, list) {
- struct perf_pmu_event_symbol *p = perf_pmu_events_list + len;
- char *tmp = strchr(alias->name, '-');
-
- if (tmp != NULL) {
- SET_SYMBOL(strndup(alias->name, tmp - alias->name),
- PMU_EVENT_SYMBOL_PREFIX);
- p++;
- SET_SYMBOL(strdup(++tmp), PMU_EVENT_SYMBOL_SUFFIX);
- len += 2;
- } else {
- SET_SYMBOL(strdup(alias->name), PMU_EVENT_SYMBOL);
- len++;
+ pmu = NULL;
+ while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+ list_for_each_entry(alias, &pmu->aliases, list) {
+ struct perf_pmu_event_symbol *p = perf_pmu_events_list + len;
+ char *tmp = strchr(alias->name, '-');
+
+ if (tmp != NULL) {
+ SET_SYMBOL(strndup(alias->name, tmp - alias->name),
+ PMU_EVENT_SYMBOL_PREFIX);
+ p++;
+ SET_SYMBOL(strdup(++tmp), PMU_EVENT_SYMBOL_SUFFIX);
+ len += 2;
+ } else {
+ SET_SYMBOL(strdup(alias->name), PMU_EVENT_SYMBOL);
+ len++;
+ }
}
}
qsort(perf_pmu_events_list, len,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 879115f93edc..f3b5ec901600 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -12,6 +12,7 @@
#include <linux/list.h>
#include <linux/types.h>
#include "util.h"
+#include "pmu.h"
#include "parse-events.h"
#include "parse-events-bison.h"
@@ -236,15 +237,32 @@ PE_KERNEL_PMU_EVENT sep_dc
struct list_head *head;
struct parse_events_term *term;
struct list_head *list;
+ struct perf_pmu *pmu = NULL;
+ int ok = 0;
- ALLOC_LIST(head);
- ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
- $1, 1, &@1, NULL));
- list_add_tail(&term->list, head);
-
+ /* Add it for all PMUs that support the alias */
ALLOC_LIST(list);
- ABORT_ON(parse_events_add_pmu(data, list, "cpu", head));
- parse_events_terms__delete(head);
+ while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+ struct perf_pmu_alias *alias;
+
+ list_for_each_entry(alias, &pmu->aliases, list) {
+ if (!strcasecmp(alias->name, $1)) {
+ ALLOC_LIST(head);
+ ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
+ $1, 1, &@1, NULL));
+ list_add_tail(&term->list, head);
+
+ if (!parse_events_add_pmu(data, list,
+ pmu->name, head)) {
+ ok++;
+ }
+
+ parse_events_terms__delete(head);
+ }
+ }
+ }
+ if (!ok)
+ YYABORT;
$$ = list;
}
|
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 07/32] perf list: Add debug support for outputing alias string
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (5 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 06/32] perf pmu: Support event aliases for non cpu// pmus Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 08/32] perf sdt: Show proper hint when event not yet in place via 'perf probe' Arnaldo Carvalho de Melo
` (25 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
For debugging and testing it is useful to see the converted alias
string. Add support to perf stat/record and perf list to print the alias
conversion. The text string is saved in the alias structure. For perf
stat/record it is folded into the normal -v. For perf list -v was taken,
so we use --debug.
Before:
% perf list
...
cache:
l1d.replacement
[L1D data line replacements]
l1d_pend_miss.fb_full
[Cycles a demand request was blocked due to Fill Buffers inavailability]
After
% perf list --debug
...
cache:
l1d.replacement
[L1D data line replacements]
cpu/umask=0x1,period=2000003,event=0x51/
l1d_pend_miss.fb_full
[Cycles a demand request was blocked due to Fill Buffers inavailability]
cpu/umask=0x2,period=2000003,cmask=1,event=0x48/
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170128020345.19007-6-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-list.c | 3 +++
tools/perf/util/parse-events.y | 3 +++
tools/perf/util/pmu.c | 8 ++++++++
tools/perf/util/pmu.h | 1 +
4 files changed, 15 insertions(+)
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index ba9322ff858b..3b9d98b5feef 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -14,6 +14,7 @@
#include "util/parse-events.h"
#include "util/cache.h"
#include "util/pmu.h"
+#include "util/debug.h"
#include <subcmd/parse-options.h>
static bool desc_flag = true;
@@ -29,6 +30,8 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
"Print extra event descriptions. --no-desc to not print."),
OPT_BOOLEAN('v', "long-desc", &long_desc_flag,
"Print longer event descriptions."),
+ OPT_INCR(0, "debug", &verbose,
+ "Enable debugging output"),
OPT_END()
};
const char * const list_usage[] = {
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index f3b5ec901600..3a5196380609 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -13,6 +13,7 @@
#include <linux/types.h>
#include "util.h"
#include "pmu.h"
+#include "debug.h"
#include "parse-events.h"
#include "parse-events-bison.h"
@@ -254,6 +255,8 @@ PE_KERNEL_PMU_EVENT sep_dc
if (!parse_events_add_pmu(data, list,
pmu->name, head)) {
+ pr_debug("%s -> %s/%s/\n", $1,
+ pmu->name, alias->str);
ok++;
}
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 8e9d00fd418e..82a654dec666 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -275,6 +275,8 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
}
alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1;
+ alias->str = strdup(val);
+
list_add_tail(&alias->list, list);
return 0;
@@ -1087,6 +1089,8 @@ struct sevent {
char *name;
char *desc;
char *topic;
+ char *str;
+ char *pmu;
};
static int cmp_sevent(const void *a, const void *b)
@@ -1183,6 +1187,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
aliases[j].desc = long_desc ? alias->long_desc :
alias->desc;
aliases[j].topic = alias->topic;
+ aliases[j].str = alias->str;
+ aliases[j].pmu = pmu->name;
j++;
}
if (pmu->selectable &&
@@ -1217,6 +1223,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
printf("%*s", 8, "[");
wordwrap(aliases[j].desc, 8, columns, 0);
printf("]\n");
+ if (verbose)
+ printf("%*s%s/%s/\n", 8, "", aliases[j].pmu, aliases[j].str);
} else
printf(" %-50s [Kernel PMU event]\n", aliases[j].name);
printed++;
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 25712034c815..00852ddc7741 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -43,6 +43,7 @@ struct perf_pmu_alias {
char *desc;
char *long_desc;
char *topic;
+ char *str;
struct list_head terms; /* HEAD struct parse_events_term -> list */
struct list_head list; /* ELEM */
char unit[UNIT_MAX_LEN+1];
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 08/32] perf sdt: Show proper hint when event not yet in place via 'perf probe'
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (6 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 07/32] perf list: Add debug support for outputing alias string Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 09/32] perf symbols: Take into account symfs setting when reading file build ID Arnaldo Carvalho de Melo
` (24 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Ravi Bangoria, Alexander Shishkin, Alexis Berlemont,
Madhavan Srinivasan, Michael Ellerman, Naveen N . Rao,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
All events from 'perf list', except SDT events, can be directly recorded
with 'perf record'. But, the flow is little different for SDT events.
Probe points for SDT event needs to be created using 'perf probe' before
recording it using 'perf record'.
Perf shows misleading hint when a user tries to record SDT event without
first creating a probe point. Show proper hint there.
Before patch:
$ perf record -a -e sdt_glib:idle__add
event syntax error: 'sdt_glib:idle__add'
\___ unknown tracepoint
Error: File /sys/kernel/debug/tracing/events/sdt_glib/idle__add not found.
Hint: Perhaps this kernel misses some CONFIG_ setting to enable this feature?.
...
After patch:
$ perf record -a -e sdt_glib:idle__add
event syntax error: 'sdt_glib:idle__add'
\___ unknown tracepoint
Error: File /sys/kernel/debug/tracing/events/sdt_glib/idle__add not found.
Hint: SDT event cannot be directly recorded on.
Please first use 'perf probe sdt_glib:idle__add' before recording it.
...
$ perf probe sdt_glib:idle__add
Added new event:
sdt_glib:idle__add (on %idle__add in /usr/lib64/libglib-2.0.so.0.5000.2)
You can now use it in all perf tools, such as:
perf record -e sdt_glib:idle__add -aR sleep 1
$ perf record -a -e sdt_glib:idle__add
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.175 MB perf.data ]
Suggested-and-Acked-by: Ingo Molnar <mingo@redhat.com>
Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexis Berlemont <alexis.berlemont@gmail.com>
Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170203102642.17258-1-ravi.bangoria@linux.vnet.ibm.com
[ s/Please use/Please first use/ and break the Hint line in two ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/api/fs/tracing_path.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/tools/lib/api/fs/tracing_path.c b/tools/lib/api/fs/tracing_path.c
index 251b7c342a87..3e606b9c443e 100644
--- a/tools/lib/api/fs/tracing_path.c
+++ b/tools/lib/api/fs/tracing_path.c
@@ -86,9 +86,13 @@ void put_tracing_file(char *file)
free(file);
}
-static int strerror_open(int err, char *buf, size_t size, const char *filename)
+int tracing_path__strerror_open_tp(int err, char *buf, size_t size,
+ const char *sys, const char *name)
{
char sbuf[128];
+ char filename[PATH_MAX];
+
+ snprintf(filename, PATH_MAX, "%s/%s", sys, name ?: "*");
switch (err) {
case ENOENT:
@@ -99,10 +103,19 @@ static int strerror_open(int err, char *buf, size_t size, const char *filename)
* - jirka
*/
if (debugfs__configured() || tracefs__configured()) {
- snprintf(buf, size,
- "Error:\tFile %s/%s not found.\n"
- "Hint:\tPerhaps this kernel misses some CONFIG_ setting to enable this feature?.\n",
- tracing_events_path, filename);
+ /* sdt markers */
+ if (!strncmp(filename, "sdt_", 4)) {
+ snprintf(buf, size,
+ "Error:\tFile %s/%s not found.\n"
+ "Hint:\tSDT event cannot be directly recorded on.\n"
+ "\tPlease first use 'perf probe %s:%s' before recording it.\n",
+ tracing_events_path, filename, sys, name);
+ } else {
+ snprintf(buf, size,
+ "Error:\tFile %s/%s not found.\n"
+ "Hint:\tPerhaps this kernel misses some CONFIG_ setting to enable this feature?.\n",
+ tracing_events_path, filename);
+ }
break;
}
snprintf(buf, size, "%s",
@@ -125,12 +138,3 @@ static int strerror_open(int err, char *buf, size_t size, const char *filename)
return 0;
}
-
-int tracing_path__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name)
-{
- char path[PATH_MAX];
-
- snprintf(path, PATH_MAX, "%s/%s", sys, name ?: "*");
-
- return strerror_open(err, buf, size, path);
-}
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 09/32] perf symbols: Take into account symfs setting when reading file build ID
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (7 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 08/32] perf sdt: Show proper hint when event not yet in place via 'perf probe' Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 10/32] perf probe: Add option --symfs Arnaldo Carvalho de Melo
` (23 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Victor Kamensky, Adrian Hunter, Alexander Shishkin,
Chris Phlipot, Dima Kogan, He Kuang, Kan Liang, Masami Hiramatsu,
Namhyung Kim, Peter Zijlstra, Wang Nan, xe-linux-external,
Arnaldo Carvalho de Melo
From: Victor Kamensky <kamensky@cisco.com>
After commit 5baecbcd9c9a ("perf symbols: we can now read separate
debug-info files based on a build ID") and when --symfs option is used
perf failed to pick up symbols for file with the same name between host
and sysroot specified by --symfs option. One can see message like this:
bin/bash with build id 26f0062cb6950d4d1ab0fd9c43eae8b10ca42062 not found, continuing without symbols
It happens because code added by 5baecbcd9c9a opens files directly by
dso->long_name without symbol_conf.symfs consideration, which as result
picks one from the host. It reads its build ID and later even code finds
another proper file in directory pointed by --symfs perf ignores it
because build id mismatches.
Fix is to use __symbol__join_symfs to adjust file name according to
--symfs setting. If no --symfs passed the operation would noop and picks
the same host file as before.
Also note in latter tree after 5baecbcd9c9a commit additional check for
'!dso->has_build_id' was added, so to observe error condition 'perf
record' should run with --no-buildid, so perf.data itself would not have
build id for target binary in buildid perf section and 'perf report'
will pass '!dso->has_build_id' condition. Or target binary should not
have build id, but the same binary on host has build id, again
'!dso->has_build_id' will pass in this case and incorrect build id could
be read if --symfs is used.
Signed-off-by: Victor Kamensky <kamensky@cisco.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Chris Phlipot <cphlipot0@gmail.com>
Cc: Dima Kogan <dima@secretsauce.net>
Cc: He Kuang <hekuang@huawei.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: xe-linux-external@cisco.com
Fixes: 5baecbcd9c9a ("perf symbols: we can now read separate debug-info files based on a build ID")
Link: http://lkml.kernel.org/r/1486424908-17094-1-git-send-email-kamensky@cisco.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/symbol.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index dc93940de351..70e389bc4af7 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1460,9 +1460,11 @@ int dso__load(struct dso *dso, struct map *map)
* DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work
*/
if (!dso->has_build_id &&
- is_regular_file(dso->long_name) &&
- filename__read_build_id(dso->long_name, build_id, BUILD_ID_SIZE) > 0)
+ is_regular_file(dso->long_name)) {
+ __symbol__join_symfs(name, PATH_MAX, dso->long_name);
+ if (filename__read_build_id(name, build_id, BUILD_ID_SIZE) > 0)
dso__set_build_id(dso, build_id);
+ }
/*
* Iterate over candidate debug images.
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 10/32] perf probe: Add option --symfs
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (8 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 09/32] perf symbols: Take into account symfs setting when reading file build ID Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 11/32] perf tools: Only increase index if perf_evsel__new_idx() succeeds Arnaldo Carvalho de Melo
` (22 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Uwe Kleine-König, Alexander Shishkin,
Jiri Olsa, Peter Zijlstra, kernel, Arnaldo Carvalho de Melo
From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
perf probe makes use of debug symbols, so add --symfs as the other
commands have.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: kernel@pengutronix.de
Link: http://lkml.kernel.org/r/1469094512-13440-2-git-send-email-u.kleine-koenig@pengutronix.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-probe.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index f87996b0cb29..1fcebc31a508 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -552,6 +552,8 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
"Enable kernel symbol demangling"),
OPT_BOOLEAN(0, "cache", &probe_conf.cache, "Manipulate probe cache"),
+ OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
+ "Look for files with symbols relative to this directory"),
OPT_END()
};
int ret;
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 11/32] perf tools: Only increase index if perf_evsel__new_idx() succeeds
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (9 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 10/32] perf probe: Add option --symfs Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 12/32] perf tools: Add missing check for failure in a zalloc() call Arnaldo Carvalho de Melo
` (21 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Taeung Song, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo
From: Taeung Song <treeze.taeung@gmail.com>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1485952447-7013-2-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 6dbcba7f0969..2720600b13a9 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -310,10 +310,11 @@ __add_event(struct list_head *list, int *idx,
event_attr_init(attr);
- evsel = perf_evsel__new_idx(attr, (*idx)++);
+ evsel = perf_evsel__new_idx(attr, *idx);
if (!evsel)
return NULL;
+ (*idx)++;
evsel->cpus = cpu_map__get(cpus);
evsel->own_cpus = cpu_map__get(cpus);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 12/32] perf tools: Add missing check for failure in a zalloc() call
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (10 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 11/32] perf tools: Only increase index if perf_evsel__new_idx() succeeds Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 13/32] perf tools: Use zfree() instead of ad hoc equivalent Arnaldo Carvalho de Melo
` (20 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Taeung Song, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo
From: Taeung Song <treeze.taeung@gmail.com>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1485952447-7013-3-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 2720600b13a9..1f1f77d8d3ab 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -211,6 +211,8 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)
closedir(evt_dir);
closedir(sys_dir);
path = zalloc(sizeof(*path));
+ if (!path)
+ return NULL;
path->system = malloc(MAX_EVENT_LENGTH);
if (!path->system) {
free(path);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 13/32] perf tools: Use zfree() instead of ad hoc equivalent
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (11 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 12/32] perf tools: Add missing check for failure in a zalloc() call Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 14/32] perf tools: Use zfree() to avoid keeping dangling pointers Arnaldo Carvalho de Melo
` (19 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Taeung Song, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo
From: Taeung Song <treeze.taeung@gmail.com>
We have zfree(&ptr) for this very common pattern:
free(ptr);
ptr = NULL;
So use it in a few more places.
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1485952447-7013-4-git-send-email-treeze.taeung@gmail.com
[ rewrote commit log ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 1f1f77d8d3ab..ab1ba22d879a 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -254,8 +254,7 @@ struct tracepoint_path *tracepoint_name_to_path(const char *name)
if (path->system == NULL || path->name == NULL) {
zfree(&path->system);
zfree(&path->name);
- free(path);
- path = NULL;
+ zfree(&path);
}
return path;
@@ -1482,8 +1481,7 @@ static void perf_pmu__parse_cleanup(void)
p = perf_pmu_events_list + i;
free(p->symbol);
}
- free(perf_pmu_events_list);
- perf_pmu_events_list = NULL;
+ zfree(&perf_pmu_events_list);
perf_pmu_events_list_num = 0;
}
}
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 14/32] perf tools: Use zfree() to avoid keeping dangling pointers
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (12 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 13/32] perf tools: Use zfree() instead of ad hoc equivalent Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 15/32] tools lib traceevent: Robustify do_generate_dynamic_list_file Arnaldo Carvalho de Melo
` (18 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Taeung Song, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo
From: Taeung Song <treeze.taeung@gmail.com>
The cases changed in this patch are for when we free but keep the
pointer to the freed area, which is not always a good idea.
Be more defensive and zero the pointer to avoid possible use after
free bugs to take more time to be detected.
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1485952447-7013-5-git-send-email-treeze.taeung@gmail.com
[ rewrote commit log ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/parse-events.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index ab1ba22d879a..07be0762e53e 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1479,7 +1479,7 @@ static void perf_pmu__parse_cleanup(void)
for (i = 0; i < perf_pmu_events_list_num; i++) {
p = perf_pmu_events_list + i;
- free(p->symbol);
+ zfree(&p->symbol);
}
zfree(&perf_pmu_events_list);
perf_pmu_events_list_num = 0;
@@ -1570,7 +1570,7 @@ perf_pmu__parse_check(const char *name)
r = bsearch(&p, perf_pmu_events_list,
(size_t) perf_pmu_events_list_num,
sizeof(struct perf_pmu_event_symbol), comp_pmu);
- free(p.symbol);
+ zfree(&p.symbol);
return r ? r->type : PMU_EVENT_SYMBOL_ERR;
}
@@ -1717,8 +1717,8 @@ static void parse_events_print_error(struct parse_events_error *err,
fprintf(stderr, "%*s\\___ %s\n", idx + 1, "", err->str);
if (err->help)
fprintf(stderr, "\n%s\n", err->help);
- free(err->str);
- free(err->help);
+ zfree(&err->str);
+ zfree(&err->help);
}
fprintf(stderr, "Run 'perf list' for a list of valid events\n");
@@ -2413,7 +2413,7 @@ void parse_events_terms__purge(struct list_head *terms)
list_for_each_entry_safe(term, h, terms, list) {
if (term->array.nr_ranges)
- free(term->array.ranges);
+ zfree(&term->array.ranges);
list_del_init(&term->list);
free(term);
}
@@ -2429,7 +2429,7 @@ void parse_events_terms__delete(struct list_head *terms)
void parse_events__clear_array(struct parse_events_array *a)
{
- free(a->ranges);
+ zfree(&a->ranges);
}
void parse_events_evlist_error(struct parse_events_evlist *data,
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 15/32] tools lib traceevent: Robustify do_generate_dynamic_list_file
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (13 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 14/32] perf tools: Use zfree() to avoid keeping dangling pointers Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 16/32] perf tools: Fix include of linux/mman.h Arnaldo Carvalho de Melo
` (17 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, David Carrillo-Cisneros, Alexander Shishkin,
He Kuang, Jiri Olsa, Michal Marek, Paul Turner, Peter Zijlstra,
Stephane Eranian, Uwe Kleine-König, Wang Nan,
Arnaldo Carvalho de Melo
From: David Carrillo-Cisneros <davidcc@google.com>
The dynamic-list-file used to export dynamic symbols introduced in
commit e3d09ec8126f ("tools lib traceevent: Export dynamic symbols
used by traceevent plugins")
is generated without any sort of error checking.
I experienced problems due to an old version of nm (v 0.158) that outputs
in a format distinct from the assumed by the script.
Robustify the built of dynamic symbol list by enforcing that the second
column of $(NM) -u <files> is either "U" (Undefined), "W" or "w" (undefined
weak), which are the possible outputs from non-ancient $(NM) versions.
Print an error if format is unexpected.
v2: Accept "W" and "w" symbol options.
Signed-off-by: David Carrillo-Cisneros <davidcc@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Michal Marek <mmarek@suse.com>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/20170208052840.112182-1-davidcc@google.com
[ Use STRING1 = STRING1 instead of == to make this work on Ubuntu systems ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/traceevent/Makefile | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
index 2616c66e10c1..47076b15eebe 100644
--- a/tools/lib/traceevent/Makefile
+++ b/tools/lib/traceevent/Makefile
@@ -257,10 +257,16 @@ define do_install_plugins
endef
define do_generate_dynamic_list_file
- (echo '{'; \
- $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u; \
- echo '};'; \
- ) > $2
+ symbol_type=`$(NM) -u -D $1 | awk 'NF>1 {print $$1}' | \
+ xargs echo "U W w" | tr ' ' '\n' | sort -u | xargs echo`;\
+ if [ "$$symbol_type" = "U W w" ];then \
+ (echo '{'; \
+ $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\
+ echo '};'; \
+ ) > $2; \
+ else \
+ (echo Either missing one of [$1] or bad version of $(NM)) 1>&2;\
+ fi
endef
install_lib: all_cmd install_plugins
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 16/32] perf tools: Fix include of linux/mman.h
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (14 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 15/32] tools lib traceevent: Robustify do_generate_dynamic_list_file Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 17/32] perf vendor events intel: Add uncore events for Haswell Server processor Arnaldo Carvalho de Melo
` (16 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexander Shishkin,
He Kuang, Jiri Olsa, Michal Marek, Paul Turner, Peter Zijlstra,
Stephane Eranian, Uwe Kleine-König, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
It was using uapi/linux/mmap.h which caused for at least one reporter,
that hasn't specified in what environment the problem manifests itself:
----
The original error is:
In file included from util/event.c:2:0:
...tools/include/uapi/linux/mman.h:4:27: fatal error: uapi/asm/mman.h:
No such file or directory
#include <uapi/asm/mman.h>
^
compilation terminated.
----
Test built it on these containers:
# dm
1 alpine:3.4: Ok
2 android-ndk:r12b-arm: Ok
3 archlinux:latest: Ok
4 centos:5: Ok
5 centos:6: Ok
6 centos:7: Ok
7 debian:7: Ok
8 debian:8: Ok
9 debian:experimental: Ok
10 debian:experimental-x-arm64: Ok
11 debian:experimental-x-mips: Ok
12 debian:experimental-x-mips64: Ok
13 debian:experimental-x-mipsel: Ok
14 fedora:20: Ok
15 fedora:21: Ok
16 fedora:22: Ok
17 fedora:23: Ok
18 fedora:24: Ok
19 fedora:24-x-ARC-uClibc: Ok
20 fedora:25: Ok
21 fedora:rawhide: Ok
22 mageia:5: Ok
23 opensuse:13.2: Ok
24 opensuse:42.1: Ok
25 opensuse:tumbleweed: Ok
26 ubuntu:12.04.5: Ok
27 ubuntu:14.04.4-x-linaro-arm64: Ok
28 ubuntu:15.10: Ok
29 ubuntu:16.04: Ok
30 ubuntu:16.04-x-arm: Ok
31 ubuntu:16.04-x-arm64: Ok
32 ubuntu:16.04-x-powerpc: Ok
33 ubuntu:16.04-x-powerpc64: Ok
34 ubuntu:16.04-x-powerpc64el: Ok
35 ubuntu:16.04-x-s390: Ok
36 ubuntu:16.10: Ok
Reported-by: David Carrillo-Cisneros <davidcc@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Michal Marek <mmarek@suse.com>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Wang Nan <wangnan0@huawei.com>
Fixes: fbef103fad50 ("perf tools: Do hugetlb handling in more systems")
Link: http://lkml.kernel.org/n/tip-4wm5xmjz5wgbq7ucyz4dyd72@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/event.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 8ab0d7da956b..4ea7ce72ed9c 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -1,5 +1,5 @@
#include <linux/types.h>
-#include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
+#include <linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
#include <api/fs/fs.h>
#include "event.h"
#include "debug.h"
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 17/32] perf vendor events intel: Add uncore events for Haswell Server processor
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (15 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 16/32] perf tools: Fix include of linux/mman.h Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 18/32] perf vendor events intel: Add uncore events for Broadwell Server Arnaldo Carvalho de Melo
` (15 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
This is not a full uncore event list, but a short list of useful and
understandable metrics.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../pmu-events/arch/x86/haswellx/uncore-cache.json | 317 +++++++++++++++++++++
.../arch/x86/haswellx/uncore-interconnect.json | 28 ++
.../arch/x86/haswellx/uncore-memory.json | 83 ++++++
.../pmu-events/arch/x86/haswellx/uncore-power.json | 84 ++++++
4 files changed, 512 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
@@ -0,0 +1,317 @@
+[
+ {
+ "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_C_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x34",
+ "EventName": "UNC_C_LLC_LOOKUP.ANY",
+ "Filter": "filter_state=0x1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x11",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x37",
+ "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.UNCACHEABLE",
+ "Filter": "filter_opc=0x187",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_READ",
+ "Filter": "filter_opc=0x187,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_WRITE",
+ "Filter": "filter_opc=0x18f,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
+ "Filter": "filter_opc=0x190",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x191",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
+ "Filter": "filter_opc=0x192",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
+ "Filter": "filter_opc=0x180,filter_tid=0x3e",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x181",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_FULL",
+ "Filter": "filter_opc=0x18c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
+ "Filter": "filter_opc=0x18d",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES",
+ "PerPkg": "1",
+ "UMask": "0xC",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
+ "PerPkg": "1",
+ "UMask": "0x40",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x20",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPS",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x8",
+ "Unit": "HA"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
new file mode 100644
index 000000000000..39387f7909b2
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
@@ -0,0 +1,28 @@
+[
+ {
+ "BriefDescription": "QPI clock ticks. Derived from unc_q_clockticks",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x14",
+ "EventName": "UNC_Q_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x2",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x4",
+ "Unit": "QPI LL"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
@@ -0,0 +1,83 @@
+[
+ {
+ "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0xC",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_M_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x85",
+ "EventName": "UNC_M_POWER_CHANNEL_PPD",
+ "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x86",
+ "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
+ "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x43",
+ "EventName": "UNC_M_POWER_SELF_REFRESH",
+ "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.RD",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.WR",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "iMC"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
@@ -0,0 +1,84 @@
+[
+ {
+ "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
+ "Filter": "occ_sel=1",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
+ "Filter": "occ_sel=2",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
+ "Filter": "occ_sel=3",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xA",
+ "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
+ "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x6",
+ "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x5",
+ "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x74",
+ "EventName": "UNC_P_FREQ_TRANS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 18/32] perf vendor events intel: Add uncore events for Broadwell Server
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (16 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 17/32] perf vendor events intel: Add uncore events for Haswell Server processor Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 19/32] perf vendor events intel: Add uncore events for IvyBridge Server Arnaldo Carvalho de Melo
` (14 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
This is not a full uncore event list, but a short list of useful
and understandable metrics.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../arch/x86/broadwellx/uncore-cache.json | 317 +++++++++++++++++++++
.../arch/x86/broadwellx/uncore-interconnect.json | 28 ++
.../arch/x86/broadwellx/uncore-memory.json | 83 ++++++
.../arch/x86/broadwellx/uncore-power.json | 84 ++++++
4 files changed, 512 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
@@ -0,0 +1,317 @@
+[
+ {
+ "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_C_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x34",
+ "EventName": "UNC_C_LLC_LOOKUP.ANY",
+ "Filter": "filter_state=0x1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x11",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x37",
+ "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.UNCACHEABLE",
+ "Filter": "filter_opc=0x187",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_READ",
+ "Filter": "filter_opc=0x187,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_WRITE",
+ "Filter": "filter_opc=0x18f,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
+ "Filter": "filter_opc=0x190",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x191",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
+ "Filter": "filter_opc=0x192",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
+ "Filter": "filter_opc=0x180,filter_tid=0x3e",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x181",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_FULL",
+ "Filter": "filter_opc=0x18c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
+ "Filter": "filter_opc=0x18d",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES",
+ "PerPkg": "1",
+ "UMask": "0xC",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
+ "PerPkg": "1",
+ "UMask": "0x40",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x20",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPS",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x8",
+ "Unit": "HA"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
new file mode 100644
index 000000000000..39387f7909b2
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
@@ -0,0 +1,28 @@
+[
+ {
+ "BriefDescription": "QPI clock ticks. Derived from unc_q_clockticks",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x14",
+ "EventName": "UNC_Q_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x2",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x4",
+ "Unit": "QPI LL"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
@@ -0,0 +1,83 @@
+[
+ {
+ "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0xC",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_M_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x85",
+ "EventName": "UNC_M_POWER_CHANNEL_PPD",
+ "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x86",
+ "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
+ "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x43",
+ "EventName": "UNC_M_POWER_SELF_REFRESH",
+ "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.RD",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.WR",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "iMC"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
@@ -0,0 +1,84 @@
+[
+ {
+ "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
+ "Filter": "occ_sel=1",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
+ "Filter": "occ_sel=2",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
+ "Filter": "occ_sel=3",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xA",
+ "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
+ "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x6",
+ "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x5",
+ "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x74",
+ "EventName": "UNC_P_FREQ_TRANS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 19/32] perf vendor events intel: Add uncore events for IvyBridge Server
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (17 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 18/32] perf vendor events intel: Add uncore events for Broadwell Server Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 20/32] perf vendor events intel: Add uncore events for Sandy Bridge Server Arnaldo Carvalho de Melo
` (13 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
This is not a full uncore event list, but a short list of useful
and understandable metrics.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../pmu-events/arch/x86/ivytown/uncore-cache.json | 322 +++++++++++++++++++++
.../arch/x86/ivytown/uncore-interconnect.json | 46 +++
.../pmu-events/arch/x86/ivytown/uncore-memory.json | 75 +++++
.../pmu-events/arch/x86/ivytown/uncore-power.json | 249 ++++++++++++++++
4 files changed, 692 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
new file mode 100644
index 000000000000..2efdc6772e0b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
@@ -0,0 +1,322 @@
+[
+ {
+ "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_C_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
+ "Counter": "0,1",
+ "EventCode": "0x34",
+ "EventName": "UNC_C_LLC_LOOKUP.ANY",
+ "Filter": "filter_state=0x1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x11",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
+ "Counter": "0,1",
+ "EventCode": "0x37",
+ "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode.demand",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - Uncacheable reads. Derived from unc_c_tor_inserts.miss_opcode.uncacheable",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.UNCACHEABLE",
+ "Filter": "filter_opc=0x187",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode.rfo_prefetch",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
+ "Filter": "filter_opc=0x190",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode.code",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x191",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode.data_read",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
+ "Filter": "filter_opc=0x192",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe allocating writes that miss LLC - DDIO misses. Derived from unc_c_tor_inserts.miss_opcode.ddio_miss",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_WRITE",
+ "Filter": "filter_opc=0x19c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode.pcie_read",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for ItoM writes (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.miss_opcode.itom_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.ITOM_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe non-snoop reads. Derived from unc_c_tor_inserts.miss_opcode.pcie_read",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_NON_SNOOP_READ",
+ "Filter": "filter_opc=0x1e4",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.miss_opcode.pcie_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
+ "Filter": "filter_opc=0x1e6",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode.streaming_full",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_FULL",
+ "Filter": "filter_opc=0x18c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode.streaming_partial",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
+ "Filter": "filter_opc=0x18d",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Partial PCIe reads. Derived from unc_c_tor_inserts.opcode.pcie_partial",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_PARTIAL_READ",
+ "Filter": "filter_opc=0x195",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe allocating writes that hit in LLC (DDIO hits). Derived from unc_c_tor_inserts.opcode.ddio_hit",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_WRITE",
+ "Filter": "filter_opc=0x19c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode.pcie_read_current",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "ItoM write hits (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.opcode.itom_write_hit",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.ITOM_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop reads. Derived from unc_c_tor_inserts.opcode.pcie_read",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_READ",
+ "Filter": "filter_opc=0x1e4",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop writes (partial). Derived from unc_c_tor_inserts.opcode.pcie_partial_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
+ "Filter": "filter_opc=0x1e5",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.opcode.pcie_full_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_WRITE",
+ "Filter": "filter_opc=0x1e6",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy for all LLC misses that are addressed to local memory. Derived from unc_c_tor_occupancy.miss_local",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.MISS_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x2A",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode.llc_data_read",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy for all LLC misses that are addressed to remote memory. Derived from unc_c_tor_occupancy.miss_remote",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.MISS_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x8A",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Read requests to home agent. Derived from unc_h_requests.reads",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Write requests to home agent. Derived from unc_h_requests.writes",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES",
+ "PerPkg": "1",
+ "UMask": "0xC",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x20",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPS",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x8",
+ "Unit": "HA"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
new file mode 100644
index 000000000000..d7e2fda1d695
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
@@ -0,0 +1,46 @@
+[
+ {
+ "BriefDescription": "QPI clock ticks. Use to get percentages for QPI cycles events. Derived from unc_q_clockticks",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x14",
+ "EventName": "UNC_Q_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Cycles where receiving QPI link is in half-width mode. Derived from unc_q_rxl0p_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x10",
+ "EventName": "UNC_Q_RxL0P_POWER_CYCLES",
+ "MetricExpr": "(UNC_Q_RxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Cycles where transmitting QPI link is in half-width mode. Derived from unc_q_txl0p_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_Q_TxL0P_POWER_CYCLES",
+ "MetricExpr": "(UNC_Q_TxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x2",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x4",
+ "Unit": "QPI LL"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
new file mode 100644
index 000000000000..ac4ad4d6357b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
@@ -0,0 +1,75 @@
+[
+ {
+ "BriefDescription": "Memory page activates for reads and writes. Derived from unc_m_act_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_M_ACT_COUNT.RD",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Umask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Read requests to memory controller. Derived from unc_m_cas_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Write requests to memory controller. Derived from unc_m_cas_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0xC",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory controller clock ticks. Use to generate percentages for memory controller CYCLES events. Derived from unc_m_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_M_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x85",
+ "EventName": "UNC_M_POWER_CHANNEL_PPD",
+ "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x86",
+ "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
+ "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x43",
+ "EventName": "UNC_M_POWER_SELF_REFRESH",
+ "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory page conflicts. Derived from unc_m_pre_count.page_miss",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "iMC"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
new file mode 100644
index 000000000000..dc2586db0dfc
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
@@ -0,0 +1,249 @@
+[
+ {
+ "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_BAND0_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_BAND1_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_BAND2_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_BAND3_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_BAND0_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_BAND1_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_BAND2_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_BAND3_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c0",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
+ "Filter": "occ_sel=1",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c3",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
+ "Filter": "occ_sel=2",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c6",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
+ "Filter": "occ_sel=3",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode. This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip. Derived from unc_p_prochot_external_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xa",
+ "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
+ "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when thermal conditions are the upper limit on frequency. This is related to the THERMAL_THROTTLE CYCLES_ABOVE_TEMP event, which always counts cycles when we are above the thermal temperature. This event (STRONGEST_UPPER_LIMIT) is sampled at the output of the algorithm that determines the actual frequency, while THERMAL_THROTTLE looks at the input. Derived from unc_p_freq_max_limit_thermal_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency. Derived from unc_p_freq_max_os_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x6",
+ "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency. Derived from unc_p_freq_max_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x5",
+ "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency. Derived from unc_p_freq_max_current_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x7",
+ "EventName": "UNC_P_FREQ_MAX_CURRENT_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_CURRENT_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when the system is changing frequency. This can not be filtered by thread ID. One can also use it with the occupancy counter that monitors number of threads in C0 to estimate the performance impact that frequency transitions had on the system. Derived from unc_p_freq_trans_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x60",
+ "EventName": "UNC_P_FREQ_TRANS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
+ "Filter": "filter_band0=1200",
+ "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
+ "Filter": "filter_band1=2000",
+ "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
+ "Filter": "filter_band2=3000",
+ "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
+ "Filter": "filter_band3=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band0=1200",
+ "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band1=2000",
+ "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band2=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band3=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 20/32] perf vendor events intel: Add uncore events for Sandy Bridge Server
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (18 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 19/32] perf vendor events intel: Add uncore events for IvyBridge Server Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 21/32] perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing) Arnaldo Carvalho de Melo
` (12 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
This is not a full uncore event list, but a short list of useful
and understandable metrics.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../pmu-events/arch/x86/jaketown/uncore-cache.json | 209 +++++++++++++++++
.../arch/x86/jaketown/uncore-interconnect.json | 46 ++++
.../arch/x86/jaketown/uncore-memory.json | 79 +++++++
.../pmu-events/arch/x86/jaketown/uncore-power.json | 248 +++++++++++++++++++++
4 files changed, 582 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
new file mode 100644
index 000000000000..2f23cf0129e7
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
@@ -0,0 +1,209 @@
+[
+ {
+ "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_C_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
+ "Counter": "0,1",
+ "EventCode": "0x34",
+ "EventName": "UNC_C_LLC_LOOKUP.ANY",
+ "Filter": "filter_state=0x1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x11",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
+ "Counter": "0,1",
+ "EventCode": "0x37",
+ "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode.demand",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - Uncacheable reads. Derived from unc_c_tor_inserts.miss_opcode.uncacheable",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.UNCACHEABLE",
+ "Filter": "filter_opc=0x187",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe allocating writes that miss LLC - DDIO misses. Derived from unc_c_tor_inserts.miss_opcode.ddio_miss",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_WRITE",
+ "Filter": "filter_opc=0x19c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for ItoM writes (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.miss_opcode.itom_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.ITOM_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode.streaming_full",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_FULL",
+ "Filter": "filter_opc=0x18c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode.streaming_partial",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
+ "Filter": "filter_opc=0x18d",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Partial PCIe reads. Derived from unc_c_tor_inserts.opcode.pcie_partial",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_PARTIAL_READ",
+ "Filter": "filter_opc=0x195",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe allocating writes that hit in LLC (DDIO hits). Derived from unc_c_tor_inserts.opcode.ddio_hit",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_WRITE",
+ "Filter": "filter_opc=0x19c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode.pcie_read_current",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "ItoM write hits (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.opcode.itom_write_hit",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.ITOM_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop reads. Derived from unc_c_tor_inserts.opcode.pcie_read",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_READ",
+ "Filter": "filter_opc=0x1e4",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop writes (partial). Derived from unc_c_tor_inserts.opcode.pcie_partial_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
+ "Filter": "filter_opc=0x1e5",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.opcode.pcie_full_write",
+ "Counter": "0,1",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_WRITE",
+ "Filter": "filter_opc=0x1e6",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for all LLC misses; we divide this by UNC_C_CLOCKTICKS to get average Q depth. Derived from unc_c_tor_occupancy.miss_all",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.MISS_ALL",
+ "Filter": "filter_opc=0x182",
+ "MetricExpr": "(UNC_C_TOR_OCCUPANCY.MISS_ALL / UNC_C_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "UMask": "0xa",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode.llc_data_read",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES",
+ "PerPkg": "1",
+ "UMask": "0xc",
+ "Unit": "HA"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
new file mode 100644
index 000000000000..63351876eb57
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
@@ -0,0 +1,46 @@
+[
+ {
+ "BriefDescription": "QPI clock ticks. Used to get percentages of QPI cycles events. Derived from unc_q_clockticks",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x14",
+ "EventName": "UNC_Q_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Cycles where receiving QPI link is in half-width mode. Derived from unc_q_rxl0p_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x10",
+ "EventName": "UNC_Q_RxL0P_POWER_CYCLES",
+ "MetricExpr": "(UNC_Q_RxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Cycles where transmitting QPI link is in half-width mode. Derived from unc_q_txl0p_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_Q_TxL0P_POWER_CYCLES",
+ "MetricExpr": "(UNC_Q_TxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x2",
+ "Unit": "QPI LL"
+ },
+ {
+ "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
+ "PerPkg": "1",
+ "ScaleUnit": "8Bytes",
+ "UMask": "0x4",
+ "Unit": "QPI LL"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
new file mode 100644
index 000000000000..e2cf6daa7b37
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
@@ -0,0 +1,79 @@
+[
+ {
+ "BriefDescription": "Memory page activates. Derived from unc_m_act_count",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_M_ACT_COUNT",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "UMask": "0xc",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory controller clock ticks. Used to get percentages of memory controller cycles events. Derived from unc_m_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_M_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x85",
+ "EventName": "UNC_M_POWER_CHANNEL_PPD",
+ "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x86",
+ "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
+ "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x43",
+ "EventName": "UNC_M_POWER_SELF_REFRESH",
+ "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory page conflicts. Derived from unc_m_pre_count.page_miss",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Occupancy counter for memory read queue. Derived from unc_m_rpq_occupancy",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_M_RPQ_OCCUPANCY",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
new file mode 100644
index 000000000000..bbe36d547386
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
@@ -0,0 +1,248 @@
+[
+ {
+ "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_BAND0_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_BAND1_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_BAND2_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_BAND3_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_BAND0_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transistioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_BAND1_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_BAND2_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_BAND3_TRANSITIONS",
+ "Filter": "edge=1",
+ "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C0. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c0",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
+ "Filter": "occ_sel=1",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C3. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c3",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
+ "Filter": "occ_sel=2",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C6. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events . Derived from unc_p_power_state_occupancy.cores_c6",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
+ "Filter": "occ_sel=3",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode. This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip. Derived from unc_p_prochot_external_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xa",
+ "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
+ "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when temperature is the upper limit on frequency. Derived from unc_p_freq_max_limit_thermal_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency. Derived from unc_p_freq_max_os_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x6",
+ "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency. Derived from unc_p_freq_max_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x5",
+ "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency. Derived from unc_p_freq_max_current_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x7",
+ "EventName": "UNC_P_FREQ_MAX_CURRENT_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_CURRENT_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_FREQ_TRANS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
+ "Filter": "filter_band0=1200",
+ "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
+ "Filter": "filter_band1=2000",
+ "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
+ "Filter": "filter_band2=3000",
+ "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
+ "Filter": "filter_band3=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xb",
+ "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band0=1200",
+ "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xc",
+ "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band1=2000",
+ "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xd",
+ "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band2=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xe",
+ "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
+ "Filter": "edge=1,filter_band3=4000",
+ "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 21/32] perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing)
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (19 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 20/32] perf vendor events intel: Add uncore events for Sandy Bridge Server Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 22/32] perf vendor events intel: Add uncore events for Broadwell DE Arnaldo Carvalho de Melo
` (11 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
Add metrics for memory and MCDRAM. Minimal metrics only for now.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../arch/x86/knightslanding/uncore-memory.json | 42 ++++++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json b/tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
new file mode 100644
index 000000000000..e3bcd86c4f56
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
@@ -0,0 +1,42 @@
+[
+ {
+ "BriefDescription": "ddr bandwidth read (CPU traffic only) (MB/sec). ",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x03",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "ScaleUnit": "6.4e-05MiB",
+ "UMask": "0x01",
+ "Unit": "imc"
+ },
+ {
+ "BriefDescription": "ddr bandwidth write (CPU traffic only) (MB/sec). ",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x03",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "ScaleUnit": "6.4e-05MiB",
+ "UMask": "0x02",
+ "Unit": "imc"
+ },
+ {
+ "BriefDescription": "mcdram bandwidth read (CPU traffic only) (MB/sec). ",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x01",
+ "EventName": "UNC_E_RPQ_INSERTS",
+ "PerPkg": "1",
+ "ScaleUnit": "6.4e-05MiB",
+ "UMask": "0x01",
+ "Unit": "edc_eclk"
+ },
+ {
+ "BriefDescription": "mcdram bandwidth write (CPU traffic only) (MB/sec). ",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x02",
+ "EventName": "UNC_E_WPQ_INSERTS",
+ "PerPkg": "1",
+ "ScaleUnit": "6.4e-05MiB",
+ "UMask": "0x01",
+ "Unit": "edc_eclk"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 22/32] perf vendor events intel: Add uncore events for Broadwell DE
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (20 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 21/32] perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing) Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 23/32] tools lib bpf: Add missing header to the library Arnaldo Carvalho de Melo
` (10 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel, Andi Kleen, Jiri Olsa, Arnaldo Carvalho de Melo
From: Andi Kleen <ak@linux.intel.com>
This is not a full uncore event list, but a short list of useful
and understandable metrics.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-c0cix4eprbldfrx5zf60suvh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../arch/x86/broadwellde/uncore-cache.json | 317 +++++++++++++++++++++
.../arch/x86/broadwellde/uncore-memory.json | 83 ++++++
.../arch/x86/broadwellde/uncore-power.json | 84 ++++++
3 files changed, 484 insertions(+)
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
@@ -0,0 +1,317 @@
+[
+ {
+ "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_C_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x34",
+ "EventName": "UNC_C_LLC_LOOKUP.ANY",
+ "Filter": "filter_state=0x1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x11",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x37",
+ "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.UNCACHEABLE",
+ "Filter": "filter_opc=0x187",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_READ",
+ "Filter": "filter_opc=0x187,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.MMIO_WRITE",
+ "Filter": "filter_opc=0x18f,filter_nc=1",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
+ "Filter": "filter_opc=0x190",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x191",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
+ "Filter": "filter_opc=0x192",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
+ "Filter": "filter_opc=0x180,filter_tid=0x3e",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
+ "Filter": "filter_opc=0x181",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_FULL",
+ "Filter": "filter_opc=0x18c",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
+ "Filter": "filter_opc=0x18d",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_READ",
+ "Filter": "filter_opc=0x19e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x35",
+ "EventName": "LLC_REFERENCES.PCIE_WRITE",
+ "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x1",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
+ "EventCode": "0x36",
+ "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
+ "Filter": "filter_opc=0x182",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "CBO"
+ },
+ {
+ "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS",
+ "PerPkg": "1",
+ "UMask": "0x3",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.READS_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES",
+ "PerPkg": "1",
+ "UMask": "0xC",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x1",
+ "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
+ "PerPkg": "1",
+ "UMask": "0x40",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x20",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x4",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPS",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x2",
+ "Unit": "HA"
+ },
+ {
+ "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x21",
+ "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x8",
+ "Unit": "HA"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
@@ -0,0 +1,83 @@
+[
+ {
+ "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.RD",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0x3",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_M_CAS_COUNT.WR",
+ "PerPkg": "1",
+ "ScaleUnit": "64Bytes",
+ "UMask": "0xC",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_M_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x85",
+ "EventName": "UNC_M_POWER_CHANNEL_PPD",
+ "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x86",
+ "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
+ "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x43",
+ "EventName": "UNC_M_POWER_SELF_REFRESH",
+ "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
+ "PerPkg": "1",
+ "UMask": "0x1",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.RD",
+ "PerPkg": "1",
+ "UMask": "0x4",
+ "Unit": "iMC"
+ },
+ {
+ "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x2",
+ "EventName": "UNC_M_PRE_COUNT.WR",
+ "PerPkg": "1",
+ "UMask": "0x8",
+ "Unit": "iMC"
+ }
+]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
@@ -0,0 +1,84 @@
+[
+ {
+ "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
+ "Counter": "0,1,2,3",
+ "EventName": "UNC_P_CLOCKTICKS",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
+ "Filter": "occ_sel=1",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
+ "Filter": "occ_sel=2",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x80",
+ "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
+ "Filter": "occ_sel=3",
+ "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0xA",
+ "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
+ "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x4",
+ "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x6",
+ "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x5",
+ "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ },
+ {
+ "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
+ "Counter": "0,1,2,3",
+ "EventCode": "0x74",
+ "EventName": "UNC_P_FREQ_TRANS_CYCLES",
+ "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
+ "PerPkg": "1",
+ "Unit": "PCU"
+ }
+]
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 23/32] tools lib bpf: Add missing header to the library
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (21 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 22/32] perf vendor events intel: Add uncore events for Broadwell DE Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo
` (9 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Mickaël Salaün, Alexei Starovoitov,
Daniel Borkmann, David S . Miller, Joe Stringer,
Arnaldo Carvalho de Melo
From: Mickaël Salaün <mic@digikod.net>
Include stddef.h to define size_t.
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Acked-by: Wang Nan <wangnan0@huawei.com>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Joe Stringer <joe@ovn.org>
Link: http://lkml.kernel.org/r/20170207205609.8035-2-mic@digikod.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/bpf/bpf.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index a2f9853dd882..df6e186da788 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -22,6 +22,7 @@
#define __BPF_BPF_H
#include <linux/bpf.h>
+#include <stddef.h>
int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size,
int max_entries, __u32 map_flags);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 24/32] tools include: Add a __fallthrough statement
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (22 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 23/32] tools lib bpf: Add missing header to the library Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 3:02 ` Joe Perches
2017-02-10 1:39 ` [PATCH 25/32] tools string: Use __fallthrough in perf_atoll() Arnaldo Carvalho de Melo
` (8 subsequent siblings)
32 siblings, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan, William Cohen
From: Arnaldo Carvalho de Melo <acme@redhat.com>
For cases where implicit fall through case labels are intended,
to let us inform that to gcc >= 7:
CC /tmp/build/perf/util/string.o
util/string.c: In function 'perf_atoll':
util/string.c:22:7: error: this statement may fall through [-Werror=implicit-fallthrough=]
if (*p)
^
util/string.c:24:3: note: here
case '\0':
^~~~
So we introduce:
#define __fallthrough __attribute__ ((fallthrough))
And use it in such cases.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: William Cohen <wcohen@redhat.com>
Link: http://lkml.kernel.org/n/tip-qnpig0xfop4hwv6k4mv1wts5@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/include/linux/compiler.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
index e33fc1df3935..d94179f94caa 100644
--- a/tools/include/linux/compiler.h
+++ b/tools/include/linux/compiler.h
@@ -126,4 +126,13 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
#define WRITE_ONCE(x, val) \
({ union { typeof(x) __val; char __c[1]; } __u = { .__val = (val) }; __write_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
+
+#ifndef __fallthrough
+# if defined(__GNUC__) && __GNUC__ >= 7
+# define __fallthrough __attribute__ ((fallthrough))
+# else
+# define __fallthrough
+# endif
+#endif
+
#endif /* _TOOLS_LINUX_COMPILER_H */
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 25/32] tools string: Use __fallthrough in perf_atoll()
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (23 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 26/32] tools strfilter: Use __fallthrough Arnaldo Carvalho de Melo
` (7 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
The implicit fall through case label here is intended, so let us inform
that to gcc >= 7:
CC /tmp/build/perf/util/string.o
util/string.c: In function 'perf_atoll':
util/string.c:22:7: error: this statement may fall through [-Werror=implicit-fallthrough=]
if (*p)
^
util/string.c:24:3: note: here
case '\0':
^~~~
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-0ophb30v9apkk6o95el0rqlq@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/string.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c
index d8dfaf64b32e..bddca519dd58 100644
--- a/tools/perf/util/string.c
+++ b/tools/perf/util/string.c
@@ -21,6 +21,8 @@ s64 perf_atoll(const char *str)
case 'b': case 'B':
if (*p)
goto out_err;
+
+ __fallthrough;
case '\0':
return length;
default:
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 26/32] tools strfilter: Use __fallthrough
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (24 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 25/32] tools string: Use __fallthrough in perf_atoll() Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 27/32] perf top: " Arnaldo Carvalho de Melo
` (6 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
The implicit fall through case label here is intended, so let us inform
that to gcc >= 7:
util/strfilter.c: In function 'strfilter_node__sprint':
util/strfilter.c:270:6: error: this statement may fall through [-Werror=implicit-fallthrough=]
if (len < 0)
^
util/strfilter.c:272:2: note: here
case '!':
^~~~
cc1: all warnings being treated as errors
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-z2dpywg7u8fim000hjfbpyfm@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/strfilter.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/perf/util/strfilter.c b/tools/perf/util/strfilter.c
index bcae659b6546..efb53772e0ec 100644
--- a/tools/perf/util/strfilter.c
+++ b/tools/perf/util/strfilter.c
@@ -269,6 +269,7 @@ static int strfilter_node__sprint(struct strfilter_node *node, char *buf)
len = strfilter_node__sprint_pt(node->l, buf);
if (len < 0)
return len;
+ __fallthrough;
case '!':
if (buf) {
*(buf + len++) = *node->p;
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 27/32] perf top: Use __fallthrough
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (25 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 26/32] tools strfilter: Use __fallthrough Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 28/32] perf thread_map: Correctly size buffer used with dirent->dt_name Arnaldo Carvalho de Melo
` (5 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
The implicit fall through case label here is intended, so let us inform
that to gcc >= 7:
CC /tmp/build/perf/builtin-top.o
builtin-top.c: In function 'display_thread':
builtin-top.c:644:7: error: this statement may fall through [-Werror=implicit-fallthrough=]
if (errno == EINTR)
^
builtin-top.c:647:3: note: here
default:
^~~~~~~
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-lmcfnnyx9ic0m6j0aud98p4e@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-top.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 20aef9815cd8..d90927f31ff6 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -643,7 +643,7 @@ static void *display_thread(void *arg)
case -1:
if (errno == EINTR)
continue;
- /* Fall trhu */
+ __fallthrough;
default:
c = getc(stdin);
tcsetattr(0, TCSAFLUSH, &save);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 28/32] perf thread_map: Correctly size buffer used with dirent->dt_name
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (26 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 27/32] perf top: " Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE Arnaldo Carvalho de Melo
` (4 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
The size of dirent->dt_name is NAME_MAX + 1, but the size for the 'path'
buffer is hard coded at 256, which may truncate it because we also
prepend "/proc/", so that all that into account and thank gcc 7 for this
warning:
/git/linux/tools/perf/util/thread_map.c: In function 'thread_map__new_by_uid':
/git/linux/tools/perf/util/thread_map.c:119:39: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 250 [-Werror=format-truncation=]
snprintf(path, sizeof(path), "/proc/%s", dirent->d_name);
^~
In file included from /usr/include/stdio.h:939:0,
from /git/linux/tools/perf/util/thread_map.c:5:
/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 7 and 262 bytes into a destination of size 256
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__bos (__s), __fmt, __va_arg_pack ());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-csy0r8zrvz5efccgd4k12c82@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/thread_map.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c
index f9eab200fd75..7c3fcc538a70 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -93,7 +93,7 @@ struct thread_map *thread_map__new_by_uid(uid_t uid)
{
DIR *proc;
int max_threads = 32, items, i;
- char path[256];
+ char path[NAME_MAX + 1 + 6];
struct dirent *dirent, **namelist = NULL;
struct thread_map *threads = thread_map__alloc(max_threads);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (27 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 28/32] perf thread_map: Correctly size buffer used with dirent->dt_name Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 30/32] perf bench numa: Avoid possible truncation when using snprintf() Arnaldo Carvalho de Melo
` (3 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern, Jiri Olsa,
Kan Liang, Namhyung Kim, Peter Zijlstra
From: Arnaldo Carvalho de Melo <acme@redhat.com>
In commit daeecbc0c431 ("perf tools: Add event_update event scale type"), the
handling of PERF_EVENT_UPDATE__SCALE cast struct event_update_event->data to a
pointer to event_update_event_scale, uses some field from this casted struct
and then ends up falling through to the handling of another event type,
PERF_EVENT_UPDATE__CPUS were it casts that ev->data to yet another type, oops,
fix it by inserting the missing break.
Noticed when building perf using gcc 7 on Fedora Rawhide:
util/header.c: In function 'perf_event__process_event_update':
util/header.c:3207:16: error: this statement may fall through [-Werror=implicit-fallthrough=]
evsel->scale = ev_scale->scale;
~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
util/header.c:3208:2: note: here
case PERF_EVENT_UPDATE__CPUS:
^~~~
This wasn't noticed because probably PERF_EVENT_UPDATE__CPUS comes after
PERF_EVENT_UPDATE__SCALE, so we would just create a bogus evsel->own_cpus when
processing a PERF_EVENT_UPDATE__SCALE to then leak it and create a new cpu map
with the correct data.
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: daeecbc0c431 ("perf tools: Add event_update event scale type")
Link: http://lkml.kernel.org/n/tip-lukcf9hdj092ax2914ss95at@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
| 1 +
1 file changed, 1 insertion(+)
--git a/tools/perf/util/header.c b/tools/perf/util/header.c
index c567d9f0aa92..3d12c16e5103 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -3205,6 +3205,7 @@ int perf_event__process_event_update(struct perf_tool *tool __maybe_unused,
case PERF_EVENT_UPDATE__SCALE:
ev_scale = (struct event_update_event_scale *) ev->data;
evsel->scale = ev_scale->scale;
+ break;
case PERF_EVENT_UPDATE__CPUS:
ev_cpus = (struct event_update_event_cpus *) ev->data;
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 30/32] perf bench numa: Avoid possible truncation when using snprintf()
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (28 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 31/32] perf tests: Avoid possible truncation with dirent->d_name + snprintf Arnaldo Carvalho de Melo
` (2 subsequent siblings)
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Petr Holasek, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Addressing this warning from gcc 7:
CC /tmp/build/perf/bench/numa.o
bench/numa.c: In function '__bench_numa':
bench/numa.c:1582:42: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size between 8 and 17 [-Werror=format-truncation=]
snprintf(tname, 32, "process%d:thread%d", p, t);
^~
bench/numa.c:1582:25: note: directive argument in the range [0, 2147483647]
snprintf(tname, 32, "process%d:thread%d", p, t);
^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:939:0,
from bench/../util/util.h:47,
from bench/../builtin.h:4,
from bench/numa.c:11:
/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 17 and 35 bytes into a destination of size 32
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__bos (__s), __fmt, __va_arg_pack ());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Petr Holasek <pholasek@redhat.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-twa37vsfqcie5gwpqwnjuuz9@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/bench/numa.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
index 8efe904e486b..9e5a02d6b9a9 100644
--- a/tools/perf/bench/numa.c
+++ b/tools/perf/bench/numa.c
@@ -1573,13 +1573,13 @@ static int __bench_numa(const char *name)
"GB/sec,", "total-speed", "GB/sec total speed");
if (g->p.show_details >= 2) {
- char tname[32];
+ char tname[14 + 2 * 10 + 1];
struct thread_data *td;
for (p = 0; p < g->p.nr_proc; p++) {
for (t = 0; t < g->p.nr_threads; t++) {
- memset(tname, 0, 32);
+ memset(tname, 0, sizeof(tname));
td = g->threads + p*g->p.nr_threads + t;
- snprintf(tname, 32, "process%d:thread%d", p, t);
+ snprintf(tname, sizeof(tname), "process%d:thread%d", p, t);
print_res(tname, td->speed_gbs,
"GB/sec", "thread-speed", "GB/sec/thread speed");
print_res(tname, td->system_time_ns / NSEC_PER_SEC,
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 31/32] perf tests: Avoid possible truncation with dirent->d_name + snprintf
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (29 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 30/32] perf bench numa: Avoid possible truncation when using snprintf() Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 32/32] perf intel-pt: Use __fallthrough Arnaldo Carvalho de Melo
2017-02-10 7:38 ` [GIT PULL 00/32] perf/core improvements and fixes Ingo Molnar
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Addressing a few cases spotted by a new warning in gcc 7:
tests/parse-events.c: In function 'test_pmu_events':
tests/parse-events.c:1790:39: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 90 [-Werror=format-truncation=]
snprintf(name, MAX_NAME, "cpu/event=%s/u", ent->d_name);
^~
In file included from /usr/include/stdio.h:939:0,
from /git/linux/tools/perf/util/map.h:9,
from /git/linux/tools/perf/util/symbol.h:7,
from /git/linux/tools/perf/util/evsel.h:10,
from tests/parse-events.c:3:
/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 13 and 268 bytes into a destination of size 100
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__bos (__s), __fmt, __va_arg_pack ());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/parse-events.c:1798:29: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 100 [-Werror=format-truncation=]
snprintf(name, MAX_NAME, "%s:u,cpu/event=%s/u", ent->d_name, ent->d_name);
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Fixes: 945aea220bb8 ("perf tests: Move test objects into 'tests' directory")
Link: http://lkml.kernel.org/n/tip-ty4q2p8zp1dp3mskvubxskm5@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/tests/parse-events.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 20c2e641c422..aa9276bfe3e9 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -1779,15 +1779,14 @@ static int test_pmu_events(void)
}
while (!ret && (ent = readdir(dir))) {
-#define MAX_NAME 100
struct evlist_test e;
- char name[MAX_NAME];
+ char name[2 * NAME_MAX + 1 + 12 + 3];
/* Names containing . are special and cannot be used directly */
if (strchr(ent->d_name, '.'))
continue;
- snprintf(name, MAX_NAME, "cpu/event=%s/u", ent->d_name);
+ snprintf(name, sizeof(name), "cpu/event=%s/u", ent->d_name);
e.name = name;
e.check = test__checkevent_pmu_events;
@@ -1795,11 +1794,10 @@ static int test_pmu_events(void)
ret = test_event(&e);
if (ret)
break;
- snprintf(name, MAX_NAME, "%s:u,cpu/event=%s/u", ent->d_name, ent->d_name);
+ snprintf(name, sizeof(name), "%s:u,cpu/event=%s/u", ent->d_name, ent->d_name);
e.name = name;
e.check = test__checkevent_pmu_events_mix;
ret = test_event(&e);
-#undef MAX_NAME
}
closedir(dir);
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 32/32] perf intel-pt: Use __fallthrough
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (30 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 31/32] perf tests: Avoid possible truncation with dirent->d_name + snprintf Arnaldo Carvalho de Melo
@ 2017-02-10 1:39 ` Arnaldo Carvalho de Melo
2017-02-10 7:38 ` [GIT PULL 00/32] perf/core improvements and fixes Ingo Molnar
32 siblings, 0 replies; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 1:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, David Ahern, Jiri Olsa, Namhyung Kim,
Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
To address new warnings emmited by gcc 7, e.g.::
CC /tmp/build/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.o
CC /tmp/build/perf/tests/parse-events.o
util/intel-pt-decoder/intel-pt-pkt-decoder.c: In function 'intel_pt_pkt_desc':
util/intel-pt-decoder/intel-pt-pkt-decoder.c:499:6: error: this statement may fall through [-Werror=implicit-fallthrough=]
if (!(packet->count))
^
util/intel-pt-decoder/intel-pt-pkt-decoder.c:501:2: note: here
case INTEL_PT_CYC:
^~~~
CC /tmp/build/perf/util/intel-pt-decoder/intel-pt-decoder.o
cc1: all warnings being treated as errors
Acked-by: Andi Kleen <ak@linux.intel.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-mf0hw789pu9x855us5l32c83@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 5 +++++
tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c | 2 ++
2 files changed, 7 insertions(+)
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
index e4e7dc781d21..7cf7f7aca4d2 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include <stdint.h>
#include <inttypes.h>
+#include <linux/compiler.h>
#include "../cache.h"
#include "../util.h"
@@ -1746,6 +1747,7 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
switch (decoder->packet.type) {
case INTEL_PT_TIP_PGD:
decoder->continuous_period = false;
+ __fallthrough;
case INTEL_PT_TIP_PGE:
case INTEL_PT_TIP:
intel_pt_log("ERROR: Unexpected packet\n");
@@ -1799,6 +1801,8 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
decoder->pge = false;
decoder->continuous_period = false;
intel_pt_clear_tx_flags(decoder);
+ __fallthrough;
+
case INTEL_PT_TNT:
decoder->have_tma = false;
intel_pt_log("ERROR: Unexpected packet\n");
@@ -1839,6 +1843,7 @@ static int intel_pt_walk_to_ip(struct intel_pt_decoder *decoder)
switch (decoder->packet.type) {
case INTEL_PT_TIP_PGD:
decoder->continuous_period = false;
+ __fallthrough;
case INTEL_PT_TIP_PGE:
case INTEL_PT_TIP:
decoder->pge = decoder->packet.type != INTEL_PT_TIP_PGD;
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
index 4f7b32020487..7528ae4f7e28 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
@@ -17,6 +17,7 @@
#include <string.h>
#include <endian.h>
#include <byteswap.h>
+#include <linux/compiler.h>
#include "intel-pt-pkt-decoder.h"
@@ -498,6 +499,7 @@ int intel_pt_pkt_desc(const struct intel_pt_pkt *packet, char *buf,
case INTEL_PT_FUP:
if (!(packet->count))
return snprintf(buf, buf_len, "%s no ip", name);
+ __fallthrough;
case INTEL_PT_CYC:
case INTEL_PT_VMCS:
case INTEL_PT_MTC:
--
2.9.3
^ permalink raw reply related [flat|nested] 50+ messages in thread
* Re: [PATCH 24/32] tools include: Add a __fallthrough statement
2017-02-10 1:39 ` [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo
@ 2017-02-10 3:02 ` Joe Perches
2017-02-10 14:42 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 50+ messages in thread
From: Joe Perches @ 2017-02-10 3:02 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan, William Cohen
On Thu, 2017-02-09 at 22:39 -0300, Arnaldo Carvalho de Melo wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> For cases where implicit fall through case labels are intended,
> to let us inform that to gcc >= 7:
I believe this should be added to compiler_gcc.h
> diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
[]
> @@ -126,4 +126,13 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
> #define WRITE_ONCE(x, val) \
> ({ union { typeof(x) __val; char __c[1]; } __u = { .__val = (val) }; __write_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
>
> +
> +#ifndef __fallthrough
> +# if defined(__GNUC__) && __GNUC__ >= 7
> +# define __fallthrough __attribute__ ((fallthrough))
> +# else
> +# define __fallthrough
> +# endif
> +#endif
> +
> #endif /* _TOOLS_LINUX_COMPILER_H */
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (31 preceding siblings ...)
2017-02-10 1:39 ` [PATCH 32/32] perf intel-pt: Use __fallthrough Arnaldo Carvalho de Melo
@ 2017-02-10 7:38 ` Ingo Molnar
32 siblings, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2017-02-10 7:38 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Alexander Shishkin,
Alexei Starovoitov, Alexis Berlemont, Andi Kleen, Bintian Wang,
Chris Phlipot, Daniel Borkmann, David Ahern,
David Carrillo-Cisneros, David S . Miller, Dima Kogan, He Kuang,
Jiri Olsa, Joe Stringer, Kan Liang, kernel, linux-arm-kernel,
Madhavan Srinivasan, Masami Hiramatsu, Michael Ellerman,
Michal Marek, Mickaël Salaün, Namhyung Kim,
Naveen N . Rao, Paul Turner, Peter Zijlstra, Petr Holasek,
Ravi Bangoria, Stephane Eranian, Taeung Song,
Uwe Kleine-König, Victor Kamensky, Wang Nan, Will Deacon,
William Cohen, xe-linux-external, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 53e74a112ce5c1c9b6a6923bdd6612133625d579:
>
> Merge tag 'perf-urgent-for-mingo-4.10-20170203' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2017-02-03 20:42:30 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.11-20170209
>
> for you to fetch changes up to 7ea6856d6f5629d742edc23b8b76e6263371ef45:
>
> perf intel-pt: Use __fallthrough (2017-02-09 16:32:03 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Add support for parsing Intel uncore vendor event files and add uncore
> vendor events for the Intel server processors (Haswell, Broadwell,
> IvyBridge), Xeon Phi (Knights Landing) and Broadwell DE (Andi Kleen)
>
> - Support --symfs in 'perf probe' (Uwe Kleine-König)
>
> - Add support for generating bpf prologue on the aarch64 architecture (He Kuang)
>
> - Show proper hint when SDT event not yet in place via 'perf probe' (Ravi Bangoria)
>
> - Take into account symfs setting when reading file build ID (Victor Kamensky)
>
> Infrastructure:
>
> - Map gcc7's '__attribute__ ((fallthrough))', that warns when code
> associated to case blocks in switches continue into the next case entry,
> to '__falltrough' and use it where warned by gcc, tested on Fedora Rawhide
> (Arnaldo Carvalho de Melo)
>
> - Fix buffer sizes used with snprintf that could lead to truncation,
> another warning introduced in gcc7 (Arnaldo Carvalho de Melo)
>
> - Robustify do_generate_dynamic_list_file in libtraceevent (David Carrillo-Cisneros)
>
> - Use zfree() in more places (Taeung Song)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Andi Kleen (11):
> perf jevents: Parse eventcode as number
> perf jevents: Add support for parsing uncore json files
> perf pmu: Support per pmu json aliases
> perf pmu: Support event aliases for non cpu// pmus
> perf list: Add debug support for outputing alias string
> perf vendor events intel: Add uncore events for Haswell Server processor
> perf vendor events intel: Add uncore events for Broadwell Server
> perf vendor events intel: Add uncore events for IvyBridge Server
> perf vendor events intel: Add uncore events for Sandy Bridge Server
> perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing)
> perf vendor events intel: Add uncore events for Broadwell DE
>
> Arnaldo Carvalho de Melo (11):
> Merge remote-tracking branch 'tip/perf/urgent' into perf/core
> perf tools: Fix include of linux/mman.h
> tools include: Add a __fallthrough statement
> tools string: Use __fallthrough in perf_atoll()
> tools strfilter: Use __fallthrough
> perf top: Use __fallthrough
> perf thread_map: Correctly size buffer used with dirent->dt_name
> perf header: Fix handling of PERF_EVENT_UPDATE__SCALE
> perf bench numa: Avoid possible truncation when using snprintf()
> perf tests: Avoid possible truncation with dirent->d_name + snprintf
> perf intel-pt: Use __fallthrough
>
> David Carrillo-Cisneros (1):
> tools lib traceevent: Robustify do_generate_dynamic_list_file
>
> He Kuang (2):
> perf tools arm64: Add support for generating bpf prologue
> perf bpf: Add missing newline in debug messages
>
> Mickaël Salaün (1):
> tools lib bpf: Add missing header to the library
>
> Ravi Bangoria (1):
> perf sdt: Show proper hint when event not yet in place via 'perf probe'
>
> Taeung Song (4):
> perf tools: Only increase index if perf_evsel__new_idx() succeeds
> perf tools: Add missing check for failure in a zalloc() call
> perf tools: Use zfree() instead of ad hoc equivalent
> perf tools: Use zfree() to avoid keeping dangling pointers
>
> Uwe Kleine-König (1):
> perf probe: Add option --symfs
>
> Victor Kamensky (1):
> perf symbols: Take into account symfs setting when reading file build ID
>
> Makefile | 6 +-
> arch/x86/events/Makefile | 13 +-
> arch/x86/events/amd/Makefile | 7 +
> arch/x86/events/amd/uncore.c | 204 ++++++++-----
> arch/x86/events/intel/pt.c | 6 +
> include/linux/kprobes.h | 30 +-
> include/linux/perf_event.h | 2 +-
> kernel/events/core.c | 223 ++++++++------
> kernel/extable.c | 9 +-
> kernel/kprobes.c | 73 +++--
> tools/arch/arm/include/uapi/asm/kvm.h | 9 +
> tools/arch/powerpc/include/uapi/asm/kvm.h | 5 +
> tools/arch/x86/include/asm/cpufeatures.h | 11 +
> tools/arch/x86/include/uapi/asm/vmx.h | 5 +
> tools/build/Makefile.build | 10 +
> tools/include/linux/compiler.h | 9 +
> tools/lib/api/fs/fs.c | 16 +
> tools/lib/api/fs/fs.h | 1 +
> tools/lib/api/fs/tracing_path.c | 32 +-
> tools/lib/bpf/bpf.h | 1 +
> tools/lib/bpf/libbpf.c | 264 +++++++++++++++--
> tools/lib/bpf/libbpf.h | 19 +-
> tools/lib/subcmd/parse-options.h | 19 +-
> tools/lib/traceevent/Makefile | 14 +-
> tools/perf/Build | 5 +-
> tools/perf/Documentation/perf-c2c.txt | 2 +-
> tools/perf/Documentation/perf-ftrace.txt | 36 +++
> tools/perf/Documentation/perf-kallsyms.txt | 24 ++
> tools/perf/Documentation/perf-record.txt | 14 +-
> tools/perf/Documentation/perf-sched.txt | 2 +
> tools/perf/Documentation/perf-script.txt | 4 +-
> tools/perf/Documentation/perf-trace.txt | 8 +-
> tools/perf/Makefile.config | 6 +-
> tools/perf/Makefile.perf | 1 +
> tools/perf/arch/arm64/Makefile | 1 +
> tools/perf/arch/arm64/include/dwarf-regs-table.h | 12 +-
> tools/perf/arch/arm64/util/dwarf-regs.c | 15 +-
> tools/perf/bench/numa.c | 6 +-
> tools/perf/builtin-c2c.c | 3 +-
> tools/perf/builtin-ftrace.c | 265 +++++++++++++++++
> tools/perf/builtin-help.c | 8 +-
> tools/perf/builtin-kallsyms.c | 67 +++++
> tools/perf/builtin-kmem.c | 8 +-
> tools/perf/builtin-list.c | 3 +
> tools/perf/builtin-probe.c | 2 +
> tools/perf/builtin-record.c | 158 +++++++++-
> tools/perf/builtin-report.c | 4 +-
> tools/perf/builtin-sched.c | 130 ++++++++-
> tools/perf/builtin-script.c | 3 +-
> tools/perf/builtin-top.c | 6 +-
> tools/perf/builtin-trace.c | 120 ++++++--
> tools/perf/builtin.h | 2 +
> tools/perf/command-list.txt | 2 +
> tools/perf/perf.c | 20 +-
> .../arch/x86/broadwellde/uncore-cache.json | 317 ++++++++++++++++++++
> .../arch/x86/broadwellde/uncore-memory.json | 83 ++++++
> .../arch/x86/broadwellde/uncore-power.json | 84 ++++++
> .../arch/x86/broadwellx/uncore-cache.json | 317 ++++++++++++++++++++
> .../arch/x86/broadwellx/uncore-interconnect.json | 28 ++
> .../arch/x86/broadwellx/uncore-memory.json | 83 ++++++
> .../arch/x86/broadwellx/uncore-power.json | 84 ++++++
> .../pmu-events/arch/x86/haswellx/uncore-cache.json | 317 ++++++++++++++++++++
> .../arch/x86/haswellx/uncore-interconnect.json | 28 ++
> .../arch/x86/haswellx/uncore-memory.json | 83 ++++++
> .../pmu-events/arch/x86/haswellx/uncore-power.json | 84 ++++++
> .../pmu-events/arch/x86/ivytown/uncore-cache.json | 322 +++++++++++++++++++++
> .../arch/x86/ivytown/uncore-interconnect.json | 46 +++
> .../pmu-events/arch/x86/ivytown/uncore-memory.json | 75 +++++
> .../pmu-events/arch/x86/ivytown/uncore-power.json | 249 ++++++++++++++++
> .../pmu-events/arch/x86/jaketown/uncore-cache.json | 209 +++++++++++++
> .../arch/x86/jaketown/uncore-interconnect.json | 46 +++
> .../arch/x86/jaketown/uncore-memory.json | 79 +++++
> .../pmu-events/arch/x86/jaketown/uncore-power.json | 248 ++++++++++++++++
> .../arch/x86/knightslanding/uncore-memory.json | 42 +++
> tools/perf/pmu-events/jevents.c | 84 +++++-
> tools/perf/pmu-events/jevents.h | 4 +-
> tools/perf/pmu-events/pmu-events.h | 3 +
> tools/perf/tests/Build | 1 +
> tools/perf/tests/bpf.c | 42 ++-
> tools/perf/tests/builtin-test.c | 4 +
> tools/perf/tests/llvm.c | 2 +-
> tools/perf/tests/parse-events.c | 8 +-
> tools/perf/tests/tests.h | 1 +
> tools/perf/tests/unit_number__scnprintf.c | 37 +++
> tools/perf/ui/browsers/hists.c | 60 ++--
> tools/perf/ui/setup.c | 1 +
> tools/perf/util/Build | 1 +
> tools/perf/util/bpf-loader.c | 4 +-
> tools/perf/util/callchain.c | 16 +-
> tools/perf/util/config.c | 23 +-
> tools/perf/util/data-convert-bt.c | 7 +-
> tools/perf/util/dso.c | 48 ++-
> tools/perf/util/event.c | 2 +-
> tools/perf/util/evlist.c | 12 +-
> tools/perf/util/evlist.h | 2 +
> tools/perf/util/header.c | 7 +-
> tools/perf/util/hist.c | 4 +-
> .../perf/util/intel-pt-decoder/intel-pt-decoder.c | 5 +
> .../util/intel-pt-decoder/intel-pt-pkt-decoder.c | 2 +
> tools/perf/util/intel-pt.c | 4 +-
> tools/perf/util/llvm-utils.c | 4 +-
> tools/perf/util/machine.c | 19 ++
> tools/perf/util/machine.h | 1 +
> tools/perf/util/parse-events.c | 69 +++--
> tools/perf/util/parse-events.y | 35 ++-
> tools/perf/util/pmu.c | 109 ++++---
> tools/perf/util/pmu.h | 1 +
> tools/perf/util/probe-event.c | 11 +-
> .../perf/util/scripting-engines/trace-event-perl.c | 6 +-
> tools/perf/util/session.c | 2 +-
> tools/perf/util/strfilter.c | 1 +
> tools/perf/util/string.c | 2 +
> tools/perf/util/symbol.c | 6 +-
> tools/perf/util/thread_map.c | 2 +-
> tools/perf/util/trace-event-info.c | 71 +++--
> tools/perf/util/trace-event-parse.c | 17 ++
> tools/perf/util/trace-event-read.c | 77 ++++-
> tools/perf/util/trace-event.h | 1 +
> tools/perf/util/unwind-libunwind-local.c | 54 +++-
> tools/perf/util/util.c | 15 +-
> tools/perf/util/util.h | 3 +-
> tools/scripts/Makefile.include | 12 +-
> 122 files changed, 5101 insertions(+), 550 deletions(-)
> create mode 100644 arch/x86/events/amd/Makefile
> create mode 100644 tools/perf/Documentation/perf-ftrace.txt
> create mode 100644 tools/perf/Documentation/perf-kallsyms.txt
> create mode 100644 tools/perf/builtin-ftrace.c
> create mode 100644 tools/perf/builtin-kallsyms.c
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
> create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
> create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
> create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
> create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
> create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
> create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
> create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
> create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
> create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
> create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
> create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
> create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
> create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
> create mode 100644 tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
> create mode 100644 tools/perf/tests/unit_number__scnprintf.c
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH 24/32] tools include: Add a __fallthrough statement
2017-02-10 3:02 ` Joe Perches
@ 2017-02-10 14:42 ` Arnaldo Carvalho de Melo
2017-02-10 17:08 ` [PATCH] compiler/compiler-gcc: Add __fallthrough Joe Perches
0 siblings, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 14:42 UTC (permalink / raw)
To: Joe Perches
Cc: Ingo Molnar, linux-kernel, Arnaldo Carvalho de Melo,
Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan,
William Cohen
Em Thu, Feb 09, 2017 at 07:02:06PM -0800, Joe Perches escreveu:
> On Thu, 2017-02-09 at 22:39 -0300, Arnaldo Carvalho de Melo wrote:
> > From: Arnaldo Carvalho de Melo <acme@redhat.com>
> >
> > For cases where implicit fall through case labels are intended,
> > to let us inform that to gcc >= 7:
>
> I believe this should be added to compiler_gcc.h
We still don't have it in tools/include/linux, but yeah, its a good idea
to have the equivalent of include/linux/compiler-gcc.h.
Then, at some point, the kernel can grab the definition from tools, i.e.
when people start trying to build the kernel _and_ this specific warning
is enabled there, as it is in tools/.
- Arnaldo
> > diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
> []
> > @@ -126,4 +126,13 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
> > #define WRITE_ONCE(x, val) \
> > ({ union { typeof(x) __val; char __c[1]; } __u = { .__val = (val) }; __write_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
> >
> > +
> > +#ifndef __fallthrough
> > +# if defined(__GNUC__) && __GNUC__ >= 7
> > +# define __fallthrough __attribute__ ((fallthrough))
> > +# else
> > +# define __fallthrough
> > +# endif
> > +#endif
> > +
> > #endif /* _TOOLS_LINUX_COMPILER_H */
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH] compiler/compiler-gcc: Add __fallthrough
2017-02-10 14:42 ` Arnaldo Carvalho de Melo
@ 2017-02-10 17:08 ` Joe Perches
2017-02-10 17:18 ` Arnaldo Carvalho de Melo
[not found] ` <20170824133654.fnbaaj5kjtstzm42@smile.fi.intel.com>
0 siblings, 2 replies; 50+ messages in thread
From: Joe Perches @ 2017-02-10 17:08 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Christopher Li
Cc: Andrew Morton, linux-kernel, linux-sparse
gcc v7.0 can warn on missing break statements from case labels
using a special __attribute__((fallthrough))__ marker.
Add a __fallthrough convenience macro for gcc versions >= 7 and
make the generic use of __fallthrough a no-op.
Signed-off-by: Joe Perches <joe@perches.com>
---
include/linux/compiler-gcc.h | 7 +++++++
include/linux/compiler.h | 6 ++++++
2 files changed, 13 insertions(+)
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index d5e1fedbad24..6af8d6448f10 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -304,6 +304,13 @@
#define __no_sanitize_address __attribute__((no_sanitize_address))
#endif
+#if GCC_VERSION >= 70000
+/*
+ * Tell the compiler not to warn when a switch/case fallthrough marker exists
+ */
+#define __fallthrough __attribute__ ((fallthrough))
+#endif
+
#endif /* gcc version >= 40000 specific checks */
#if !defined(__noclone)
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 6e8e160b1e4b..16b6efc877f4 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -477,6 +477,12 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
#define __assume_aligned(a, ...)
#endif
+/*
+ * switch/case fallthrough checking
+ */
+#ifndef __fallthrough
+#define __fallthrough
+#endif
/* Are two types/vars the same type (ignoring qualifiers)? */
#ifndef __same_type
--
2.10.0.rc2.1.g053435c
^ permalink raw reply related [flat|nested] 50+ messages in thread
* Re: [PATCH] compiler/compiler-gcc: Add __fallthrough
2017-02-10 17:08 ` [PATCH] compiler/compiler-gcc: Add __fallthrough Joe Perches
@ 2017-02-10 17:18 ` Arnaldo Carvalho de Melo
2017-02-10 18:50 ` Joe Perches
[not found] ` <20170824133654.fnbaaj5kjtstzm42@smile.fi.intel.com>
1 sibling, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-02-10 17:18 UTC (permalink / raw)
To: Joe Perches; +Cc: Christopher Li, Andrew Morton, linux-kernel, linux-sparse
Em Fri, Feb 10, 2017 at 09:08:35AM -0800, Joe Perches escreveu:
> gcc v7.0 can warn on missing break statements from case labels
> using a special __attribute__((fallthrough))__ marker.
>
> Add a __fallthrough convenience macro for gcc versions >= 7 and
> make the generic use of __fallthrough a no-op.
Can you state in the log message were this idea came from? Say,
something like:
"This was introduced in the tools/include/linux/compiler.h, where it was
first noticed while buildint tools/perf/ in a Fedora Rawhide
environment."
BTW, I added this to my tree:
https://git.kernel.org/cgit/linux/kernel/git/acme/linux.git/commit/?h=perf/core&id=e058554b1418e00864f1702c84bfa1d7cf314627
tools include: Introduce linux/compiler-gcc.h
To match the kernel headers structure, setting up things that are
specific to gcc or to some specific version of gcc.
It gets included by linux/compiler.h when gcc is the compiler being
used.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Joe Perches <joe@perches.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-pi5mxx176lotfce90rn17j88@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Thanks,
- Arnaldo
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> include/linux/compiler-gcc.h | 7 +++++++
> include/linux/compiler.h | 6 ++++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
> index d5e1fedbad24..6af8d6448f10 100644
> --- a/include/linux/compiler-gcc.h
> +++ b/include/linux/compiler-gcc.h
> @@ -304,6 +304,13 @@
> #define __no_sanitize_address __attribute__((no_sanitize_address))
> #endif
>
> +#if GCC_VERSION >= 70000
> +/*
> + * Tell the compiler not to warn when a switch/case fallthrough marker exists
> + */
> +#define __fallthrough __attribute__ ((fallthrough))
> +#endif
> +
> #endif /* gcc version >= 40000 specific checks */
>
> #if !defined(__noclone)
> diff --git a/include/linux/compiler.h b/include/linux/compiler.h
> index 6e8e160b1e4b..16b6efc877f4 100644
> --- a/include/linux/compiler.h
> +++ b/include/linux/compiler.h
> @@ -477,6 +477,12 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
> #define __assume_aligned(a, ...)
> #endif
>
> +/*
> + * switch/case fallthrough checking
> + */
> +#ifndef __fallthrough
> +#define __fallthrough
> +#endif
>
> /* Are two types/vars the same type (ignoring qualifiers)? */
> #ifndef __same_type
> --
> 2.10.0.rc2.1.g053435c
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [PATCH] compiler/compiler-gcc: Add __fallthrough
2017-02-10 17:18 ` Arnaldo Carvalho de Melo
@ 2017-02-10 18:50 ` Joe Perches
0 siblings, 0 replies; 50+ messages in thread
From: Joe Perches @ 2017-02-10 18:50 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Christopher Li, Andrew Morton, linux-kernel, linux-sparse
On Fri, 2017-02-10 at 14:18 -0300, Arnaldo Carvalho de Melo wrote:
> Em Fri, Feb 10, 2017 at 09:08:35AM -0800, Joe Perches escreveu:
> > gcc v7.0 can warn on missing break statements from case labels
> > using a special __attribute__((fallthrough))__ marker.
> >
> > Add a __fallthrough convenience macro for gcc versions >= 7 and
> > make the generic use of __fallthrough a no-op.
>
> Can you state in the log message were this idea came from? Say,
> something like:
>
> "This was introduced in the tools/include/linux/compiler.h, where it was
> first noticed while buildint tools/perf/ in a Fedora Rawhide
> environment."
The request is from at least 2002.
Maybe Andrew could add a link like:
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652
if he applies it.
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: compiler/compiler-gcc: Add __fallthrough
[not found] ` <1503599543.25945.94.camel@intel.com>
@ 2017-08-24 20:42 ` Joe Perches
0 siblings, 0 replies; 50+ messages in thread
From: Joe Perches @ 2017-08-24 20:42 UTC (permalink / raw)
To: Shevchenko, Andriy, Andrew Morton; +Cc: LKML
On Thu, 2017-08-24 at 18:32 +0000, Shevchenko, Andriy wrote:
> On Thu, 2017-08-24 at 11:20 -0700, Joe Perches wrote:
> > On Thu, 2017-08-24 at 16:36 +0300, Andy Shevchenko wrote:
> > > On Fri, Feb 10, 2017 at 09:08:35AM -0800, Joe Perches wrote:
> > > > gcc v7.0 can warn on missing break statements from case labels
> > > > using a special __attribute__((fallthrough))__ marker.
> > > >
> > > > Add a __fallthrough convenience macro for gcc versions >= 7 and
> > > > make the generic use of __fallthrough a no-op.
> > >
> > > So, what happened to this change? Andrew?
> >
> > Did you mean to send this just to me?
>
> Oops, not exactly, though...
>
> >
> > No idea really.
> > It seemed like a decent idea though.
>
> ...it might make sense to ping Andrew.
Well, OK.
^ permalink raw reply [flat|nested] 50+ messages in thread
* [GIT PULL 00/32] perf/core improvements and fixes
@ 2018-01-17 16:11 Arnaldo Carvalho de Melo
2018-01-17 16:22 ` Ingo Molnar
0 siblings, 1 reply; 50+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-01-17 16:11 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
Adrian Hunter, Alexander Shishkin, Andi Kleen, Andrew Morton,
Dan Williams, David Ahern, Dongjiu Geng, Federico Vaga,
Gopanapalli Pradeep, Heiko Carstens, Hendrik Brueckner,
Jan Kiszka, Jin Yao, Jiri Olsa, Joe Perches, Kan Liang,
Kim Phillips, linux-arm-kernel, Luis de Bethencourt, Marc Zyngier,
Mark Rutland, Martin Schwidefsky, Mathieu Poirier,
Michael Sartain, Namhyung Kim, Noel Grandin, Pawel Moll,
Peter Zijlstra, Philippe Ombredanne, Rob Herring,
Stephane Eranian, Steven Rostedt, Suzuki Poulouse, Taeung Song,
Thomas Gleixner, Thomas Richter, Wang Nan, Will Deacon,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 1ccb8feda7471efb62ebf68d70055b4c51fa7d92:
Merge tag 'perf-core-for-mingo-4.16-20180110' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-01-11 06:53:06 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.16-20180117
for you to fetch changes up to 81fccd6ca507d3b2012eaf1edeb9b1dbf4bd22db:
perf record: Fix failed memory allocation for get_cpuid_str (2018-01-17 10:31:25 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
- Fix various per event 'max-stack' and 'call-graph=dwarf' issues,
mostly in 'perf trace', allowing to use 'perf trace --call-graph' with
'dwarf' and 'fp' to setup the callgraph details for the syscall events
and make that apply to other events, whilhe allowing to override that on
a per-event basis, using '-e sched:*switch/call-graph=dwarf/' for
instance (Arnaldo Carvalho de Melo)
- Improve the --time percent support in record/report/script (Jin Yao)
- Fix copyfile_offset update of output offset (Jiri Olsa)
- Add python script to profile and resolve physical mem type (Kan Liang)
- Add ARM Statistical Profiling Extensions (SPE) support (Kim Phillips)
- Remove trailing semicolon in the evlist code (Luis de Bethencourt)
- Fix incorrect handling of type _TERM_DRV_CFG (Mathieu Poirier)
- Use asprintf when possible in libtraceevent (Federico Vaga)
- Fix bad force_token escape sequence in libtraceevent (Michael Sartain)
- Add UL suffix to MISSING_EVENTS in libtraceevent (Michael Sartain)
- value of unknown symbolic fields in libtraceevent (Jan Kiszka)
- libtraceevent updates: (Steven Rostedt)
o Show value of flags that have not been parsed
o Simplify pointer print logic and fix %pF
o Handle new pointer processing of bprint strings
o Show contents (in hex) of data of unrecognized type records
o Fix get_field_str() for dynamic strings
- Add missing break in FALSE case of pevent_filter_clear_trivial() (Taeung Song)
- Fix failed memory allocation for get_cpuid_str (Thomas Richter)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (8):
perf trace: No need to set PERF_SAMPLE_IDENTIFIER explicitely
perf evsel: Check if callchain is enabled before setting it up
perf trace: Fix setting of --call-graph/--max-stack for non-syscall events
perf callchain: Fix attr.sample_max_stack setting
perf unwind: Do not look just at the global callchain_param.record_mode
perf trace: Setup DWARF callchains for non-syscall events when --max-stack is used
perf trace: Allow overriding global --max-stack per event
perf callchains: Ask for PERF_RECORD_MMAP for data mmaps for DWARF unwinding
Federico Vaga (1):
tools lib traceevent: Use asprintf when possible
Jan Kiszka (1):
tools lib traceevent: Print value of unknown symbolic fields
Jin Yao (8):
perf report: Improve error msg when no first/last sample time found
perf script: Improve error msg when no first/last sample time found
perf util: Improve error checking for time percent input
perf util: Support no index time percent slice
perf report: Add an indication of what time slices are used
perf util: Allocate time slices buffer according to number of comma
perf report: Remove the time slices number limitation
perf script: Remove the time slices number limitation
Jiri Olsa (1):
perf tools: Fix copyfile_offset update of output offset
Kan Liang (1):
perf script python: Add script to profile and resolve physical mem type
Kim Phillips (1):
perf tools: Add ARM Statistical Profiling Extensions (SPE) support
Luis de Bethencourt (1):
perf evlist: Remove trailing semicolon
Mathieu Poirier (1):
perf evsel: Fix incorrect handling of type _TERM_DRV_CFG
Michael Sartain (2):
tools lib traceevent: Fix bad force_token escape sequence
tools lib traceevent: Add UL suffix to MISSING_EVENTS
Steven Rostedt (VMware) (5):
tools lib traceevent: Show value of flags that have not been parsed
tools lib traceevent: Simplify pointer print logic and fix %pF
tools lib traceevent: Handle new pointer processing of bprint strings
tools lib traceevent: Show contents (in hex) of data of unrecognized type records
tools lib traceevent: Fix get_field_str() for dynamic strings
Taeung Song (1):
tools lib traceevent: Fix missing break in FALSE case of pevent_filter_clear_trivial()
Thomas Richter (1):
perf record: Fix failed memory allocation for get_cpuid_str
tools/lib/traceevent/event-parse.c | 62 ++-
tools/lib/traceevent/event-plugin.c | 24 +-
tools/lib/traceevent/kbuffer-parse.c | 4 +-
tools/lib/traceevent/parse-filter.c | 22 +-
tools/perf/Documentation/perf-report.txt | 2 +-
tools/perf/Documentation/perf-script.txt | 10 +-
tools/perf/arch/arm/util/auxtrace.c | 77 +++-
tools/perf/arch/arm/util/pmu.c | 6 +
tools/perf/arch/arm64/util/Build | 3 +-
tools/perf/arch/arm64/util/arm-spe.c | 225 ++++++++++
tools/perf/arch/x86/util/header.c | 2 +-
tools/perf/builtin-c2c.c | 5 +-
tools/perf/builtin-report.c | 34 +-
tools/perf/builtin-script.c | 25 +-
tools/perf/builtin-trace.c | 62 +--
tools/perf/scripts/python/bin/mem-phys-addr-record | 19 +
tools/perf/scripts/python/bin/mem-phys-addr-report | 3 +
tools/perf/scripts/python/mem-phys-addr.py | 95 +++++
tools/perf/tests/dwarf-unwind.c | 1 +
tools/perf/util/Build | 2 +
tools/perf/util/arm-spe-pkt-decoder.c | 462 +++++++++++++++++++++
tools/perf/util/arm-spe-pkt-decoder.h | 43 ++
tools/perf/util/arm-spe.c | 231 +++++++++++
tools/perf/util/arm-spe.h | 31 ++
tools/perf/util/auxtrace.c | 3 +
tools/perf/util/auxtrace.h | 1 +
tools/perf/util/callchain.c | 10 +
tools/perf/util/callchain.h | 2 +
tools/perf/util/evlist.c | 2 +-
tools/perf/util/evsel.c | 40 +-
.../util/scripting-engines/trace-event-python.c | 2 +
tools/perf/util/time-utils.c | 72 +++-
tools/perf/util/time-utils.h | 2 +
tools/perf/util/unwind-libunwind-local.c | 9 +-
tools/perf/util/util.c | 2 +-
35 files changed, 1465 insertions(+), 130 deletions(-)
create mode 100644 tools/perf/arch/arm64/util/arm-spe.c
create mode 100644 tools/perf/scripts/python/bin/mem-phys-addr-record
create mode 100644 tools/perf/scripts/python/bin/mem-phys-addr-report
create mode 100644 tools/perf/scripts/python/mem-phys-addr.py
create mode 100644 tools/perf/util/arm-spe-pkt-decoder.c
create mode 100644 tools/perf/util/arm-spe-pkt-decoder.h
create mode 100644 tools/perf/util/arm-spe.c
create mode 100644 tools/perf/util/arm-spe.h
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support. Where clang is available, it is also used to build
perf with/without libelf.
The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android ones,
and those may not have all the features built, due to lack of multi-arch
devel packages, available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
# dm
1 36.63 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 44.29 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 41.00 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 43.95 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0
5 35.44 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
6 40.90 amazonlinux:2 : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
7 26.89 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
8 27.57 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
9 22.78 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
10 35.27 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
11 40.16 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
12 34.36 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2
13 37.23 debian:8 : Ok gcc (Debian 4.9.2-10) 4.9.2
14 62.09 debian:9 : Ok gcc (Debian 6.3.0-18) 6.3.0 20170516
15 64.09 debian:experimental : Ok gcc (Debian 7.2.0-18) 7.2.0
16 39.24 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
17 37.88 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
18 34.81 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 7.2.0-11) 7.2.0
19 37.26 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
20 37.58 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
21 40.34 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
22 38.42 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
23 40.07 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
24 45.57 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
25 35.50 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
26 80.48 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
27 88.31 fedora:26 : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
28 86.02 fedora:27 : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
29 78.37 fedora:rawhide : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-4)
30 39.71 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0
31 40.65 mageia:5 : Ok gcc (GCC) 4.9.2
32 42.26 mageia:6 : Ok gcc (Mageia 5.4.0-5.mga6) 5.4.0
33 40.11 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5
34 38.80 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5
35 40.91 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5
36 83.55 opensuse:tumbleweed : Ok gcc (SUSE Linux) 7.2.1 20171020 [gcc-7-branch revision 253932]
37 32.24 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
38 42.29 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
39 33.96 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
40 38.79 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
41 32.93 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
42 61.08 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
43 32.29 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
44 32.09 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
45 31.18 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
46 31.50 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
47 32.23 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
48 30.79 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
49 63.98 ubuntu:16.10 : Ok gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
50 64.41 ubuntu:17.04 : Ok gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
51 64.98 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
52 68.13 ubuntu:18.04 : Ok gcc (Ubuntu 7.2.0-18ubuntu2) 7.2.0
#
# uname -a
Linux seventh 4.15.0-rc8+ #1 SMP Wed Jan 17 10:45:59 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Number of exit events of a simple workload : Ok
22: Software clock events period values : Ok
23: Object code reading : Ok
24: Sample parsing : Ok
25: Use a dummy software event to keep tracking : Ok
26: Parse with no sample_id_all bit set : Ok
27: Filter hist entries : Ok
28: Lookup mmap thread : Ok
29: Share thread mg : Ok
30: Sort output of hist entries : Ok
31: Cumulate child hist entries : Ok
32: Track with sched_switch : Ok
33: Filter fds with revents mask in a fdarray : Ok
34: Add fd to a fdarray, making it autogrow : Ok
35: kmod_path__parse : Ok
36: Thread map : Ok
37: LLVM search and compile :
37.1: Basic BPF llvm compile : Ok
37.2: kbuild searching : Ok
37.3: Compile source for BPF prologue generation : Ok
37.4: Compile source for BPF relocation : Ok
38: Session topology : Ok
39: BPF filter :
39.1: Basic BPF filtering : Ok
39.2: BPF pinning : Ok
39.3: BPF prologue generation : Ok
39.4: BPF relocation checker : Ok
40: Synthesize thread map : Ok
41: Remove thread map : Ok
42: Synthesize cpu map : Ok
43: Synthesize stat config : Ok
44: Synthesize stat : Ok
45: Synthesize stat round : Ok
46: Synthesize attr update : Ok
47: Event times : Ok
48: Read backward ring buffer : Ok
49: Print cpu map : Ok
50: Probe SDT events : Ok
51: is_printable_array : Ok
52: Print bitmap : Ok
53: perf hooks : Ok
54: builtin clang support : Skip (not compiled in)
55: unit_number__scnprintf : Ok
56: x86 rdpmc : Ok
57: Convert perf time to TSC : Ok
58: DWARF unwind : Ok
59: x86 instruction decoder - new instructions : Ok
60: Use vfs_getname probe to get syscall args filenames : Ok
61: Check open filename arg using perf trace + vfs_getname: Ok
62: probe libc's inet_pton & backtrace it with ping : Ok
63: Add vfs_getname probe to get syscall args filenames : Ok
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_clean_all_O: make clean all
make_no_demangle_O: make NO_DEMANGLE=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libperl_O: make NO_LIBPERL=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_no_libelf_O: make NO_LIBELF=1
make_doc_O: make doc
make_debug_O: make DEBUG=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_tags_O: make tags
make_help_O: make help
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_util_map_o_O: make util/map.o
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_install_prefix_O: make install prefix=/tmp/krava
make_no_libbpf_O: make NO_LIBBPF=1
make_perf_o_O: make perf.o
make_no_libpython_O: make NO_LIBPYTHON=1
make_install_O: make install
make_pure_O: make
make_static_O: make LDFLAGS=-static
make_no_slang_O: make NO_SLANG=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_gtk2_O: make NO_GTK2=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_newt_O: make NO_NEWT=1
make_install_bin_O: make install-bin
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$
^ permalink raw reply [flat|nested] 50+ messages in thread
* Re: [GIT PULL 00/32] perf/core improvements and fixes
2018-01-17 16:11 Arnaldo Carvalho de Melo
@ 2018-01-17 16:22 ` Ingo Molnar
0 siblings, 0 replies; 50+ messages in thread
From: Ingo Molnar @ 2018-01-17 16:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, linux-perf-users, Adrian Hunter, Alexander Shishkin,
Andi Kleen, Andrew Morton, Dan Williams, David Ahern,
Dongjiu Geng, Federico Vaga, Gopanapalli Pradeep, Heiko Carstens,
Hendrik Brueckner, Jan Kiszka, Jin Yao, Jiri Olsa, Joe Perches,
Kan Liang, Kim Phillips, linux-arm-kernel, Luis de Bethencourt,
Marc Zyngier, Mark Rutland, Martin Schwidefsky, Mathieu Poirier,
Michael Sartain, Namhyung Kim, Noel Grandin, Pawel Moll,
Peter Zijlstra, Philippe Ombredanne, Rob Herring,
Stephane Eranian, Steven Rostedt, Suzuki Poulouse, Taeung Song,
Thomas Gleixner, Thomas Richter, Wang Nan, Will Deacon,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 1ccb8feda7471efb62ebf68d70055b4c51fa7d92:
>
> Merge tag 'perf-core-for-mingo-4.16-20180110' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-01-11 06:53:06 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.16-20180117
>
> for you to fetch changes up to 81fccd6ca507d3b2012eaf1edeb9b1dbf4bd22db:
>
> perf record: Fix failed memory allocation for get_cpuid_str (2018-01-17 10:31:25 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> - Fix various per event 'max-stack' and 'call-graph=dwarf' issues,
> mostly in 'perf trace', allowing to use 'perf trace --call-graph' with
> 'dwarf' and 'fp' to setup the callgraph details for the syscall events
> and make that apply to other events, whilhe allowing to override that on
> a per-event basis, using '-e sched:*switch/call-graph=dwarf/' for
> instance (Arnaldo Carvalho de Melo)
>
> - Improve the --time percent support in record/report/script (Jin Yao)
>
> - Fix copyfile_offset update of output offset (Jiri Olsa)
>
> - Add python script to profile and resolve physical mem type (Kan Liang)
>
> - Add ARM Statistical Profiling Extensions (SPE) support (Kim Phillips)
>
> - Remove trailing semicolon in the evlist code (Luis de Bethencourt)
>
> - Fix incorrect handling of type _TERM_DRV_CFG (Mathieu Poirier)
>
> - Use asprintf when possible in libtraceevent (Federico Vaga)
>
> - Fix bad force_token escape sequence in libtraceevent (Michael Sartain)
>
> - Add UL suffix to MISSING_EVENTS in libtraceevent (Michael Sartain)
>
> - value of unknown symbolic fields in libtraceevent (Jan Kiszka)
>
> - libtraceevent updates: (Steven Rostedt)
> o Show value of flags that have not been parsed
> o Simplify pointer print logic and fix %pF
> o Handle new pointer processing of bprint strings
> o Show contents (in hex) of data of unrecognized type records
> o Fix get_field_str() for dynamic strings
>
> - Add missing break in FALSE case of pevent_filter_clear_trivial() (Taeung Song)
>
> - Fix failed memory allocation for get_cpuid_str (Thomas Richter)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
>
> Arnaldo Carvalho de Melo (8):
> perf trace: No need to set PERF_SAMPLE_IDENTIFIER explicitely
> perf evsel: Check if callchain is enabled before setting it up
> perf trace: Fix setting of --call-graph/--max-stack for non-syscall events
> perf callchain: Fix attr.sample_max_stack setting
> perf unwind: Do not look just at the global callchain_param.record_mode
> perf trace: Setup DWARF callchains for non-syscall events when --max-stack is used
> perf trace: Allow overriding global --max-stack per event
> perf callchains: Ask for PERF_RECORD_MMAP for data mmaps for DWARF unwinding
>
> Federico Vaga (1):
> tools lib traceevent: Use asprintf when possible
>
> Jan Kiszka (1):
> tools lib traceevent: Print value of unknown symbolic fields
>
> Jin Yao (8):
> perf report: Improve error msg when no first/last sample time found
> perf script: Improve error msg when no first/last sample time found
> perf util: Improve error checking for time percent input
> perf util: Support no index time percent slice
> perf report: Add an indication of what time slices are used
> perf util: Allocate time slices buffer according to number of comma
> perf report: Remove the time slices number limitation
> perf script: Remove the time slices number limitation
>
> Jiri Olsa (1):
> perf tools: Fix copyfile_offset update of output offset
>
> Kan Liang (1):
> perf script python: Add script to profile and resolve physical mem type
>
> Kim Phillips (1):
> perf tools: Add ARM Statistical Profiling Extensions (SPE) support
>
> Luis de Bethencourt (1):
> perf evlist: Remove trailing semicolon
>
> Mathieu Poirier (1):
> perf evsel: Fix incorrect handling of type _TERM_DRV_CFG
>
> Michael Sartain (2):
> tools lib traceevent: Fix bad force_token escape sequence
> tools lib traceevent: Add UL suffix to MISSING_EVENTS
>
> Steven Rostedt (VMware) (5):
> tools lib traceevent: Show value of flags that have not been parsed
> tools lib traceevent: Simplify pointer print logic and fix %pF
> tools lib traceevent: Handle new pointer processing of bprint strings
> tools lib traceevent: Show contents (in hex) of data of unrecognized type records
> tools lib traceevent: Fix get_field_str() for dynamic strings
>
> Taeung Song (1):
> tools lib traceevent: Fix missing break in FALSE case of pevent_filter_clear_trivial()
>
> Thomas Richter (1):
> perf record: Fix failed memory allocation for get_cpuid_str
>
> tools/lib/traceevent/event-parse.c | 62 ++-
> tools/lib/traceevent/event-plugin.c | 24 +-
> tools/lib/traceevent/kbuffer-parse.c | 4 +-
> tools/lib/traceevent/parse-filter.c | 22 +-
> tools/perf/Documentation/perf-report.txt | 2 +-
> tools/perf/Documentation/perf-script.txt | 10 +-
> tools/perf/arch/arm/util/auxtrace.c | 77 +++-
> tools/perf/arch/arm/util/pmu.c | 6 +
> tools/perf/arch/arm64/util/Build | 3 +-
> tools/perf/arch/arm64/util/arm-spe.c | 225 ++++++++++
> tools/perf/arch/x86/util/header.c | 2 +-
> tools/perf/builtin-c2c.c | 5 +-
> tools/perf/builtin-report.c | 34 +-
> tools/perf/builtin-script.c | 25 +-
> tools/perf/builtin-trace.c | 62 +--
> tools/perf/scripts/python/bin/mem-phys-addr-record | 19 +
> tools/perf/scripts/python/bin/mem-phys-addr-report | 3 +
> tools/perf/scripts/python/mem-phys-addr.py | 95 +++++
> tools/perf/tests/dwarf-unwind.c | 1 +
> tools/perf/util/Build | 2 +
> tools/perf/util/arm-spe-pkt-decoder.c | 462 +++++++++++++++++++++
> tools/perf/util/arm-spe-pkt-decoder.h | 43 ++
> tools/perf/util/arm-spe.c | 231 +++++++++++
> tools/perf/util/arm-spe.h | 31 ++
> tools/perf/util/auxtrace.c | 3 +
> tools/perf/util/auxtrace.h | 1 +
> tools/perf/util/callchain.c | 10 +
> tools/perf/util/callchain.h | 2 +
> tools/perf/util/evlist.c | 2 +-
> tools/perf/util/evsel.c | 40 +-
> .../util/scripting-engines/trace-event-python.c | 2 +
> tools/perf/util/time-utils.c | 72 +++-
> tools/perf/util/time-utils.h | 2 +
> tools/perf/util/unwind-libunwind-local.c | 9 +-
> tools/perf/util/util.c | 2 +-
> 35 files changed, 1465 insertions(+), 130 deletions(-)
> create mode 100644 tools/perf/arch/arm64/util/arm-spe.c
> create mode 100644 tools/perf/scripts/python/bin/mem-phys-addr-record
> create mode 100644 tools/perf/scripts/python/bin/mem-phys-addr-report
> create mode 100644 tools/perf/scripts/python/mem-phys-addr.py
> create mode 100644 tools/perf/util/arm-spe-pkt-decoder.c
> create mode 100644 tools/perf/util/arm-spe-pkt-decoder.h
> create mode 100644 tools/perf/util/arm-spe.c
> create mode 100644 tools/perf/util/arm-spe.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 50+ messages in thread
end of thread, other threads:[~2018-01-17 16:22 UTC | newest]
Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-10 1:39 [GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 02/32] perf bpf: Add missing newline in debug messages Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 03/32] perf jevents: Parse eventcode as number Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 04/32] perf jevents: Add support for parsing uncore json files Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 05/32] perf pmu: Support per pmu json aliases Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 06/32] perf pmu: Support event aliases for non cpu// pmus Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 07/32] perf list: Add debug support for outputing alias string Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 08/32] perf sdt: Show proper hint when event not yet in place via 'perf probe' Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 09/32] perf symbols: Take into account symfs setting when reading file build ID Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 10/32] perf probe: Add option --symfs Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 11/32] perf tools: Only increase index if perf_evsel__new_idx() succeeds Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 12/32] perf tools: Add missing check for failure in a zalloc() call Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 13/32] perf tools: Use zfree() instead of ad hoc equivalent Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 14/32] perf tools: Use zfree() to avoid keeping dangling pointers Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 15/32] tools lib traceevent: Robustify do_generate_dynamic_list_file Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 16/32] perf tools: Fix include of linux/mman.h Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 17/32] perf vendor events intel: Add uncore events for Haswell Server processor Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 18/32] perf vendor events intel: Add uncore events for Broadwell Server Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 19/32] perf vendor events intel: Add uncore events for IvyBridge Server Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 20/32] perf vendor events intel: Add uncore events for Sandy Bridge Server Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 21/32] perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing) Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 22/32] perf vendor events intel: Add uncore events for Broadwell DE Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 23/32] tools lib bpf: Add missing header to the library Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo
2017-02-10 3:02 ` Joe Perches
2017-02-10 14:42 ` Arnaldo Carvalho de Melo
2017-02-10 17:08 ` [PATCH] compiler/compiler-gcc: Add __fallthrough Joe Perches
2017-02-10 17:18 ` Arnaldo Carvalho de Melo
2017-02-10 18:50 ` Joe Perches
[not found] ` <20170824133654.fnbaaj5kjtstzm42@smile.fi.intel.com>
[not found] ` <1503598834.12569.8.camel@perches.com>
[not found] ` <1503599543.25945.94.camel@intel.com>
2017-08-24 20:42 ` Joe Perches
2017-02-10 1:39 ` [PATCH 25/32] tools string: Use __fallthrough in perf_atoll() Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 26/32] tools strfilter: Use __fallthrough Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 27/32] perf top: " Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 28/32] perf thread_map: Correctly size buffer used with dirent->dt_name Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 30/32] perf bench numa: Avoid possible truncation when using snprintf() Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 31/32] perf tests: Avoid possible truncation with dirent->d_name + snprintf Arnaldo Carvalho de Melo
2017-02-10 1:39 ` [PATCH 32/32] perf intel-pt: Use __fallthrough Arnaldo Carvalho de Melo
2017-02-10 7:38 ` [GIT PULL 00/32] perf/core improvements and fixes Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2018-01-17 16:11 Arnaldo Carvalho de Melo
2018-01-17 16:22 ` Ingo Molnar
2014-10-28 13:31 Arnaldo Carvalho de Melo
2014-10-29 9:11 ` Ingo Molnar
2014-10-29 12:58 ` Arnaldo Carvalho de Melo
2012-11-18 14:29 Arnaldo Carvalho de Melo
2012-12-08 14:20 ` Ingo Molnar
2012-12-08 14:27 ` Ingo Molnar
2012-11-05 17:17 Arnaldo Carvalho de Melo
2012-11-13 18:18 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).