All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
	Alexander Shishkin, Andi Kleen, Andriy Shevchenko,
	Heiko Carstens, Hendrik Brueckner, Jin Yao, Jiri Olsa, Kan Liang,
	Martin Schwidefsky, Namhyung Kim, Peter Zijlstra, Sangwon Hong,
	Taeung Song, Thomas Richter, Wang Nan, William Cohen,
	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 33ea4b24277b06dbc55d7f5772a46f029600255e:

  perf/core: Implement the 'perf_uprobe' PMU (2018-02-06 11:29:28 +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.17-20180206

for you to fetch changes up to 52a37001d51a320c1019269fb3ba473a1363650d:

  perf test: Fix test trace+probe_libc_inet_pton.sh for s390x (2018-02-06 10:46:58 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

- perf_mmap overwrite mode overhaul, prep work to get 'perf top'
  using it, making it bearable to use it in large core count systems
  such as Knights Landing/Mill Intel systems (Kan Liang)

- Add perf vendor JSON metrics for ARM Cortex-A53 Processor (William Cohen)

- Use strtoull() instead of home grown function (Andy Shevchenko)

- Document missing 'perf data --force' option (Sangwon Hong)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andy Shevchenko (1):
      perf tools: Substitute yet another strtoull()

Arnaldo Carvalho de Melo (1):
      perf evsel: Expose the perf_missing_features struct

Kan Liang (16):
      perf evlist: Remove stale mmap read for backward
      perf mmap: Recalculate size for overwrite mode
      perf mmap: Cleanup perf_mmap__push()
      perf mmap: Introduce perf_mmap__read_init()
      perf mmap: Add new return value logic for perf_mmap__read_init()
      perf mmap: Discard 'prev' in perf_mmap__read()
      perf mmap: Introduce perf_mmap__read_done()
      perf mmap: Introduce perf_mmap__read_event()
      perf test: Update mmap read functions for backward-ring-buffer test
      perf mmap: Discard legacy interface for mmap read
      perf top: Check per-event overwrite term
      perf top: Add overwrite fall back
      perf hists browser: Add parameter to disable lost event warning
      perf top: Remove lost events checking
      perf top: Switch default mode to overwrite mode
      perf top: Check the latency of perf_top__mmap_read()

Sangwon Hong (1):
      perf data: Document missing --force option

Thomas Richter (1):
      perf test: Fix test trace+probe_libc_inet_pton.sh for s390x

William Cohen (1):
      perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor

 tools/perf/Documentation/perf-data.txt             |   4 +
 tools/perf/builtin-c2c.c                           |   4 +-
 tools/perf/builtin-report.c                        |   3 +-
 tools/perf/builtin-top.c                           | 150 ++++++++++++++++++++-
 .../pmu-events/arch/arm64/cortex-a53/branch.json   |  27 ++++
 .../perf/pmu-events/arch/arm64/cortex-a53/bus.json |  22 +++
 .../pmu-events/arch/arm64/cortex-a53/cache.json    |  27 ++++
 .../pmu-events/arch/arm64/cortex-a53/memory.json   |  22 +++
 .../pmu-events/arch/arm64/cortex-a53/other.json    |  32 +++++
 .../pmu-events/arch/arm64/cortex-a53/pipeline.json |  52 +++++++
 tools/perf/pmu-events/arch/arm64/mapfile.csv       |   1 +
 tools/perf/tests/backward-ring-buffer.c            |   7 +-
 .../perf/tests/shell/trace+probe_libc_inet_pton.sh |  23 +++-
 tools/perf/ui/browsers/hists.c                     |  38 ++++--
 tools/perf/ui/browsers/hists.h                     |   3 +-
 tools/perf/util/evlist.c                           |  17 ---
 tools/perf/util/evlist.h                           |   4 -
 tools/perf/util/evsel.c                            |  12 +-
 tools/perf/util/evsel.h                            |  14 ++
 tools/perf/util/hist.h                             |   6 +-
 tools/perf/util/mmap.c                             | 141 ++++++++++---------
 tools/perf/util/mmap.h                             |  10 +-
 tools/perf/util/util.c                             |  24 +---
 23 files changed, 492 insertions(+), 151 deletions(-)
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
   6 amazonlinux:2                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
   7 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   8 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  10 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  11 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  12 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  13 debian:8                      : Ok   gcc (Debian 4.9.2-10) 4.9.2
  14 debian:9                      : Ok   gcc (Debian 6.3.0-18) 6.3.0 20170516
  15 debian:experimental           : Ok   gcc (Debian 7.2.0-17) 7.2.1 20171205
  16 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  17 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  18 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.2.0-11) 7.2.0
  19 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  20 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  21 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  22 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  23 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  25 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  26 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  27 fedora:26                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  28 fedora:27                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  29 fedora:rawhide                : Ok   gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1)
  30 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0
  31 mageia:5                      : Ok   gcc (GCC) 4.9.2
  32 mageia:6                      : Ok   gcc (Mageia 5.4.0-5.mga6) 5.4.0
  33 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  34 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  35 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  36 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.0
  37 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  38 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  39 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  40 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  41 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.4-2017.05) 5.4.1 20170404
  42 ubuntu:15.04                  : Ok   gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2
  43 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
  44 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  45 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  46 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  47 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
  48 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  49 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  50 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  51 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  52 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
  53 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.2.0-16ubuntu1) 7.2.0

  # uname -a
  Linux jouet 4.15.0-rc9+ #7 SMP Mon Jan 22 18:16:36 -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: probe libc's inet_pton & backtrace it with ping       : Ok
  62: Check open filename arg using perf trace + vfs_getname: 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_perf_o_O: make perf.o
            make_no_auxtrace_O: make NO_AUXTRACE=1
                make_no_newt_O: make NO_NEWT=1
              make_no_libbpf_O: make NO_LIBBPF=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                make_install_O: make install
               make_no_slang_O: make NO_SLANG=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
           make_no_libunwind_O: make NO_LIBUNWIND=1
             make_util_map_o_O: make util/map.o
                  make_debug_O: make DEBUG=1
                 make_static_O: make LDFLAGS=-static
        make_with_babeltrace_O: make LIBBABELTRACE=1
            make_install_bin_O: make install-bin
            make_no_demangle_O: make NO_DEMANGLE=1
                    make_doc_O: make doc
         make_install_prefix_O: make install prefix=/tmp/krava
                   make_help_O: make help
            make_no_libaudit_O: make NO_LIBAUDIT=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
             make_no_libperl_O: make NO_LIBPERL=1
              make_clean_all_O: make clean all
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
           make_no_libpython_O: make NO_LIBPYTHON=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
             make_no_libnuma_O: make NO_LIBNUMA=1
                   make_tags_O: make tags
                   make_pure_O: make
                make_no_gtk2_O: make NO_GTK2=1
              make_no_libelf_O: make NO_LIBELF=1
           make_no_backtrace_O: make NO_BACKTRACE=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
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
	Alexander Shishkin, Andi Kleen, Andriy Shevchenko,
	Heiko Carstens, Hendrik Brueckner, Jin Yao, Jiri Olsa, Kan Liang,
	Martin Schwidefsky, Namhyung Kim, Peter Zijlstra, Sangwon Hong,
	Taeung Song, Thomas Richter, Wang Nan, William Cohen

Hi Ingo,

	Please consider pulling,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit 33ea4b24277b06dbc55d7f5772a46f029600255e:

  perf/core: Implement the 'perf_uprobe' PMU (2018-02-06 11:29:28 +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.17-20180206

for you to fetch changes up to 52a37001d51a320c1019269fb3ba473a1363650d:

  perf test: Fix test trace+probe_libc_inet_pton.sh for s390x (2018-02-06 10:46:58 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

- perf_mmap overwrite mode overhaul, prep work to get 'perf top'
  using it, making it bearable to use it in large core count systems
  such as Knights Landing/Mill Intel systems (Kan Liang)

- Add perf vendor JSON metrics for ARM Cortex-A53 Processor (William Cohen)

- Use strtoull() instead of home grown function (Andy Shevchenko)

- Document missing 'perf data --force' option (Sangwon Hong)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andy Shevchenko (1):
      perf tools: Substitute yet another strtoull()

Arnaldo Carvalho de Melo (1):
      perf evsel: Expose the perf_missing_features struct

Kan Liang (16):
      perf evlist: Remove stale mmap read for backward
      perf mmap: Recalculate size for overwrite mode
      perf mmap: Cleanup perf_mmap__push()
      perf mmap: Introduce perf_mmap__read_init()
      perf mmap: Add new return value logic for perf_mmap__read_init()
      perf mmap: Discard 'prev' in perf_mmap__read()
      perf mmap: Introduce perf_mmap__read_done()
      perf mmap: Introduce perf_mmap__read_event()
      perf test: Update mmap read functions for backward-ring-buffer test
      perf mmap: Discard legacy interface for mmap read
      perf top: Check per-event overwrite term
      perf top: Add overwrite fall back
      perf hists browser: Add parameter to disable lost event warning
      perf top: Remove lost events checking
      perf top: Switch default mode to overwrite mode
      perf top: Check the latency of perf_top__mmap_read()

Sangwon Hong (1):
      perf data: Document missing --force option

Thomas Richter (1):
      perf test: Fix test trace+probe_libc_inet_pton.sh for s390x

William Cohen (1):
      perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor

 tools/perf/Documentation/perf-data.txt             |   4 +
 tools/perf/builtin-c2c.c                           |   4 +-
 tools/perf/builtin-report.c                        |   3 +-
 tools/perf/builtin-top.c                           | 150 ++++++++++++++++++++-
 .../pmu-events/arch/arm64/cortex-a53/branch.json   |  27 ++++
 .../perf/pmu-events/arch/arm64/cortex-a53/bus.json |  22 +++
 .../pmu-events/arch/arm64/cortex-a53/cache.json    |  27 ++++
 .../pmu-events/arch/arm64/cortex-a53/memory.json   |  22 +++
 .../pmu-events/arch/arm64/cortex-a53/other.json    |  32 +++++
 .../pmu-events/arch/arm64/cortex-a53/pipeline.json |  52 +++++++
 tools/perf/pmu-events/arch/arm64/mapfile.csv       |   1 +
 tools/perf/tests/backward-ring-buffer.c            |   7 +-
 .../perf/tests/shell/trace+probe_libc_inet_pton.sh |  23 +++-
 tools/perf/ui/browsers/hists.c                     |  38 ++++--
 tools/perf/ui/browsers/hists.h                     |   3 +-
 tools/perf/util/evlist.c                           |  17 ---
 tools/perf/util/evlist.h                           |   4 -
 tools/perf/util/evsel.c                            |  12 +-
 tools/perf/util/evsel.h                            |  14 ++
 tools/perf/util/hist.h                             |   6 +-
 tools/perf/util/mmap.c                             | 141 ++++++++++---------
 tools/perf/util/mmap.h                             |  10 +-
 tools/perf/util/util.c                             |  24 +---
 23 files changed, 492 insertions(+), 151 deletions(-)
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
   6 amazonlinux:2                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
   7 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   8 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  10 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  11 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  12 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  13 debian:8                      : Ok   gcc (Debian 4.9.2-10) 4.9.2
  14 debian:9                      : Ok   gcc (Debian 6.3.0-18) 6.3.0 20170516
  15 debian:experimental           : Ok   gcc (Debian 7.2.0-17) 7.2.1 20171205
  16 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  17 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  18 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.2.0-11) 7.2.0
  19 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  20 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  21 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  22 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  23 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  25 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  26 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  27 fedora:26                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  28 fedora:27                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  29 fedora:rawhide                : Ok   gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1)
  30 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0
  31 mageia:5                      : Ok   gcc (GCC) 4.9.2
  32 mageia:6                      : Ok   gcc (Mageia 5.4.0-5.mga6) 5.4.0
  33 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  34 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  35 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  36 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.0
  37 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  38 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  39 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  40 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  41 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.4-2017.05) 5.4.1 20170404
  42 ubuntu:15.04                  : Ok   gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2
  43 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
  44 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  45 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  46 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  47 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
  48 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  49 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  50 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  51 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  52 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
  53 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.2.0-16ubuntu1) 7.2.0

  # uname -a
  Linux jouet 4.15.0-rc9+ #7 SMP Mon Jan 22 18:16:36 -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: probe libc's inet_pton & backtrace it with ping       : Ok
  62: Check open filename arg using perf trace + vfs_getname: 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_perf_o_O: make perf.o
            make_no_auxtrace_O: make NO_AUXTRACE=1
                make_no_newt_O: make NO_NEWT=1
              make_no_libbpf_O: make NO_LIBBPF=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                make_install_O: make install
               make_no_slang_O: make NO_SLANG=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
           make_no_libunwind_O: make NO_LIBUNWIND=1
             make_util_map_o_O: make util/map.o
                  make_debug_O: make DEBUG=1
                 make_static_O: make LDFLAGS=-static
        make_with_babeltrace_O: make LIBBABELTRACE=1
            make_install_bin_O: make install-bin
            make_no_demangle_O: make NO_DEMANGLE=1
                    make_doc_O: make doc
         make_install_prefix_O: make install prefix=/tmp/krava
                   make_help_O: make help
            make_no_libaudit_O: make NO_LIBAUDIT=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
             make_no_libperl_O: make NO_LIBPERL=1
              make_clean_all_O: make clean all
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
           make_no_libpython_O: make NO_LIBPYTHON=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
             make_no_libnuma_O: make NO_LIBNUMA=1
                   make_tags_O: make tags
                   make_pure_O: make
                make_no_gtk2_O: make NO_GTK2=1
              make_no_libelf_O: make NO_LIBELF=1
           make_no_backtrace_O: make NO_BACKTRACE=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
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [PATCH 01/21] perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, William Cohen,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, Peter Zijlstra,
	Arnaldo Carvalho de Melo

From: William Cohen <wcohen@redhat.com>

Add JSON metrics for ARM Cortex-A53 Processor.

Unlike the Intel processors there isn't a script that automatically
generated these files. The patch was manually generated from the
documentation and the previous oprofile ARM Cortex ac53 event file patch
I made.

The relevant documentation is in the "12.9 Events" section of the ARM
Cortex A53 MPCore Processor Revision: r0p4 Technical Reference Manual.

The ARM Cortex A53 manual is available at:

  http://infocenter.arm.com/help/topic/com.arm.doc.ddi0500g/DDI0500G_cortex_a53_trm.pdf

Use that to look for additional information about the events.

Signed-off-by: William Cohen <wcohen@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20180131032813.9564-1-wcohen@redhat.com
[ Added references provided by William Cohen ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 .../pmu-events/arch/arm64/cortex-a53/branch.json   | 27 +++++++++++
 .../perf/pmu-events/arch/arm64/cortex-a53/bus.json | 22 +++++++++
 .../pmu-events/arch/arm64/cortex-a53/cache.json    | 27 +++++++++++
 .../pmu-events/arch/arm64/cortex-a53/memory.json   | 22 +++++++++
 .../pmu-events/arch/arm64/cortex-a53/other.json    | 32 +++++++++++++
 .../pmu-events/arch/arm64/cortex-a53/pipeline.json | 52 ++++++++++++++++++++++
 tools/perf/pmu-events/arch/arm64/mapfile.csv       |  1 +
 7 files changed, 183 insertions(+)
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json

diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
new file mode 100644
index 000000000000..3b6208763e50
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
@@ -0,0 +1,27 @@
+[
+  {,
+    "EventCode": "0x7A",
+    "EventName": "BR_INDIRECT_SPEC",
+    "BriefDescription": "Branch speculatively executed - Indirect branch"
+  },
+  {,
+    "EventCode": "0xC9",
+    "EventName": "BR_COND",
+    "BriefDescription": "Conditional branch executed"
+  },
+  {,
+    "EventCode": "0xCA",
+    "EventName": "BR_INDIRECT_MISPRED",
+    "BriefDescription": "Indirect branch mispredicted"
+  },
+  {,
+    "EventCode": "0xCB",
+    "EventName": "BR_INDIRECT_MISPRED_ADDR",
+    "BriefDescription": "Indirect branch mispredicted because of address miscompare"
+  },
+  {,
+    "EventCode": "0xCC",
+    "EventName": "BR_COND_MISPRED",
+    "BriefDescription": "Conditional branch mispredicted"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
new file mode 100644
index 000000000000..480d9f7460ab
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
@@ -0,0 +1,22 @@
+[
+  {,
+    "EventCode": "0x60",
+    "EventName": "BUS_ACCESS_LD",
+    "BriefDescription": "Bus access - Read"
+  },
+  {,
+    "EventCode": "0x61",
+    "EventName": "BUS_ACCESS_ST",
+    "BriefDescription": "Bus access - Write"
+  },
+  {,
+    "EventCode": "0xC0",
+    "EventName": "EXT_MEM_REQ",
+    "BriefDescription": "External memory request"
+  },
+  {,
+    "EventCode": "0xC1",
+    "EventName": "EXT_MEM_REQ_NC",
+    "BriefDescription": "Non-cacheable external memory request"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
new file mode 100644
index 000000000000..11baad6344b9
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
@@ -0,0 +1,27 @@
+[
+  {,
+    "EventCode": "0xC2",
+    "EventName": "PREFETCH_LINEFILL",
+    "BriefDescription": "Linefill because of prefetch"
+  },
+  {,
+    "EventCode": "0xC3",
+    "EventName": "PREFETCH_LINEFILL_DROP",
+    "BriefDescription": "Instruction Cache Throttle occurred"
+  },
+  {,
+    "EventCode": "0xC4",
+    "EventName": "READ_ALLOC_ENTER",
+    "BriefDescription": "Entering read allocate mode"
+  },
+  {,
+    "EventCode": "0xC5",
+    "EventName": "READ_ALLOC",
+    "BriefDescription": "Read allocate mode"
+  },
+  {,
+    "EventCode": "0xC8",
+    "EventName": "EXT_SNOOP",
+    "BriefDescription": "SCU Snooped data from another CPU for this CPU"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
new file mode 100644
index 000000000000..480d9f7460ab
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
@@ -0,0 +1,22 @@
+[
+  {,
+    "EventCode": "0x60",
+    "EventName": "BUS_ACCESS_LD",
+    "BriefDescription": "Bus access - Read"
+  },
+  {,
+    "EventCode": "0x61",
+    "EventName": "BUS_ACCESS_ST",
+    "BriefDescription": "Bus access - Write"
+  },
+  {,
+    "EventCode": "0xC0",
+    "EventName": "EXT_MEM_REQ",
+    "BriefDescription": "External memory request"
+  },
+  {,
+    "EventCode": "0xC1",
+    "EventName": "EXT_MEM_REQ_NC",
+    "BriefDescription": "Non-cacheable external memory request"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/other.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
new file mode 100644
index 000000000000..73a22402d003
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
@@ -0,0 +1,32 @@
+[
+  {,
+    "EventCode": "0x86",
+    "EventName": "EXC_IRQ",
+    "BriefDescription": "Exception taken, IRQ"
+  },
+  {,
+    "EventCode": "0x87",
+    "EventName": "EXC_FIQ",
+    "BriefDescription": "Exception taken, FIQ"
+  },
+  {,
+    "EventCode": "0xC6",
+    "EventName": "PRE_DECODE_ERR",
+    "BriefDescription": "Pre-decode error"
+  },
+  {,
+    "EventCode": "0xD0",
+    "EventName": "L1I_CACHE_ERR",
+    "BriefDescription": "L1 Instruction Cache (data or tag) memory error"
+  },
+  {,
+    "EventCode": "0xD1",
+    "EventName": "L1D_CACHE_ERR",
+    "BriefDescription": "L1 Data Cache (data, tag or dirty) memory error, correctable or non-correctable"
+  },
+  {,
+    "EventCode": "0xD2",
+    "EventName": "TLB_ERR",
+    "BriefDescription": "TLB memory error"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json b/tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json
new file mode 100644
index 000000000000..3149fb90555a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json
@@ -0,0 +1,52 @@
+[
+  {,
+    "EventCode": "0xC7",
+    "EventName": "STALL_SB_FULL",
+    "BriefDescription": "Data Write operation that stalls the pipeline because the store buffer is full"
+  },
+  {,
+    "EventCode": "0xE0",
+    "EventName": "OTHER_IQ_DEP_STALL",
+    "BriefDescription": "Cycles that the DPU IQ is empty and that is not because of a recent micro-TLB miss, instruction cache miss or pre-decode error"
+  },
+  {,
+    "EventCode": "0xE1",
+    "EventName": "IC_DEP_STALL",
+    "BriefDescription": "Cycles the DPU IQ is empty and there is an instruction cache miss being processed"
+  },
+  {,
+    "EventCode": "0xE2",
+    "EventName": "IUTLB_DEP_STALL",
+    "BriefDescription": "Cycles the DPU IQ is empty and there is an instruction micro-TLB miss being processed"
+  },
+  {,
+    "EventCode": "0xE3",
+    "EventName": "DECODE_DEP_STALL",
+    "BriefDescription": "Cycles the DPU IQ is empty and there is a pre-decode error being processed"
+  },
+  {,
+    "EventCode": "0xE4",
+    "EventName": "OTHER_INTERLOCK_STALL",
+    "BriefDescription": "Cycles there is an interlock other than  Advanced SIMD/Floating-point instructions or load/store instruction"
+  },
+  {,
+    "EventCode": "0xE5",
+    "EventName": "AGU_DEP_STALL",
+    "BriefDescription": "Cycles there is an interlock for a load/store instruction waiting for data to calculate the address in the AGU"
+  },
+  {,
+    "EventCode": "0xE6",
+    "EventName": "SIMD_DEP_STALL",
+    "BriefDescription": "Cycles there is an interlock for an Advanced SIMD/Floating-point operation."
+  },
+  {,
+    "EventCode": "0xE7",
+    "EventName": "LD_DEP_STALL",
+    "BriefDescription": "Cycles there is a stall in the Wr stage because of a load miss"
+  },
+  {,
+    "EventCode": "0xE8",
+    "EventName": "ST_DEP_STALL",
+    "BriefDescription": "Cycles there is a stall in the Wr stage because of a store"
+  }
+]
diff --git a/tools/perf/pmu-events/arch/arm64/mapfile.csv b/tools/perf/pmu-events/arch/arm64/mapfile.csv
index 219d6756134e..e61c9ca6cf9e 100644
--- a/tools/perf/pmu-events/arch/arm64/mapfile.csv
+++ b/tools/perf/pmu-events/arch/arm64/mapfile.csv
@@ -13,3 +13,4 @@
 #
 #Family-model,Version,Filename,EventType
 0x00000000420f5160,v1,cavium,core
+0x00000000410fd03[[:xdigit:]],v1,cortex-a53,core
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 02/21] perf evlist: Remove stale mmap read for backward
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  (?)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

perf_evlist__mmap_read_catchup() and perf_evlist__mmap_read_backward()
are only for overwrite mode.

But they read the evlist->mmap buffer which is for non-overwrite mode.

It did not bring any serious problem yet, because there is no one use
it.

Remove the unused interfaces.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Wang Nan <wangnan0@huawei.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1516310792-208685-2-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evlist.c | 17 -----------------
 tools/perf/util/evlist.h |  4 ----
 2 files changed, 21 deletions(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index ac35cd214feb..e5fc14e53c05 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -715,28 +715,11 @@ union perf_event *perf_evlist__mmap_read_forward(struct perf_evlist *evlist, int
 	return perf_mmap__read_forward(md);
 }
 
-union perf_event *perf_evlist__mmap_read_backward(struct perf_evlist *evlist, int idx)
-{
-	struct perf_mmap *md = &evlist->mmap[idx];
-
-	/*
-	 * No need to check messup for backward ring buffer:
-	 * We can always read arbitrary long data from a backward
-	 * ring buffer unless we forget to pause it before reading.
-	 */
-	return perf_mmap__read_backward(md);
-}
-
 union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx)
 {
 	return perf_evlist__mmap_read_forward(evlist, idx);
 }
 
-void perf_evlist__mmap_read_catchup(struct perf_evlist *evlist, int idx)
-{
-	perf_mmap__read_catchup(&evlist->mmap[idx]);
-}
-
 void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx)
 {
 	perf_mmap__consume(&evlist->mmap[idx], false);
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 75f8e0ad5d76..336b838e6957 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -133,10 +133,6 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx);
 
 union perf_event *perf_evlist__mmap_read_forward(struct perf_evlist *evlist,
 						 int idx);
-union perf_event *perf_evlist__mmap_read_backward(struct perf_evlist *evlist,
-						  int idx);
-void perf_evlist__mmap_read_catchup(struct perf_evlist *evlist, int idx);
-
 void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx);
 
 int perf_evlist__open(struct perf_evlist *evlist);
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 03/21] perf mmap: Recalculate size for overwrite mode
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

In perf_mmap__push(), the 'size' need to be recalculated, otherwise the
invalid data might be pushed to the record in overwrite mode.

The issue is introduced by commit 7fb4b407a124 ("perf mmap: Don't
discard prev in backward mode").

When the ring buffer is full in overwrite mode, backward_rb_find_range()
will be called to recalculate the 'start' and 'end'. The 'size' needs to
be recalculated accordingly.

Unconditionally recalculate the 'size', not just for full ring buffer in
overwrite mode. Because:

- There is no harmful to recalculate the 'size' for other cases.
- The code of calculating 'start' and 'end' will be factored out later.
  The new function does not need to return 'size'.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Fixes: 7fb4b407a124 ("perf mmap: Don't discard prev in backward mode")
Link: http://lkml.kernel.org/r/1516310792-208685-3-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 05076e683938..97cf4fab564b 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -302,6 +302,8 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
 			return -1;
 	}
 
+	size = end - start;
+
 	if ((start & md->mask) + size != (end & md->mask)) {
 		buf = &data[start & md->mask];
 		size = md->mask + 1 - (start & md->mask);
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 04/21] perf mmap: Cleanup perf_mmap__push()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

The first assignment for 'start' and 'end' is redundant.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-4-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 97cf4fab564b..fbbbe87f0308 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -272,7 +272,7 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
 {
 	u64 head = perf_mmap__read_head(md);
 	u64 old = md->prev;
-	u64 end = head, start = old;
+	u64 end, start;
 	unsigned char *data = md->base + page_size;
 	unsigned long size;
 	void *buf;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 05/21] perf mmap: Introduce perf_mmap__read_init()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

The new function perf_mmap__read_init() is factored out from
perf_mmap__push().

It is to calculate the 'start' and 'end' of the available data in
ringbuffer.

No functional change.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-5-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 37 +++++++++++++++++++++++++++----------
 tools/perf/util/mmap.h |  2 ++
 2 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index fbbbe87f0308..c19a4e640e8e 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -267,24 +267,24 @@ static int overwrite_rb_find_range(void *buf, int mask, u64 head, u64 *start, u6
 	return -1;
 }
 
-int perf_mmap__push(struct perf_mmap *md, bool overwrite,
-		    void *to, int push(void *to, void *buf, size_t size))
+/*
+ * Report the start and end of the available data in ringbuffer
+ */
+int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
+			 u64 *startp, u64 *endp)
 {
 	u64 head = perf_mmap__read_head(md);
 	u64 old = md->prev;
-	u64 end, start;
 	unsigned char *data = md->base + page_size;
 	unsigned long size;
-	void *buf;
-	int rc = 0;
 
-	start = overwrite ? head : old;
-	end = overwrite ? old : head;
+	*startp = overwrite ? head : old;
+	*endp = overwrite ? old : head;
 
-	if (start == end)
+	if (*startp == *endp)
 		return 0;
 
-	size = end - start;
+	size = *endp - *startp;
 	if (size > (unsigned long)(md->mask) + 1) {
 		if (!overwrite) {
 			WARN_ONCE(1, "failed to keep up with mmap data. (warn only once)\n");
@@ -298,10 +298,27 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
 		 * Backward ring buffer is full. We still have a chance to read
 		 * most of data from it.
 		 */
-		if (overwrite_rb_find_range(data, md->mask, head, &start, &end))
+		if (overwrite_rb_find_range(data, md->mask, head, startp, endp))
 			return -1;
 	}
 
+	return 1;
+}
+
+int perf_mmap__push(struct perf_mmap *md, bool overwrite,
+		    void *to, int push(void *to, void *buf, size_t size))
+{
+	u64 head = perf_mmap__read_head(md);
+	u64 end, start;
+	unsigned char *data = md->base + page_size;
+	unsigned long size;
+	void *buf;
+	int rc = 0;
+
+	rc = perf_mmap__read_init(md, overwrite, &start, &end);
+	if (rc < 1)
+		return rc;
+
 	size = end - start;
 
 	if ((start & md->mask) + size != (end & md->mask)) {
diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h
index e43d7b55a55f..9ab2b48df65b 100644
--- a/tools/perf/util/mmap.h
+++ b/tools/perf/util/mmap.h
@@ -94,4 +94,6 @@ int perf_mmap__push(struct perf_mmap *md, bool backward,
 
 size_t perf_mmap__mmap_len(struct perf_mmap *map);
 
+int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
+			 u64 *startp, u64 *endp);
 #endif /*__PERF_MMAP_H */
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 06/21] perf mmap: Add new return value logic for perf_mmap__read_init()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (5 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Improve the readability by using meaningful enum (-EAGAIN, -EINVAL and
0) to replace the three returning states (0, -1 and 1).

Suggested-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-6-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index c19a4e640e8e..38fa69dc635e 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -282,7 +282,7 @@ int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
 	*endp = overwrite ? old : head;
 
 	if (*startp == *endp)
-		return 0;
+		return -EAGAIN;
 
 	size = *endp - *startp;
 	if (size > (unsigned long)(md->mask) + 1) {
@@ -291,7 +291,7 @@ int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
 
 			md->prev = head;
 			perf_mmap__consume(md, overwrite);
-			return 0;
+			return -EAGAIN;
 		}
 
 		/*
@@ -299,10 +299,10 @@ int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
 		 * most of data from it.
 		 */
 		if (overwrite_rb_find_range(data, md->mask, head, startp, endp))
-			return -1;
+			return -EINVAL;
 	}
 
-	return 1;
+	return 0;
 }
 
 int perf_mmap__push(struct perf_mmap *md, bool overwrite,
@@ -316,8 +316,8 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
 	int rc = 0;
 
 	rc = perf_mmap__read_init(md, overwrite, &start, &end);
-	if (rc < 1)
-		return rc;
+	if (rc < 0)
+		return (rc == -EAGAIN) ? 0 : -1;
 
 	size = end - start;
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 07/21] perf mmap: Discard 'prev' in perf_mmap__read()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (6 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

The 'start' and 'prev' variables are duplicates in perf_mmap__read().

Use 'map->prev' to replace 'start' in perf_mmap__read_*().

Suggested-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-7-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 38fa69dc635e..125bfda9d037 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -22,29 +22,27 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map)
 
 /* When check_messup is true, 'end' must points to a good entry */
 static union perf_event *perf_mmap__read(struct perf_mmap *map,
-					 u64 start, u64 end, u64 *prev)
+					 u64 *startp, u64 end)
 {
 	unsigned char *data = map->base + page_size;
 	union perf_event *event = NULL;
-	int diff = end - start;
+	int diff = end - *startp;
 
 	if (diff >= (int)sizeof(event->header)) {
 		size_t size;
 
-		event = (union perf_event *)&data[start & map->mask];
+		event = (union perf_event *)&data[*startp & map->mask];
 		size = event->header.size;
 
-		if (size < sizeof(event->header) || diff < (int)size) {
-			event = NULL;
-			goto broken_event;
-		}
+		if (size < sizeof(event->header) || diff < (int)size)
+			return NULL;
 
 		/*
 		 * Event straddles the mmap boundary -- header should always
 		 * be inside due to u64 alignment of output.
 		 */
-		if ((start & map->mask) + size != ((start + size) & map->mask)) {
-			unsigned int offset = start;
+		if ((*startp & map->mask) + size != ((*startp + size) & map->mask)) {
+			unsigned int offset = *startp;
 			unsigned int len = min(sizeof(*event), size), cpy;
 			void *dst = map->event_copy;
 
@@ -59,20 +57,15 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map,
 			event = (union perf_event *)map->event_copy;
 		}
 
-		start += size;
+		*startp += size;
 	}
 
-broken_event:
-	if (prev)
-		*prev = start;
-
 	return event;
 }
 
 union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 {
 	u64 head;
-	u64 old = map->prev;
 
 	/*
 	 * Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -82,13 +75,12 @@ union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 
 	head = perf_mmap__read_head(map);
 
-	return perf_mmap__read(map, old, head, &map->prev);
+	return perf_mmap__read(map, &map->prev, head);
 }
 
 union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
 {
 	u64 head, end;
-	u64 start = map->prev;
 
 	/*
 	 * Check if event was unmapped due to a POLLHUP/POLLERR.
@@ -118,7 +110,7 @@ union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
 	else
 		end = head + map->mask + 1;
 
-	return perf_mmap__read(map, start, end, &map->prev);
+	return perf_mmap__read(map, &map->prev, end);
 }
 
 void perf_mmap__read_catchup(struct perf_mmap *map)
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 08/21] perf mmap: Introduce perf_mmap__read_done()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (7 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

The direction of overwrite mode is backward. The last perf_mmap__read()
will set tail to map->prev. Need to correct the map->prev to head which
is the end of next read.

It will be used later.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-8-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 11 +++++++++++
 tools/perf/util/mmap.h |  1 +
 2 files changed, 12 insertions(+)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 125bfda9d037..4f59eaefc706 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -338,3 +338,14 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
 out:
 	return rc;
 }
+
+/*
+ * Mandatory for overwrite mode
+ * The direction of overwrite mode is backward.
+ * The last perf_mmap__read() will set tail to map->prev.
+ * Need to correct the map->prev to head which is the end of next read.
+ */
+void perf_mmap__read_done(struct perf_mmap *map)
+{
+	map->prev = perf_mmap__read_head(map);
+}
diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h
index 9ab2b48df65b..95549d4af943 100644
--- a/tools/perf/util/mmap.h
+++ b/tools/perf/util/mmap.h
@@ -96,4 +96,5 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map);
 
 int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
 			 u64 *startp, u64 *endp);
+void perf_mmap__read_done(struct perf_mmap *map);
 #endif /*__PERF_MMAP_H */
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 09/21] perf mmap: Introduce perf_mmap__read_event()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (8 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Except for 'perf record', the other perf tools read events one by one
from the ring buffer using perf_mmap__read_forward(). But it only
supports non-overwrite mode.

Introduce perf_mmap__read_event() to support both non-overwrite and
overwrite mode.

Usage:
perf_mmap__read_init()
while(event = perf_mmap__read_event()) {
        //process the event
        perf_mmap__consume()
}
perf_mmap__read_done()

It cannot use perf_mmap__read_backward(). Because it always reads the
stale buffer which is already processed. Furthermore, the forward and
backward concepts have been removed. The perf_mmap__read_backward() will
be replaced and discarded later.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-9-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 39 +++++++++++++++++++++++++++++++++++++++
 tools/perf/util/mmap.h |  4 ++++
 2 files changed, 43 insertions(+)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index 4f59eaefc706..f804926778b7 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -113,6 +113,45 @@ union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
 	return perf_mmap__read(map, &map->prev, end);
 }
 
+/*
+ * Read event from ring buffer one by one.
+ * Return one event for each call.
+ *
+ * Usage:
+ * perf_mmap__read_init()
+ * while(event = perf_mmap__read_event()) {
+ *	//process the event
+ *	perf_mmap__consume()
+ * }
+ * perf_mmap__read_done()
+ */
+union perf_event *perf_mmap__read_event(struct perf_mmap *map,
+					bool overwrite,
+					u64 *startp, u64 end)
+{
+	union perf_event *event;
+
+	/*
+	 * Check if event was unmapped due to a POLLHUP/POLLERR.
+	 */
+	if (!refcount_read(&map->refcnt))
+		return NULL;
+
+	if (startp == NULL)
+		return NULL;
+
+	/* non-overwirte doesn't pause the ringbuffer */
+	if (!overwrite)
+		end = perf_mmap__read_head(map);
+
+	event = perf_mmap__read(map, startp, end);
+
+	if (!overwrite)
+		map->prev = *startp;
+
+	return event;
+}
+
 void perf_mmap__read_catchup(struct perf_mmap *map)
 {
 	u64 head;
diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h
index 95549d4af943..28718543dd42 100644
--- a/tools/perf/util/mmap.h
+++ b/tools/perf/util/mmap.h
@@ -89,6 +89,10 @@ static inline void perf_mmap__write_tail(struct perf_mmap *md, u64 tail)
 union perf_event *perf_mmap__read_forward(struct perf_mmap *map);
 union perf_event *perf_mmap__read_backward(struct perf_mmap *map);
 
+union perf_event *perf_mmap__read_event(struct perf_mmap *map,
+					bool overwrite,
+					u64 *startp, u64 end);
+
 int perf_mmap__push(struct perf_mmap *md, bool backward,
 		    void *to, int push(void *to, void *buf, size_t size));
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 10/21] perf test: Update mmap read functions for backward-ring-buffer test
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (9 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Use the new perf_mmap__read_* interfaces for overwrite ringbuffer test.

Commiter notes:

Testing:

  [root@seventh ~]# perf test -v backward
  48: Read backward ring buffer                             :
  --- start ---
  test child forked, pid 8309
  Using CPUID GenuineIntel-6-9E
  mmap size 1052672B
  mmap size 8192B
  Finished reading overwrite ring buffer: rewind
  test child finished with 0
  ---- end ----
  Read backward ring buffer: Ok
  [root@seventh ~]#

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-10-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/backward-ring-buffer.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
index 4035d43523c3..e0b1b414d466 100644
--- a/tools/perf/tests/backward-ring-buffer.c
+++ b/tools/perf/tests/backward-ring-buffer.c
@@ -31,10 +31,12 @@ static int count_samples(struct perf_evlist *evlist, int *sample_count,
 	int i;
 
 	for (i = 0; i < evlist->nr_mmaps; i++) {
+		struct perf_mmap *map = &evlist->overwrite_mmap[i];
 		union perf_event *event;
+		u64 start, end;
 
-		perf_mmap__read_catchup(&evlist->overwrite_mmap[i]);
-		while ((event = perf_mmap__read_backward(&evlist->overwrite_mmap[i])) != NULL) {
+		perf_mmap__read_init(map, true, &start, &end);
+		while ((event = perf_mmap__read_event(map, true, &start, end)) != NULL) {
 			const u32 type = event->header.type;
 
 			switch (type) {
@@ -49,6 +51,7 @@ static int count_samples(struct perf_evlist *evlist, int *sample_count,
 				return TEST_FAIL;
 			}
 		}
+		perf_mmap__read_done(map);
 	}
 	return TEST_OK;
 }
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 11/21] perf mmap: Discard legacy interface for mmap read
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (10 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Discards perf_mmap__read_backward() and perf_mmap__read_catchup(). No
tools use them.

There are tools still use perf_mmap__read_forward(). Keep it, but add
comments to point to the new interface for future use.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-11-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/mmap.c | 50 ++++----------------------------------------------
 tools/perf/util/mmap.h |  3 ---
 2 files changed, 4 insertions(+), 49 deletions(-)

diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c
index f804926778b7..91531a7c8fbf 100644
--- a/tools/perf/util/mmap.c
+++ b/tools/perf/util/mmap.c
@@ -63,6 +63,10 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map,
 	return event;
 }
 
+/*
+ * legacy interface for mmap read.
+ * Don't use it. Use perf_mmap__read_event().
+ */
 union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 {
 	u64 head;
@@ -78,41 +82,6 @@ union perf_event *perf_mmap__read_forward(struct perf_mmap *map)
 	return perf_mmap__read(map, &map->prev, head);
 }
 
-union perf_event *perf_mmap__read_backward(struct perf_mmap *map)
-{
-	u64 head, end;
-
-	/*
-	 * Check if event was unmapped due to a POLLHUP/POLLERR.
-	 */
-	if (!refcount_read(&map->refcnt))
-		return NULL;
-
-	head = perf_mmap__read_head(map);
-	if (!head)
-		return NULL;
-
-	/*
-	 * 'head' pointer starts from 0. Kernel minus sizeof(record) form
-	 * it each time when kernel writes to it, so in fact 'head' is
-	 * negative. 'end' pointer is made manually by adding the size of
-	 * the ring buffer to 'head' pointer, means the validate data can
-	 * read is the whole ring buffer. If 'end' is positive, the ring
-	 * buffer has not fully filled, so we must adjust 'end' to 0.
-	 *
-	 * However, since both 'head' and 'end' is unsigned, we can't
-	 * simply compare 'end' against 0. Here we compare '-head' and
-	 * the size of the ring buffer, where -head is the number of bytes
-	 * kernel write to the ring buffer.
-	 */
-	if (-head < (u64)(map->mask + 1))
-		end = 0;
-	else
-		end = head + map->mask + 1;
-
-	return perf_mmap__read(map, &map->prev, end);
-}
-
 /*
  * Read event from ring buffer one by one.
  * Return one event for each call.
@@ -152,17 +121,6 @@ union perf_event *perf_mmap__read_event(struct perf_mmap *map,
 	return event;
 }
 
-void perf_mmap__read_catchup(struct perf_mmap *map)
-{
-	u64 head;
-
-	if (!refcount_read(&map->refcnt))
-		return;
-
-	head = perf_mmap__read_head(map);
-	map->prev = head;
-}
-
 static bool perf_mmap__empty(struct perf_mmap *map)
 {
 	return perf_mmap__read_head(map) == map->prev && !map->auxtrace_mmap.base;
diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h
index 28718543dd42..ec7d3a24e276 100644
--- a/tools/perf/util/mmap.h
+++ b/tools/perf/util/mmap.h
@@ -65,8 +65,6 @@ void perf_mmap__put(struct perf_mmap *map);
 
 void perf_mmap__consume(struct perf_mmap *map, bool overwrite);
 
-void perf_mmap__read_catchup(struct perf_mmap *md);
-
 static inline u64 perf_mmap__read_head(struct perf_mmap *mm)
 {
 	struct perf_event_mmap_page *pc = mm->base;
@@ -87,7 +85,6 @@ static inline void perf_mmap__write_tail(struct perf_mmap *md, u64 tail)
 }
 
 union perf_event *perf_mmap__read_forward(struct perf_mmap *map);
-union perf_event *perf_mmap__read_backward(struct perf_mmap *map);
 
 union perf_event *perf_mmap__read_event(struct perf_mmap *map,
 					bool overwrite,
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 12/21] perf top: Check per-event overwrite term
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (11 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Per-event overwrite term is not forbidden in 'perf top', which can bring
problems. Because 'perf top' only support non-overwrite mode now.

Add new rules and check regarding to overwrite term for 'perf top'.
- All events either have same per-event term or don't have per-event
  mode setting. Otherwise, it will error out.
- Per-event overwrite term should be consistent as opts->overwrite.
  If not, updating the opts->overwrite according to per-event term.

Make it possible to support either non-overwrite or overwrite mode.
The overwrite mode is forbidden now, which will be removed when the
overwrite mode is supported later.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-12-git-send-email-kan.liang@intel.com
[ Renamed perf_top_overwrite_check to perf_top__overwrite_check, to follow existing convention ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-top.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index c6ccda52117d..17783798924a 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -881,6 +881,68 @@ static void perf_top__mmap_read(struct perf_top *top)
 		perf_top__mmap_read_idx(top, i);
 }
 
+/*
+ * Check per-event overwrite term.
+ * perf top should support consistent term for all events.
+ * - All events don't have per-event term
+ *   E.g. "cpu/cpu-cycles/,cpu/instructions/"
+ *   Nothing change, return 0.
+ * - All events have same per-event term
+ *   E.g. "cpu/cpu-cycles,no-overwrite/,cpu/instructions,no-overwrite/
+ *   Using the per-event setting to replace the opts->overwrite if
+ *   they are different, then return 0.
+ * - Events have different per-event term
+ *   E.g. "cpu/cpu-cycles,overwrite/,cpu/instructions,no-overwrite/"
+ *   Return -1
+ * - Some of the event set per-event term, but some not.
+ *   E.g. "cpu/cpu-cycles/,cpu/instructions,no-overwrite/"
+ *   Return -1
+ */
+static int perf_top__overwrite_check(struct perf_top *top)
+{
+	struct record_opts *opts = &top->record_opts;
+	struct perf_evlist *evlist = top->evlist;
+	struct perf_evsel_config_term *term;
+	struct list_head *config_terms;
+	struct perf_evsel *evsel;
+	int set, overwrite = -1;
+
+	evlist__for_each_entry(evlist, evsel) {
+		set = -1;
+		config_terms = &evsel->config_terms;
+		list_for_each_entry(term, config_terms, list) {
+			if (term->type == PERF_EVSEL__CONFIG_TERM_OVERWRITE)
+				set = term->val.overwrite ? 1 : 0;
+		}
+
+		/* no term for current and previous event (likely) */
+		if ((overwrite < 0) && (set < 0))
+			continue;
+
+		/* has term for both current and previous event, compare */
+		if ((overwrite >= 0) && (set >= 0) && (overwrite != set))
+			return -1;
+
+		/* no term for current event but has term for previous one */
+		if ((overwrite >= 0) && (set < 0))
+			return -1;
+
+		/* has term for current event */
+		if ((overwrite < 0) && (set >= 0)) {
+			/* if it's first event, set overwrite */
+			if (evsel == perf_evlist__first(evlist))
+				overwrite = set;
+			else
+				return -1;
+		}
+	}
+
+	if ((overwrite >= 0) && (opts->overwrite != overwrite))
+		opts->overwrite = overwrite;
+
+	return 0;
+}
+
 static int perf_top__start_counters(struct perf_top *top)
 {
 	char msg[BUFSIZ];
@@ -888,6 +950,17 @@ static int perf_top__start_counters(struct perf_top *top)
 	struct perf_evlist *evlist = top->evlist;
 	struct record_opts *opts = &top->record_opts;
 
+	if (perf_top__overwrite_check(top)) {
+		ui__error("perf top only support consistent per-event "
+			  "overwrite setting for all events\n");
+		goto out_err;
+	}
+
+	if (opts->overwrite) {
+		ui__error("not support overwrite mode yet\n");
+		goto out_err;
+	}
+
 	perf_evlist__config(evlist, opts, &callchain_param);
 
 	evlist__for_each_entry(evlist, counter) {
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 13/21] perf evsel: Expose the perf_missing_features struct
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (12 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
	Andi Kleen, Jin Yao, Jiri Olsa, Kan Liang, Namhyung Kim,
	Peter Zijlstra, Wang Nan

From: Arnaldo Carvalho de Melo <acme@redhat.com>

As tools may need to adjust to missing features, as 'perf top' will, in
the next csets, to cope with a missing 'write_backward' feature.

Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-jelngl9q1ooaizvkcput9tic@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evsel.c | 12 +-----------
 tools/perf/util/evsel.h | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index ff359c9ece2e..ef351688b797 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -41,17 +41,7 @@
 
 #include "sane_ctype.h"
 
-static struct {
-	bool sample_id_all;
-	bool exclude_guest;
-	bool mmap2;
-	bool cloexec;
-	bool clockid;
-	bool clockid_wrong;
-	bool lbr_flags;
-	bool write_backward;
-	bool group_read;
-} perf_missing_features;
+struct perf_missing_features perf_missing_features;
 
 static clockid_t clockid;
 
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 846e41644525..a7487c6d1866 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -149,6 +149,20 @@ union u64_swap {
 	u32 val32[2];
 };
 
+struct perf_missing_features {
+	bool sample_id_all;
+	bool exclude_guest;
+	bool mmap2;
+	bool cloexec;
+	bool clockid;
+	bool clockid_wrong;
+	bool lbr_flags;
+	bool write_backward;
+	bool group_read;
+};
+
+extern struct perf_missing_features perf_missing_features;
+
 struct cpu_map;
 struct target;
 struct thread_map;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 14/21] perf top: Add overwrite fall back
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (13 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

Switch to non-overwrite mode if kernel doesnot support overwrite
ringbuffer.

It's only effect when overwrite mode is supported.  No change to current
behavior.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-14-git-send-email-kan.liang@intel.com
[ Use perf_missing_features.write_backward instead of the non merged is_write_backward_fail() ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-top.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 17783798924a..ee4bba1e282c 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -943,6 +943,27 @@ static int perf_top__overwrite_check(struct perf_top *top)
 	return 0;
 }
 
+static int perf_top_overwrite_fallback(struct perf_top *top,
+				       struct perf_evsel *evsel)
+{
+	struct record_opts *opts = &top->record_opts;
+	struct perf_evlist *evlist = top->evlist;
+	struct perf_evsel *counter;
+
+	if (!opts->overwrite)
+		return 0;
+
+	/* only fall back when first event fails */
+	if (evsel != perf_evlist__first(evlist))
+		return 0;
+
+	evlist__for_each_entry(evlist, counter)
+		counter->attr.write_backward = false;
+	opts->overwrite = false;
+	ui__warning("fall back to non-overwrite mode\n");
+	return 1;
+}
+
 static int perf_top__start_counters(struct perf_top *top)
 {
 	char msg[BUFSIZ];
@@ -967,6 +988,21 @@ static int perf_top__start_counters(struct perf_top *top)
 try_again:
 		if (perf_evsel__open(counter, top->evlist->cpus,
 				     top->evlist->threads) < 0) {
+
+			/*
+			 * Specially handle overwrite fall back.
+			 * Because perf top is the only tool which has
+			 * overwrite mode by default, support
+			 * both overwrite and non-overwrite mode, and
+			 * require consistent mode for all events.
+			 *
+			 * May move it to generic code with more tools
+			 * have similar attribute.
+			 */
+			if (perf_missing_features.write_backward &&
+			    perf_top_overwrite_fallback(top, counter))
+				goto try_again;
+
 			if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) {
 				if (verbose > 0)
 					ui__warning("%s\n", msg);
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 15/21] perf hists browser: Add parameter to disable lost event warning
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (14 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

For overwrite mode, the ringbuffer will be paused. The event lost is
expected. It needs a way to notify the browser not print the warning.

It will be used later for perf top to disable lost event warning in
overwrite mode. There is no behavior change for now.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-15-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-c2c.c       |  4 ++--
 tools/perf/builtin-report.c    |  3 ++-
 tools/perf/builtin-top.c       |  2 +-
 tools/perf/ui/browsers/hists.c | 38 +++++++++++++++++++++++++-------------
 tools/perf/ui/browsers/hists.h |  3 ++-
 tools/perf/util/hist.h         |  6 ++++--
 6 files changed, 36 insertions(+), 20 deletions(-)

diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index c0815a37fdb5..539c3d460158 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -2245,7 +2245,7 @@ static int perf_c2c__browse_cacheline(struct hist_entry *he)
 	c2c_browser__update_nr_entries(browser);
 
 	while (1) {
-		key = hist_browser__run(browser, "? - help");
+		key = hist_browser__run(browser, "? - help", true);
 
 		switch (key) {
 		case 's':
@@ -2314,7 +2314,7 @@ static int perf_c2c__hists_browse(struct hists *hists)
 	c2c_browser__update_nr_entries(browser);
 
 	while (1) {
-		key = hist_browser__run(browser, "? - help");
+		key = hist_browser__run(browser, "? - help", true);
 
 		switch (key) {
 		case 'q':
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 42a52dcc41cd..4ad5dc649716 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -530,7 +530,8 @@ static int report__browse_hists(struct report *rep)
 	case 1:
 		ret = perf_evlist__tui_browse_hists(evlist, help, NULL,
 						    rep->min_percent,
-						    &session->header.env);
+						    &session->header.env,
+						    true);
 		/*
 		 * Usually "ret" is the last pressed key, and we only
 		 * care if the key notifies us to switch data file.
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index ee4bba1e282c..7def861a9ec4 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -611,7 +611,7 @@ static void *display_thread_tui(void *arg)
 
 	perf_evlist__tui_browse_hists(top->evlist, help, &hbt,
 				      top->min_percent,
-				      &top->session->header.env);
+				      &top->session->header.env, true);
 
 	done = 1;
 	return NULL;
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 68146f4620a5..6495ee55d9c3 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -608,7 +608,8 @@ static int hist_browser__title(struct hist_browser *browser, char *bf, size_t si
 	return browser->title ? browser->title(browser, bf, size) : 0;
 }
 
-int hist_browser__run(struct hist_browser *browser, const char *help)
+int hist_browser__run(struct hist_browser *browser, const char *help,
+		      bool warn_lost_event)
 {
 	int key;
 	char title[160];
@@ -638,8 +639,9 @@ int hist_browser__run(struct hist_browser *browser, const char *help)
 			nr_entries = hist_browser__nr_entries(browser);
 			ui_browser__update_nr_entries(&browser->b, nr_entries);
 
-			if (browser->hists->stats.nr_lost_warned !=
-			    browser->hists->stats.nr_events[PERF_RECORD_LOST]) {
+			if (warn_lost_event &&
+			    (browser->hists->stats.nr_lost_warned !=
+			    browser->hists->stats.nr_events[PERF_RECORD_LOST])) {
 				browser->hists->stats.nr_lost_warned =
 					browser->hists->stats.nr_events[PERF_RECORD_LOST];
 				ui_browser__warn_lost_events(&browser->b);
@@ -2763,7 +2765,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 				    bool left_exits,
 				    struct hist_browser_timer *hbt,
 				    float min_pcnt,
-				    struct perf_env *env)
+				    struct perf_env *env,
+				    bool warn_lost_event)
 {
 	struct hists *hists = evsel__hists(evsel);
 	struct hist_browser *browser = perf_evsel_browser__new(evsel, hbt, env);
@@ -2844,7 +2847,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 
 		nr_options = 0;
 
-		key = hist_browser__run(browser, helpline);
+		key = hist_browser__run(browser, helpline,
+					warn_lost_event);
 
 		if (browser->he_selection != NULL) {
 			thread = hist_browser__selected_thread(browser);
@@ -3184,7 +3188,8 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
 
 static int perf_evsel_menu__run(struct perf_evsel_menu *menu,
 				int nr_events, const char *help,
-				struct hist_browser_timer *hbt)
+				struct hist_browser_timer *hbt,
+				bool warn_lost_event)
 {
 	struct perf_evlist *evlist = menu->b.priv;
 	struct perf_evsel *pos;
@@ -3203,7 +3208,9 @@ static int perf_evsel_menu__run(struct perf_evsel_menu *menu,
 		case K_TIMER:
 			hbt->timer(hbt->arg);
 
-			if (!menu->lost_events_warned && menu->lost_events) {
+			if (!menu->lost_events_warned &&
+			    menu->lost_events &&
+			    warn_lost_event) {
 				ui_browser__warn_lost_events(&menu->b);
 				menu->lost_events_warned = true;
 			}
@@ -3224,7 +3231,8 @@ static int perf_evsel_menu__run(struct perf_evsel_menu *menu,
 			key = perf_evsel__hists_browse(pos, nr_events, help,
 						       true, hbt,
 						       menu->min_pcnt,
-						       menu->env);
+						       menu->env,
+						       warn_lost_event);
 			ui_browser__show_title(&menu->b, title);
 			switch (key) {
 			case K_TAB:
@@ -3282,7 +3290,8 @@ static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
 					   int nr_entries, const char *help,
 					   struct hist_browser_timer *hbt,
 					   float min_pcnt,
-					   struct perf_env *env)
+					   struct perf_env *env,
+					   bool warn_lost_event)
 {
 	struct perf_evsel *pos;
 	struct perf_evsel_menu menu = {
@@ -3309,13 +3318,15 @@ static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
 			menu.b.width = line_len;
 	}
 
-	return perf_evsel_menu__run(&menu, nr_entries, help, hbt);
+	return perf_evsel_menu__run(&menu, nr_entries, help,
+				    hbt, warn_lost_event);
 }
 
 int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
 				  struct hist_browser_timer *hbt,
 				  float min_pcnt,
-				  struct perf_env *env)
+				  struct perf_env *env,
+				  bool warn_lost_event)
 {
 	int nr_entries = evlist->nr_entries;
 
@@ -3325,7 +3336,7 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
 
 		return perf_evsel__hists_browse(first, nr_entries, help,
 						false, hbt, min_pcnt,
-						env);
+						env, warn_lost_event);
 	}
 
 	if (symbol_conf.event_group) {
@@ -3342,5 +3353,6 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
 	}
 
 	return __perf_evlist__tui_browse_hists(evlist, nr_entries, help,
-					       hbt, min_pcnt, env);
+					       hbt, min_pcnt, env,
+					       warn_lost_event);
 }
diff --git a/tools/perf/ui/browsers/hists.h b/tools/perf/ui/browsers/hists.h
index ba431777f559..9428bee076f2 100644
--- a/tools/perf/ui/browsers/hists.h
+++ b/tools/perf/ui/browsers/hists.h
@@ -28,7 +28,8 @@ struct hist_browser {
 
 struct hist_browser *hist_browser__new(struct hists *hists);
 void hist_browser__delete(struct hist_browser *browser);
-int hist_browser__run(struct hist_browser *browser, const char *help);
+int hist_browser__run(struct hist_browser *browser, const char *help,
+		      bool warn_lost_event);
 void hist_browser__init(struct hist_browser *browser,
 			struct hists *hists);
 #endif /* _PERF_UI_BROWSER_HISTS_H_ */
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f6630cb95eff..02721b579746 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -430,7 +430,8 @@ int hist_entry__tui_annotate(struct hist_entry *he, struct perf_evsel *evsel,
 int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
 				  struct hist_browser_timer *hbt,
 				  float min_pcnt,
-				  struct perf_env *env);
+				  struct perf_env *env,
+				  bool warn_lost_event);
 int script_browse(const char *script_opt);
 #else
 static inline
@@ -438,7 +439,8 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist __maybe_unused,
 				  const char *help __maybe_unused,
 				  struct hist_browser_timer *hbt __maybe_unused,
 				  float min_pcnt __maybe_unused,
-				  struct perf_env *env __maybe_unused)
+				  struct perf_env *env __maybe_unused,
+				  bool warn_lost_event __maybe_unused)
 {
 	return 0;
 }
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 16/21] perf top: Remove lost events checking
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (15 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

There would be some records lost in overwrite mode because of pausing
the ringbuffer. It has little impact for the accuracy of the snapshot
and could be tolerated by 'perf top'.

Remove the lost events checking.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-16-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-top.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 7def861a9ec4..59653062bb48 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -283,8 +283,9 @@ static void perf_top__print_sym_table(struct perf_top *top)
 
 	printf("%-*.*s\n", win_width, win_width, graph_dotted_line);
 
-	if (hists->stats.nr_lost_warned !=
-	    hists->stats.nr_events[PERF_RECORD_LOST]) {
+	if (!top->record_opts.overwrite &&
+	    (hists->stats.nr_lost_warned !=
+	    hists->stats.nr_events[PERF_RECORD_LOST])) {
 		hists->stats.nr_lost_warned =
 			      hists->stats.nr_events[PERF_RECORD_LOST];
 		color_fprintf(stdout, PERF_COLOR_RED,
@@ -611,7 +612,8 @@ static void *display_thread_tui(void *arg)
 
 	perf_evlist__tui_browse_hists(top->evlist, help, &hbt,
 				      top->min_percent,
-				      &top->session->header.env, true);
+				      &top->session->header.env,
+				      !top->record_opts.overwrite);
 
 	done = 1;
 	return NULL;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 17/21] perf top: Switch default mode to overwrite mode
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (16 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

perf_top__mmap_read() has a severe performance issue in the Knights
Landing/Mill platform, when monitoring heavy load systems. It costs
several minutes to finish, which is unacceptable.

Currently, 'perf top' uses the non overwrite mode. For non overwrite
mode, it tries to read everything in the ringbuffer and doesn't pause
it. Once there are lots of samples delivered persistently, the
processing time could be very long. Also, the latest samples could be
lost when the ringbuffer is full.

For overwrite mode, it takes a snapshot for the system by pausing the
ringbuffer, which could significantly reduce the processing time.  Also,
the overwrite mode always keep the latest samples.  Considering the real
time requirement for 'perf top', the overwrite mode is more suitable for
it.

Actually, 'perf top' was overwrite mode. It is changed to non overwrite
mode since commit 93fc64f14472 ("perf top: Switch to non overwrite
mode"). It's better to change it back to overwrite mode by default.

For the kernel which doesn't support overwrite mode, it will fall back
to non overwrite mode.

There would be some records lost in overwrite mode because of pausing
the ringbuffer. It has little impact for the accuracy of the snapshot
and can be tolerated.

For overwrite mode, unconditionally wait 100 ms before each snapshot. It
also reduces the overhead caused by pausing ringbuffer, especially on
light load system.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-17-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-top.c | 34 +++++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 59653062bb48..2b4914f34ed6 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -809,15 +809,23 @@ static void perf_event__process_sample(struct perf_tool *tool,
 
 static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
 {
+	struct record_opts *opts = &top->record_opts;
+	struct perf_evlist *evlist = top->evlist;
 	struct perf_sample sample;
 	struct perf_evsel *evsel;
+	struct perf_mmap *md;
 	struct perf_session *session = top->session;
 	union perf_event *event;
 	struct machine *machine;
+	u64 end, start;
 	int ret;
 
-	while ((event = perf_evlist__mmap_read(top->evlist, idx)) != NULL) {
-		ret = perf_evlist__parse_sample(top->evlist, event, &sample);
+	md = opts->overwrite ? &evlist->overwrite_mmap[idx] : &evlist->mmap[idx];
+	if (perf_mmap__read_init(md, opts->overwrite, &start, &end) < 0)
+		return;
+
+	while ((event = perf_mmap__read_event(md, opts->overwrite, &start, end)) != NULL) {
+		ret = perf_evlist__parse_sample(evlist, event, &sample);
 		if (ret) {
 			pr_err("Can't parse sample, err = %d\n", ret);
 			goto next_event;
@@ -871,16 +879,28 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
 		} else
 			++session->evlist->stats.nr_unknown_events;
 next_event:
-		perf_evlist__mmap_consume(top->evlist, idx);
+		perf_mmap__consume(md, opts->overwrite);
 	}
+
+	perf_mmap__read_done(md);
 }
 
 static void perf_top__mmap_read(struct perf_top *top)
 {
+	bool overwrite = top->record_opts.overwrite;
+	struct perf_evlist *evlist = top->evlist;
 	int i;
 
+	if (overwrite)
+		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_DATA_PENDING);
+
 	for (i = 0; i < top->evlist->nr_mmaps; i++)
 		perf_top__mmap_read_idx(top, i);
+
+	if (overwrite) {
+		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_EMPTY);
+		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_RUNNING);
+	}
 }
 
 /*
@@ -979,11 +999,6 @@ static int perf_top__start_counters(struct perf_top *top)
 		goto out_err;
 	}
 
-	if (opts->overwrite) {
-		ui__error("not support overwrite mode yet\n");
-		goto out_err;
-	}
-
 	perf_evlist__config(evlist, opts, &callchain_param);
 
 	evlist__for_each_entry(evlist, counter) {
@@ -1144,7 +1159,7 @@ static int __cmd_top(struct perf_top *top)
 
 		perf_top__mmap_read(top);
 
-		if (hits == top->samples)
+		if (opts->overwrite || (hits == top->samples))
 			ret = perf_evlist__poll(top->evlist, 100);
 
 		if (resize) {
@@ -1238,6 +1253,7 @@ int cmd_top(int argc, const char **argv)
 				.uses_mmap   = true,
 			},
 			.proc_map_timeout    = 500,
+			.overwrite	= 1,
 		},
 		.max_stack	     = sysctl_perf_event_max_stack,
 		.sym_pcnt_filter     = 5,
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 18/21] perf top: Check the latency of perf_top__mmap_read()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (17 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Kan Liang, Andi Kleen, Jin Yao,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

From: Kan Liang <kan.liang@intel.com>

The latency of perf_top__mmap_read() should be lower than refresh time.
If not, give some hints to reduce the latency.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1516310792-208685-18-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-top.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 2b4914f34ed6..b7c823ba8374 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -889,8 +889,10 @@ static void perf_top__mmap_read(struct perf_top *top)
 {
 	bool overwrite = top->record_opts.overwrite;
 	struct perf_evlist *evlist = top->evlist;
+	unsigned long long start, end;
 	int i;
 
+	start = rdclock();
 	if (overwrite)
 		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_DATA_PENDING);
 
@@ -901,6 +903,13 @@ static void perf_top__mmap_read(struct perf_top *top)
 		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_EMPTY);
 		perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_RUNNING);
 	}
+	end = rdclock();
+
+	if ((end - start) > (unsigned long long)top->delay_secs * NSEC_PER_SEC)
+		ui__warning("Too slow to read ring buffer.\n"
+			    "Please try increasing the period (-c) or\n"
+			    "decreasing the freq (-F) or\n"
+			    "limiting the number of CPUs (-C)\n");
 }
 
 /*
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 19/21] perf tools: Substitute yet another strtoull()
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (18 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Andy Shevchenko,
	Arnaldo Carvalho de Melo

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Instead of home grown function let's use what library provides us.

Signed-off-by: Andriy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20180129130359.1490-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/util.c | 24 ++----------------------
 1 file changed, 2 insertions(+), 22 deletions(-)

diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index 443892dabedb..1019bbc5dbd8 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -340,35 +340,15 @@ size_t hex_width(u64 v)
 	return n;
 }
 
-static int hex(char ch)
-{
-	if ((ch >= '0') && (ch <= '9'))
-		return ch - '0';
-	if ((ch >= 'a') && (ch <= 'f'))
-		return ch - 'a' + 10;
-	if ((ch >= 'A') && (ch <= 'F'))
-		return ch - 'A' + 10;
-	return -1;
-}
-
 /*
  * While we find nice hex chars, build a long_val.
  * Return number of chars processed.
  */
 int hex2u64(const char *ptr, u64 *long_val)
 {
-	const char *p = ptr;
-	*long_val = 0;
-
-	while (*p) {
-		const int hex_val = hex(*p);
+	char *p;
 
-		if (hex_val < 0)
-			break;
-
-		*long_val = (*long_val << 4) | hex_val;
-		p++;
-	}
+	*long_val = strtoull(ptr, &p, 16);
 
 	return p - ptr;
 }
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 20/21] perf data: Document missing --force option
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (19 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Sangwon Hong, Jiri Olsa,
	Namhyung Kim, Taeung Song, Arnaldo Carvalho de Melo

From: Sangwon Hong <qpakzk@gmail.com>

Add the --force option to the man page.

Signed-off-by: Sangwon Hong <qpakzk@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Taeung Song <treeze.taeung@gmail.com>
Link: http://lkml.kernel.org/r/1517831315-31490-1-git-send-email-qpakzk@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-data.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/perf/Documentation/perf-data.txt b/tools/perf/Documentation/perf-data.txt
index f0796a47dfa3..90bb4aabe4f8 100644
--- a/tools/perf/Documentation/perf-data.txt
+++ b/tools/perf/Documentation/perf-data.txt
@@ -30,6 +30,10 @@ OPTIONS for 'convert'
 -i::
 	Specify input perf data file path.
 
+-f::
+--force::
+	Don't complain, do it.
+
 -v::
 --verbose::
         Be more verbose (show counter open errors, etc).
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH 21/21] perf test: Fix test trace+probe_libc_inet_pton.sh for s390x
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
                   ` (20 preceding siblings ...)
  (?)
@ 2018-02-06 16:53 ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Thomas Richter, Heiko Carstens,
	Martin Schwidefsky, Arnaldo Carvalho de Melo

From: Thomas Richter <tmricht@linux.vnet.ibm.com>

On Intel test case trace+probe_libc_inet_pton.sh succeeds and the
output is:

[root@f27 perf]# ./perf trace --no-syscalls
                  -e probe_libc:inet_pton/max-stack=3/ ping -6 -c 1 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.037 ms

 --- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.037/0.037/0.037/0.000 ms
     0.000 probe_libc:inet_pton:(7fa40ac618a0))
              __GI___inet_pton (/usr/lib64/libc-2.26.so)
              getaddrinfo (/usr/lib64/libc-2.26.so)
              main (/usr/bin/ping)

The kernel stack unwinder is used, it is specified implicitly
as call-graph=fp (frame pointer).

On s390x only dwarf is available for stack unwinding. It is also
done in user space. This requires different parameter setup
and result checking for s390x and Intel.

This patch adds separate perf trace setup and result checking
for Intel and s390x. On s390x specify this command line to
get a call-graph and handle the different call graph result
checking:

[root@s35lp76 perf]# ./perf trace --no-syscalls
	-e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.041 ms

 --- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.041/0.041/0.041/0.000 ms
     0.000 probe_libc:inet_pton:(3ffb9942060))
            __GI___inet_pton (/usr/lib64/libc-2.26.so)
            gaih_inet (inlined)
            __GI_getaddrinfo (inlined)
            main (/usr/bin/ping)
            __libc_start_main (/usr/lib64/libc-2.26.so)
            _start (/usr/bin/ping)
[root@s35lp76 perf]#

Before:
[root@s8360047 perf]# ./perf test -vv 58
58: probe libc's inet_pton & backtrace it with ping       :
 --- start ---
test child forked, pid 26349
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.079 ms
 --- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.079/0.079/0.079/0.000 ms
0.000 probe_libc:inet_pton:(3ff925c2060))
test child finished with -1
 ---- end ----
probe libc's inet_pton & backtrace it with ping: FAILED!
[root@s8360047 perf]#

After:
[root@s35lp76 perf]# ./perf test -vv 57
57: probe libc's inet_pton & backtrace it with ping       :
 --- start ---
test child forked, pid 38708
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.038 ms
 --- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.038/0.038/0.038/0.000 ms
0.000 probe_libc:inet_pton:(3ff87342060))
__GI___inet_pton (/usr/lib64/libc-2.26.so)
gaih_inet (inlined)
__GI_getaddrinfo (inlined)
main (/usr/bin/ping)
__libc_start_main (/usr/lib64/libc-2.26.so)
_start (/usr/bin/ping)
test child finished with 0
 ---- end ----
probe libc's inet_pton & backtrace it with ping: Ok
[root@s35lp76 perf]#

On Intel the test case runs unchanged and succeeds.

Signed-off-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Link: http://lkml.kernel.org/r/20180117083831.101001-1-tmricht@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 .../perf/tests/shell/trace+probe_libc_inet_pton.sh | 23 +++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh b/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
index 8b3da21a08f1..c446c894b297 100755
--- a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
+++ b/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
@@ -22,10 +22,23 @@ trace_libc_inet_pton_backtrace() {
 	expected[4]="rtt min.*"
 	expected[5]="[0-9]+\.[0-9]+[[:space:]]+probe_libc:inet_pton:\([[:xdigit:]]+\)"
 	expected[6]=".*inet_pton[[:space:]]\($libc\)$"
-	expected[7]="getaddrinfo[[:space:]]\($libc\)$"
-	expected[8]=".*\(.*/bin/ping.*\)$"
-
-	perf trace --no-syscalls -e probe_libc:inet_pton/max-stack=3/ ping -6 -c 1 ::1 2>&1 | grep -v ^$ | while read line ; do
+	case "$(uname -m)" in
+	s390x)
+		eventattr='call-graph=dwarf'
+		expected[7]="gaih_inet[[:space:]]\(inlined\)$"
+		expected[8]="__GI_getaddrinfo[[:space:]]\(inlined\)$"
+		expected[9]="main[[:space:]]\(.*/bin/ping.*\)$"
+		expected[10]="__libc_start_main[[:space:]]\($libc\)$"
+		expected[11]="_start[[:space:]]\(.*/bin/ping.*\)$"
+		;;
+	*)
+		eventattr='max-stack=3'
+		expected[7]="getaddrinfo[[:space:]]\($libc\)$"
+		expected[8]=".*\(.*/bin/ping.*\)$"
+		;;
+	esac
+
+	perf trace --no-syscalls -e probe_libc:inet_pton/$eventattr/ ping -6 -c 1 ::1 2>&1 | grep -v ^$ | while read line ; do
 		echo $line
 		echo "$line" | egrep -q "${expected[$idx]}"
 		if [ $? -ne 0 ] ; then
@@ -33,7 +46,7 @@ trace_libc_inet_pton_backtrace() {
 			exit 1
 		fi
 		let idx+=1
-		[ $idx -eq 9 ] && break
+		[ -z "${expected[$idx]}" ] && break
 	done
 }
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1
  2018-02-06 16:53 ` Arnaldo Carvalho de Melo
@ 2018-02-13 11:59   ` Ingo Molnar
  -1 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-02-13 11:59 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, linux-perf-users, Alexander Shishkin, Andi Kleen,
	Andriy Shevchenko, Heiko Carstens, Hendrik Brueckner, Jin Yao,
	Jiri Olsa, Kan Liang, Martin Schwidefsky, Namhyung Kim,
	Peter Zijlstra, Sangwon Hong, Taeung Song, Thomas Richter,
	Wang Nan, William Cohen, 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 33ea4b24277b06dbc55d7f5772a46f029600255e:
> 
>   perf/core: Implement the 'perf_uprobe' PMU (2018-02-06 11:29:28 +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.17-20180206
> 
> for you to fetch changes up to 52a37001d51a320c1019269fb3ba473a1363650d:
> 
>   perf test: Fix test trace+probe_libc_inet_pton.sh for s390x (2018-02-06 10:46:58 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> - perf_mmap overwrite mode overhaul, prep work to get 'perf top'
>   using it, making it bearable to use it in large core count systems
>   such as Knights Landing/Mill Intel systems (Kan Liang)
> 
> - Add perf vendor JSON metrics for ARM Cortex-A53 Processor (William Cohen)
> 
> - Use strtoull() instead of home grown function (Andy Shevchenko)
> 
> - Document missing 'perf data --force' option (Sangwon Hong)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andy Shevchenko (1):
>       perf tools: Substitute yet another strtoull()
> 
> Arnaldo Carvalho de Melo (1):
>       perf evsel: Expose the perf_missing_features struct
> 
> Kan Liang (16):
>       perf evlist: Remove stale mmap read for backward
>       perf mmap: Recalculate size for overwrite mode
>       perf mmap: Cleanup perf_mmap__push()
>       perf mmap: Introduce perf_mmap__read_init()
>       perf mmap: Add new return value logic for perf_mmap__read_init()
>       perf mmap: Discard 'prev' in perf_mmap__read()
>       perf mmap: Introduce perf_mmap__read_done()
>       perf mmap: Introduce perf_mmap__read_event()
>       perf test: Update mmap read functions for backward-ring-buffer test
>       perf mmap: Discard legacy interface for mmap read
>       perf top: Check per-event overwrite term
>       perf top: Add overwrite fall back
>       perf hists browser: Add parameter to disable lost event warning
>       perf top: Remove lost events checking
>       perf top: Switch default mode to overwrite mode
>       perf top: Check the latency of perf_top__mmap_read()
> 
> Sangwon Hong (1):
>       perf data: Document missing --force option
> 
> Thomas Richter (1):
>       perf test: Fix test trace+probe_libc_inet_pton.sh for s390x
> 
> William Cohen (1):
>       perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor
> 
>  tools/perf/Documentation/perf-data.txt             |   4 +
>  tools/perf/builtin-c2c.c                           |   4 +-
>  tools/perf/builtin-report.c                        |   3 +-
>  tools/perf/builtin-top.c                           | 150 ++++++++++++++++++++-
>  .../pmu-events/arch/arm64/cortex-a53/branch.json   |  27 ++++
>  .../perf/pmu-events/arch/arm64/cortex-a53/bus.json |  22 +++
>  .../pmu-events/arch/arm64/cortex-a53/cache.json    |  27 ++++
>  .../pmu-events/arch/arm64/cortex-a53/memory.json   |  22 +++
>  .../pmu-events/arch/arm64/cortex-a53/other.json    |  32 +++++
>  .../pmu-events/arch/arm64/cortex-a53/pipeline.json |  52 +++++++
>  tools/perf/pmu-events/arch/arm64/mapfile.csv       |   1 +
>  tools/perf/tests/backward-ring-buffer.c            |   7 +-
>  .../perf/tests/shell/trace+probe_libc_inet_pton.sh |  23 +++-
>  tools/perf/ui/browsers/hists.c                     |  38 ++++--
>  tools/perf/ui/browsers/hists.h                     |   3 +-
>  tools/perf/util/evlist.c                           |  17 ---
>  tools/perf/util/evlist.h                           |   4 -
>  tools/perf/util/evsel.c                            |  12 +-
>  tools/perf/util/evsel.h                            |  14 ++
>  tools/perf/util/hist.h                             |   6 +-
>  tools/perf/util/mmap.c                             | 141 ++++++++++---------
>  tools/perf/util/mmap.h                             |  10 +-
>  tools/perf/util/util.c                             |  24 +---
>  23 files changed, 492 insertions(+), 151 deletions(-)
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json

Pulled into tip:perf/urgent, thanks a lot Arnaldo!

Note, I also performed a header sync with v4.16-rc1, see the patch below.

The only exception is:

  Warning: Kernel ABI header at 'tools/arch/s390/include/uapi/asm/unistd.h' differs  from latest version at 'arch/s390/include/uapi/asm/unistd.h'

... which I'm unsure how to resolve: the new upstream header includes unistd_64.h, 
but neither s390 nor asm-generic has no such a file.

Thanks,

	Ingo

===================>
>From a408361b6aa182d9defc0ffed71936b9bc41f0db Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
Date: Tue, 13 Feb 2018 12:54:58 +0100
Subject: [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1

Sync the following tooling headers with the latest kernel version:

  tools/arch/powerpc/include/uapi/asm/kvm.h
  tools/arch/x86/include/asm/cpufeatures.h
  tools/include/uapi/drm/i915_drm.h
  tools/include/uapi/linux/if_link.h
  tools/include/uapi/linux/kvm.h

All the changes are new ABI additions which don't impact their use
in existing tooling.

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 tools/arch/powerpc/include/uapi/asm/kvm.h |  2 +
 tools/arch/x86/include/asm/cpufeatures.h  |  1 +
 tools/include/uapi/drm/i915_drm.h         | 77 ++++++++++++++++++++++++++
 tools/include/uapi/linux/if_link.h        |  1 +
 tools/include/uapi/linux/kvm.h            | 90 +++++++++++++++++++++++++++++++
 5 files changed, 171 insertions(+)

diff --git a/tools/arch/powerpc/include/uapi/asm/kvm.h b/tools/arch/powerpc/include/uapi/asm/kvm.h
index 637b7263cb86..833ed9a16adf 100644
--- a/tools/arch/powerpc/include/uapi/asm/kvm.h
+++ b/tools/arch/powerpc/include/uapi/asm/kvm.h
@@ -632,6 +632,8 @@ struct kvm_ppc_cpu_char {
 #define KVM_REG_PPC_TIDR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbc)
 #define KVM_REG_PPC_PSSCR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbd)
 
+#define KVM_REG_PPC_DEC_EXPIRY	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe)
+
 /* Transactional Memory checkpointed state:
  * This is all GPRs, all VSX regs and a subset of SPRs
  */
diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h
index 1d9199e1c2ad..0dfe4d3f74e2 100644
--- a/tools/arch/x86/include/asm/cpufeatures.h
+++ b/tools/arch/x86/include/asm/cpufeatures.h
@@ -210,6 +210,7 @@
 
 #define X86_FEATURE_MBA			( 7*32+18) /* Memory Bandwidth Allocation */
 #define X86_FEATURE_RSB_CTXSW		( 7*32+19) /* "" Fill RSB on context switches */
+#define X86_FEATURE_SEV			( 7*32+20) /* AMD Secure Encrypted Virtualization */
 
 #define X86_FEATURE_USE_IBPB		( 7*32+21) /* "" Indirect Branch Prediction Barrier enabled */
 
diff --git a/tools/include/uapi/drm/i915_drm.h b/tools/include/uapi/drm/i915_drm.h
index ac3c6503ca27..536ee4febd74 100644
--- a/tools/include/uapi/drm/i915_drm.h
+++ b/tools/include/uapi/drm/i915_drm.h
@@ -86,6 +86,62 @@ enum i915_mocs_table_index {
 	I915_MOCS_CACHED,
 };
 
+/*
+ * Different engines serve different roles, and there may be more than one
+ * engine serving each role. enum drm_i915_gem_engine_class provides a
+ * classification of the role of the engine, which may be used when requesting
+ * operations to be performed on a certain subset of engines, or for providing
+ * information about that group.
+ */
+enum drm_i915_gem_engine_class {
+	I915_ENGINE_CLASS_RENDER	= 0,
+	I915_ENGINE_CLASS_COPY		= 1,
+	I915_ENGINE_CLASS_VIDEO		= 2,
+	I915_ENGINE_CLASS_VIDEO_ENHANCE	= 3,
+
+	I915_ENGINE_CLASS_INVALID	= -1
+};
+
+/**
+ * DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915
+ *
+ */
+
+enum drm_i915_pmu_engine_sample {
+	I915_SAMPLE_BUSY = 0,
+	I915_SAMPLE_WAIT = 1,
+	I915_SAMPLE_SEMA = 2
+};
+
+#define I915_PMU_SAMPLE_BITS (4)
+#define I915_PMU_SAMPLE_MASK (0xf)
+#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
+#define I915_PMU_CLASS_SHIFT \
+	(I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
+
+#define __I915_PMU_ENGINE(class, instance, sample) \
+	((class) << I915_PMU_CLASS_SHIFT | \
+	(instance) << I915_PMU_SAMPLE_BITS | \
+	(sample))
+
+#define I915_PMU_ENGINE_BUSY(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
+
+#define I915_PMU_ENGINE_WAIT(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
+
+#define I915_PMU_ENGINE_SEMA(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
+
+#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
+
+#define I915_PMU_ACTUAL_FREQUENCY	__I915_PMU_OTHER(0)
+#define I915_PMU_REQUESTED_FREQUENCY	__I915_PMU_OTHER(1)
+#define I915_PMU_INTERRUPTS		__I915_PMU_OTHER(2)
+#define I915_PMU_RC6_RESIDENCY		__I915_PMU_OTHER(3)
+
+#define I915_PMU_LAST I915_PMU_RC6_RESIDENCY
+
 /* Each region is a minimum of 16k, and there are at most 255 of them.
  */
 #define I915_NR_TEX_REGIONS 255	/* table size 2k - maximum due to use
@@ -450,6 +506,27 @@ typedef struct drm_i915_irq_wait {
  */
 #define I915_PARAM_HAS_EXEC_FENCE_ARRAY  49
 
+/*
+ * Query whether every context (both per-file default and user created) is
+ * isolated (insofar as HW supports). If this parameter is not true, then
+ * freshly created contexts may inherit values from an existing context,
+ * rather than default HW values. If true, it also ensures (insofar as HW
+ * supports) that all state set by this context will not leak to any other
+ * context.
+ *
+ * As not every engine across every gen support contexts, the returned
+ * value reports the support of context isolation for individual engines by
+ * returning a bitmask of each engine class set to true if that class supports
+ * isolation.
+ */
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
+
+/* Frequency of the command streamer timestamps given by the *_TIMESTAMP
+ * registers. This used to be fixed per platform but from CNL onwards, this
+ * might vary depending on the parts.
+ */
+#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+
 typedef struct drm_i915_getparam {
 	__s32 param;
 	/*
diff --git a/tools/include/uapi/linux/if_link.h b/tools/include/uapi/linux/if_link.h
index 8616131e2c61..6d9447700e18 100644
--- a/tools/include/uapi/linux/if_link.h
+++ b/tools/include/uapi/linux/if_link.h
@@ -163,6 +163,7 @@ enum {
 	IFLA_IF_NETNSID,
 	IFLA_CARRIER_UP_COUNT,
 	IFLA_CARRIER_DOWN_COUNT,
+	IFLA_NEW_IFINDEX,
 	__IFLA_MAX
 };
 
diff --git a/tools/include/uapi/linux/kvm.h b/tools/include/uapi/linux/kvm.h
index 8fb90a0819c3..0fb5ef939732 100644
--- a/tools/include/uapi/linux/kvm.h
+++ b/tools/include/uapi/linux/kvm.h
@@ -1362,6 +1362,96 @@ struct kvm_s390_ucas_mapping {
 /* Available with KVM_CAP_S390_CMMA_MIGRATION */
 #define KVM_S390_GET_CMMA_BITS      _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS      _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+/* Memory Encryption Commands */
+#define KVM_MEMORY_ENCRYPT_OP      _IOWR(KVMIO, 0xba, unsigned long)
+
+struct kvm_enc_region {
+	__u64 addr;
+	__u64 size;
+};
+
+#define KVM_MEMORY_ENCRYPT_REG_REGION    _IOR(KVMIO, 0xbb, struct kvm_enc_region)
+#define KVM_MEMORY_ENCRYPT_UNREG_REGION  _IOR(KVMIO, 0xbc, struct kvm_enc_region)
+
+/* Secure Encrypted Virtualization command */
+enum sev_cmd_id {
+	/* Guest initialization commands */
+	KVM_SEV_INIT = 0,
+	KVM_SEV_ES_INIT,
+	/* Guest launch commands */
+	KVM_SEV_LAUNCH_START,
+	KVM_SEV_LAUNCH_UPDATE_DATA,
+	KVM_SEV_LAUNCH_UPDATE_VMSA,
+	KVM_SEV_LAUNCH_SECRET,
+	KVM_SEV_LAUNCH_MEASURE,
+	KVM_SEV_LAUNCH_FINISH,
+	/* Guest migration commands (outgoing) */
+	KVM_SEV_SEND_START,
+	KVM_SEV_SEND_UPDATE_DATA,
+	KVM_SEV_SEND_UPDATE_VMSA,
+	KVM_SEV_SEND_FINISH,
+	/* Guest migration commands (incoming) */
+	KVM_SEV_RECEIVE_START,
+	KVM_SEV_RECEIVE_UPDATE_DATA,
+	KVM_SEV_RECEIVE_UPDATE_VMSA,
+	KVM_SEV_RECEIVE_FINISH,
+	/* Guest status and debug commands */
+	KVM_SEV_GUEST_STATUS,
+	KVM_SEV_DBG_DECRYPT,
+	KVM_SEV_DBG_ENCRYPT,
+	/* Guest certificates commands */
+	KVM_SEV_CERT_EXPORT,
+
+	KVM_SEV_NR_MAX,
+};
+
+struct kvm_sev_cmd {
+	__u32 id;
+	__u64 data;
+	__u32 error;
+	__u32 sev_fd;
+};
+
+struct kvm_sev_launch_start {
+	__u32 handle;
+	__u32 policy;
+	__u64 dh_uaddr;
+	__u32 dh_len;
+	__u64 session_uaddr;
+	__u32 session_len;
+};
+
+struct kvm_sev_launch_update_data {
+	__u64 uaddr;
+	__u32 len;
+};
+
+
+struct kvm_sev_launch_secret {
+	__u64 hdr_uaddr;
+	__u32 hdr_len;
+	__u64 guest_uaddr;
+	__u32 guest_len;
+	__u64 trans_uaddr;
+	__u32 trans_len;
+};
+
+struct kvm_sev_launch_measure {
+	__u64 uaddr;
+	__u32 len;
+};
+
+struct kvm_sev_guest_status {
+	__u32 handle;
+	__u32 policy;
+	__u32 state;
+};
+
+struct kvm_sev_dbg {
+	__u64 src_uaddr;
+	__u64 dst_uaddr;
+	__u32 len;
+};
 
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3		(1 << 1)

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1
@ 2018-02-13 11:59   ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-02-13 11:59 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, linux-perf-users, Alexander Shishkin, Andi Kleen,
	Andriy Shevchenko, Heiko Carstens, Hendrik Brueckner, Jin Yao,
	Jiri Olsa, Kan Liang, Martin Schwidefsky, Namhyung Kim,
	Peter Zijlstra, Sangwon Hong, Taeung Song, Thomas Richter,
	Wang Nan, William Cohen, 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 33ea4b24277b06dbc55d7f5772a46f029600255e:
> 
>   perf/core: Implement the 'perf_uprobe' PMU (2018-02-06 11:29:28 +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.17-20180206
> 
> for you to fetch changes up to 52a37001d51a320c1019269fb3ba473a1363650d:
> 
>   perf test: Fix test trace+probe_libc_inet_pton.sh for s390x (2018-02-06 10:46:58 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> - perf_mmap overwrite mode overhaul, prep work to get 'perf top'
>   using it, making it bearable to use it in large core count systems
>   such as Knights Landing/Mill Intel systems (Kan Liang)
> 
> - Add perf vendor JSON metrics for ARM Cortex-A53 Processor (William Cohen)
> 
> - Use strtoull() instead of home grown function (Andy Shevchenko)
> 
> - Document missing 'perf data --force' option (Sangwon Hong)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andy Shevchenko (1):
>       perf tools: Substitute yet another strtoull()
> 
> Arnaldo Carvalho de Melo (1):
>       perf evsel: Expose the perf_missing_features struct
> 
> Kan Liang (16):
>       perf evlist: Remove stale mmap read for backward
>       perf mmap: Recalculate size for overwrite mode
>       perf mmap: Cleanup perf_mmap__push()
>       perf mmap: Introduce perf_mmap__read_init()
>       perf mmap: Add new return value logic for perf_mmap__read_init()
>       perf mmap: Discard 'prev' in perf_mmap__read()
>       perf mmap: Introduce perf_mmap__read_done()
>       perf mmap: Introduce perf_mmap__read_event()
>       perf test: Update mmap read functions for backward-ring-buffer test
>       perf mmap: Discard legacy interface for mmap read
>       perf top: Check per-event overwrite term
>       perf top: Add overwrite fall back
>       perf hists browser: Add parameter to disable lost event warning
>       perf top: Remove lost events checking
>       perf top: Switch default mode to overwrite mode
>       perf top: Check the latency of perf_top__mmap_read()
> 
> Sangwon Hong (1):
>       perf data: Document missing --force option
> 
> Thomas Richter (1):
>       perf test: Fix test trace+probe_libc_inet_pton.sh for s390x
> 
> William Cohen (1):
>       perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor
> 
>  tools/perf/Documentation/perf-data.txt             |   4 +
>  tools/perf/builtin-c2c.c                           |   4 +-
>  tools/perf/builtin-report.c                        |   3 +-
>  tools/perf/builtin-top.c                           | 150 ++++++++++++++++++++-
>  .../pmu-events/arch/arm64/cortex-a53/branch.json   |  27 ++++
>  .../perf/pmu-events/arch/arm64/cortex-a53/bus.json |  22 +++
>  .../pmu-events/arch/arm64/cortex-a53/cache.json    |  27 ++++
>  .../pmu-events/arch/arm64/cortex-a53/memory.json   |  22 +++
>  .../pmu-events/arch/arm64/cortex-a53/other.json    |  32 +++++
>  .../pmu-events/arch/arm64/cortex-a53/pipeline.json |  52 +++++++
>  tools/perf/pmu-events/arch/arm64/mapfile.csv       |   1 +
>  tools/perf/tests/backward-ring-buffer.c            |   7 +-
>  .../perf/tests/shell/trace+probe_libc_inet_pton.sh |  23 +++-
>  tools/perf/ui/browsers/hists.c                     |  38 ++++--
>  tools/perf/ui/browsers/hists.h                     |   3 +-
>  tools/perf/util/evlist.c                           |  17 ---
>  tools/perf/util/evlist.h                           |   4 -
>  tools/perf/util/evsel.c                            |  12 +-
>  tools/perf/util/evsel.h                            |  14 ++
>  tools/perf/util/hist.h                             |   6 +-
>  tools/perf/util/mmap.c                             | 141 ++++++++++---------
>  tools/perf/util/mmap.h                             |  10 +-
>  tools/perf/util/util.c                             |  24 +---
>  23 files changed, 492 insertions(+), 151 deletions(-)
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
>  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json

Pulled into tip:perf/urgent, thanks a lot Arnaldo!

Note, I also performed a header sync with v4.16-rc1, see the patch below.

The only exception is:

  Warning: Kernel ABI header at 'tools/arch/s390/include/uapi/asm/unistd.h' differs  from latest version at 'arch/s390/include/uapi/asm/unistd.h'

... which I'm unsure how to resolve: the new upstream header includes unistd_64.h, 
but neither s390 nor asm-generic has no such a file.

Thanks,

	Ingo

===================>
From a408361b6aa182d9defc0ffed71936b9bc41f0db Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
Date: Tue, 13 Feb 2018 12:54:58 +0100
Subject: [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1

Sync the following tooling headers with the latest kernel version:

  tools/arch/powerpc/include/uapi/asm/kvm.h
  tools/arch/x86/include/asm/cpufeatures.h
  tools/include/uapi/drm/i915_drm.h
  tools/include/uapi/linux/if_link.h
  tools/include/uapi/linux/kvm.h

All the changes are new ABI additions which don't impact their use
in existing tooling.

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 tools/arch/powerpc/include/uapi/asm/kvm.h |  2 +
 tools/arch/x86/include/asm/cpufeatures.h  |  1 +
 tools/include/uapi/drm/i915_drm.h         | 77 ++++++++++++++++++++++++++
 tools/include/uapi/linux/if_link.h        |  1 +
 tools/include/uapi/linux/kvm.h            | 90 +++++++++++++++++++++++++++++++
 5 files changed, 171 insertions(+)

diff --git a/tools/arch/powerpc/include/uapi/asm/kvm.h b/tools/arch/powerpc/include/uapi/asm/kvm.h
index 637b7263cb86..833ed9a16adf 100644
--- a/tools/arch/powerpc/include/uapi/asm/kvm.h
+++ b/tools/arch/powerpc/include/uapi/asm/kvm.h
@@ -632,6 +632,8 @@ struct kvm_ppc_cpu_char {
 #define KVM_REG_PPC_TIDR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbc)
 #define KVM_REG_PPC_PSSCR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbd)
 
+#define KVM_REG_PPC_DEC_EXPIRY	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe)
+
 /* Transactional Memory checkpointed state:
  * This is all GPRs, all VSX regs and a subset of SPRs
  */
diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h
index 1d9199e1c2ad..0dfe4d3f74e2 100644
--- a/tools/arch/x86/include/asm/cpufeatures.h
+++ b/tools/arch/x86/include/asm/cpufeatures.h
@@ -210,6 +210,7 @@
 
 #define X86_FEATURE_MBA			( 7*32+18) /* Memory Bandwidth Allocation */
 #define X86_FEATURE_RSB_CTXSW		( 7*32+19) /* "" Fill RSB on context switches */
+#define X86_FEATURE_SEV			( 7*32+20) /* AMD Secure Encrypted Virtualization */
 
 #define X86_FEATURE_USE_IBPB		( 7*32+21) /* "" Indirect Branch Prediction Barrier enabled */
 
diff --git a/tools/include/uapi/drm/i915_drm.h b/tools/include/uapi/drm/i915_drm.h
index ac3c6503ca27..536ee4febd74 100644
--- a/tools/include/uapi/drm/i915_drm.h
+++ b/tools/include/uapi/drm/i915_drm.h
@@ -86,6 +86,62 @@ enum i915_mocs_table_index {
 	I915_MOCS_CACHED,
 };
 
+/*
+ * Different engines serve different roles, and there may be more than one
+ * engine serving each role. enum drm_i915_gem_engine_class provides a
+ * classification of the role of the engine, which may be used when requesting
+ * operations to be performed on a certain subset of engines, or for providing
+ * information about that group.
+ */
+enum drm_i915_gem_engine_class {
+	I915_ENGINE_CLASS_RENDER	= 0,
+	I915_ENGINE_CLASS_COPY		= 1,
+	I915_ENGINE_CLASS_VIDEO		= 2,
+	I915_ENGINE_CLASS_VIDEO_ENHANCE	= 3,
+
+	I915_ENGINE_CLASS_INVALID	= -1
+};
+
+/**
+ * DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915
+ *
+ */
+
+enum drm_i915_pmu_engine_sample {
+	I915_SAMPLE_BUSY = 0,
+	I915_SAMPLE_WAIT = 1,
+	I915_SAMPLE_SEMA = 2
+};
+
+#define I915_PMU_SAMPLE_BITS (4)
+#define I915_PMU_SAMPLE_MASK (0xf)
+#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
+#define I915_PMU_CLASS_SHIFT \
+	(I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
+
+#define __I915_PMU_ENGINE(class, instance, sample) \
+	((class) << I915_PMU_CLASS_SHIFT | \
+	(instance) << I915_PMU_SAMPLE_BITS | \
+	(sample))
+
+#define I915_PMU_ENGINE_BUSY(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
+
+#define I915_PMU_ENGINE_WAIT(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
+
+#define I915_PMU_ENGINE_SEMA(class, instance) \
+	__I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
+
+#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
+
+#define I915_PMU_ACTUAL_FREQUENCY	__I915_PMU_OTHER(0)
+#define I915_PMU_REQUESTED_FREQUENCY	__I915_PMU_OTHER(1)
+#define I915_PMU_INTERRUPTS		__I915_PMU_OTHER(2)
+#define I915_PMU_RC6_RESIDENCY		__I915_PMU_OTHER(3)
+
+#define I915_PMU_LAST I915_PMU_RC6_RESIDENCY
+
 /* Each region is a minimum of 16k, and there are at most 255 of them.
  */
 #define I915_NR_TEX_REGIONS 255	/* table size 2k - maximum due to use
@@ -450,6 +506,27 @@ typedef struct drm_i915_irq_wait {
  */
 #define I915_PARAM_HAS_EXEC_FENCE_ARRAY  49
 
+/*
+ * Query whether every context (both per-file default and user created) is
+ * isolated (insofar as HW supports). If this parameter is not true, then
+ * freshly created contexts may inherit values from an existing context,
+ * rather than default HW values. If true, it also ensures (insofar as HW
+ * supports) that all state set by this context will not leak to any other
+ * context.
+ *
+ * As not every engine across every gen support contexts, the returned
+ * value reports the support of context isolation for individual engines by
+ * returning a bitmask of each engine class set to true if that class supports
+ * isolation.
+ */
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
+
+/* Frequency of the command streamer timestamps given by the *_TIMESTAMP
+ * registers. This used to be fixed per platform but from CNL onwards, this
+ * might vary depending on the parts.
+ */
+#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+
 typedef struct drm_i915_getparam {
 	__s32 param;
 	/*
diff --git a/tools/include/uapi/linux/if_link.h b/tools/include/uapi/linux/if_link.h
index 8616131e2c61..6d9447700e18 100644
--- a/tools/include/uapi/linux/if_link.h
+++ b/tools/include/uapi/linux/if_link.h
@@ -163,6 +163,7 @@ enum {
 	IFLA_IF_NETNSID,
 	IFLA_CARRIER_UP_COUNT,
 	IFLA_CARRIER_DOWN_COUNT,
+	IFLA_NEW_IFINDEX,
 	__IFLA_MAX
 };
 
diff --git a/tools/include/uapi/linux/kvm.h b/tools/include/uapi/linux/kvm.h
index 8fb90a0819c3..0fb5ef939732 100644
--- a/tools/include/uapi/linux/kvm.h
+++ b/tools/include/uapi/linux/kvm.h
@@ -1362,6 +1362,96 @@ struct kvm_s390_ucas_mapping {
 /* Available with KVM_CAP_S390_CMMA_MIGRATION */
 #define KVM_S390_GET_CMMA_BITS      _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS      _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+/* Memory Encryption Commands */
+#define KVM_MEMORY_ENCRYPT_OP      _IOWR(KVMIO, 0xba, unsigned long)
+
+struct kvm_enc_region {
+	__u64 addr;
+	__u64 size;
+};
+
+#define KVM_MEMORY_ENCRYPT_REG_REGION    _IOR(KVMIO, 0xbb, struct kvm_enc_region)
+#define KVM_MEMORY_ENCRYPT_UNREG_REGION  _IOR(KVMIO, 0xbc, struct kvm_enc_region)
+
+/* Secure Encrypted Virtualization command */
+enum sev_cmd_id {
+	/* Guest initialization commands */
+	KVM_SEV_INIT = 0,
+	KVM_SEV_ES_INIT,
+	/* Guest launch commands */
+	KVM_SEV_LAUNCH_START,
+	KVM_SEV_LAUNCH_UPDATE_DATA,
+	KVM_SEV_LAUNCH_UPDATE_VMSA,
+	KVM_SEV_LAUNCH_SECRET,
+	KVM_SEV_LAUNCH_MEASURE,
+	KVM_SEV_LAUNCH_FINISH,
+	/* Guest migration commands (outgoing) */
+	KVM_SEV_SEND_START,
+	KVM_SEV_SEND_UPDATE_DATA,
+	KVM_SEV_SEND_UPDATE_VMSA,
+	KVM_SEV_SEND_FINISH,
+	/* Guest migration commands (incoming) */
+	KVM_SEV_RECEIVE_START,
+	KVM_SEV_RECEIVE_UPDATE_DATA,
+	KVM_SEV_RECEIVE_UPDATE_VMSA,
+	KVM_SEV_RECEIVE_FINISH,
+	/* Guest status and debug commands */
+	KVM_SEV_GUEST_STATUS,
+	KVM_SEV_DBG_DECRYPT,
+	KVM_SEV_DBG_ENCRYPT,
+	/* Guest certificates commands */
+	KVM_SEV_CERT_EXPORT,
+
+	KVM_SEV_NR_MAX,
+};
+
+struct kvm_sev_cmd {
+	__u32 id;
+	__u64 data;
+	__u32 error;
+	__u32 sev_fd;
+};
+
+struct kvm_sev_launch_start {
+	__u32 handle;
+	__u32 policy;
+	__u64 dh_uaddr;
+	__u32 dh_len;
+	__u64 session_uaddr;
+	__u32 session_len;
+};
+
+struct kvm_sev_launch_update_data {
+	__u64 uaddr;
+	__u32 len;
+};
+
+
+struct kvm_sev_launch_secret {
+	__u64 hdr_uaddr;
+	__u32 hdr_len;
+	__u64 guest_uaddr;
+	__u32 guest_len;
+	__u64 trans_uaddr;
+	__u32 trans_len;
+};
+
+struct kvm_sev_launch_measure {
+	__u64 uaddr;
+	__u32 len;
+};
+
+struct kvm_sev_guest_status {
+	__u32 handle;
+	__u32 policy;
+	__u32 state;
+};
+
+struct kvm_sev_dbg {
+	__u64 src_uaddr;
+	__u64 dst_uaddr;
+	__u32 len;
+};
 
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3		(1 << 1)

^ permalink raw reply related	[flat|nested] 81+ messages in thread

* Re: [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1
  2018-02-13 11:59   ` Ingo Molnar
  (?)
@ 2018-02-14 13:41   ` Arnaldo Carvalho de Melo
  -1 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-14 13:41 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Alexander Shishkin, Andi Kleen,
	Andriy Shevchenko, Heiko Carstens, Hendrik Brueckner, Jin Yao,
	Jiri Olsa, Kan Liang, Martin Schwidefsky, Namhyung Kim,
	Peter Zijlstra, Sangwon Hong, Taeung Song, Thomas Richter,
	Wang Nan, William Cohen, Arnaldo Carvalho de Melo

Em Tue, Feb 13, 2018 at 12:59:53PM +0100, Ingo Molnar escreveu:
> 
> * 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 33ea4b24277b06dbc55d7f5772a46f029600255e:
> > 
> >   perf/core: Implement the 'perf_uprobe' PMU (2018-02-06 11:29:28 +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.17-20180206
> > 
> > for you to fetch changes up to 52a37001d51a320c1019269fb3ba473a1363650d:
> > 
> >   perf test: Fix test trace+probe_libc_inet_pton.sh for s390x (2018-02-06 10:46:58 -0300)
> > 
> > ----------------------------------------------------------------
> > perf/core improvements and fixes:
> > 
> > - perf_mmap overwrite mode overhaul, prep work to get 'perf top'
> >   using it, making it bearable to use it in large core count systems
> >   such as Knights Landing/Mill Intel systems (Kan Liang)
> > 
> > - Add perf vendor JSON metrics for ARM Cortex-A53 Processor (William Cohen)
> > 
> > - Use strtoull() instead of home grown function (Andy Shevchenko)
> > 
> > - Document missing 'perf data --force' option (Sangwon Hong)
> > 
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > ----------------------------------------------------------------
> > Andy Shevchenko (1):
> >       perf tools: Substitute yet another strtoull()
> > 
> > Arnaldo Carvalho de Melo (1):
> >       perf evsel: Expose the perf_missing_features struct
> > 
> > Kan Liang (16):
> >       perf evlist: Remove stale mmap read for backward
> >       perf mmap: Recalculate size for overwrite mode
> >       perf mmap: Cleanup perf_mmap__push()
> >       perf mmap: Introduce perf_mmap__read_init()
> >       perf mmap: Add new return value logic for perf_mmap__read_init()
> >       perf mmap: Discard 'prev' in perf_mmap__read()
> >       perf mmap: Introduce perf_mmap__read_done()
> >       perf mmap: Introduce perf_mmap__read_event()
> >       perf test: Update mmap read functions for backward-ring-buffer test
> >       perf mmap: Discard legacy interface for mmap read
> >       perf top: Check per-event overwrite term
> >       perf top: Add overwrite fall back
> >       perf hists browser: Add parameter to disable lost event warning
> >       perf top: Remove lost events checking
> >       perf top: Switch default mode to overwrite mode
> >       perf top: Check the latency of perf_top__mmap_read()
> > 
> > Sangwon Hong (1):
> >       perf data: Document missing --force option
> > 
> > Thomas Richter (1):
> >       perf test: Fix test trace+probe_libc_inet_pton.sh for s390x
> > 
> > William Cohen (1):
> >       perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor
> > 
> >  tools/perf/Documentation/perf-data.txt             |   4 +
> >  tools/perf/builtin-c2c.c                           |   4 +-
> >  tools/perf/builtin-report.c                        |   3 +-
> >  tools/perf/builtin-top.c                           | 150 ++++++++++++++++++++-
> >  .../pmu-events/arch/arm64/cortex-a53/branch.json   |  27 ++++
> >  .../perf/pmu-events/arch/arm64/cortex-a53/bus.json |  22 +++
> >  .../pmu-events/arch/arm64/cortex-a53/cache.json    |  27 ++++
> >  .../pmu-events/arch/arm64/cortex-a53/memory.json   |  22 +++
> >  .../pmu-events/arch/arm64/cortex-a53/other.json    |  32 +++++
> >  .../pmu-events/arch/arm64/cortex-a53/pipeline.json |  52 +++++++
> >  tools/perf/pmu-events/arch/arm64/mapfile.csv       |   1 +
> >  tools/perf/tests/backward-ring-buffer.c            |   7 +-
> >  .../perf/tests/shell/trace+probe_libc_inet_pton.sh |  23 +++-
> >  tools/perf/ui/browsers/hists.c                     |  38 ++++--
> >  tools/perf/ui/browsers/hists.h                     |   3 +-
> >  tools/perf/util/evlist.c                           |  17 ---
> >  tools/perf/util/evlist.h                           |   4 -
> >  tools/perf/util/evsel.c                            |  12 +-
> >  tools/perf/util/evsel.h                            |  14 ++
> >  tools/perf/util/hist.h                             |   6 +-
> >  tools/perf/util/mmap.c                             | 141 ++++++++++---------
> >  tools/perf/util/mmap.h                             |  10 +-
> >  tools/perf/util/util.c                             |  24 +---
> >  23 files changed, 492 insertions(+), 151 deletions(-)
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/branch.json
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/bus.json
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/cache.json
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/memory.json
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/other.json
> >  create mode 100644 tools/perf/pmu-events/arch/arm64/cortex-a53/pipeline.json
> 
> Pulled into tip:perf/urgent, thanks a lot Arnaldo!
> 
> Note, I also performed a header sync with v4.16-rc1, see the patch below.
> 
> The only exception is:
> 
>   Warning: Kernel ABI header at 'tools/arch/s390/include/uapi/asm/unistd.h' differs  from latest version at 'arch/s390/include/uapi/asm/unistd.h'
> 
> ... which I'm unsure how to resolve: the new upstream header includes unistd_64.h, 
> but neither s390 nor asm-generic has no such a file.

There is a patch for that from Hendrik, IIRC, I'll merge it. They worked
on making the syscall table generation process to be similar to the one
used in x86_64 after being exposed to it by means of how 'perf trace'
creates its id->string syscall tables.

- Arnaldo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2018-08-20 16:15 ` Arnaldo Carvalho de Melo
@ 2018-08-23  8:31   ` Ingo Molnar
  -1 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-08-23  8:31 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Daniel Borkmann,
	David Ahern, Jack Henschel, Jan Beulich, Jaroslav Škarvada,
	Jiri Olsa, Joe Mario, linux-trace-devel, Martin KaFai Lau,
	Michael Petlan, Namhyung Kim, Peter Feiner, Peter Zijlstra,
	Rasmus Villemoes, Sai Praneeth, Steven Rostedt, Thomas Gleixner,
	Tzvetomir Stoyanov, Wang Nan, Yonghong Song, Yordan Karadzhov,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pullimg,
> 
> - Arnaldo
> 
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit 5804b11034a21e4287daaf017c5ad60ad7af8d67:
> 
>   Merge tag 'perf-core-for-mingo-4.19-20180815' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2018-08-18 13:11:51 +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-4.19-20180820
> 
> for you to fetch changes up to 78303650e4cd873c6c4276c6fe3e768ff0b46d22:
> 
>   tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' (2018-08-20 10:17:14 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> LLVM/clang/eBPF: (Arnaldo Carvalho de Melo)
> 
> - Allow passing options to llc in addition to to clang.
> 
> Hardware tracing: (Jack Henschel)
> 
> - Improve error message for PMU address filters, clarifying availability of
>   that feature in hardware having hardware tracing such as Intel PT.
> 
> Python interface: (Jiri Olsa)
> 
> - Fix read_on_cpu() interface.
> 
> ELF/DWARF libraries: (Jiri Olsa)
> 
> - Fix handling of the combo compressed module file + decompressed associated
>   debuginfo file.
> 
> Build (Rasmus Villemoes)
> 
> - Disable parallelism for 'make clean', avoiding multiple submakes deleting
>   the same files and causing the build to fail on systems such as Yocto.
> 
> Kernel ABI copies: (Arnaldo Carvalho de Melo)
> 
> - Update tools's copy of x86's cpufeatures.h.
> 
> - Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'.
> 
> Miscellaneous: (Steven Rostedt)
> 
> - Change libtraceevent to SPDX License format.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (3):
>       perf llvm: Allow passing options to llc in addition to clang
>       tools arch x86: Update tools's copy of cpufeatures.h
>       tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'
> 
> Jack Henschel (1):
>       perf parser: Improve error message for PMU address filters
> 
> Jiri Olsa (15):
>       perf tools: Get rid of dso__needs_decompress() call in read_object_code()
>       perf tools: Get rid of dso__needs_decompress() call in symbol__disassemble()
>       perf tools: Get rid of dso__needs_decompress() call in __open_dso()
>       perf tools: Make decompress_to_file() function static
>       perf tools: Make is_supported_compression() static
>       perf tools: Add compression id into 'struct kmod_path'
>       perf tools: Store compression id into struct dso
>       perf tools: Use compression id in decompress_kmodule()
>       perf tools: Move the temp file processing into decompress_kmodule
>       perf tools: Add is_compressed callback to compressions array
>       perf tools: Add lzma_is_compressed function
>       perf tools: Add gzip_is_compressed function
>       perf tools: Remove ext from struct kmod_path
>       perf mmap: Store real cpu number in 'struct perf_mmap'
>       perf python: Fix pyrf_evlist__read_on_cpu() interface
> 
> Rasmus Villemoes (1):
>       perf tools: Disable parallelism for 'make clean'
> 
> Steven Rostedt (VMware) (1):
>       tools lib traceevent: Change to SPDX License format
> 
>  tools/arch/x86/include/asm/cpufeatures.h |   3 +-
>  tools/arch/x86/lib/memcpy_64.S           |   2 +-
>  tools/lib/traceevent/event-parse.c       |  16 +---
>  tools/lib/traceevent/event-plugin.c      |  16 +---
>  tools/lib/traceevent/event-utils.h       |  16 +---
>  tools/lib/traceevent/kbuffer-parse.c     |  17 +---
>  tools/lib/traceevent/parse-filter.c      |  16 +---
>  tools/lib/traceevent/parse-utils.c       |  16 +---
>  tools/lib/traceevent/trace-seq.c         |  16 +---
>  tools/perf/Makefile                      |   4 +-
>  tools/perf/tests/code-reading.c          |   4 +-
>  tools/perf/tests/kmod-path.c             | 136 +++++++++++++++----------------
>  tools/perf/util/annotate.c               |   4 +-
>  tools/perf/util/compress.h               |   2 +
>  tools/perf/util/dso.c                    | 111 ++++++++++++-------------
>  tools/perf/util/dso.h                    |  13 ++-
>  tools/perf/util/evlist.c                 |   2 +-
>  tools/perf/util/llvm-utils.c             |  31 ++++++-
>  tools/perf/util/llvm-utils.h             |   9 ++
>  tools/perf/util/lzma.c                   |  20 +++++
>  tools/perf/util/machine.c                |   4 +-
>  tools/perf/util/mmap.c                   |   3 +-
>  tools/perf/util/mmap.h                   |   3 +-
>  tools/perf/util/parse-events.c           |  20 ++---
>  tools/perf/util/python.c                 |  20 ++++-
>  tools/perf/util/zlib.c                   |  18 ++++
>  26 files changed, 256 insertions(+), 266 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-23  8:31   ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-08-23  8:31 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Shishkin, Alexei Starovoitov, Daniel Borkmann,
	David Ahern, Jack Henschel, Jan Beulich, Jaroslav Škarvada,
	Jiri Olsa, Joe Mario, linux-trace-devel, Martin KaFai Lau,
	Michael Petlan, Namhyung Kim, Peter Feiner, Peter Zijlstra,
	Rasmus Villemoes


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pullimg,
> 
> - Arnaldo
> 
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit 5804b11034a21e4287daaf017c5ad60ad7af8d67:
> 
>   Merge tag 'perf-core-for-mingo-4.19-20180815' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2018-08-18 13:11:51 +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-4.19-20180820
> 
> for you to fetch changes up to 78303650e4cd873c6c4276c6fe3e768ff0b46d22:
> 
>   tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' (2018-08-20 10:17:14 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> LLVM/clang/eBPF: (Arnaldo Carvalho de Melo)
> 
> - Allow passing options to llc in addition to to clang.
> 
> Hardware tracing: (Jack Henschel)
> 
> - Improve error message for PMU address filters, clarifying availability of
>   that feature in hardware having hardware tracing such as Intel PT.
> 
> Python interface: (Jiri Olsa)
> 
> - Fix read_on_cpu() interface.
> 
> ELF/DWARF libraries: (Jiri Olsa)
> 
> - Fix handling of the combo compressed module file + decompressed associated
>   debuginfo file.
> 
> Build (Rasmus Villemoes)
> 
> - Disable parallelism for 'make clean', avoiding multiple submakes deleting
>   the same files and causing the build to fail on systems such as Yocto.
> 
> Kernel ABI copies: (Arnaldo Carvalho de Melo)
> 
> - Update tools's copy of x86's cpufeatures.h.
> 
> - Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'.
> 
> Miscellaneous: (Steven Rostedt)
> 
> - Change libtraceevent to SPDX License format.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (3):
>       perf llvm: Allow passing options to llc in addition to clang
>       tools arch x86: Update tools's copy of cpufeatures.h
>       tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'
> 
> Jack Henschel (1):
>       perf parser: Improve error message for PMU address filters
> 
> Jiri Olsa (15):
>       perf tools: Get rid of dso__needs_decompress() call in read_object_code()
>       perf tools: Get rid of dso__needs_decompress() call in symbol__disassemble()
>       perf tools: Get rid of dso__needs_decompress() call in __open_dso()
>       perf tools: Make decompress_to_file() function static
>       perf tools: Make is_supported_compression() static
>       perf tools: Add compression id into 'struct kmod_path'
>       perf tools: Store compression id into struct dso
>       perf tools: Use compression id in decompress_kmodule()
>       perf tools: Move the temp file processing into decompress_kmodule
>       perf tools: Add is_compressed callback to compressions array
>       perf tools: Add lzma_is_compressed function
>       perf tools: Add gzip_is_compressed function
>       perf tools: Remove ext from struct kmod_path
>       perf mmap: Store real cpu number in 'struct perf_mmap'
>       perf python: Fix pyrf_evlist__read_on_cpu() interface
> 
> Rasmus Villemoes (1):
>       perf tools: Disable parallelism for 'make clean'
> 
> Steven Rostedt (VMware) (1):
>       tools lib traceevent: Change to SPDX License format
> 
>  tools/arch/x86/include/asm/cpufeatures.h |   3 +-
>  tools/arch/x86/lib/memcpy_64.S           |   2 +-
>  tools/lib/traceevent/event-parse.c       |  16 +---
>  tools/lib/traceevent/event-plugin.c      |  16 +---
>  tools/lib/traceevent/event-utils.h       |  16 +---
>  tools/lib/traceevent/kbuffer-parse.c     |  17 +---
>  tools/lib/traceevent/parse-filter.c      |  16 +---
>  tools/lib/traceevent/parse-utils.c       |  16 +---
>  tools/lib/traceevent/trace-seq.c         |  16 +---
>  tools/perf/Makefile                      |   4 +-
>  tools/perf/tests/code-reading.c          |   4 +-
>  tools/perf/tests/kmod-path.c             | 136 +++++++++++++++----------------
>  tools/perf/util/annotate.c               |   4 +-
>  tools/perf/util/compress.h               |   2 +
>  tools/perf/util/dso.c                    | 111 ++++++++++++-------------
>  tools/perf/util/dso.h                    |  13 ++-
>  tools/perf/util/evlist.c                 |   2 +-
>  tools/perf/util/llvm-utils.c             |  31 ++++++-
>  tools/perf/util/llvm-utils.h             |   9 ++
>  tools/perf/util/lzma.c                   |  20 +++++
>  tools/perf/util/machine.c                |   4 +-
>  tools/perf/util/mmap.c                   |   3 +-
>  tools/perf/util/mmap.h                   |   3 +-
>  tools/perf/util/parse-events.c           |  20 ++---
>  tools/perf/util/python.c                 |  20 ++++-
>  tools/perf/util/zlib.c                   |  18 ++++
>  26 files changed, 256 insertions(+), 266 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-20 16:15 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-08-20 16:15 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Clark Williams, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin,
	Alexei Starovoitov, Daniel Borkmann, David Ahern, Jack Henschel,
	Jan Beulich, Jaroslav Škarvada, Jiri Olsa, Joe Mario,
	linux-trace-devel, Martin KaFai Lau, Michael Petlan,
	Namhyung Kim, Peter Feiner, Peter Zijlstra, Rasmus Villemoes,
	Sai Praneeth, Steven Rostedt, Thomas Gleixner,
	Tzvetomir Stoyanov, Wang Nan, Yonghong Song, Yordan Karadzhov,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pullimg,

- Arnaldo


Test results at the end of this message, as usual.

The following changes since commit 5804b11034a21e4287daaf017c5ad60ad7af8d67:

  Merge tag 'perf-core-for-mingo-4.19-20180815' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2018-08-18 13:11:51 +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-4.19-20180820

for you to fetch changes up to 78303650e4cd873c6c4276c6fe3e768ff0b46d22:

  tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' (2018-08-20 10:17:14 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

LLVM/clang/eBPF: (Arnaldo Carvalho de Melo)

- Allow passing options to llc in addition to to clang.

Hardware tracing: (Jack Henschel)

- Improve error message for PMU address filters, clarifying availability of
  that feature in hardware having hardware tracing such as Intel PT.

Python interface: (Jiri Olsa)

- Fix read_on_cpu() interface.

ELF/DWARF libraries: (Jiri Olsa)

- Fix handling of the combo compressed module file + decompressed associated
  debuginfo file.

Build (Rasmus Villemoes)

- Disable parallelism for 'make clean', avoiding multiple submakes deleting
  the same files and causing the build to fail on systems such as Yocto.

Kernel ABI copies: (Arnaldo Carvalho de Melo)

- Update tools's copy of x86's cpufeatures.h.

- Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'.

Miscellaneous: (Steven Rostedt)

- Change libtraceevent to SPDX License format.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
      perf llvm: Allow passing options to llc in addition to clang
      tools arch x86: Update tools's copy of cpufeatures.h
      tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'

Jack Henschel (1):
      perf parser: Improve error message for PMU address filters

Jiri Olsa (15):
      perf tools: Get rid of dso__needs_decompress() call in read_object_code()
      perf tools: Get rid of dso__needs_decompress() call in symbol__disassemble()
      perf tools: Get rid of dso__needs_decompress() call in __open_dso()
      perf tools: Make decompress_to_file() function static
      perf tools: Make is_supported_compression() static
      perf tools: Add compression id into 'struct kmod_path'
      perf tools: Store compression id into struct dso
      perf tools: Use compression id in decompress_kmodule()
      perf tools: Move the temp file processing into decompress_kmodule
      perf tools: Add is_compressed callback to compressions array
      perf tools: Add lzma_is_compressed function
      perf tools: Add gzip_is_compressed function
      perf tools: Remove ext from struct kmod_path
      perf mmap: Store real cpu number in 'struct perf_mmap'
      perf python: Fix pyrf_evlist__read_on_cpu() interface

Rasmus Villemoes (1):
      perf tools: Disable parallelism for 'make clean'

Steven Rostedt (VMware) (1):
      tools lib traceevent: Change to SPDX License format

 tools/arch/x86/include/asm/cpufeatures.h |   3 +-
 tools/arch/x86/lib/memcpy_64.S           |   2 +-
 tools/lib/traceevent/event-parse.c       |  16 +---
 tools/lib/traceevent/event-plugin.c      |  16 +---
 tools/lib/traceevent/event-utils.h       |  16 +---
 tools/lib/traceevent/kbuffer-parse.c     |  17 +---
 tools/lib/traceevent/parse-filter.c      |  16 +---
 tools/lib/traceevent/parse-utils.c       |  16 +---
 tools/lib/traceevent/trace-seq.c         |  16 +---
 tools/perf/Makefile                      |   4 +-
 tools/perf/tests/code-reading.c          |   4 +-
 tools/perf/tests/kmod-path.c             | 136 +++++++++++++++----------------
 tools/perf/util/annotate.c               |   4 +-
 tools/perf/util/compress.h               |   2 +
 tools/perf/util/dso.c                    | 111 ++++++++++++-------------
 tools/perf/util/dso.h                    |  13 ++-
 tools/perf/util/evlist.c                 |   2 +-
 tools/perf/util/llvm-utils.c             |  31 ++++++-
 tools/perf/util/llvm-utils.h             |   9 ++
 tools/perf/util/lzma.c                   |  20 +++++
 tools/perf/util/machine.c                |   4 +-
 tools/perf/util/mmap.c                   |   3 +-
 tools/perf/util/mmap.h                   |   3 +-
 tools/perf/util/parse-events.c           |  20 ++---
 tools/perf/util/python.c                 |  20 ++++-
 tools/perf/util/zlib.c                   |  18 ++++
 26 files changed, 256 insertions(+), 266 deletions(-)

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, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   7 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   8 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   9 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  11 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  12 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
  13 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  14 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  15 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  16 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  17 debian:experimental           : Ok   gcc (Debian 8.2.0-4) 8.2.0
  18 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  19 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  20 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.1.0-12) 8.1.0
  21 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  22 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  23 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  24 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  25 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  26 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  27 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  28 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  29 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  30 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
  31 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5)
  32 fedora:rawhide                : Ok   gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
  33 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  34 mageia:5                      : Ok   gcc (GCC) 4.9.2
  35 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  36 opensuse:13.2                 : Ok   gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
  37 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  38 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  39 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  40 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  41 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  42 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  43 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  44 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  45 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  46 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  47 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  48 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  52 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  53 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  54 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  55 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  56 ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  57 ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  58 ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  59 ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  60 ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  61 ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  62 ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  63 ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  64 ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  65 ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  66 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-1ubuntu2) 8.2.0
  # 

  # uname -a
  Linux seventh 4.18.0-02978-g1eb46908b35d #1 SMP Wed Aug 15 16:55:17 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  78303650e4cd (HEAD -> perf/core) tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'
  # perf version --build-options
  perf version 4.18.g783036
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # 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: Breakpoint accounting                                 : Ok
  22: Number of exit events of a simple workload            : Ok
  23: Software clock events period values                   : Ok
  24: Object code reading                                   : Ok
  25: Sample parsing                                        : Ok
  26: Use a dummy software event to keep tracking           : Ok
  27: Parse with no sample_id_all bit set                   : Ok
  28: Filter hist entries                                   : Ok
  29: Lookup mmap thread                                    : Ok
  30: Share thread mg                                       : Ok
  31: Sort output of hist entries                           : Ok
  32: Cumulate child hist entries                           : Ok
  33: Track with sched_switch                               : Ok
  34: Filter fds with revents mask in a fdarray             : Ok
  35: Add fd to a fdarray, making it autogrow               : Ok
  36: kmod_path__parse                                      : Ok
  37: Thread map                                            : Ok
  38: LLVM search and compile                               :
  38.1: Basic BPF llvm compile                              : Ok
  38.2: kbuild searching                                    : Ok
  38.3: Compile source for BPF prologue generation          : Ok
  38.4: Compile source for BPF relocation                   : Ok
  39: Session topology                                      : Ok
  40: BPF filter                                            :
  40.1: Basic BPF filtering                                 : Ok
  40.2: BPF pinning                                         : Ok
  40.3: BPF prologue generation                             : Ok
  40.4: BPF relocation checker                              : Ok
  41: Synthesize thread map                                 : Ok
  42: Remove thread map                                     : Ok
  43: Synthesize cpu map                                    : Ok
  44: Synthesize stat config                                : Ok
  45: Synthesize stat                                       : Ok
  46: Synthesize stat round                                 : Ok
  47: Synthesize attr update                                : Ok
  48: Event times                                           : Ok
  49: Read backward ring buffer                             : Ok
  50: Print cpu map                                         : Ok
  51: Probe SDT events                                      : Ok
  52: is_printable_array                                    : Ok
  53: Print bitmap                                          : Ok
  54: perf hooks                                            : Ok
  55: builtin clang support                                 : Skip (not compiled in)
  56: unit_number__scnprintf                                : Ok
  57: mem2node                                              : Ok
  58: x86 rdpmc                                             : Ok
  59: Convert perf time to TSC                              : Ok
  60: DWARF unwind                                          : Ok
  61: x86 instruction decoder - new instructions            : Ok
  62: probe libc's inet_pton & backtrace it with ping       : Ok
  63: Check open filename arg using perf trace + vfs_getname: Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: 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_no_libbionic_O: make NO_LIBBIONIC=1
              make_no_libbpf_O: make NO_LIBBPF=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
            make_no_demangle_O: make NO_DEMANGLE=1
               make_no_slang_O: make NO_SLANG=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
                   make_help_O: make help
            make_no_libaudit_O: make NO_LIBAUDIT=1
                  make_debug_O: make DEBUG=1
                 make_static_O: make LDFLAGS=-static
         make_install_prefix_O: make install prefix=/tmp/krava
                   make_tags_O: make tags
            make_install_bin_O: make install-bin
                make_no_gtk2_O: make NO_GTK2=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
              make_clean_all_O: make clean all
           make_no_libpython_O: make NO_LIBPYTHON=1
                 make_perf_o_O: make perf.o
                make_install_O: make install
           make_no_backtrace_O: make NO_BACKTRACE=1
                    make_doc_O: make doc
             make_no_libnuma_O: make NO_LIBNUMA=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
           make_no_libunwind_O: make NO_LIBUNWIND=1
             make_util_map_o_O: make util/map.o
                   make_pure_O: make
             make_no_libperl_O: make NO_LIBPERL=1
              make_no_libelf_O: make NO_LIBELF=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                make_no_newt_O: make NO_NEWT=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
        make_with_babeltrace_O: make LIBBABELTRACE=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
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-20 16:15 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-08-20 16:15 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Clark Williams, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin,
	Alexei Starovoitov, Daniel Borkmann, David Ahern, Jack Henschel,
	Jan Beulich, Jaroslav Škarvada, Jiri Olsa, Joe Mario,
	linux-trace-devel, Martin KaFai Lau, Michael Petlan,
	Namhyung Kim, Peter Feiner, Peter Zijlstra

Hi Ingo,

	Please consider pullimg,

- Arnaldo


Test results at the end of this message, as usual.

The following changes since commit 5804b11034a21e4287daaf017c5ad60ad7af8d67:

  Merge tag 'perf-core-for-mingo-4.19-20180815' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2018-08-18 13:11:51 +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-4.19-20180820

for you to fetch changes up to 78303650e4cd873c6c4276c6fe3e768ff0b46d22:

  tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' (2018-08-20 10:17:14 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

LLVM/clang/eBPF: (Arnaldo Carvalho de Melo)

- Allow passing options to llc in addition to to clang.

Hardware tracing: (Jack Henschel)

- Improve error message for PMU address filters, clarifying availability of
  that feature in hardware having hardware tracing such as Intel PT.

Python interface: (Jiri Olsa)

- Fix read_on_cpu() interface.

ELF/DWARF libraries: (Jiri Olsa)

- Fix handling of the combo compressed module file + decompressed associated
  debuginfo file.

Build (Rasmus Villemoes)

- Disable parallelism for 'make clean', avoiding multiple submakes deleting
  the same files and causing the build to fail on systems such as Yocto.

Kernel ABI copies: (Arnaldo Carvalho de Melo)

- Update tools's copy of x86's cpufeatures.h.

- Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'.

Miscellaneous: (Steven Rostedt)

- Change libtraceevent to SPDX License format.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
      perf llvm: Allow passing options to llc in addition to clang
      tools arch x86: Update tools's copy of cpufeatures.h
      tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'

Jack Henschel (1):
      perf parser: Improve error message for PMU address filters

Jiri Olsa (15):
      perf tools: Get rid of dso__needs_decompress() call in read_object_code()
      perf tools: Get rid of dso__needs_decompress() call in symbol__disassemble()
      perf tools: Get rid of dso__needs_decompress() call in __open_dso()
      perf tools: Make decompress_to_file() function static
      perf tools: Make is_supported_compression() static
      perf tools: Add compression id into 'struct kmod_path'
      perf tools: Store compression id into struct dso
      perf tools: Use compression id in decompress_kmodule()
      perf tools: Move the temp file processing into decompress_kmodule
      perf tools: Add is_compressed callback to compressions array
      perf tools: Add lzma_is_compressed function
      perf tools: Add gzip_is_compressed function
      perf tools: Remove ext from struct kmod_path
      perf mmap: Store real cpu number in 'struct perf_mmap'
      perf python: Fix pyrf_evlist__read_on_cpu() interface

Rasmus Villemoes (1):
      perf tools: Disable parallelism for 'make clean'

Steven Rostedt (VMware) (1):
      tools lib traceevent: Change to SPDX License format

 tools/arch/x86/include/asm/cpufeatures.h |   3 +-
 tools/arch/x86/lib/memcpy_64.S           |   2 +-
 tools/lib/traceevent/event-parse.c       |  16 +---
 tools/lib/traceevent/event-plugin.c      |  16 +---
 tools/lib/traceevent/event-utils.h       |  16 +---
 tools/lib/traceevent/kbuffer-parse.c     |  17 +---
 tools/lib/traceevent/parse-filter.c      |  16 +---
 tools/lib/traceevent/parse-utils.c       |  16 +---
 tools/lib/traceevent/trace-seq.c         |  16 +---
 tools/perf/Makefile                      |   4 +-
 tools/perf/tests/code-reading.c          |   4 +-
 tools/perf/tests/kmod-path.c             | 136 +++++++++++++++----------------
 tools/perf/util/annotate.c               |   4 +-
 tools/perf/util/compress.h               |   2 +
 tools/perf/util/dso.c                    | 111 ++++++++++++-------------
 tools/perf/util/dso.h                    |  13 ++-
 tools/perf/util/evlist.c                 |   2 +-
 tools/perf/util/llvm-utils.c             |  31 ++++++-
 tools/perf/util/llvm-utils.h             |   9 ++
 tools/perf/util/lzma.c                   |  20 +++++
 tools/perf/util/machine.c                |   4 +-
 tools/perf/util/mmap.c                   |   3 +-
 tools/perf/util/mmap.h                   |   3 +-
 tools/perf/util/parse-events.c           |  20 ++---
 tools/perf/util/python.c                 |  20 ++++-
 tools/perf/util/zlib.c                   |  18 ++++
 26 files changed, 256 insertions(+), 266 deletions(-)

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, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   7 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   8 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   9 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  11 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  12 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
  13 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  14 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  15 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  16 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  17 debian:experimental           : Ok   gcc (Debian 8.2.0-4) 8.2.0
  18 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  19 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  20 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.1.0-12) 8.1.0
  21 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  22 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  23 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  24 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  25 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  26 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  27 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  28 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  29 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  30 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
  31 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5)
  32 fedora:rawhide                : Ok   gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
  33 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  34 mageia:5                      : Ok   gcc (GCC) 4.9.2
  35 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  36 opensuse:13.2                 : Ok   gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
  37 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  38 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  39 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  40 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  41 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  42 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  43 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  44 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  45 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  46 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  47 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  48 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  52 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  53 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  54 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  55 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  56 ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  57 ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
  58 ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  59 ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  60 ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  61 ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  62 ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  63 ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  64 ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  65 ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  66 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-1ubuntu2) 8.2.0
  # 

  # uname -a
  Linux seventh 4.18.0-02978-g1eb46908b35d #1 SMP Wed Aug 15 16:55:17 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  78303650e4cd (HEAD -> perf/core) tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy'
  # perf version --build-options
  perf version 4.18.g783036
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # 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: Breakpoint accounting                                 : Ok
  22: Number of exit events of a simple workload            : Ok
  23: Software clock events period values                   : Ok
  24: Object code reading                                   : Ok
  25: Sample parsing                                        : Ok
  26: Use a dummy software event to keep tracking           : Ok
  27: Parse with no sample_id_all bit set                   : Ok
  28: Filter hist entries                                   : Ok
  29: Lookup mmap thread                                    : Ok
  30: Share thread mg                                       : Ok
  31: Sort output of hist entries                           : Ok
  32: Cumulate child hist entries                           : Ok
  33: Track with sched_switch                               : Ok
  34: Filter fds with revents mask in a fdarray             : Ok
  35: Add fd to a fdarray, making it autogrow               : Ok
  36: kmod_path__parse                                      : Ok
  37: Thread map                                            : Ok
  38: LLVM search and compile                               :
  38.1: Basic BPF llvm compile                              : Ok
  38.2: kbuild searching                                    : Ok
  38.3: Compile source for BPF prologue generation          : Ok
  38.4: Compile source for BPF relocation                   : Ok
  39: Session topology                                      : Ok
  40: BPF filter                                            :
  40.1: Basic BPF filtering                                 : Ok
  40.2: BPF pinning                                         : Ok
  40.3: BPF prologue generation                             : Ok
  40.4: BPF relocation checker                              : Ok
  41: Synthesize thread map                                 : Ok
  42: Remove thread map                                     : Ok
  43: Synthesize cpu map                                    : Ok
  44: Synthesize stat config                                : Ok
  45: Synthesize stat                                       : Ok
  46: Synthesize stat round                                 : Ok
  47: Synthesize attr update                                : Ok
  48: Event times                                           : Ok
  49: Read backward ring buffer                             : Ok
  50: Print cpu map                                         : Ok
  51: Probe SDT events                                      : Ok
  52: is_printable_array                                    : Ok
  53: Print bitmap                                          : Ok
  54: perf hooks                                            : Ok
  55: builtin clang support                                 : Skip (not compiled in)
  56: unit_number__scnprintf                                : Ok
  57: mem2node                                              : Ok
  58: x86 rdpmc                                             : Ok
  59: Convert perf time to TSC                              : Ok
  60: DWARF unwind                                          : Ok
  61: x86 instruction decoder - new instructions            : Ok
  62: probe libc's inet_pton & backtrace it with ping       : Ok
  63: Check open filename arg using perf trace + vfs_getname: Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: 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_no_libbionic_O: make NO_LIBBIONIC=1
              make_no_libbpf_O: make NO_LIBBPF=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
            make_no_demangle_O: make NO_DEMANGLE=1
               make_no_slang_O: make NO_SLANG=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
                   make_help_O: make help
            make_no_libaudit_O: make NO_LIBAUDIT=1
                  make_debug_O: make DEBUG=1
                 make_static_O: make LDFLAGS=-static
         make_install_prefix_O: make install prefix=/tmp/krava
                   make_tags_O: make tags
            make_install_bin_O: make install-bin
                make_no_gtk2_O: make NO_GTK2=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
              make_clean_all_O: make clean all
           make_no_libpython_O: make NO_LIBPYTHON=1
                 make_perf_o_O: make perf.o
                make_install_O: make install
           make_no_backtrace_O: make NO_BACKTRACE=1
                    make_doc_O: make doc
             make_no_libnuma_O: make NO_LIBNUMA=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
           make_no_libunwind_O: make NO_LIBUNWIND=1
             make_util_map_o_O: make util/map.o
                   make_pure_O: make
             make_no_libperl_O: make NO_LIBPERL=1
              make_no_libelf_O: make NO_LIBELF=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                make_no_newt_O: make NO_NEWT=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
        make_with_babeltrace_O: make LIBBABELTRACE=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
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2018-08-01 21:36 ` Arnaldo Carvalho de Melo
  (?)
@ 2018-08-02  8:03   ` Ingo Molnar
  -1 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-08-02  8:03 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Shishkin, Alexey Budankov, Andi Kleen,
	Christophe Leroy, David Ahern, Don Zickus, Ganapatrao Kulkarni,
	Heiko Carstens, Hendrik Brueckner, Jan Glauber, Jayachandran C,
	Jiri Olsa, Joe Mario, Kan Liang, Kim Phillips, Leo Yan,
	linux-arm-kernel, linuxppc-dev, Mark Rutland, Martin Schwidefsky,
	Mathieu Poirier, Michael Petlan, Mike Leach, Namhyung Kim,
	Naveen N . Rao, Peter Zijlstra, Ravi Bangoria, Robert Richter,
	Robert Walker, rodia, Sandipan Das, Stefan Liebler,
	Sunil K Pandey, Thomas Richter, Vadim Lomovtsev, Wang Nan,
	Will Deacon, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling, contains a recently merged
> tip/perf/urgent,
> 
> - Arnaldo
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:
> 
>   Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)
> 
> 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.19-20180801
> 
> for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:
> 
>   perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> perf trace: (Arnaldo Carvalho de Melo)
> 
> - Do not require --no-syscalls to suppress strace like output, i.e.
> 
>      # perf trace -e sched:*switch
> 
>   will show just sched:sched_switch events, not strace-like formatted
>   syscall events, use --syscalls to get the previous behaviour.
> 
>   If instead:
> 
>      # perf trace
> 
>   is used, i.e. no events specified, then --syscalls is implied and
>   system wide strace like formatting will be applied to all syscalls.
> 
>   The behaviour when just a syscall subset is used with '-e' is unchanged:
> 
>      # perf trace -e *sleep,sched:*switch
> 
>   will work as before: just the 'nanosleep' syscall will be strace-like
>   formatted plus the sched:sched_switch tracepoint event, system wide.
> 
> - Allow string table generators to use a default header dir, allowing
>   use of them without parameters to see the table it generates on
>   stdout, e.g.:
> 
>     $ tools/perf/trace/beauty/kvm_ioctl.sh
>     static const char *kvm_ioctl_cmds[] = {
>         [0x00] = "GET_API_VERSION",
>         [0x01] = "CREATE_VM",
>         [0x02] = "GET_MSR_INDEX_LIST",
>         [0x03] = "CHECK_EXTENSION",
> <BIG SNIP>
>         [0xe0] = "CREATE_DEVICE",
>         [0xe1] = "SET_DEVICE_ATTR",
>         [0xe2] = "GET_DEVICE_ATTR",
>         [0xe3] = "HAS_DEVICE_ATTR",
>     };
>     $
> 
>   See 'ls tools/perf/trace/beauty/*.sh' to see the available string
>   table generators.
> 
> - Add a generator for IPPROTO_ socket's protocol constants.
> 
> perf record: (Kan Liang)
> 
> - Fix error out while applying initial delay and using LBR, due to
>   the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
>   PERF_RECORD_MMAP events while waiting for the initial delay. Such
>   events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
>   perf_event_attr.sample_type.
> 
> perf c2c: (Jiri Olsa)
> 
> - Fix report crash for empty browser, when processing a perf.data file
>   without events of interest, either because not asked for in
>   'perf record' or because the workload didn't triggered such events.
> 
> perf list: (Michael Petlan)
> 
> - Align metric group description format with PMU event description.
> 
> perf tests: (Sandipan Das)
> 
> - Fix indexing when invoking subtests, which caused BPF tests to
>   get results for the next test in the list, with the last one
>   reporting a failure.
> 
> eBPF:
> 
> - Fix installation directory for header files included from eBPF proggies,
>   avoiding clashing with relative paths used to build other software projects
>   such as glibc. (Thomas Richter)
> 
> - Show better message when failing to load an object. (Arnaldo Carvalho de Melo)
> 
> General: (Christophe Leroy)
> 
> - Allow overriding MAX_NR_CPUS at compile time, to make the tooling
>   usable in systems with less memory, in time this has to be changed
>   to properly allocate based on _NPROCESSORS_ONLN.
> 
> Architecture specific:
> 
> - Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)
> 
> - Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
>   modifier isn't present. (Sandipan Das)
> 
> CoreSight ARM hardware tracing: (Leo Yan)
> 
> - Fix start tracing packet handling.
> 
> - Support dummy address value for CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample when receiving a CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample for CS_ETM_TRACE_ON packet.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (9):
>       perf trace beauty: Default header_dir to cwd to work without parms
>       tools include uapi: Grab a copy of linux/in.h
>       perf beauty: Add a generator for IPPROTO_ socket's protocol constants
>       perf trace beauty: Do not print NULL strarray entries
>       perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
>       perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
>       perf bpf: Show better message when failing to load an object
>       perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
>       perf trace: Do not require --no-syscalls to suppress strace like output
> 
> Christophe Leroy (1):
>       perf tools: Allow overriding MAX_NR_CPUS at compile time
> 
> Ganapatrao Kulkarni (1):
>       perf vendor events arm64: Update ThunderX2 implementation defined pmu core events
> 
> Jiri Olsa (1):
>       perf c2c report: Fix crash for empty browser
> 
> Kan Liang (1):
>       perf evlist: Fix error out while applying initial delay and LBR
> 
> Leo Yan (4):
>       perf cs-etm: Fix start tracing packet handling
>       perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet
> 
> Michael Petlan (1):
>       perf list: Unify metric group description format with PMU event description
> 
> Sandipan Das (2):
>       perf tests: Fix complex event name parsing
>       perf tests: Fix indexing when invoking subtests
> 
> Thomas Richter (1):
>       perf build: Fix installation directory for eBPF
> 
>  tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
>  tools/perf/Makefile.config                         |   4 +-
>  tools/perf/Makefile.perf                           |  10 +
>  tools/perf/builtin-c2c.c                           |   3 +
>  tools/perf/builtin-trace.c                         |  19 +-
>  tools/perf/check-headers.sh                        |   1 +
>  tools/perf/include/bpf/bpf.h                       |   3 +
>  tools/perf/perf.h                                  |   2 +
>  .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
>  tools/perf/tests/builtin-test.c                    |   4 +-
>  tools/perf/tests/parse-events.c                    |   2 +-
>  tools/perf/trace/beauty/Build                      |   1 +
>  tools/perf/trace/beauty/beauty.h                   |   3 +
>  tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
>  tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
>  tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
>  tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
>  tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
>  .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
>  tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/socket.c                   |  28 ++
>  tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
>  tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
>  tools/perf/util/bpf-loader.c                       |   4 +-
>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
>  tools/perf/util/cs-etm.c                           |  68 ++++-
>  tools/perf/util/evsel.c                            |  14 +
>  tools/perf/util/metricgroup.c                      |   4 +-
>  29 files changed, 556 insertions(+), 49 deletions(-)
>  create mode 100644 tools/include/uapi/linux/in.h
>  create mode 100644 tools/perf/trace/beauty/socket.c
>  create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-02  8:03   ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-08-02  8:03 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Shishkin, Alexey Budankov, Andi Kleen,
	Christophe Leroy, David Ahern, Don Zickus, Ganapatrao Kulkarni,
	Heiko Carstens, Hendrik Brueckner, Jan Glauber, Jayachandran C,
	Jiri Olsa, Joe Mario, Kan Liang, Kim Phillips, Leo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling, contains a recently merged
> tip/perf/urgent,
> 
> - Arnaldo
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:
> 
>   Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)
> 
> 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.19-20180801
> 
> for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:
> 
>   perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> perf trace: (Arnaldo Carvalho de Melo)
> 
> - Do not require --no-syscalls to suppress strace like output, i.e.
> 
>      # perf trace -e sched:*switch
> 
>   will show just sched:sched_switch events, not strace-like formatted
>   syscall events, use --syscalls to get the previous behaviour.
> 
>   If instead:
> 
>      # perf trace
> 
>   is used, i.e. no events specified, then --syscalls is implied and
>   system wide strace like formatting will be applied to all syscalls.
> 
>   The behaviour when just a syscall subset is used with '-e' is unchanged:
> 
>      # perf trace -e *sleep,sched:*switch
> 
>   will work as before: just the 'nanosleep' syscall will be strace-like
>   formatted plus the sched:sched_switch tracepoint event, system wide.
> 
> - Allow string table generators to use a default header dir, allowing
>   use of them without parameters to see the table it generates on
>   stdout, e.g.:
> 
>     $ tools/perf/trace/beauty/kvm_ioctl.sh
>     static const char *kvm_ioctl_cmds[] = {
>         [0x00] = "GET_API_VERSION",
>         [0x01] = "CREATE_VM",
>         [0x02] = "GET_MSR_INDEX_LIST",
>         [0x03] = "CHECK_EXTENSION",
> <BIG SNIP>
>         [0xe0] = "CREATE_DEVICE",
>         [0xe1] = "SET_DEVICE_ATTR",
>         [0xe2] = "GET_DEVICE_ATTR",
>         [0xe3] = "HAS_DEVICE_ATTR",
>     };
>     $
> 
>   See 'ls tools/perf/trace/beauty/*.sh' to see the available string
>   table generators.
> 
> - Add a generator for IPPROTO_ socket's protocol constants.
> 
> perf record: (Kan Liang)
> 
> - Fix error out while applying initial delay and using LBR, due to
>   the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
>   PERF_RECORD_MMAP events while waiting for the initial delay. Such
>   events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
>   perf_event_attr.sample_type.
> 
> perf c2c: (Jiri Olsa)
> 
> - Fix report crash for empty browser, when processing a perf.data file
>   without events of interest, either because not asked for in
>   'perf record' or because the workload didn't triggered such events.
> 
> perf list: (Michael Petlan)
> 
> - Align metric group description format with PMU event description.
> 
> perf tests: (Sandipan Das)
> 
> - Fix indexing when invoking subtests, which caused BPF tests to
>   get results for the next test in the list, with the last one
>   reporting a failure.
> 
> eBPF:
> 
> - Fix installation directory for header files included from eBPF proggies,
>   avoiding clashing with relative paths used to build other software projects
>   such as glibc. (Thomas Richter)
> 
> - Show better message when failing to load an object. (Arnaldo Carvalho de Melo)
> 
> General: (Christophe Leroy)
> 
> - Allow overriding MAX_NR_CPUS at compile time, to make the tooling
>   usable in systems with less memory, in time this has to be changed
>   to properly allocate based on _NPROCESSORS_ONLN.
> 
> Architecture specific:
> 
> - Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)
> 
> - Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
>   modifier isn't present. (Sandipan Das)
> 
> CoreSight ARM hardware tracing: (Leo Yan)
> 
> - Fix start tracing packet handling.
> 
> - Support dummy address value for CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample when receiving a CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample for CS_ETM_TRACE_ON packet.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (9):
>       perf trace beauty: Default header_dir to cwd to work without parms
>       tools include uapi: Grab a copy of linux/in.h
>       perf beauty: Add a generator for IPPROTO_ socket's protocol constants
>       perf trace beauty: Do not print NULL strarray entries
>       perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
>       perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
>       perf bpf: Show better message when failing to load an object
>       perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
>       perf trace: Do not require --no-syscalls to suppress strace like output
> 
> Christophe Leroy (1):
>       perf tools: Allow overriding MAX_NR_CPUS at compile time
> 
> Ganapatrao Kulkarni (1):
>       perf vendor events arm64: Update ThunderX2 implementation defined pmu core events
> 
> Jiri Olsa (1):
>       perf c2c report: Fix crash for empty browser
> 
> Kan Liang (1):
>       perf evlist: Fix error out while applying initial delay and LBR
> 
> Leo Yan (4):
>       perf cs-etm: Fix start tracing packet handling
>       perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet
> 
> Michael Petlan (1):
>       perf list: Unify metric group description format with PMU event description
> 
> Sandipan Das (2):
>       perf tests: Fix complex event name parsing
>       perf tests: Fix indexing when invoking subtests
> 
> Thomas Richter (1):
>       perf build: Fix installation directory for eBPF
> 
>  tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
>  tools/perf/Makefile.config                         |   4 +-
>  tools/perf/Makefile.perf                           |  10 +
>  tools/perf/builtin-c2c.c                           |   3 +
>  tools/perf/builtin-trace.c                         |  19 +-
>  tools/perf/check-headers.sh                        |   1 +
>  tools/perf/include/bpf/bpf.h                       |   3 +
>  tools/perf/perf.h                                  |   2 +
>  .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
>  tools/perf/tests/builtin-test.c                    |   4 +-
>  tools/perf/tests/parse-events.c                    |   2 +-
>  tools/perf/trace/beauty/Build                      |   1 +
>  tools/perf/trace/beauty/beauty.h                   |   3 +
>  tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
>  tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
>  tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
>  tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
>  tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
>  .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
>  tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/socket.c                   |  28 ++
>  tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
>  tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
>  tools/perf/util/bpf-loader.c                       |   4 +-
>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
>  tools/perf/util/cs-etm.c                           |  68 ++++-
>  tools/perf/util/evsel.c                            |  14 +
>  tools/perf/util/metricgroup.c                      |   4 +-
>  29 files changed, 556 insertions(+), 49 deletions(-)
>  create mode 100644 tools/include/uapi/linux/in.h
>  create mode 100644 tools/perf/trace/beauty/socket.c
>  create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-02  8:03   ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2018-08-02  8:03 UTC (permalink / raw)
  To: linux-arm-kernel


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling, contains a recently merged
> tip/perf/urgent,
> 
> - Arnaldo
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:
> 
>   Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)
> 
> 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.19-20180801
> 
> for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:
> 
>   perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> perf trace: (Arnaldo Carvalho de Melo)
> 
> - Do not require --no-syscalls to suppress strace like output, i.e.
> 
>      # perf trace -e sched:*switch
> 
>   will show just sched:sched_switch events, not strace-like formatted
>   syscall events, use --syscalls to get the previous behaviour.
> 
>   If instead:
> 
>      # perf trace
> 
>   is used, i.e. no events specified, then --syscalls is implied and
>   system wide strace like formatting will be applied to all syscalls.
> 
>   The behaviour when just a syscall subset is used with '-e' is unchanged:
> 
>      # perf trace -e *sleep,sched:*switch
> 
>   will work as before: just the 'nanosleep' syscall will be strace-like
>   formatted plus the sched:sched_switch tracepoint event, system wide.
> 
> - Allow string table generators to use a default header dir, allowing
>   use of them without parameters to see the table it generates on
>   stdout, e.g.:
> 
>     $ tools/perf/trace/beauty/kvm_ioctl.sh
>     static const char *kvm_ioctl_cmds[] = {
>         [0x00] = "GET_API_VERSION",
>         [0x01] = "CREATE_VM",
>         [0x02] = "GET_MSR_INDEX_LIST",
>         [0x03] = "CHECK_EXTENSION",
> <BIG SNIP>
>         [0xe0] = "CREATE_DEVICE",
>         [0xe1] = "SET_DEVICE_ATTR",
>         [0xe2] = "GET_DEVICE_ATTR",
>         [0xe3] = "HAS_DEVICE_ATTR",
>     };
>     $
> 
>   See 'ls tools/perf/trace/beauty/*.sh' to see the available string
>   table generators.
> 
> - Add a generator for IPPROTO_ socket's protocol constants.
> 
> perf record: (Kan Liang)
> 
> - Fix error out while applying initial delay and using LBR, due to
>   the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
>   PERF_RECORD_MMAP events while waiting for the initial delay. Such
>   events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
>   perf_event_attr.sample_type.
> 
> perf c2c: (Jiri Olsa)
> 
> - Fix report crash for empty browser, when processing a perf.data file
>   without events of interest, either because not asked for in
>   'perf record' or because the workload didn't triggered such events.
> 
> perf list: (Michael Petlan)
> 
> - Align metric group description format with PMU event description.
> 
> perf tests: (Sandipan Das)
> 
> - Fix indexing when invoking subtests, which caused BPF tests to
>   get results for the next test in the list, with the last one
>   reporting a failure.
> 
> eBPF:
> 
> - Fix installation directory for header files included from eBPF proggies,
>   avoiding clashing with relative paths used to build other software projects
>   such as glibc. (Thomas Richter)
> 
> - Show better message when failing to load an object. (Arnaldo Carvalho de Melo)
> 
> General: (Christophe Leroy)
> 
> - Allow overriding MAX_NR_CPUS at compile time, to make the tooling
>   usable in systems with less memory, in time this has to be changed
>   to properly allocate based on _NPROCESSORS_ONLN.
> 
> Architecture specific:
> 
> - Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)
> 
> - Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
>   modifier isn't present. (Sandipan Das)
> 
> CoreSight ARM hardware tracing: (Leo Yan)
> 
> - Fix start tracing packet handling.
> 
> - Support dummy address value for CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample when receiving a CS_ETM_TRACE_ON packet.
> 
> - Generate branch sample for CS_ETM_TRACE_ON packet.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (9):
>       perf trace beauty: Default header_dir to cwd to work without parms
>       tools include uapi: Grab a copy of linux/in.h
>       perf beauty: Add a generator for IPPROTO_ socket's protocol constants
>       perf trace beauty: Do not print NULL strarray entries
>       perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
>       perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
>       perf bpf: Show better message when failing to load an object
>       perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
>       perf trace: Do not require --no-syscalls to suppress strace like output
> 
> Christophe Leroy (1):
>       perf tools: Allow overriding MAX_NR_CPUS at compile time
> 
> Ganapatrao Kulkarni (1):
>       perf vendor events arm64: Update ThunderX2 implementation defined pmu core events
> 
> Jiri Olsa (1):
>       perf c2c report: Fix crash for empty browser
> 
> Kan Liang (1):
>       perf evlist: Fix error out while applying initial delay and LBR
> 
> Leo Yan (4):
>       perf cs-etm: Fix start tracing packet handling
>       perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
>       perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet
> 
> Michael Petlan (1):
>       perf list: Unify metric group description format with PMU event description
> 
> Sandipan Das (2):
>       perf tests: Fix complex event name parsing
>       perf tests: Fix indexing when invoking subtests
> 
> Thomas Richter (1):
>       perf build: Fix installation directory for eBPF
> 
>  tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
>  tools/perf/Makefile.config                         |   4 +-
>  tools/perf/Makefile.perf                           |  10 +
>  tools/perf/builtin-c2c.c                           |   3 +
>  tools/perf/builtin-trace.c                         |  19 +-
>  tools/perf/check-headers.sh                        |   1 +
>  tools/perf/include/bpf/bpf.h                       |   3 +
>  tools/perf/perf.h                                  |   2 +
>  .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
>  tools/perf/tests/builtin-test.c                    |   4 +-
>  tools/perf/tests/parse-events.c                    |   2 +-
>  tools/perf/trace/beauty/Build                      |   1 +
>  tools/perf/trace/beauty/beauty.h                   |   3 +
>  tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
>  tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
>  tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
>  tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
>  tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
>  .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
>  tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
>  tools/perf/trace/beauty/socket.c                   |  28 ++
>  tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
>  tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
>  tools/perf/util/bpf-loader.c                       |   4 +-
>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
>  tools/perf/util/cs-etm.c                           |  68 ++++-
>  tools/perf/util/evsel.c                            |  14 +
>  tools/perf/util/metricgroup.c                      |   4 +-
>  29 files changed, 556 insertions(+), 49 deletions(-)
>  create mode 100644 tools/include/uapi/linux/in.h
>  create mode 100644 tools/perf/trace/beauty/socket.c
>  create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-01 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-08-01 21:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Clark Williams, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin,
	Alexey Budankov, Andi Kleen, Christophe Leroy, David Ahern,
	Don Zickus, Ganapatrao Kulkarni, Heiko Carstens,
	Hendrik Brueckner, Jan Glauber, Jayachandran C, Jiri Olsa,
	Joe Mario, Kan Liang, Kim Phillips, Leo Yan, linux-arm-kernel,
	linuxppc-dev, Mark Rutland, Martin Schwidefsky, Mathieu Poirier,
	Michael Petlan, Mike Leach, Namhyung Kim, Naveen N . Rao,
	Peter Zijlstra, Ravi Bangoria, Robert Richter, Robert Walker,
	rodia, Sandipan Das, Stefan Liebler, Sunil K Pandey,
	Thomas Richter, Vadim Lomovtsev, Wang Nan, Will Deacon,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling, contains a recently merged
tip/perf/urgent,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:

  Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)

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.19-20180801

for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:

  perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

perf trace: (Arnaldo Carvalho de Melo)

- Do not require --no-syscalls to suppress strace like output, i.e.

     # perf trace -e sched:*switch

  will show just sched:sched_switch events, not strace-like formatted
  syscall events, use --syscalls to get the previous behaviour.

  If instead:

     # perf trace

  is used, i.e. no events specified, then --syscalls is implied and
  system wide strace like formatting will be applied to all syscalls.

  The behaviour when just a syscall subset is used with '-e' is unchanged:

     # perf trace -e *sleep,sched:*switch

  will work as before: just the 'nanosleep' syscall will be strace-like
  formatted plus the sched:sched_switch tracepoint event, system wide.

- Allow string table generators to use a default header dir, allowing
  use of them without parameters to see the table it generates on
  stdout, e.g.:

    $ tools/perf/trace/beauty/kvm_ioctl.sh
    static const char *kvm_ioctl_cmds[] = {
        [0x00] = "GET_API_VERSION",
        [0x01] = "CREATE_VM",
        [0x02] = "GET_MSR_INDEX_LIST",
        [0x03] = "CHECK_EXTENSION",
<BIG SNIP>
        [0xe0] = "CREATE_DEVICE",
        [0xe1] = "SET_DEVICE_ATTR",
        [0xe2] = "GET_DEVICE_ATTR",
        [0xe3] = "HAS_DEVICE_ATTR",
    };
    $

  See 'ls tools/perf/trace/beauty/*.sh' to see the available string
  table generators.

- Add a generator for IPPROTO_ socket's protocol constants.

perf record: (Kan Liang)

- Fix error out while applying initial delay and using LBR, due to
  the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
  PERF_RECORD_MMAP events while waiting for the initial delay. Such
  events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
  perf_event_attr.sample_type.

perf c2c: (Jiri Olsa)

- Fix report crash for empty browser, when processing a perf.data file
  without events of interest, either because not asked for in
  'perf record' or because the workload didn't triggered such events.

perf list: (Michael Petlan)

- Align metric group description format with PMU event description.

perf tests: (Sandipan Das)

- Fix indexing when invoking subtests, which caused BPF tests to
  get results for the next test in the list, with the last one
  reporting a failure.

eBPF:

- Fix installation directory for header files included from eBPF proggies,
  avoiding clashing with relative paths used to build other software projects
  such as glibc. (Thomas Richter)

- Show better message when failing to load an object. (Arnaldo Carvalho de Melo)

General: (Christophe Leroy)

- Allow overriding MAX_NR_CPUS at compile time, to make the tooling
  usable in systems with less memory, in time this has to be changed
  to properly allocate based on _NPROCESSORS_ONLN.

Architecture specific:

- Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)

- Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
  modifier isn't present. (Sandipan Das)

CoreSight ARM hardware tracing: (Leo Yan)

- Fix start tracing packet handling.

- Support dummy address value for CS_ETM_TRACE_ON packet.

- Generate branch sample when receiving a CS_ETM_TRACE_ON packet.

- Generate branch sample for CS_ETM_TRACE_ON packet.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (9):
      perf trace beauty: Default header_dir to cwd to work without parms
      tools include uapi: Grab a copy of linux/in.h
      perf beauty: Add a generator for IPPROTO_ socket's protocol constants
      perf trace beauty: Do not print NULL strarray entries
      perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
      perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
      perf bpf: Show better message when failing to load an object
      perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
      perf trace: Do not require --no-syscalls to suppress strace like output

Christophe Leroy (1):
      perf tools: Allow overriding MAX_NR_CPUS at compile time

Ganapatrao Kulkarni (1):
      perf vendor events arm64: Update ThunderX2 implementation defined pmu core events

Jiri Olsa (1):
      perf c2c report: Fix crash for empty browser

Kan Liang (1):
      perf evlist: Fix error out while applying initial delay and LBR

Leo Yan (4):
      perf cs-etm: Fix start tracing packet handling
      perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet

Michael Petlan (1):
      perf list: Unify metric group description format with PMU event description

Sandipan Das (2):
      perf tests: Fix complex event name parsing
      perf tests: Fix indexing when invoking subtests

Thomas Richter (1):
      perf build: Fix installation directory for eBPF

 tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
 tools/perf/Makefile.config                         |   4 +-
 tools/perf/Makefile.perf                           |  10 +
 tools/perf/builtin-c2c.c                           |   3 +
 tools/perf/builtin-trace.c                         |  19 +-
 tools/perf/check-headers.sh                        |   1 +
 tools/perf/include/bpf/bpf.h                       |   3 +
 tools/perf/perf.h                                  |   2 +
 .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
 tools/perf/tests/builtin-test.c                    |   4 +-
 tools/perf/tests/parse-events.c                    |   2 +-
 tools/perf/trace/beauty/Build                      |   1 +
 tools/perf/trace/beauty/beauty.h                   |   3 +
 tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
 tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
 tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
 tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
 tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
 .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
 tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/socket.c                   |  28 ++
 tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
 tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
 tools/perf/util/bpf-loader.c                       |   4 +-
 tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
 tools/perf/util/cs-etm.c                           |  68 ++++-
 tools/perf/util/evsel.c                            |  14 +
 tools/perf/util/metricgroup.c                      |   4 +-
 29 files changed, 556 insertions(+), 49 deletions(-)
 create mode 100644 tools/include/uapi/linux/in.h
 create mode 100644 tools/perf/trace/beauty/socket.c
 create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

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, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   7 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   8 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  11 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  12 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  13 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  14 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  15 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  16 debian:experimental           : Ok   gcc (Debian 8.2.0-1) 8.2.0
  17 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  18 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  19 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.3.0-18) 7.3.0
  20 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  21 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  22 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  23 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  25 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  26 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  27 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  28 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  29 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
  30 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180502 (Red Hat 8.1.1-1)
  31 fedora:rawhide                : Ok   gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
  32 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  33 mageia:5                      : Ok   gcc (GCC) 4.9.2
  34 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  35 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  36 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  37 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  38 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  39 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  40 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  41 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  42 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  43 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  44 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  45 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  46 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  47 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  48 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  52 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  53 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  54 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  55 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-1ubuntu2) 8.2.0
  #

  # uname -a
  # Linux seventh 4.17.9-100.fc27.x86_64 #1 SMP Mon Jul 23 22:35:38 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  b912885ab75c (HEAD -> perf/core) perf trace: Do not require --no-syscalls to suppress strace like output
  # perf version --build-options
  perf version 4.18.rc7.g822c262
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # 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: Breakpoint accounting                                 : Ok
  22: Number of exit events of a simple workload            : Ok
  23: Software clock events period values                   : Ok
  24: Object code reading                                   : Ok
  25: Sample parsing                                        : Ok
  26: Use a dummy software event to keep tracking           : Ok
  27: Parse with no sample_id_all bit set                   : Ok
  28: Filter hist entries                                   : Ok
  29: Lookup mmap thread                                    : Ok
  30: Share thread mg                                       : Ok
  31: Sort output of hist entries                           : Ok
  32: Cumulate child hist entries                           : Ok
  33: Track with sched_switch                               : Ok
  34: Filter fds with revents mask in a fdarray             : Ok
  35: Add fd to a fdarray, making it autogrow               : Ok
  36: kmod_path__parse                                      : Ok
  37: Thread map                                            : Ok
  38: LLVM search and compile                               :
  38.1: Basic BPF llvm compile                              : Ok
  38.2: kbuild searching                                    : Ok
  38.3: Compile source for BPF prologue generation          : Ok
  38.4: Compile source for BPF relocation                   : Ok
  39: Session topology                                      : Ok
  40: BPF filter                                            :
  40.1: Basic BPF filtering                                 : Ok
  40.2: BPF pinning                                         : Ok
  40.3: BPF prologue generation                             : Ok
  40.4: BPF relocation checker                              : Ok
  41: Synthesize thread map                                 : Ok
  42: Remove thread map                                     : Ok
  43: Synthesize cpu map                                    : Ok
  44: Synthesize stat config                                : Ok
  45: Synthesize stat                                       : Ok
  46: Synthesize stat round                                 : Ok
  47: Synthesize attr update                                : Ok
  48: Event times                                           : Ok
  49: Read backward ring buffer                             : Ok
  50: Print cpu map                                         : Ok
  51: Probe SDT events                                      : Ok
  52: is_printable_array                                    : Ok
  53: Print bitmap                                          : Ok
  54: perf hooks                                            : Ok
  55: builtin clang support                                 : Skip (not compiled in)
  56: unit_number__scnprintf                                : Ok
  57: mem2node                                              : Ok
  58: x86 rdpmc                                             : Ok
  59: Convert perf time to TSC                              : Ok
  60: DWARF unwind                                          : Ok
  61: x86 instruction decoder - new instructions            : Ok
  62: probe libc's inet_pton & backtrace it with ping       : Ok
  63: Check open filename arg using perf trace + vfs_getname: Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: 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_no_libunwind_O: make NO_LIBUNWIND=1
                make_no_newt_O: make NO_NEWT=1
            make_install_bin_O: make install-bin
         make_install_prefix_O: make install prefix=/tmp/krava
                    make_doc_O: make doc
                 make_perf_o_O: make perf.o
             make_util_map_o_O: make util/map.o
           make_no_libbionic_O: make NO_LIBBIONIC=1
            make_no_demangle_O: make NO_DEMANGLE=1
           make_no_libpython_O: make NO_LIBPYTHON=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
                   make_help_O: make help
               make_no_slang_O: make NO_SLANG=1
             make_no_libperl_O: make NO_LIBPERL=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                 make_static_O: make LDFLAGS=-static
                   make_pure_O: make
                   make_tags_O: make tags
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
              make_no_libelf_O: make NO_LIBELF=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_install_O: make install
         make_with_clangllvm_O: make LIBCLANGLLVM=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
            make_no_libaudit_O: make NO_LIBAUDIT=1
                make_no_gtk2_O: make NO_GTK2=1
             make_no_libnuma_O: make NO_LIBNUMA=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
              make_no_libbpf_O: make NO_LIBBPF=1
              make_clean_all_O: make clean all
           make_no_backtrace_O: make NO_BACKTRACE=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                  make_debug_O: make DEBUG=1
                 make_cscope_O: make cscope
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-01 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-08-01 21:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Clark Williams, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin,
	Alexey Budankov, Andi Kleen, Christophe Leroy, David Ahern,
	Don Zickus, Ganapatrao Kulkarni, Heiko Carstens,
	Hendrik Brueckner, Jan Glauber, Jayachandran C, Jiri Olsa,
	Joe Mario, Kan Liang

Hi Ingo,

	Please consider pulling, contains a recently merged
tip/perf/urgent,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:

  Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)

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.19-20180801

for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:

  perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

perf trace: (Arnaldo Carvalho de Melo)

- Do not require --no-syscalls to suppress strace like output, i.e.

     # perf trace -e sched:*switch

  will show just sched:sched_switch events, not strace-like formatted
  syscall events, use --syscalls to get the previous behaviour.

  If instead:

     # perf trace

  is used, i.e. no events specified, then --syscalls is implied and
  system wide strace like formatting will be applied to all syscalls.

  The behaviour when just a syscall subset is used with '-e' is unchanged:

     # perf trace -e *sleep,sched:*switch

  will work as before: just the 'nanosleep' syscall will be strace-like
  formatted plus the sched:sched_switch tracepoint event, system wide.

- Allow string table generators to use a default header dir, allowing
  use of them without parameters to see the table it generates on
  stdout, e.g.:

    $ tools/perf/trace/beauty/kvm_ioctl.sh
    static const char *kvm_ioctl_cmds[] = {
        [0x00] = "GET_API_VERSION",
        [0x01] = "CREATE_VM",
        [0x02] = "GET_MSR_INDEX_LIST",
        [0x03] = "CHECK_EXTENSION",
<BIG SNIP>
        [0xe0] = "CREATE_DEVICE",
        [0xe1] = "SET_DEVICE_ATTR",
        [0xe2] = "GET_DEVICE_ATTR",
        [0xe3] = "HAS_DEVICE_ATTR",
    };
    $

  See 'ls tools/perf/trace/beauty/*.sh' to see the available string
  table generators.

- Add a generator for IPPROTO_ socket's protocol constants.

perf record: (Kan Liang)

- Fix error out while applying initial delay and using LBR, due to
  the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
  PERF_RECORD_MMAP events while waiting for the initial delay. Such
  events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
  perf_event_attr.sample_type.

perf c2c: (Jiri Olsa)

- Fix report crash for empty browser, when processing a perf.data file
  without events of interest, either because not asked for in
  'perf record' or because the workload didn't triggered such events.

perf list: (Michael Petlan)

- Align metric group description format with PMU event description.

perf tests: (Sandipan Das)

- Fix indexing when invoking subtests, which caused BPF tests to
  get results for the next test in the list, with the last one
  reporting a failure.

eBPF:

- Fix installation directory for header files included from eBPF proggies,
  avoiding clashing with relative paths used to build other software projects
  such as glibc. (Thomas Richter)

- Show better message when failing to load an object. (Arnaldo Carvalho de Melo)

General: (Christophe Leroy)

- Allow overriding MAX_NR_CPUS at compile time, to make the tooling
  usable in systems with less memory, in time this has to be changed
  to properly allocate based on _NPROCESSORS_ONLN.

Architecture specific:

- Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)

- Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
  modifier isn't present. (Sandipan Das)

CoreSight ARM hardware tracing: (Leo Yan)

- Fix start tracing packet handling.

- Support dummy address value for CS_ETM_TRACE_ON packet.

- Generate branch sample when receiving a CS_ETM_TRACE_ON packet.

- Generate branch sample for CS_ETM_TRACE_ON packet.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (9):
      perf trace beauty: Default header_dir to cwd to work without parms
      tools include uapi: Grab a copy of linux/in.h
      perf beauty: Add a generator for IPPROTO_ socket's protocol constants
      perf trace beauty: Do not print NULL strarray entries
      perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
      perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
      perf bpf: Show better message when failing to load an object
      perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
      perf trace: Do not require --no-syscalls to suppress strace like output

Christophe Leroy (1):
      perf tools: Allow overriding MAX_NR_CPUS at compile time

Ganapatrao Kulkarni (1):
      perf vendor events arm64: Update ThunderX2 implementation defined pmu core events

Jiri Olsa (1):
      perf c2c report: Fix crash for empty browser

Kan Liang (1):
      perf evlist: Fix error out while applying initial delay and LBR

Leo Yan (4):
      perf cs-etm: Fix start tracing packet handling
      perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet

Michael Petlan (1):
      perf list: Unify metric group description format with PMU event description

Sandipan Das (2):
      perf tests: Fix complex event name parsing
      perf tests: Fix indexing when invoking subtests

Thomas Richter (1):
      perf build: Fix installation directory for eBPF

 tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
 tools/perf/Makefile.config                         |   4 +-
 tools/perf/Makefile.perf                           |  10 +
 tools/perf/builtin-c2c.c                           |   3 +
 tools/perf/builtin-trace.c                         |  19 +-
 tools/perf/check-headers.sh                        |   1 +
 tools/perf/include/bpf/bpf.h                       |   3 +
 tools/perf/perf.h                                  |   2 +
 .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
 tools/perf/tests/builtin-test.c                    |   4 +-
 tools/perf/tests/parse-events.c                    |   2 +-
 tools/perf/trace/beauty/Build                      |   1 +
 tools/perf/trace/beauty/beauty.h                   |   3 +
 tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
 tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
 tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
 tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
 tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
 .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
 tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/socket.c                   |  28 ++
 tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
 tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
 tools/perf/util/bpf-loader.c                       |   4 +-
 tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
 tools/perf/util/cs-etm.c                           |  68 ++++-
 tools/perf/util/evsel.c                            |  14 +
 tools/perf/util/metricgroup.c                      |   4 +-
 29 files changed, 556 insertions(+), 49 deletions(-)
 create mode 100644 tools/include/uapi/linux/in.h
 create mode 100644 tools/perf/trace/beauty/socket.c
 create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

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, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   7 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   8 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  11 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  12 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  13 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  14 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  15 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  16 debian:experimental           : Ok   gcc (Debian 8.2.0-1) 8.2.0
  17 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  18 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  19 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.3.0-18) 7.3.0
  20 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  21 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  22 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  23 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  25 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  26 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  27 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  28 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  29 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
  30 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180502 (Red Hat 8.1.1-1)
  31 fedora:rawhide                : Ok   gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
  32 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  33 mageia:5                      : Ok   gcc (GCC) 4.9.2
  34 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  35 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  36 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  37 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  38 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  39 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  40 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  41 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  42 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  43 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  44 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  45 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  46 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  47 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  48 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  52 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  53 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  54 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  55 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-1ubuntu2) 8.2.0
  #

  # uname -a
  # Linux seventh 4.17.9-100.fc27.x86_64 #1 SMP Mon Jul 23 22:35:38 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  b912885ab75c (HEAD -> perf/core) perf trace: Do not require --no-syscalls to suppress strace like output
  # perf version --build-options
  perf version 4.18.rc7.g822c262
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # 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: Breakpoint accounting                                 : Ok
  22: Number of exit events of a simple workload            : Ok
  23: Software clock events period values                   : Ok
  24: Object code reading                                   : Ok
  25: Sample parsing                                        : Ok
  26: Use a dummy software event to keep tracking           : Ok
  27: Parse with no sample_id_all bit set                   : Ok
  28: Filter hist entries                                   : Ok
  29: Lookup mmap thread                                    : Ok
  30: Share thread mg                                       : Ok
  31: Sort output of hist entries                           : Ok
  32: Cumulate child hist entries                           : Ok
  33: Track with sched_switch                               : Ok
  34: Filter fds with revents mask in a fdarray             : Ok
  35: Add fd to a fdarray, making it autogrow               : Ok
  36: kmod_path__parse                                      : Ok
  37: Thread map                                            : Ok
  38: LLVM search and compile                               :
  38.1: Basic BPF llvm compile                              : Ok
  38.2: kbuild searching                                    : Ok
  38.3: Compile source for BPF prologue generation          : Ok
  38.4: Compile source for BPF relocation                   : Ok
  39: Session topology                                      : Ok
  40: BPF filter                                            :
  40.1: Basic BPF filtering                                 : Ok
  40.2: BPF pinning                                         : Ok
  40.3: BPF prologue generation                             : Ok
  40.4: BPF relocation checker                              : Ok
  41: Synthesize thread map                                 : Ok
  42: Remove thread map                                     : Ok
  43: Synthesize cpu map                                    : Ok
  44: Synthesize stat config                                : Ok
  45: Synthesize stat                                       : Ok
  46: Synthesize stat round                                 : Ok
  47: Synthesize attr update                                : Ok
  48: Event times                                           : Ok
  49: Read backward ring buffer                             : Ok
  50: Print cpu map                                         : Ok
  51: Probe SDT events                                      : Ok
  52: is_printable_array                                    : Ok
  53: Print bitmap                                          : Ok
  54: perf hooks                                            : Ok
  55: builtin clang support                                 : Skip (not compiled in)
  56: unit_number__scnprintf                                : Ok
  57: mem2node                                              : Ok
  58: x86 rdpmc                                             : Ok
  59: Convert perf time to TSC                              : Ok
  60: DWARF unwind                                          : Ok
  61: x86 instruction decoder - new instructions            : Ok
  62: probe libc's inet_pton & backtrace it with ping       : Ok
  63: Check open filename arg using perf trace + vfs_getname: Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: 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_no_libunwind_O: make NO_LIBUNWIND=1
                make_no_newt_O: make NO_NEWT=1
            make_install_bin_O: make install-bin
         make_install_prefix_O: make install prefix=/tmp/krava
                    make_doc_O: make doc
                 make_perf_o_O: make perf.o
             make_util_map_o_O: make util/map.o
           make_no_libbionic_O: make NO_LIBBIONIC=1
            make_no_demangle_O: make NO_DEMANGLE=1
           make_no_libpython_O: make NO_LIBPYTHON=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
                   make_help_O: make help
               make_no_slang_O: make NO_SLANG=1
             make_no_libperl_O: make NO_LIBPERL=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                 make_static_O: make LDFLAGS=-static
                   make_pure_O: make
                   make_tags_O: make tags
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
              make_no_libelf_O: make NO_LIBELF=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_install_O: make install
         make_with_clangllvm_O: make LIBCLANGLLVM=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
            make_no_libaudit_O: make NO_LIBAUDIT=1
                make_no_gtk2_O: make NO_GTK2=1
             make_no_libnuma_O: make NO_LIBNUMA=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
              make_no_libbpf_O: make NO_LIBBPF=1
              make_clean_all_O: make clean all
           make_no_backtrace_O: make NO_BACKTRACE=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                  make_debug_O: make DEBUG=1
                 make_cscope_O: make cscope
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2018-08-01 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-08-01 21:36 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Ingo,

	Please consider pulling, contains a recently merged
tip/perf/urgent,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit c2586cfbb905939b79b49a9121fb0a59a5668fd6:

  Merge remote-tracking branch 'tip/perf/urgent' into perf/core (2018-07-31 09:55:45 -0300)

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.19-20180801

for you to fetch changes up to b912885ab75c7c8aa841c615108afd755d0b97f8:

  perf trace: Do not require --no-syscalls to suppress strace like output (2018-08-01 16:20:28 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

perf trace: (Arnaldo Carvalho de Melo)

- Do not require --no-syscalls to suppress strace like output, i.e.

     # perf trace -e sched:*switch

  will show just sched:sched_switch events, not strace-like formatted
  syscall events, use --syscalls to get the previous behaviour.

  If instead:

     # perf trace

  is used, i.e. no events specified, then --syscalls is implied and
  system wide strace like formatting will be applied to all syscalls.

  The behaviour when just a syscall subset is used with '-e' is unchanged:

     # perf trace -e *sleep,sched:*switch

  will work as before: just the 'nanosleep' syscall will be strace-like
  formatted plus the sched:sched_switch tracepoint event, system wide.

- Allow string table generators to use a default header dir, allowing
  use of them without parameters to see the table it generates on
  stdout, e.g.:

    $ tools/perf/trace/beauty/kvm_ioctl.sh
    static const char *kvm_ioctl_cmds[] = {
        [0x00] = "GET_API_VERSION",
        [0x01] = "CREATE_VM",
        [0x02] = "GET_MSR_INDEX_LIST",
        [0x03] = "CHECK_EXTENSION",
<BIG SNIP>
        [0xe0] = "CREATE_DEVICE",
        [0xe1] = "SET_DEVICE_ATTR",
        [0xe2] = "GET_DEVICE_ATTR",
        [0xe3] = "HAS_DEVICE_ATTR",
    };
    $

  See 'ls tools/perf/trace/beauty/*.sh' to see the available string
  table generators.

- Add a generator for IPPROTO_ socket's protocol constants.

perf record: (Kan Liang)

- Fix error out while applying initial delay and using LBR, due to
  the use of a PERF_TYPE_SOFTWARE/PERF_COUNT_SW_DUMMY event to track
  PERF_RECORD_MMAP events while waiting for the initial delay. Such
  events fail when configured asking PERF_SAMPLE_BRANCH_STACK in
  perf_event_attr.sample_type.

perf c2c: (Jiri Olsa)

- Fix report crash for empty browser, when processing a perf.data file
  without events of interest, either because not asked for in
  'perf record' or because the workload didn't triggered such events.

perf list: (Michael Petlan)

- Align metric group description format with PMU event description.

perf tests: (Sandipan Das)

- Fix indexing when invoking subtests, which caused BPF tests to
  get results for the next test in the list, with the last one
  reporting a failure.

eBPF:

- Fix installation directory for header files included from eBPF proggies,
  avoiding clashing with relative paths used to build other software projects
  such as glibc. (Thomas Richter)

- Show better message when failing to load an object. (Arnaldo Carvalho de Melo)

General: (Christophe Leroy)

- Allow overriding MAX_NR_CPUS at compile time, to make the tooling
  usable in systems with less memory, in time this has to be changed
  to properly allocate based on _NPROCESSORS_ONLN.

Architecture specific:

- Update arm64's ThunderX2 implementation defined pmu core events (Ganapatrao Kulkarni)

- Fix complex event name parsing in 'perf test' for PowerPC, where the 'umask' event
  modifier isn't present. (Sandipan Das)

CoreSight ARM hardware tracing: (Leo Yan)

- Fix start tracing packet handling.

- Support dummy address value for CS_ETM_TRACE_ON packet.

- Generate branch sample when receiving a CS_ETM_TRACE_ON packet.

- Generate branch sample for CS_ETM_TRACE_ON packet.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (9):
      perf trace beauty: Default header_dir to cwd to work without parms
      tools include uapi: Grab a copy of linux/in.h
      perf beauty: Add a generator for IPPROTO_ socket's protocol constants
      perf trace beauty: Do not print NULL strarray entries
      perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg
      perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args
      perf bpf: Show better message when failing to load an object
      perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h
      perf trace: Do not require --no-syscalls to suppress strace like output

Christophe Leroy (1):
      perf tools: Allow overriding MAX_NR_CPUS at compile time

Ganapatrao Kulkarni (1):
      perf vendor events arm64: Update ThunderX2 implementation defined pmu core events

Jiri Olsa (1):
      perf c2c report: Fix crash for empty browser

Kan Liang (1):
      perf evlist: Fix error out while applying initial delay and LBR

Leo Yan (4):
      perf cs-etm: Fix start tracing packet handling
      perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet
      perf cs-etm: Generate branch sample for CS_ETM_TRACE_ON packet

Michael Petlan (1):
      perf list: Unify metric group description format with PMU event description

Sandipan Das (2):
      perf tests: Fix complex event name parsing
      perf tests: Fix indexing when invoking subtests

Thomas Richter (1):
      perf build: Fix installation directory for eBPF

 tools/include/uapi/linux/in.h                      | 301 +++++++++++++++++++++
 tools/perf/Makefile.config                         |   4 +-
 tools/perf/Makefile.perf                           |  10 +
 tools/perf/builtin-c2c.c                           |   3 +
 tools/perf/builtin-trace.c                         |  19 +-
 tools/perf/check-headers.sh                        |   1 +
 tools/perf/include/bpf/bpf.h                       |   3 +
 tools/perf/perf.h                                  |   2 +
 .../arch/arm64/cavium/thunderx2/core-imp-def.json  |  87 +++++-
 tools/perf/tests/builtin-test.c                    |   4 +-
 tools/perf/tests/parse-events.c                    |   2 +-
 tools/perf/trace/beauty/Build                      |   1 +
 tools/perf/trace/beauty/beauty.h                   |   3 +
 tools/perf/trace/beauty/drm_ioctl.sh               |   9 +-
 tools/perf/trace/beauty/kcmp_type.sh               |   2 +-
 tools/perf/trace/beauty/kvm_ioctl.sh               |   4 +-
 tools/perf/trace/beauty/madvise_behavior.sh        |   2 +-
 tools/perf/trace/beauty/perf_ioctl.sh              |   2 +-
 .../perf/trace/beauty/pkey_alloc_access_rights.sh  |   2 +-
 tools/perf/trace/beauty/sndrv_ctl_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/sndrv_pcm_ioctl.sh         |   4 +-
 tools/perf/trace/beauty/socket.c                   |  28 ++
 tools/perf/trace/beauty/socket_ipproto.sh          |  11 +
 tools/perf/trace/beauty/vhost_virtio_ioctl.sh      |   6 +-
 tools/perf/util/bpf-loader.c                       |   4 +-
 tools/perf/util/cs-etm-decoder/cs-etm-decoder.h    |   1 +
 tools/perf/util/cs-etm.c                           |  68 ++++-
 tools/perf/util/evsel.c                            |  14 +
 tools/perf/util/metricgroup.c                      |   4 +-
 29 files changed, 556 insertions(+), 49 deletions(-)
 create mode 100644 tools/include/uapi/linux/in.h
 create mode 100644 tools/perf/trace/beauty/socket.c
 create mode 100755 tools/perf/trace/beauty/socket_ipproto.sh

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, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.

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 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   gcc (Alpine 5.3.0) 5.3.0
   2 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4 alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0
   5 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   6 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
   7 amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
   8 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  10 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  11 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  12 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
  13 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  14 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  15 debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
  16 debian:experimental           : Ok   gcc (Debian 8.2.0-1) 8.2.0
  17 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  18 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  19 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.3.0-18) 7.3.0
  20 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
  21 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  22 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  23 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  25 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  26 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  27 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  28 fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
  29 fedora:27                     : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
  30 fedora:28                     : Ok   gcc (GCC) 8.1.1 20180502 (Red Hat 8.1.1-1)
  31 fedora:rawhide                : Ok   gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
  32 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
  33 mageia:5                      : Ok   gcc (GCC) 4.9.2
  34 mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0
  35 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  36 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  37 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  38 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
  39 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  40 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
  41 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  42 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  43 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  44 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
  45 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  46 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  47 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  48 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  49 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  50 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  51 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  52 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  53 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
  54 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  55 ubuntu:18.10                  : Ok   gcc (Ubuntu 8.2.0-1ubuntu2) 8.2.0
  #

  # uname -a
  # Linux seventh 4.17.9-100.fc27.x86_64 #1 SMP Mon Jul 23 22:35:38 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  b912885ab75c (HEAD -> perf/core) perf trace: Do not require --no-syscalls to suppress strace like output
  # perf version --build-options
  perf version 4.18.rc7.g822c262
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
  # 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: Breakpoint accounting                                 : Ok
  22: Number of exit events of a simple workload            : Ok
  23: Software clock events period values                   : Ok
  24: Object code reading                                   : Ok
  25: Sample parsing                                        : Ok
  26: Use a dummy software event to keep tracking           : Ok
  27: Parse with no sample_id_all bit set                   : Ok
  28: Filter hist entries                                   : Ok
  29: Lookup mmap thread                                    : Ok
  30: Share thread mg                                       : Ok
  31: Sort output of hist entries                           : Ok
  32: Cumulate child hist entries                           : Ok
  33: Track with sched_switch                               : Ok
  34: Filter fds with revents mask in a fdarray             : Ok
  35: Add fd to a fdarray, making it autogrow               : Ok
  36: kmod_path__parse                                      : Ok
  37: Thread map                                            : Ok
  38: LLVM search and compile                               :
  38.1: Basic BPF llvm compile                              : Ok
  38.2: kbuild searching                                    : Ok
  38.3: Compile source for BPF prologue generation          : Ok
  38.4: Compile source for BPF relocation                   : Ok
  39: Session topology                                      : Ok
  40: BPF filter                                            :
  40.1: Basic BPF filtering                                 : Ok
  40.2: BPF pinning                                         : Ok
  40.3: BPF prologue generation                             : Ok
  40.4: BPF relocation checker                              : Ok
  41: Synthesize thread map                                 : Ok
  42: Remove thread map                                     : Ok
  43: Synthesize cpu map                                    : Ok
  44: Synthesize stat config                                : Ok
  45: Synthesize stat                                       : Ok
  46: Synthesize stat round                                 : Ok
  47: Synthesize attr update                                : Ok
  48: Event times                                           : Ok
  49: Read backward ring buffer                             : Ok
  50: Print cpu map                                         : Ok
  51: Probe SDT events                                      : Ok
  52: is_printable_array                                    : Ok
  53: Print bitmap                                          : Ok
  54: perf hooks                                            : Ok
  55: builtin clang support                                 : Skip (not compiled in)
  56: unit_number__scnprintf                                : Ok
  57: mem2node                                              : Ok
  58: x86 rdpmc                                             : Ok
  59: Convert perf time to TSC                              : Ok
  60: DWARF unwind                                          : Ok
  61: x86 instruction decoder - new instructions            : Ok
  62: probe libc's inet_pton & backtrace it with ping       : Ok
  63: Check open filename arg using perf trace + vfs_getname: Ok
  64: Use vfs_getname probe to get syscall args filenames   : Ok
  65: 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_no_libunwind_O: make NO_LIBUNWIND=1
                make_no_newt_O: make NO_NEWT=1
            make_install_bin_O: make install-bin
         make_install_prefix_O: make install prefix=/tmp/krava
                    make_doc_O: make doc
                 make_perf_o_O: make perf.o
             make_util_map_o_O: make util/map.o
           make_no_libbionic_O: make NO_LIBBIONIC=1
            make_no_demangle_O: make NO_DEMANGLE=1
           make_no_libpython_O: make NO_LIBPYTHON=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
                   make_help_O: make help
               make_no_slang_O: make NO_SLANG=1
             make_no_libperl_O: make NO_LIBPERL=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                 make_static_O: make LDFLAGS=-static
                   make_pure_O: make
                   make_tags_O: make tags
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
              make_no_libelf_O: make NO_LIBELF=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_install_O: make install
         make_with_clangllvm_O: make LIBCLANGLLVM=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
            make_no_libaudit_O: make NO_LIBAUDIT=1
                make_no_gtk2_O: make NO_GTK2=1
             make_no_libnuma_O: make NO_LIBNUMA=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
              make_no_libbpf_O: make NO_LIBBPF=1
              make_clean_all_O: make clean all
           make_no_backtrace_O: make NO_BACKTRACE=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                  make_debug_O: make DEBUG=1
                 make_cscope_O: make cscope
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-05-04 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-05-04 21:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Ananth N Mavinakayanahalli, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Joonsoo Kim, linux-mm, linuxppc-dev, Masami Hiramatsu,
	Michael Ellerman, Minchan Kim, Namhyung Kim, Naveen N . Rao,
	Pekka Enberg, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian, Sukadev Bhattiprolu, Taeung Song,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Besides these 21 patches there are 65 other patches, all present in the
perf-core-for-mingo tag, that I sent a pull request for but had some issues
building on older distros (got reports and fixes for OL6, CentOS6, tested it
all on RHEL6), minor stuff, all noted on the comments just before my
Signed-off-by lines.

	Please consider pulling,

- Arnaldo

The following changes since commit b64aa553d8430aabd24f303899cfa4de678e2c3a:

  perf bench numa: Show more stats of particular threads in verbose mode (2015-05-04 12:43:41 -0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-2

for you to fetch changes up to 0c160d495b5616e071bb4f873812e8f473128149:

  perf kmem: Add kmem.default config option (2015-05-04 13:34:48 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- perf kmem improvements: (Namhyung Kim)

  - Support sort keys on page analysis
  - New --live option
  - Humand readable gfp flags
  - Allow setting the default in perfconfig files

- perf probe --filter improvements (Masami Hiramatsu)

- Improve detection of file/function name in the 'perf probe' pattern (Naveen Rao)

Infrastructure:

- Some more Intel PT prep patches (Adrian Hunter)

- Fix ppc64 ABIv2 symbol decoding (Ananth N Mavinakayanahalli)

Build fixes:

- bison-related build failure on CentOS 6 (Namhyung Kim)

- perf probe fixes for better support powerpc (Naveen Rao)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (3):
      perf evlist: Amend mmap ref counting for the AUX area mmap
      perf script: Always allow fields 'addr' and 'cpu' for auxtrace
      perf report: Add Instruction Tracing support

Ananth N Mavinakayanahalli (1):
      perf probe ppc64le: Fix ppc64 ABIv2 symbol decoding

Masami Hiramatsu (4):
      perf tools: Improve strfilter to append additional rules
      perf tools: Add strfilter__string to recover rules string
      perf probe: Accept multiple filter options
      perf probe: Accept filter argument for --list

Namhyung Kim (6):
      perf tools: Fix bison-related build failure on CentOS 6
      perf kmem: Implement stat --page --caller
      perf kmem: Support sort keys on page analysis
      perf kmem: Add --live option for current allocation stat
      perf kmem: Print gfp flags in human readable string
      perf kmem: Add kmem.default config option

Naveen N. Rao (7):
      perf probe ppc: Fix symbol fixup issues due to ELF type
      perf probe ppc: Use the right prefix when ignoring SyS symbols on ppc
      perf probe ppc: Enable matching against dot symbols automatically
      perf probe ppc64le: Prefer symbol table lookup over DWARF
      perf probe ppc64le: Fixup function entry if using kallsyms lookup
      perf symbols: Warn on build id mismatch
      perf probe: Improve detection of file/function name in the probe pattern

 tools/perf/Documentation/perf-kmem.txt      |  11 +-
 tools/perf/Documentation/perf-probe.txt     |   6 +-
 tools/perf/Documentation/perf-report.txt    |  27 +
 tools/perf/arch/powerpc/util/Build          |   1 +
 tools/perf/arch/powerpc/util/sym-handling.c |  82 +++
 tools/perf/builtin-kmem.c                   | 964 +++++++++++++++++++++++++---
 tools/perf/builtin-probe.c                  |  64 +-
 tools/perf/builtin-report.c                 |  11 +
 tools/perf/builtin-script.c                 |  29 +-
 tools/perf/util/Build                       |   2 +-
 tools/perf/util/evlist.c                    |   2 +-
 tools/perf/util/map.c                       |   5 +
 tools/perf/util/map.h                       |   3 +-
 tools/perf/util/probe-event.c               |  69 +-
 tools/perf/util/probe-event.h               |   5 +-
 tools/perf/util/strfilter.c                 | 107 +++
 tools/perf/util/strfilter.h                 |  35 +
 tools/perf/util/symbol-elf.c                |  13 +-
 tools/perf/util/symbol.c                    |  25 +-
 tools/perf/util/symbol.h                    |  10 +
 20 files changed, 1313 insertions(+), 158 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/util/sym-handling.c

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-05-04 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-05-04 21:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Ananth N Mavinakayanahalli, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Joonsoo Kim, linux-mm, linuxppc-dev, Masami Hiramatsu,
	Michael Ellerman, Minchan Kim, Namhyung Kim, Naveen N . Rao,
	Pekka Enberg, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian, Sukadev Bhattiprolu, Taeung Song,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Besides these 21 patches there are 65 other patches, all present in the
perf-core-for-mingo tag, that I sent a pull request for but had some issues
building on older distros (got reports and fixes for OL6, CentOS6, tested it
all on RHEL6), minor stuff, all noted on the comments just before my
Signed-off-by lines.

	Please consider pulling,

- Arnaldo

The following changes since commit b64aa553d8430aabd24f303899cfa4de678e2c3a:

  perf bench numa: Show more stats of particular threads in verbose mode (2015-05-04 12:43:41 -0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-2

for you to fetch changes up to 0c160d495b5616e071bb4f873812e8f473128149:

  perf kmem: Add kmem.default config option (2015-05-04 13:34:48 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- perf kmem improvements: (Namhyung Kim)

  - Support sort keys on page analysis
  - New --live option
  - Humand readable gfp flags
  - Allow setting the default in perfconfig files

- perf probe --filter improvements (Masami Hiramatsu)

- Improve detection of file/function name in the 'perf probe' pattern (Naveen Rao)

Infrastructure:

- Some more Intel PT prep patches (Adrian Hunter)

- Fix ppc64 ABIv2 symbol decoding (Ananth N Mavinakayanahalli)

Build fixes:

- bison-related build failure on CentOS 6 (Namhyung Kim)

- perf probe fixes for better support powerpc (Naveen Rao)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (3):
      perf evlist: Amend mmap ref counting for the AUX area mmap
      perf script: Always allow fields 'addr' and 'cpu' for auxtrace
      perf report: Add Instruction Tracing support

Ananth N Mavinakayanahalli (1):
      perf probe ppc64le: Fix ppc64 ABIv2 symbol decoding

Masami Hiramatsu (4):
      perf tools: Improve strfilter to append additional rules
      perf tools: Add strfilter__string to recover rules string
      perf probe: Accept multiple filter options
      perf probe: Accept filter argument for --list

Namhyung Kim (6):
      perf tools: Fix bison-related build failure on CentOS 6
      perf kmem: Implement stat --page --caller
      perf kmem: Support sort keys on page analysis
      perf kmem: Add --live option for current allocation stat
      perf kmem: Print gfp flags in human readable string
      perf kmem: Add kmem.default config option

Naveen N. Rao (7):
      perf probe ppc: Fix symbol fixup issues due to ELF type
      perf probe ppc: Use the right prefix when ignoring SyS symbols on ppc
      perf probe ppc: Enable matching against dot symbols automatically
      perf probe ppc64le: Prefer symbol table lookup over DWARF
      perf probe ppc64le: Fixup function entry if using kallsyms lookup
      perf symbols: Warn on build id mismatch
      perf probe: Improve detection of file/function name in the probe pattern

 tools/perf/Documentation/perf-kmem.txt      |  11 +-
 tools/perf/Documentation/perf-probe.txt     |   6 +-
 tools/perf/Documentation/perf-report.txt    |  27 +
 tools/perf/arch/powerpc/util/Build          |   1 +
 tools/perf/arch/powerpc/util/sym-handling.c |  82 +++
 tools/perf/builtin-kmem.c                   | 964 +++++++++++++++++++++++++---
 tools/perf/builtin-probe.c                  |  64 +-
 tools/perf/builtin-report.c                 |  11 +
 tools/perf/builtin-script.c                 |  29 +-
 tools/perf/util/Build                       |   2 +-
 tools/perf/util/evlist.c                    |   2 +-
 tools/perf/util/map.c                       |   5 +
 tools/perf/util/map.h                       |   3 +-
 tools/perf/util/probe-event.c               |  69 +-
 tools/perf/util/probe-event.h               |   5 +-
 tools/perf/util/strfilter.c                 | 107 +++
 tools/perf/util/strfilter.h                 |  35 +
 tools/perf/util/symbol-elf.c                |  13 +-
 tools/perf/util/symbol.c                    |  25 +-
 tools/perf/util/symbol.h                    |  10 +
 20 files changed, 1313 insertions(+), 158 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/util/sym-handling.c

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-05-04 21:36 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-05-04 21:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Srikar Dronamraju, Peter Zijlstra, Frederic Weisbecker,
	Stephane Eranian, Adrian Hunter, linux-mm, Masami Hiramatsu,
	Jiri Olsa, Joonsoo Kim, Naveen N . Rao, Sukadev Bhattiprolu,
	Arnaldo Carvalho de Melo, Arnaldo Carvalho de Melo, Namhyung Kim,
	linux-kernel, Pekka Enberg, Minchan Kim, Taeung Song,
	David Ahern, linuxppc-dev

Hi Ingo,

	Besides these 21 patches there are 65 other patches, all present in the
perf-core-for-mingo tag, that I sent a pull request for but had some issues
building on older distros (got reports and fixes for OL6, CentOS6, tested it
all on RHEL6), minor stuff, all noted on the comments just before my
Signed-off-by lines.

	Please consider pulling,

- Arnaldo

The following changes since commit b64aa553d8430aabd24f303899cfa4de678e2c3a:

  perf bench numa: Show more stats of particular threads in verbose mode (2015-05-04 12:43:41 -0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-2

for you to fetch changes up to 0c160d495b5616e071bb4f873812e8f473128149:

  perf kmem: Add kmem.default config option (2015-05-04 13:34:48 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- perf kmem improvements: (Namhyung Kim)

  - Support sort keys on page analysis
  - New --live option
  - Humand readable gfp flags
  - Allow setting the default in perfconfig files

- perf probe --filter improvements (Masami Hiramatsu)

- Improve detection of file/function name in the 'perf probe' pattern (Naveen Rao)

Infrastructure:

- Some more Intel PT prep patches (Adrian Hunter)

- Fix ppc64 ABIv2 symbol decoding (Ananth N Mavinakayanahalli)

Build fixes:

- bison-related build failure on CentOS 6 (Namhyung Kim)

- perf probe fixes for better support powerpc (Naveen Rao)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (3):
      perf evlist: Amend mmap ref counting for the AUX area mmap
      perf script: Always allow fields 'addr' and 'cpu' for auxtrace
      perf report: Add Instruction Tracing support

Ananth N Mavinakayanahalli (1):
      perf probe ppc64le: Fix ppc64 ABIv2 symbol decoding

Masami Hiramatsu (4):
      perf tools: Improve strfilter to append additional rules
      perf tools: Add strfilter__string to recover rules string
      perf probe: Accept multiple filter options
      perf probe: Accept filter argument for --list

Namhyung Kim (6):
      perf tools: Fix bison-related build failure on CentOS 6
      perf kmem: Implement stat --page --caller
      perf kmem: Support sort keys on page analysis
      perf kmem: Add --live option for current allocation stat
      perf kmem: Print gfp flags in human readable string
      perf kmem: Add kmem.default config option

Naveen N. Rao (7):
      perf probe ppc: Fix symbol fixup issues due to ELF type
      perf probe ppc: Use the right prefix when ignoring SyS symbols on ppc
      perf probe ppc: Enable matching against dot symbols automatically
      perf probe ppc64le: Prefer symbol table lookup over DWARF
      perf probe ppc64le: Fixup function entry if using kallsyms lookup
      perf symbols: Warn on build id mismatch
      perf probe: Improve detection of file/function name in the probe pattern

 tools/perf/Documentation/perf-kmem.txt      |  11 +-
 tools/perf/Documentation/perf-probe.txt     |   6 +-
 tools/perf/Documentation/perf-report.txt    |  27 +
 tools/perf/arch/powerpc/util/Build          |   1 +
 tools/perf/arch/powerpc/util/sym-handling.c |  82 +++
 tools/perf/builtin-kmem.c                   | 964 +++++++++++++++++++++++++---
 tools/perf/builtin-probe.c                  |  64 +-
 tools/perf/builtin-report.c                 |  11 +
 tools/perf/builtin-script.c                 |  29 +-
 tools/perf/util/Build                       |   2 +-
 tools/perf/util/evlist.c                    |   2 +-
 tools/perf/util/map.c                       |   5 +
 tools/perf/util/map.h                       |   3 +-
 tools/perf/util/probe-event.c               |  69 +-
 tools/perf/util/probe-event.h               |   5 +-
 tools/perf/util/strfilter.c                 | 107 +++
 tools/perf/util/strfilter.h                 |  35 +
 tools/perf/util/symbol-elf.c                |  13 +-
 tools/perf/util/symbol.c                    |  25 +-
 tools/perf/util/symbol.h                    |  10 +
 20 files changed, 1313 insertions(+), 158 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/util/sym-handling.c

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2015-03-05  6:37     ` Ingo Molnar
@ 2015-03-05  6:49       ` Victor Kamensky
  -1 siblings, 0 replies; 81+ messages in thread
From: Victor Kamensky @ 2015-03-05  6:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, David Ahern, open list, Adrian Hunter,
	Andrew Morton, Anton Blanchard, Avi Kivity, Borislav Petkov,
	Dave Martin, Don Zickus, Frederic Weisbecker, Hemant Kumar,
	Jiri Olsa, Josh Boyer, linux-arm-kernel, Masami Hiramatsu,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Peter Zijlstra, Russell King, Stephane Eranian, Steven Rostedt,
	Vineet Gupta, Vinson Lee, Waiman Long, Will Deacon,
	Arnaldo Carvalho de Melo

On 4 March 2015 at 22:37, Ingo Molnar <mingo@kernel.org> wrote:
>
> * Victor Kamensky <victor.kamensky@linaro.org> wrote:
>
>> Hi Arnaldo, Ingo,
>>
>> What happened with this pull request? [...]
>
> This pull request was for v4.1, and I merged it in:

Ok, I got it. Sorry I missed that before.

> commit 8a26ce4e544659256349551283414df504889a59
> Merge: acba3c7e4652 726f3234dd12
> Author: Ingo Molnar <mingo@kernel.org>
> Date:   Wed Feb 18 19:14:54 2015 +0100
>
>     Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
>
>     Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
>
>     User visible changes:
>
>> [...] I already see in v4.0-rc2 changes additions to one requested
>> by this pull request, but I don't see this series itself.
>>
>> For example e370a3d57664cd5e39c0b95d157ebc841b568409
>> "perf symbols: Define EM_AARCH64 for older OSes" by David
>> is already in v4.0-rc2 and it is supposed to be addition to
>> "perf symbols: Ignore mapping symbols on aarch64" that is part
>> of this pull request but it did not make into v4.0-rcX yet. Looks
>> quite strange.
>
> If some commits of the v4.1 queue are needed in v4.0 as well then they
> should be cherry-picked back into the urgent queue.
>
> But maybe e370a3d57 was merged prematurely - in that case it appears
> to be harmless and v4.1 will sort it out.

Yes, this merge is harmless. Indeed it should be OK with v4.1.

Thanks for explanation.

- Victor

> Arnaldo?
>
> Thanks,
>
>         Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-03-05  6:49       ` Victor Kamensky
  0 siblings, 0 replies; 81+ messages in thread
From: Victor Kamensky @ 2015-03-05  6:49 UTC (permalink / raw)
  To: linux-arm-kernel

On 4 March 2015 at 22:37, Ingo Molnar <mingo@kernel.org> wrote:
>
> * Victor Kamensky <victor.kamensky@linaro.org> wrote:
>
>> Hi Arnaldo, Ingo,
>>
>> What happened with this pull request? [...]
>
> This pull request was for v4.1, and I merged it in:

Ok, I got it. Sorry I missed that before.

> commit 8a26ce4e544659256349551283414df504889a59
> Merge: acba3c7e4652 726f3234dd12
> Author: Ingo Molnar <mingo@kernel.org>
> Date:   Wed Feb 18 19:14:54 2015 +0100
>
>     Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
>
>     Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
>
>     User visible changes:
>
>> [...] I already see in v4.0-rc2 changes additions to one requested
>> by this pull request, but I don't see this series itself.
>>
>> For example e370a3d57664cd5e39c0b95d157ebc841b568409
>> "perf symbols: Define EM_AARCH64 for older OSes" by David
>> is already in v4.0-rc2 and it is supposed to be addition to
>> "perf symbols: Ignore mapping symbols on aarch64" that is part
>> of this pull request but it did not make into v4.0-rcX yet. Looks
>> quite strange.
>
> If some commits of the v4.1 queue are needed in v4.0 as well then they
> should be cherry-picked back into the urgent queue.
>
> But maybe e370a3d57 was merged prematurely - in that case it appears
> to be harmless and v4.1 will sort it out.

Yes, this merge is harmless. Indeed it should be OK with v4.1.

Thanks for explanation.

- Victor

> Arnaldo?
>
> Thanks,
>
>         Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2015-03-05  4:30   ` Victor Kamensky
@ 2015-03-05  6:37     ` Ingo Molnar
  -1 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2015-03-05  6:37 UTC (permalink / raw)
  To: Victor Kamensky
  Cc: Arnaldo Carvalho de Melo, David Ahern, open list, Adrian Hunter,
	Andrew Morton, Anton Blanchard, Avi Kivity, Borislav Petkov,
	Dave Martin, Don Zickus, Frederic Weisbecker, Hemant Kumar,
	Jiri Olsa, Josh Boyer, linux-arm-kernel, Masami Hiramatsu,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Peter Zijlstra, Russell King, Stephane Eranian, Steven Rostedt,
	Vineet Gupta, Vinson Lee, Waiman Long, Will Deacon,
	Arnaldo Carvalho de Melo


* Victor Kamensky <victor.kamensky@linaro.org> wrote:

> Hi Arnaldo, Ingo,
> 
> What happened with this pull request? [...]

This pull request was for v4.1, and I merged it in:

commit 8a26ce4e544659256349551283414df504889a59
Merge: acba3c7e4652 726f3234dd12
Author: Ingo Molnar <mingo@kernel.org>
Date:   Wed Feb 18 19:14:54 2015 +0100

    Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
    
    Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
    
    User visible changes:

> [...] I already see in v4.0-rc2 changes additions to one requested 
> by this pull request, but I don't see this series itself.
> 
> For example e370a3d57664cd5e39c0b95d157ebc841b568409
> "perf symbols: Define EM_AARCH64 for older OSes" by David
> is already in v4.0-rc2 and it is supposed to be addition to
> "perf symbols: Ignore mapping symbols on aarch64" that is part
> of this pull request but it did not make into v4.0-rcX yet. Looks
> quite strange.

If some commits of the v4.1 queue are needed in v4.0 as well then they 
should be cherry-picked back into the urgent queue.

But maybe e370a3d57 was merged prematurely - in that case it appears 
to be harmless and v4.1 will sort it out.

Arnaldo?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-03-05  6:37     ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2015-03-05  6:37 UTC (permalink / raw)
  To: linux-arm-kernel


* Victor Kamensky <victor.kamensky@linaro.org> wrote:

> Hi Arnaldo, Ingo,
> 
> What happened with this pull request? [...]

This pull request was for v4.1, and I merged it in:

commit 8a26ce4e544659256349551283414df504889a59
Merge: acba3c7e4652 726f3234dd12
Author: Ingo Molnar <mingo@kernel.org>
Date:   Wed Feb 18 19:14:54 2015 +0100

    Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
    
    Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
    
    User visible changes:

> [...] I already see in v4.0-rc2 changes additions to one requested 
> by this pull request, but I don't see this series itself.
> 
> For example e370a3d57664cd5e39c0b95d157ebc841b568409
> "perf symbols: Define EM_AARCH64 for older OSes" by David
> is already in v4.0-rc2 and it is supposed to be addition to
> "perf symbols: Ignore mapping symbols on aarch64" that is part
> of this pull request but it did not make into v4.0-rcX yet. Looks
> quite strange.

If some commits of the v4.1 queue are needed in v4.0 as well then they 
should be cherry-picked back into the urgent queue.

But maybe e370a3d57 was merged prematurely - in that case it appears 
to be harmless and v4.1 will sort it out.

Arnaldo?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2015-02-11 21:08 ` Arnaldo Carvalho de Melo
@ 2015-03-05  4:30   ` Victor Kamensky
  -1 siblings, 0 replies; 81+ messages in thread
From: Victor Kamensky @ 2015-03-05  4:30 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ingo Molnar, David Ahern
  Cc: open list, Adrian Hunter, Andrew Morton, Anton Blanchard,
	Avi Kivity, Borislav Petkov, Dave Martin, Don Zickus,
	Frederic Weisbecker, Hemant Kumar, Jiri Olsa, Josh Boyer,
	linux-arm-kernel, Masami Hiramatsu, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Peter Zijlstra, Russell King,
	Stephane Eranian, Steven Rostedt, Vineet Gupta, Vinson Lee,
	Waiman Long, Will Deacon, Arnaldo Carvalho de Melo

Hi Arnaldo, Ingo,

What happened with this pull request? I already
see in v4.0-rc2 changes additions to one requested
by this pull request, but I don't see this series itself.

For example e370a3d57664cd5e39c0b95d157ebc841b568409
"perf symbols: Define EM_AARCH64 for older OSes" by David
is already in v4.0-rc2 and it is supposed to be addition to
"perf symbols: Ignore mapping symbols on aarch64" that is part
of this pull request but it did not make into v4.0-rcX yet. Looks
quite strange.

Thanks,
Victor

On 11 February 2015 at 13:08, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
>         Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 2fde4f94e0a9531251e706fa57131b51b0df042e:
>
>   perf: Decouple unthrottling and rotating (2015-02-04 08:07:16 +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
>
> for you to fetch changes up to 39f5704399042fff5f0d5f6af32bbbc3e787a897:
>
>   perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check (2015-02-11 17:38:55 -0300)
>
> ----------------------------------------------------------------
> perf/core improvement and fixes:
>
> User visible:
>
> - No need to explicitely enable evsels for workload started from perf, let it
>   be enabled via perf_event_attr.enable_on_exec, removing some events that take
>   place in the 'perf trace' before a workload is really started by it.
>   (Arnaldo Carvalho de Melo)
>
> - Fix to handle optimized not-inlined functions in 'perf probe' (Masami Hiramatsu)
>
> - Update 'perf probe' man page (Masami Hiramatsu)
>
> Infrastructure:
>
> Arnaldo Carvalho de Melo (4):
> - Introduce {trace_seq_do,event_format_}_fprintf functions to allow
>   a default tracepoint field list printer to be used in tools that allows
>   redirecting output to a file. (Arnaldo Carvalho de Melo)
>
> - The man page for pthread_attr_set_affinity_np states that _GNU_SOURCE
>   must be defined before pthread.h, do it to fix the build in some
>   systems (Josh Boyer)
>
> - Cleanups in 'perf buildid-cache' (Masami Hiramatsu)
>
> - Fix dso cache test case (Namhyung Kim)
>
> - Do Not rely on dso__data_read_offset() to open DSO (Namhyung Kim)
>
> - Make perf aware of tracefs (Steven Rostedt).
>
> - Fix build by defining STT_GNU_IFUNC for glibc 2.9 and older (Vinson Lee)
>
> - AArch64 symbol resolution fixes (Victor Kamensky)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (4):
>       tools lib traceevent: Introduce trace_seq_do_fprintf function
>       perf tools: Introduce event_format__fprintf method
>       perf trace: No need to enable evsels for workload started from perf
>       perf evlist: Fix typo in comment
>
> Josh Boyer (1):
>       perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check
>
> Masami Hiramatsu (4):
>       perf probe: Fix to handle optimized not-inlined functions
>       perf probe: Update man page
>       perf buildid-cache: Remove unneeded debugdir parameters
>       perf buildid-cache: Consolidate .build-id cache path generators
>
> Namhyung Kim (3):
>       perf test: Fix dso cache testcase
>       perf tests: Do not rely on dso__data_read_offset() to open dso
>       perf tools: Fix a dso open fail message
>
> Steven Rostedt (Red Hat) (6):
>       perf tools: Do not check debugfs MAGIC for tracing files
>       tools lib fs: Add helper to find mounted file systems
>       tools lib api fs: Add tracefs mount helper functions
>       tools lib api debugfs: Add DEBUGFS_DEFAULT_PATH macro
>       tools lib api fs: Add {tracefs,debugfs}_configured() functions
>       perf tools: Make perf aware of tracefs
>
> Victor Kamensky (2):
>       perf symbols: Ignore mapping symbols on aarch64
>       perf symbols: debuglink should take symfs option into account
>
> Vinson Lee (1):
>       perf symbols: Define STT_GNU_IFUNC for glibc 2.9 and older.
>
>  tools/lib/api/Makefile                    |  4 ++
>  tools/lib/api/fs/debugfs.c                | 69 +++++++---------------
>  tools/lib/api/fs/debugfs.h                | 13 +----
>  tools/lib/api/fs/findfs.c                 | 63 ++++++++++++++++++++
>  tools/lib/api/fs/findfs.h                 | 23 ++++++++
>  tools/lib/api/fs/tracefs.c                | 78 +++++++++++++++++++++++++
>  tools/lib/api/fs/tracefs.h                | 21 +++++++
>  tools/lib/traceevent/event-parse.h        |  2 +
>  tools/lib/traceevent/trace-seq.c          | 13 +++--
>  tools/perf/Documentation/perf-probe.txt   | 16 +++++-
>  tools/perf/builtin-buildid-cache.c        | 37 ++++++------
>  tools/perf/builtin-trace.c                |  4 +-
>  tools/perf/config/feature-checks/Makefile |  2 +-
>  tools/perf/tests/dso-data.c               | 22 ++++---
>  tools/perf/tests/open-syscall-all-cpus.c  |  7 ++-
>  tools/perf/tests/open-syscall.c           |  7 ++-
>  tools/perf/tests/parse-events.c           | 13 ++++-
>  tools/perf/util/build-id.c                | 96 +++++++++++++++++++------------
>  tools/perf/util/build-id.h                |  4 +-
>  tools/perf/util/cache.h                   |  1 +
>  tools/perf/util/dso.c                     |  8 +--
>  tools/perf/util/dwarf-aux.c               | 15 +++++
>  tools/perf/util/dwarf-aux.h               |  3 +
>  tools/perf/util/evlist.c                  |  3 +-
>  tools/perf/util/parse-events.c            | 19 ------
>  tools/perf/util/parse-events.h            |  2 +-
>  tools/perf/util/probe-event.c             | 24 +++++---
>  tools/perf/util/probe-finder.c            | 12 ++--
>  tools/perf/util/symbol-elf.c              | 11 ++--
>  tools/perf/util/trace-event-parse.c       | 12 +++-
>  tools/perf/util/trace-event.h             |  3 +
>  tools/perf/util/util.c                    | 60 +++++++++++++++----
>  tools/perf/util/util.h                    |  1 +
>  33 files changed, 468 insertions(+), 200 deletions(-)
>  create mode 100644 tools/lib/api/fs/findfs.c
>  create mode 100644 tools/lib/api/fs/findfs.h
>  create mode 100644 tools/lib/api/fs/tracefs.c
>  create mode 100644 tools/lib/api/fs/tracefs.h

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-03-05  4:30   ` Victor Kamensky
  0 siblings, 0 replies; 81+ messages in thread
From: Victor Kamensky @ 2015-03-05  4:30 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Arnaldo, Ingo,

What happened with this pull request? I already
see in v4.0-rc2 changes additions to one requested
by this pull request, but I don't see this series itself.

For example e370a3d57664cd5e39c0b95d157ebc841b568409
"perf symbols: Define EM_AARCH64 for older OSes" by David
is already in v4.0-rc2 and it is supposed to be addition to
"perf symbols: Ignore mapping symbols on aarch64" that is part
of this pull request but it did not make into v4.0-rcX yet. Looks
quite strange.

Thanks,
Victor

On 11 February 2015 at 13:08, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
>         Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 2fde4f94e0a9531251e706fa57131b51b0df042e:
>
>   perf: Decouple unthrottling and rotating (2015-02-04 08:07:16 +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
>
> for you to fetch changes up to 39f5704399042fff5f0d5f6af32bbbc3e787a897:
>
>   perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check (2015-02-11 17:38:55 -0300)
>
> ----------------------------------------------------------------
> perf/core improvement and fixes:
>
> User visible:
>
> - No need to explicitely enable evsels for workload started from perf, let it
>   be enabled via perf_event_attr.enable_on_exec, removing some events that take
>   place in the 'perf trace' before a workload is really started by it.
>   (Arnaldo Carvalho de Melo)
>
> - Fix to handle optimized not-inlined functions in 'perf probe' (Masami Hiramatsu)
>
> - Update 'perf probe' man page (Masami Hiramatsu)
>
> Infrastructure:
>
> Arnaldo Carvalho de Melo (4):
> - Introduce {trace_seq_do,event_format_}_fprintf functions to allow
>   a default tracepoint field list printer to be used in tools that allows
>   redirecting output to a file. (Arnaldo Carvalho de Melo)
>
> - The man page for pthread_attr_set_affinity_np states that _GNU_SOURCE
>   must be defined before pthread.h, do it to fix the build in some
>   systems (Josh Boyer)
>
> - Cleanups in 'perf buildid-cache' (Masami Hiramatsu)
>
> - Fix dso cache test case (Namhyung Kim)
>
> - Do Not rely on dso__data_read_offset() to open DSO (Namhyung Kim)
>
> - Make perf aware of tracefs (Steven Rostedt).
>
> - Fix build by defining STT_GNU_IFUNC for glibc 2.9 and older (Vinson Lee)
>
> - AArch64 symbol resolution fixes (Victor Kamensky)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (4):
>       tools lib traceevent: Introduce trace_seq_do_fprintf function
>       perf tools: Introduce event_format__fprintf method
>       perf trace: No need to enable evsels for workload started from perf
>       perf evlist: Fix typo in comment
>
> Josh Boyer (1):
>       perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check
>
> Masami Hiramatsu (4):
>       perf probe: Fix to handle optimized not-inlined functions
>       perf probe: Update man page
>       perf buildid-cache: Remove unneeded debugdir parameters
>       perf buildid-cache: Consolidate .build-id cache path generators
>
> Namhyung Kim (3):
>       perf test: Fix dso cache testcase
>       perf tests: Do not rely on dso__data_read_offset() to open dso
>       perf tools: Fix a dso open fail message
>
> Steven Rostedt (Red Hat) (6):
>       perf tools: Do not check debugfs MAGIC for tracing files
>       tools lib fs: Add helper to find mounted file systems
>       tools lib api fs: Add tracefs mount helper functions
>       tools lib api debugfs: Add DEBUGFS_DEFAULT_PATH macro
>       tools lib api fs: Add {tracefs,debugfs}_configured() functions
>       perf tools: Make perf aware of tracefs
>
> Victor Kamensky (2):
>       perf symbols: Ignore mapping symbols on aarch64
>       perf symbols: debuglink should take symfs option into account
>
> Vinson Lee (1):
>       perf symbols: Define STT_GNU_IFUNC for glibc 2.9 and older.
>
>  tools/lib/api/Makefile                    |  4 ++
>  tools/lib/api/fs/debugfs.c                | 69 +++++++---------------
>  tools/lib/api/fs/debugfs.h                | 13 +----
>  tools/lib/api/fs/findfs.c                 | 63 ++++++++++++++++++++
>  tools/lib/api/fs/findfs.h                 | 23 ++++++++
>  tools/lib/api/fs/tracefs.c                | 78 +++++++++++++++++++++++++
>  tools/lib/api/fs/tracefs.h                | 21 +++++++
>  tools/lib/traceevent/event-parse.h        |  2 +
>  tools/lib/traceevent/trace-seq.c          | 13 +++--
>  tools/perf/Documentation/perf-probe.txt   | 16 +++++-
>  tools/perf/builtin-buildid-cache.c        | 37 ++++++------
>  tools/perf/builtin-trace.c                |  4 +-
>  tools/perf/config/feature-checks/Makefile |  2 +-
>  tools/perf/tests/dso-data.c               | 22 ++++---
>  tools/perf/tests/open-syscall-all-cpus.c  |  7 ++-
>  tools/perf/tests/open-syscall.c           |  7 ++-
>  tools/perf/tests/parse-events.c           | 13 ++++-
>  tools/perf/util/build-id.c                | 96 +++++++++++++++++++------------
>  tools/perf/util/build-id.h                |  4 +-
>  tools/perf/util/cache.h                   |  1 +
>  tools/perf/util/dso.c                     |  8 +--
>  tools/perf/util/dwarf-aux.c               | 15 +++++
>  tools/perf/util/dwarf-aux.h               |  3 +
>  tools/perf/util/evlist.c                  |  3 +-
>  tools/perf/util/parse-events.c            | 19 ------
>  tools/perf/util/parse-events.h            |  2 +-
>  tools/perf/util/probe-event.c             | 24 +++++---
>  tools/perf/util/probe-finder.c            | 12 ++--
>  tools/perf/util/symbol-elf.c              | 11 ++--
>  tools/perf/util/trace-event-parse.c       | 12 +++-
>  tools/perf/util/trace-event.h             |  3 +
>  tools/perf/util/util.c                    | 60 +++++++++++++++----
>  tools/perf/util/util.h                    |  1 +
>  33 files changed, 468 insertions(+), 200 deletions(-)
>  create mode 100644 tools/lib/api/fs/findfs.c
>  create mode 100644 tools/lib/api/fs/findfs.h
>  create mode 100644 tools/lib/api/fs/tracefs.c
>  create mode 100644 tools/lib/api/fs/tracefs.h

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-02-11 21:08 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-02-11 21:08 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andrew Morton, Anton Blanchard, Avi Kivity, Borislav Petkov,
	Dave Martin, David Ahern, Don Zickus, Frederic Weisbecker,
	Hemant Kumar, Jiri Olsa, Josh Boyer, linux-arm-kernel,
	Masami Hiramatsu, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Peter Zijlstra, Russell King, Stephane Eranian,
	Steven Rostedt, Victor Kamensky, Vineet Gupta, Vinson Lee,
	Waiman Long, Will Deacon, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 2fde4f94e0a9531251e706fa57131b51b0df042e:

  perf: Decouple unthrottling and rotating (2015-02-04 08:07:16 +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

for you to fetch changes up to 39f5704399042fff5f0d5f6af32bbbc3e787a897:

  perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check (2015-02-11 17:38:55 -0300)

----------------------------------------------------------------
perf/core improvement and fixes:

User visible:

- No need to explicitely enable evsels for workload started from perf, let it
  be enabled via perf_event_attr.enable_on_exec, removing some events that take
  place in the 'perf trace' before a workload is really started by it.
  (Arnaldo Carvalho de Melo)

- Fix to handle optimized not-inlined functions in 'perf probe' (Masami Hiramatsu)

- Update 'perf probe' man page (Masami Hiramatsu)

Infrastructure:

Arnaldo Carvalho de Melo (4):
- Introduce {trace_seq_do,event_format_}_fprintf functions to allow
  a default tracepoint field list printer to be used in tools that allows
  redirecting output to a file. (Arnaldo Carvalho de Melo)

- The man page for pthread_attr_set_affinity_np states that _GNU_SOURCE
  must be defined before pthread.h, do it to fix the build in some
  systems (Josh Boyer)

- Cleanups in 'perf buildid-cache' (Masami Hiramatsu)

- Fix dso cache test case (Namhyung Kim)

- Do Not rely on dso__data_read_offset() to open DSO (Namhyung Kim)

- Make perf aware of tracefs (Steven Rostedt).

- Fix build by defining STT_GNU_IFUNC for glibc 2.9 and older (Vinson Lee)

- AArch64 symbol resolution fixes (Victor Kamensky)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
      tools lib traceevent: Introduce trace_seq_do_fprintf function
      perf tools: Introduce event_format__fprintf method
      perf trace: No need to enable evsels for workload started from perf
      perf evlist: Fix typo in comment

Josh Boyer (1):
      perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check

Masami Hiramatsu (4):
      perf probe: Fix to handle optimized not-inlined functions
      perf probe: Update man page
      perf buildid-cache: Remove unneeded debugdir parameters
      perf buildid-cache: Consolidate .build-id cache path generators

Namhyung Kim (3):
      perf test: Fix dso cache testcase
      perf tests: Do not rely on dso__data_read_offset() to open dso
      perf tools: Fix a dso open fail message

Steven Rostedt (Red Hat) (6):
      perf tools: Do not check debugfs MAGIC for tracing files
      tools lib fs: Add helper to find mounted file systems
      tools lib api fs: Add tracefs mount helper functions
      tools lib api debugfs: Add DEBUGFS_DEFAULT_PATH macro
      tools lib api fs: Add {tracefs,debugfs}_configured() functions
      perf tools: Make perf aware of tracefs

Victor Kamensky (2):
      perf symbols: Ignore mapping symbols on aarch64
      perf symbols: debuglink should take symfs option into account

Vinson Lee (1):
      perf symbols: Define STT_GNU_IFUNC for glibc 2.9 and older.

 tools/lib/api/Makefile                    |  4 ++
 tools/lib/api/fs/debugfs.c                | 69 +++++++---------------
 tools/lib/api/fs/debugfs.h                | 13 +----
 tools/lib/api/fs/findfs.c                 | 63 ++++++++++++++++++++
 tools/lib/api/fs/findfs.h                 | 23 ++++++++
 tools/lib/api/fs/tracefs.c                | 78 +++++++++++++++++++++++++
 tools/lib/api/fs/tracefs.h                | 21 +++++++
 tools/lib/traceevent/event-parse.h        |  2 +
 tools/lib/traceevent/trace-seq.c          | 13 +++--
 tools/perf/Documentation/perf-probe.txt   | 16 +++++-
 tools/perf/builtin-buildid-cache.c        | 37 ++++++------
 tools/perf/builtin-trace.c                |  4 +-
 tools/perf/config/feature-checks/Makefile |  2 +-
 tools/perf/tests/dso-data.c               | 22 ++++---
 tools/perf/tests/open-syscall-all-cpus.c  |  7 ++-
 tools/perf/tests/open-syscall.c           |  7 ++-
 tools/perf/tests/parse-events.c           | 13 ++++-
 tools/perf/util/build-id.c                | 96 +++++++++++++++++++------------
 tools/perf/util/build-id.h                |  4 +-
 tools/perf/util/cache.h                   |  1 +
 tools/perf/util/dso.c                     |  8 +--
 tools/perf/util/dwarf-aux.c               | 15 +++++
 tools/perf/util/dwarf-aux.h               |  3 +
 tools/perf/util/evlist.c                  |  3 +-
 tools/perf/util/parse-events.c            | 19 ------
 tools/perf/util/parse-events.h            |  2 +-
 tools/perf/util/probe-event.c             | 24 +++++---
 tools/perf/util/probe-finder.c            | 12 ++--
 tools/perf/util/symbol-elf.c              | 11 ++--
 tools/perf/util/trace-event-parse.c       | 12 +++-
 tools/perf/util/trace-event.h             |  3 +
 tools/perf/util/util.c                    | 60 +++++++++++++++----
 tools/perf/util/util.h                    |  1 +
 33 files changed, 468 insertions(+), 200 deletions(-)
 create mode 100644 tools/lib/api/fs/findfs.c
 create mode 100644 tools/lib/api/fs/findfs.h
 create mode 100644 tools/lib/api/fs/tracefs.c
 create mode 100644 tools/lib/api/fs/tracefs.h

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2015-02-11 21:08 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-02-11 21:08 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 2fde4f94e0a9531251e706fa57131b51b0df042e:

  perf: Decouple unthrottling and rotating (2015-02-04 08:07:16 +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

for you to fetch changes up to 39f5704399042fff5f0d5f6af32bbbc3e787a897:

  perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check (2015-02-11 17:38:55 -0300)

----------------------------------------------------------------
perf/core improvement and fixes:

User visible:

- No need to explicitely enable evsels for workload started from perf, let it
  be enabled via perf_event_attr.enable_on_exec, removing some events that take
  place in the 'perf trace' before a workload is really started by it.
  (Arnaldo Carvalho de Melo)

- Fix to handle optimized not-inlined functions in 'perf probe' (Masami Hiramatsu)

- Update 'perf probe' man page (Masami Hiramatsu)

Infrastructure:

Arnaldo Carvalho de Melo (4):
- Introduce {trace_seq_do,event_format_}_fprintf functions to allow
  a default tracepoint field list printer to be used in tools that allows
  redirecting output to a file. (Arnaldo Carvalho de Melo)

- The man page for pthread_attr_set_affinity_np states that _GNU_SOURCE
  must be defined before pthread.h, do it to fix the build in some
  systems (Josh Boyer)

- Cleanups in 'perf buildid-cache' (Masami Hiramatsu)

- Fix dso cache test case (Namhyung Kim)

- Do Not rely on dso__data_read_offset() to open DSO (Namhyung Kim)

- Make perf aware of tracefs (Steven Rostedt).

- Fix build by defining STT_GNU_IFUNC for glibc 2.9 and older (Vinson Lee)

- AArch64 symbol resolution fixes (Victor Kamensky)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
      tools lib traceevent: Introduce trace_seq_do_fprintf function
      perf tools: Introduce event_format__fprintf method
      perf trace: No need to enable evsels for workload started from perf
      perf evlist: Fix typo in comment

Josh Boyer (1):
      perf tools: Define _GNU_SOURCE on pthread_attr_setaffinity_np feature check

Masami Hiramatsu (4):
      perf probe: Fix to handle optimized not-inlined functions
      perf probe: Update man page
      perf buildid-cache: Remove unneeded debugdir parameters
      perf buildid-cache: Consolidate .build-id cache path generators

Namhyung Kim (3):
      perf test: Fix dso cache testcase
      perf tests: Do not rely on dso__data_read_offset() to open dso
      perf tools: Fix a dso open fail message

Steven Rostedt (Red Hat) (6):
      perf tools: Do not check debugfs MAGIC for tracing files
      tools lib fs: Add helper to find mounted file systems
      tools lib api fs: Add tracefs mount helper functions
      tools lib api debugfs: Add DEBUGFS_DEFAULT_PATH macro
      tools lib api fs: Add {tracefs,debugfs}_configured() functions
      perf tools: Make perf aware of tracefs

Victor Kamensky (2):
      perf symbols: Ignore mapping symbols on aarch64
      perf symbols: debuglink should take symfs option into account

Vinson Lee (1):
      perf symbols: Define STT_GNU_IFUNC for glibc 2.9 and older.

 tools/lib/api/Makefile                    |  4 ++
 tools/lib/api/fs/debugfs.c                | 69 +++++++---------------
 tools/lib/api/fs/debugfs.h                | 13 +----
 tools/lib/api/fs/findfs.c                 | 63 ++++++++++++++++++++
 tools/lib/api/fs/findfs.h                 | 23 ++++++++
 tools/lib/api/fs/tracefs.c                | 78 +++++++++++++++++++++++++
 tools/lib/api/fs/tracefs.h                | 21 +++++++
 tools/lib/traceevent/event-parse.h        |  2 +
 tools/lib/traceevent/trace-seq.c          | 13 +++--
 tools/perf/Documentation/perf-probe.txt   | 16 +++++-
 tools/perf/builtin-buildid-cache.c        | 37 ++++++------
 tools/perf/builtin-trace.c                |  4 +-
 tools/perf/config/feature-checks/Makefile |  2 +-
 tools/perf/tests/dso-data.c               | 22 ++++---
 tools/perf/tests/open-syscall-all-cpus.c  |  7 ++-
 tools/perf/tests/open-syscall.c           |  7 ++-
 tools/perf/tests/parse-events.c           | 13 ++++-
 tools/perf/util/build-id.c                | 96 +++++++++++++++++++------------
 tools/perf/util/build-id.h                |  4 +-
 tools/perf/util/cache.h                   |  1 +
 tools/perf/util/dso.c                     |  8 +--
 tools/perf/util/dwarf-aux.c               | 15 +++++
 tools/perf/util/dwarf-aux.h               |  3 +
 tools/perf/util/evlist.c                  |  3 +-
 tools/perf/util/parse-events.c            | 19 ------
 tools/perf/util/parse-events.h            |  2 +-
 tools/perf/util/probe-event.c             | 24 +++++---
 tools/perf/util/probe-finder.c            | 12 ++--
 tools/perf/util/symbol-elf.c              | 11 ++--
 tools/perf/util/trace-event-parse.c       | 12 +++-
 tools/perf/util/trace-event.h             |  3 +
 tools/perf/util/util.c                    | 60 +++++++++++++++----
 tools/perf/util/util.h                    |  1 +
 33 files changed, 468 insertions(+), 200 deletions(-)
 create mode 100644 tools/lib/api/fs/findfs.c
 create mode 100644 tools/lib/api/fs/findfs.h
 create mode 100644 tools/lib/api/fs/tracefs.c
 create mode 100644 tools/lib/api/fs/tracefs.h

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 15:47   ` Jiri Olsa
@ 2013-12-10 15:49     ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 15:49 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt, Arnaldo Carvalho de Melo


* Jiri Olsa <jolsa@redhat.com> wrote:

> On Tue, Dec 10, 2013 at 12:07:59PM +0100, Ingo Molnar wrote:
> > 
> 
> SNIP
> 
> > 
> > Pulled, thanks Arnaldo!
> > 
> > There's one detail I noticed about the recent trace-plugin changes:
> > 
> > comet:~/tip/tools/perf> make install
> >   BUILD:   Doing 'make -j12' parallel build
> >   SUBDIR   Documentation
> >   INSTALL  Documentation-man
> >   INSTALL  GTK UI
> >   SUBDIR   /home/mingo/tip/tools/lib/traceevent/
> >   INSTALL  binaries
> >   INSTALL  plugin_jbd2.so
> >   INSTALL  plugin_hrtimer.so
> >   INSTALL  plugin_kmem.so
> >   INSTALL  plugin_kvm.so
> >   INSTALL  plugin_mac80211.so
> >   INSTALL  plugin_sched_switch.so
> >   INSTALL  plugin_function.so
> >   INSTALL  plugin_xen.so
> >   INSTALL  plugin_scsi.so
> >   INSTALL  plugin_cfg80211.so
> >   INSTALL  libexec
> >   INSTALL  perf-archive
> >   INSTALL  perl-scripts
> >   INSTALL  python-scripts
> >   INSTALL  perf_completion-script
> >   INSTALL  tests
> > 
> > those plugin installs are way too verbose, they should really be in a 
> > single summarized line, only saying something like:
> > 
> >   INSTALL  plugins
> > 
> > Just like we already sum up 'binaries', 'libexec', 'tests', etc.
> 
> ok, TODO updated ;-)

Consider it a regression! ;-)

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 11:07 ` Ingo Molnar
@ 2013-12-10 15:47   ` Jiri Olsa
  2013-12-10 15:49     ` Ingo Molnar
  0 siblings, 1 reply; 81+ messages in thread
From: Jiri Olsa @ 2013-12-10 15:47 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
	Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt, Arnaldo Carvalho de Melo

On Tue, Dec 10, 2013 at 12:07:59PM +0100, Ingo Molnar wrote:
> 

SNIP

> 
> Pulled, thanks Arnaldo!
> 
> There's one detail I noticed about the recent trace-plugin changes:
> 
> comet:~/tip/tools/perf> make install
>   BUILD:   Doing 'make -j12' parallel build
>   SUBDIR   Documentation
>   INSTALL  Documentation-man
>   INSTALL  GTK UI
>   SUBDIR   /home/mingo/tip/tools/lib/traceevent/
>   INSTALL  binaries
>   INSTALL  plugin_jbd2.so
>   INSTALL  plugin_hrtimer.so
>   INSTALL  plugin_kmem.so
>   INSTALL  plugin_kvm.so
>   INSTALL  plugin_mac80211.so
>   INSTALL  plugin_sched_switch.so
>   INSTALL  plugin_function.so
>   INSTALL  plugin_xen.so
>   INSTALL  plugin_scsi.so
>   INSTALL  plugin_cfg80211.so
>   INSTALL  libexec
>   INSTALL  perf-archive
>   INSTALL  perl-scripts
>   INSTALL  python-scripts
>   INSTALL  perf_completion-script
>   INSTALL  tests
> 
> those plugin installs are way too verbose, they should really be in a 
> single summarized line, only saying something like:
> 
>   INSTALL  plugins
> 
> Just like we already sum up 'binaries', 'libexec', 'tests', etc.

ok, TODO updated ;-)

thanks,
jirka

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 13:49         ` Arnaldo Carvalho de Melo
@ 2013-12-10 15:05           ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 15:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Adrian Hunter, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt


* Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:

> Em Tue, Dec 10, 2013 at 01:18:01PM +0100, Ingo Molnar escreveu:
> > 
> > * Adrian Hunter <adrian.hunter@intel.com> wrote:
> > 
> > > -void dso__set_short_name(struct dso *dso, const char *name)
> > > +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
> > >  {
> > >  	if (name == NULL)
> > >  		return;
> > > +	if (dso->sname_alloc)
> > > +		free((char *)dso->short_name);
> > > +	dso->sname_alloc = sname_alloc;
> > 
> > Calling the function option the same as the field name is asking for 
> > trouble - I'd suggest 'new_sname_alloc' for the parameter, or so.
> > 
> > And I'd also remove the 'const' from struct dso::short_name, it 
> > probably does not help code generation, because 'dso' is passed in as 
> > const in all the non-lifetime methods anyway.
>  
> > That way the cast can be dropped from the free().
> 
> Not that simple, there are multiple places that pass a constant
> short_name, for instance:
> 
> 	machine__get_kernel()
>                 kernel = dso__kernel_findnew(machine, vmlinux_name,
> 					     "[kernel]", DSO_TYPE_KERNEL);
> 			dso__set_short_name(dso, short_name);
> 
> So dso->short_name will point to "[kernel]", which is a const char *.

Okay, I guess the free() cast is fine then.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:18       ` Ingo Molnar
  2013-12-10 12:46         ` Ingo Molnar
@ 2013-12-10 13:49         ` Arnaldo Carvalho de Melo
  2013-12-10 15:05           ` Ingo Molnar
  1 sibling, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 13:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Adrian Hunter, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 01:18:01PM +0100, Ingo Molnar escreveu:
> 
> * Adrian Hunter <adrian.hunter@intel.com> wrote:
> 
> > -void dso__set_short_name(struct dso *dso, const char *name)
> > +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
> >  {
> >  	if (name == NULL)
> >  		return;
> > +	if (dso->sname_alloc)
> > +		free((char *)dso->short_name);
> > +	dso->sname_alloc = sname_alloc;
> 
> Calling the function option the same as the field name is asking for 
> trouble - I'd suggest 'new_sname_alloc' for the parameter, or so.
> 
> And I'd also remove the 'const' from struct dso::short_name, it 
> probably does not help code generation, because 'dso' is passed in as 
> const in all the non-lifetime methods anyway.
 
> That way the cast can be dropped from the free().

Not that simple, there are multiple places that pass a constant
short_name, for instance:

	machine__get_kernel()
                kernel = dso__kernel_findnew(machine, vmlinux_name,
					     "[kernel]", DSO_TYPE_KERNEL);
			dso__set_short_name(dso, short_name);

So dso->short_name will point to "[kernel]", which is a const char *.

> Similar problems exist with the usage of 'short_name' - it overloads 
> the field name which makes it somewhat confusing, and it's also 
> sometimes inconsistently named, such as 'name' in 
> dso__set_short_name().
> 
> Ditto for 'long_name' handling.
> 
> Also, the 'sname_alloc' name sucks, it does not make it obvious that 

> it's related to 'short_name', hiding its true significance (and hiding 
> the broken life time handling of the flag/pointer combo). I'd rename 
> it to something more descriptive, like ->short_name_allocated - or I'd 
> rename everything to 'sname'/'lname' naming for short/long names.

Ok, we can use rename it to short_name_alloc, like we have
short_name_len.
 
> Every time one runs into a crash like this it's a canary signal that 
> cleanliness principles need hardening.

Hardening we go then!
 
> Thanks,
> 
> 	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:46         ` Ingo Molnar
@ 2013-12-10 13:29           ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 13:29 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Adrian Hunter, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 01:46:58PM +0100, Ingo Molnar escreveu:
> * Ingo Molnar <mingo@kernel.org> wrote:
> > Every time one runs into a crash like this it's a canary signal that 
> > cleanliness principles need hardening.
> 
> More observations about util/dso.c:
> 
>  - dso__binary_type_file() should probably pass in 'const struct dso'
> 
>  - dso__binary_type_file()'s filename string parameter should be named 
>    'filename', not 'file' ...
> 
>  - build_id__sprintf() looks fragile: every single use of it appears 
>    to follow this pattern:
> 
> 	build_id__sprintf(x, sizeof(x), ...)
> 
>    this could be simplified (and eliminating the possibility to typo a 
>    bug) by changing the function to __build_id__snprintf() and adding 
>    a build_id__sprintf() wrapper macro around it:
> 
> 	build_id__sprintf(x, ...)
> 
>    that generates the size itself.

Right, like:

int __perf_evlist__add_default_attrs(struct perf_evlist *evlist,
                                     struct perf_event_attr *attrs, size_t nr_attrs);

#define perf_evlist__add_default_attrs(evlist, array) \
        __perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(array))

This is all a matter of being more dilligent and judicious at employing
these and other good practices.

But don't be shy to point anything (like you did here), as time permits
we can go on doing patchkits to address things people notice.

- Arnaldo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:18       ` Ingo Molnar
@ 2013-12-10 12:46         ` Ingo Molnar
  2013-12-10 13:29           ` Arnaldo Carvalho de Melo
  2013-12-10 13:49         ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 12:46 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Andi Kleen, Ben Cheng,
	David Ahern, Dongsheng Yang, Frederic Weisbecker, Jiri Olsa,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt


* Ingo Molnar <mingo@kernel.org> wrote:

> 
> * Adrian Hunter <adrian.hunter@intel.com> wrote:
> 
> > -void dso__set_short_name(struct dso *dso, const char *name)
> > +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
> >  {
> >  	if (name == NULL)
> >  		return;
> > +	if (dso->sname_alloc)
> > +		free((char *)dso->short_name);
> > +	dso->sname_alloc = sname_alloc;
> 
> Calling the function option the same as the field name is asking for 
> trouble - I'd suggest 'new_sname_alloc' for the parameter, or so.
> 
> And I'd also remove the 'const' from struct dso::short_name, it 
> probably does not help code generation, because 'dso' is passed in as 
> const in all the non-lifetime methods anyway.
> 
> That way the cast can be dropped from the free().
> 
> Similar problems exist with the usage of 'short_name' - it overloads 
> the field name which makes it somewhat confusing, and it's also 
> sometimes inconsistently named, such as 'name' in 
> dso__set_short_name().
> 
> Ditto for 'long_name' handling.
> 
> Also, the 'sname_alloc' name sucks, it does not make it obvious that 
> it's related to 'short_name', hiding its true significance (and hiding 
> the broken life time handling of the flag/pointer combo). I'd rename 
> it to something more descriptive, like ->short_name_allocated - or I'd 
> rename everything to 'sname'/'lname' naming for short/long names.
> 
> Every time one runs into a crash like this it's a canary signal that 
> cleanliness principles need hardening.

More observations about util/dso.c:

 - dso__binary_type_file() should probably pass in 'const struct dso'

 - dso__binary_type_file()'s filename string parameter should be named 
   'filename', not 'file' ...

 - build_id__sprintf() looks fragile: every single use of it appears 
   to follow this pattern:

	build_id__sprintf(x, sizeof(x), ...)

   this could be simplified (and eliminating the possibility to typo a 
   bug) by changing the function to __build_id__snprintf() and adding 
   a build_id__sprintf() wrapper macro around it:

	build_id__sprintf(x, ...)

   that generates the size itself.

 - dso__binary_type_file() is a method without a verb, so it's unclear 
   what it does. It probably wants to be renamed to 
   dso__set_binary_type_file() or so?

 - dso_cache__find() probably wants to pass in a const rb_root.

 - 'struct dso *pos' should probably be named 'struct dso *dso_pos' or 
   so - 'pos' is frequently used for integer variable names so its use 
   for an object iterator feels confusing.

 - the 'head' argument of dsos__find() wants to be constified too I 
   guess

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:22           ` Arnaldo Carvalho de Melo
  2013-12-10 12:23             ` Arnaldo Carvalho de Melo
@ 2013-12-10 12:24             ` Ingo Molnar
  1 sibling, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 12:24 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Adrian Hunter, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt


* Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:

> Em Tue, Dec 10, 2013 at 02:22:58PM +0200, Adrian Hunter escreveu:
> > On 10/12/13 14:10, Arnaldo Carvalho de Melo wrote:
> > > Em Tue, Dec 10, 2013 at 02:13:12PM +0200, Adrian Hunter escreveu:
> > >> On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
> > >>> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> > >>>>
> > >>>> Hm, I've unpulled it because 'perf top' crashes on exit, in 
> > >>>> dso__delete():
> > >>>
> > >>> 495		if (dso->sname_alloc)
> > >>> 496			free((char *)dso->short_name)
> > >>>
> > >>> Yeah, must be that basename() patch from Stephane, I'll work on a fix
> > >>> and resubmit this batch, thanks for the report.
> > >>
> > >> The problem is sname_alloc is not maintained.  Perhaps it should be
> > >> set in dso__set_short_name() e.g.
> > > 
> > > Yeah, sounds better than having all callers manage that thing, quickie,
> > > was this with Stephane's patch applied?
> > 
> > Yes it was at
> > 	e993d10caeb6dca690dbaf86e1981ba240d1414a
> > 	perf symbols: fix bug in usage of the basename() function
> 
> Yes, this is the buggy patch, my question was if Ingo did the 
> changes that streamlined the dso->sname_alloc management with 
> e993d10caeb6 applied to his working tree.

My current perf/core head is:

  789790791ad2 tools/perf/build: Fix install dependency

which does not have e993d10c.

[ Btw., a small nit: the capitalization of the commit title looks 
  inconsistent. ]

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:22           ` Arnaldo Carvalho de Melo
@ 2013-12-10 12:23             ` Arnaldo Carvalho de Melo
  2013-12-10 12:24             ` Ingo Molnar
  1 sibling, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 12:23 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 09:22:13AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Dec 10, 2013 at 02:22:58PM +0200, Adrian Hunter escreveu:
> > On 10/12/13 14:10, Arnaldo Carvalho de Melo wrote:
> > > Em Tue, Dec 10, 2013 at 02:13:12PM +0200, Adrian Hunter escreveu:
> > >> On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
> > >>> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> > >>>>
> > >>>> Hm, I've unpulled it because 'perf top' crashes on exit, in 
> > >>>> dso__delete():
> > >>>
> > >>> 495		if (dso->sname_alloc)
> > >>> 496			free((char *)dso->short_name)
> > >>>
> > >>> Yeah, must be that basename() patch from Stephane, I'll work on a fix
> > >>> and resubmit this batch, thanks for the report.
> > >>
> > >> The problem is sname_alloc is not maintained.  Perhaps it should be
> > >> set in dso__set_short_name() e.g.
> > > 
> > > Yeah, sounds better than having all callers manage that thing, quickie,
> > > was this with Stephane's patch applied?
> > 
> > Yes it was at
> > 	e993d10caeb6dca690dbaf86e1981ba240d1414a
> > 	perf symbols: fix bug in usage of the basename() function
> 
> Yes, this is the buggy patch, my question was if Ingo did the changes
> that streamlined the dso->sname_alloc management with e993d10caeb6
> applied to his working tree.

Sorry Adrian, my bad, I thought Ingo had provided the patch, now I
realized my mistake, it was you 8-)
 
> - Arnaldo
>  
> > > I think it should be done as a prep, then apply a modified version of
> > > Stephanes, that doesn't deal with the alloc flag (more than using 'true'
> > > to say it is a malloc'ed chunk).
> > > 
> > > - Arnaldo
> > >  
> > >> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> > >> index 9fae484..54ed980 100644
> > >> --- a/tools/perf/util/dso.c
> > >> +++ b/tools/perf/util/dso.c
> > >> @@ -379,7 +379,7 @@ struct dso *dso__kernel_findnew(struct machine *machine,
> > >> const char *name,
> > >>  	 * processing we had no idea this was the kernel dso.
> > >>  	 */
> > >>  	if (dso != NULL) {
> > >> -		dso__set_short_name(dso, short_name);
> > >> +		dso__set_short_name(dso, short_name, false);
> > >>  		dso->kernel = dso_type;
> > >>  	}
> > >>
> > >> @@ -394,10 +394,13 @@ void dso__set_long_name(struct dso *dso, char *name)
> > >>  	dso->long_name_len = strlen(name);
> > >>  }
> > >>
> > >> -void dso__set_short_name(struct dso *dso, const char *name)
> > >> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
> > >>  {
> > >>  	if (name == NULL)
> > >>  		return;
> > >> +	if (dso->sname_alloc)
> > >> +		free((char *)dso->short_name);
> > >> +	dso->sname_alloc = sname_alloc;
> > >>  	dso->short_name = name;
> > >>  	dso->short_name_len = strlen(name);
> > >>  }
> > >> @@ -426,12 +429,7 @@ static void dso__set_basename(struct dso *dso)
> > >>  	if (!base)
> > >>  		return;
> > >>
> > >> -	if (dso->sname_alloc)
> > >> -		free((char *)dso->short_name);
> > >> -	else
> > >> -		dso->sname_alloc = 1;
> > >> -
> > >> -	dso__set_short_name(dso, base);
> > >> +	dso__set_short_name(dso, base, true);
> > >>  }
> > >>
> > >>  int dso__name_len(const struct dso *dso)
> > >> @@ -467,7 +465,7 @@ struct dso *dso__new(const char *name)
> > >>  		int i;
> > >>  		strcpy(dso->name, name);
> > >>  		dso__set_long_name(dso, dso->name);
> > >> -		dso__set_short_name(dso, dso->name);
> > >> +		dso__set_short_name(dso, dso->name, false);
> > >>  		for (i = 0; i < MAP__NR_TYPES; ++i)
> > >>  			dso->symbols[i] = dso->symbol_names[i] = RB_ROOT;
> > >>  		dso->cache = RB_ROOT;
> > >> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> > >> index 384f2d9..166463e 100644
> > >> --- a/tools/perf/util/dso.h
> > >> +++ b/tools/perf/util/dso.h
> > >> @@ -110,7 +110,7 @@ static inline void dso__set_loaded(struct dso *dso, enum
> > >> map_type type)
> > >>  struct dso *dso__new(const char *name);
> > >>  void dso__delete(struct dso *dso);
> > >>
> > >> -void dso__set_short_name(struct dso *dso, const char *name);
> > >> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc);
> > >>  void dso__set_long_name(struct dso *dso, char *name);
> > >>
> > >>  int dso__name_len(const struct dso *dso);
> > >>
> > >>
> > >>>
> > >>> - Arnaldo
> > >>>  
> > >>>> [Thread 0x7ffff70df700 (LWP 29561) exited]
> > >>>> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
> > >>>> ======= Backtrace: =========
> > >>>> /lib64/libc.so.6[0x3e5907bbe7]
> > >>>> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
> > >>>> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
> > >>>> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
> > >>>> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
> > >>>> /fast/mingo/tip/tools/perf/perf[0x419f95]
> > >>>> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
> > >>>> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
> > >>>> /fast/mingo/tip/tools/perf/perf[0x4198fd]
> > >>>> ======= Memory map: ========
> > >>>>
> > >>>> Program received signal SIGABRT, Aborted.
> > >>>> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
> > >>>> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
> > >>>> (gdb) 
> > >>>> (gdb) bt
> > >>>> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
> > >>>> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
> > >>>> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
> > >>>> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
> > >>>> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
> > >>>> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
> > >>>> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
> > >>>> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
> > >>>> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
> > >>>> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
> > >>>> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
> > >>>> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
> > >>>> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
> > >>>> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
> > >>>> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
> > >>>> (gdb) 
> > >>>>
> > >>>> Running it on an up-to-date installation of Fedora 19.
> > >>>>
> > >>>> Thanks,
> > >>>>
> > >>>> 	Ingo
> > >>>
> > >>>
> > > 
> > > 

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:10       ` Arnaldo Carvalho de Melo
@ 2013-12-10 12:22         ` Adrian Hunter
  2013-12-10 12:22           ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 81+ messages in thread
From: Adrian Hunter @ 2013-12-10 12:22 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

On 10/12/13 14:10, Arnaldo Carvalho de Melo wrote:
> Em Tue, Dec 10, 2013 at 02:13:12PM +0200, Adrian Hunter escreveu:
>> On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
>>> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
>>>>
>>>> Hm, I've unpulled it because 'perf top' crashes on exit, in 
>>>> dso__delete():
>>>
>>> 495		if (dso->sname_alloc)
>>> 496			free((char *)dso->short_name)
>>>
>>> Yeah, must be that basename() patch from Stephane, I'll work on a fix
>>> and resubmit this batch, thanks for the report.
>>
>> The problem is sname_alloc is not maintained.  Perhaps it should be
>> set in dso__set_short_name() e.g.
> 
> Yeah, sounds better than having all callers manage that thing, quickie,
> was this with Stephane's patch applied?

Yes it was at
	e993d10caeb6dca690dbaf86e1981ba240d1414a
	perf symbols: fix bug in usage of the basename() function

> 
> I think it should be done as a prep, then apply a modified version of
> Stephanes, that doesn't deal with the alloc flag (more than using 'true'
> to say it is a malloc'ed chunk).
> 
> - Arnaldo
>  
>> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
>> index 9fae484..54ed980 100644
>> --- a/tools/perf/util/dso.c
>> +++ b/tools/perf/util/dso.c
>> @@ -379,7 +379,7 @@ struct dso *dso__kernel_findnew(struct machine *machine,
>> const char *name,
>>  	 * processing we had no idea this was the kernel dso.
>>  	 */
>>  	if (dso != NULL) {
>> -		dso__set_short_name(dso, short_name);
>> +		dso__set_short_name(dso, short_name, false);
>>  		dso->kernel = dso_type;
>>  	}
>>
>> @@ -394,10 +394,13 @@ void dso__set_long_name(struct dso *dso, char *name)
>>  	dso->long_name_len = strlen(name);
>>  }
>>
>> -void dso__set_short_name(struct dso *dso, const char *name)
>> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
>>  {
>>  	if (name == NULL)
>>  		return;
>> +	if (dso->sname_alloc)
>> +		free((char *)dso->short_name);
>> +	dso->sname_alloc = sname_alloc;
>>  	dso->short_name = name;
>>  	dso->short_name_len = strlen(name);
>>  }
>> @@ -426,12 +429,7 @@ static void dso__set_basename(struct dso *dso)
>>  	if (!base)
>>  		return;
>>
>> -	if (dso->sname_alloc)
>> -		free((char *)dso->short_name);
>> -	else
>> -		dso->sname_alloc = 1;
>> -
>> -	dso__set_short_name(dso, base);
>> +	dso__set_short_name(dso, base, true);
>>  }
>>
>>  int dso__name_len(const struct dso *dso)
>> @@ -467,7 +465,7 @@ struct dso *dso__new(const char *name)
>>  		int i;
>>  		strcpy(dso->name, name);
>>  		dso__set_long_name(dso, dso->name);
>> -		dso__set_short_name(dso, dso->name);
>> +		dso__set_short_name(dso, dso->name, false);
>>  		for (i = 0; i < MAP__NR_TYPES; ++i)
>>  			dso->symbols[i] = dso->symbol_names[i] = RB_ROOT;
>>  		dso->cache = RB_ROOT;
>> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
>> index 384f2d9..166463e 100644
>> --- a/tools/perf/util/dso.h
>> +++ b/tools/perf/util/dso.h
>> @@ -110,7 +110,7 @@ static inline void dso__set_loaded(struct dso *dso, enum
>> map_type type)
>>  struct dso *dso__new(const char *name);
>>  void dso__delete(struct dso *dso);
>>
>> -void dso__set_short_name(struct dso *dso, const char *name);
>> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc);
>>  void dso__set_long_name(struct dso *dso, char *name);
>>
>>  int dso__name_len(const struct dso *dso);
>>
>>
>>>
>>> - Arnaldo
>>>  
>>>> [Thread 0x7ffff70df700 (LWP 29561) exited]
>>>> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
>>>> ======= Backtrace: =========
>>>> /lib64/libc.so.6[0x3e5907bbe7]
>>>> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
>>>> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
>>>> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
>>>> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
>>>> /fast/mingo/tip/tools/perf/perf[0x419f95]
>>>> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
>>>> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
>>>> /fast/mingo/tip/tools/perf/perf[0x4198fd]
>>>> ======= Memory map: ========
>>>>
>>>> Program received signal SIGABRT, Aborted.
>>>> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
>>>> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
>>>> (gdb) 
>>>> (gdb) bt
>>>> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
>>>> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
>>>> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
>>>> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
>>>> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
>>>> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
>>>> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
>>>> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
>>>> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
>>>> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
>>>> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
>>>> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
>>>> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
>>>> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
>>>> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
>>>> (gdb) 
>>>>
>>>> Running it on an up-to-date installation of Fedora 19.
>>>>
>>>> Thanks,
>>>>
>>>> 	Ingo
>>>
>>>
> 
> 


^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:22         ` Adrian Hunter
@ 2013-12-10 12:22           ` Arnaldo Carvalho de Melo
  2013-12-10 12:23             ` Arnaldo Carvalho de Melo
  2013-12-10 12:24             ` Ingo Molnar
  0 siblings, 2 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 12:22 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 02:22:58PM +0200, Adrian Hunter escreveu:
> On 10/12/13 14:10, Arnaldo Carvalho de Melo wrote:
> > Em Tue, Dec 10, 2013 at 02:13:12PM +0200, Adrian Hunter escreveu:
> >> On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
> >>> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> >>>>
> >>>> Hm, I've unpulled it because 'perf top' crashes on exit, in 
> >>>> dso__delete():
> >>>
> >>> 495		if (dso->sname_alloc)
> >>> 496			free((char *)dso->short_name)
> >>>
> >>> Yeah, must be that basename() patch from Stephane, I'll work on a fix
> >>> and resubmit this batch, thanks for the report.
> >>
> >> The problem is sname_alloc is not maintained.  Perhaps it should be
> >> set in dso__set_short_name() e.g.
> > 
> > Yeah, sounds better than having all callers manage that thing, quickie,
> > was this with Stephane's patch applied?
> 
> Yes it was at
> 	e993d10caeb6dca690dbaf86e1981ba240d1414a
> 	perf symbols: fix bug in usage of the basename() function

Yes, this is the buggy patch, my question was if Ingo did the changes
that streamlined the dso->sname_alloc management with e993d10caeb6
applied to his working tree.

- Arnaldo
 
> > I think it should be done as a prep, then apply a modified version of
> > Stephanes, that doesn't deal with the alloc flag (more than using 'true'
> > to say it is a malloc'ed chunk).
> > 
> > - Arnaldo
> >  
> >> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> >> index 9fae484..54ed980 100644
> >> --- a/tools/perf/util/dso.c
> >> +++ b/tools/perf/util/dso.c
> >> @@ -379,7 +379,7 @@ struct dso *dso__kernel_findnew(struct machine *machine,
> >> const char *name,
> >>  	 * processing we had no idea this was the kernel dso.
> >>  	 */
> >>  	if (dso != NULL) {
> >> -		dso__set_short_name(dso, short_name);
> >> +		dso__set_short_name(dso, short_name, false);
> >>  		dso->kernel = dso_type;
> >>  	}
> >>
> >> @@ -394,10 +394,13 @@ void dso__set_long_name(struct dso *dso, char *name)
> >>  	dso->long_name_len = strlen(name);
> >>  }
> >>
> >> -void dso__set_short_name(struct dso *dso, const char *name)
> >> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
> >>  {
> >>  	if (name == NULL)
> >>  		return;
> >> +	if (dso->sname_alloc)
> >> +		free((char *)dso->short_name);
> >> +	dso->sname_alloc = sname_alloc;
> >>  	dso->short_name = name;
> >>  	dso->short_name_len = strlen(name);
> >>  }
> >> @@ -426,12 +429,7 @@ static void dso__set_basename(struct dso *dso)
> >>  	if (!base)
> >>  		return;
> >>
> >> -	if (dso->sname_alloc)
> >> -		free((char *)dso->short_name);
> >> -	else
> >> -		dso->sname_alloc = 1;
> >> -
> >> -	dso__set_short_name(dso, base);
> >> +	dso__set_short_name(dso, base, true);
> >>  }
> >>
> >>  int dso__name_len(const struct dso *dso)
> >> @@ -467,7 +465,7 @@ struct dso *dso__new(const char *name)
> >>  		int i;
> >>  		strcpy(dso->name, name);
> >>  		dso__set_long_name(dso, dso->name);
> >> -		dso__set_short_name(dso, dso->name);
> >> +		dso__set_short_name(dso, dso->name, false);
> >>  		for (i = 0; i < MAP__NR_TYPES; ++i)
> >>  			dso->symbols[i] = dso->symbol_names[i] = RB_ROOT;
> >>  		dso->cache = RB_ROOT;
> >> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> >> index 384f2d9..166463e 100644
> >> --- a/tools/perf/util/dso.h
> >> +++ b/tools/perf/util/dso.h
> >> @@ -110,7 +110,7 @@ static inline void dso__set_loaded(struct dso *dso, enum
> >> map_type type)
> >>  struct dso *dso__new(const char *name);
> >>  void dso__delete(struct dso *dso);
> >>
> >> -void dso__set_short_name(struct dso *dso, const char *name);
> >> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc);
> >>  void dso__set_long_name(struct dso *dso, char *name);
> >>
> >>  int dso__name_len(const struct dso *dso);
> >>
> >>
> >>>
> >>> - Arnaldo
> >>>  
> >>>> [Thread 0x7ffff70df700 (LWP 29561) exited]
> >>>> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
> >>>> ======= Backtrace: =========
> >>>> /lib64/libc.so.6[0x3e5907bbe7]
> >>>> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
> >>>> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
> >>>> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
> >>>> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
> >>>> /fast/mingo/tip/tools/perf/perf[0x419f95]
> >>>> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
> >>>> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
> >>>> /fast/mingo/tip/tools/perf/perf[0x4198fd]
> >>>> ======= Memory map: ========
> >>>>
> >>>> Program received signal SIGABRT, Aborted.
> >>>> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
> >>>> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
> >>>> (gdb) 
> >>>> (gdb) bt
> >>>> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
> >>>> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
> >>>> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
> >>>> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
> >>>> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
> >>>> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
> >>>> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
> >>>> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
> >>>> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
> >>>> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
> >>>> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
> >>>> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
> >>>> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
> >>>> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
> >>>> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
> >>>> (gdb) 
> >>>>
> >>>> Running it on an up-to-date installation of Fedora 19.
> >>>>
> >>>> Thanks,
> >>>>
> >>>> 	Ingo
> >>>
> >>>
> > 
> > 

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:13     ` Adrian Hunter
  2013-12-10 12:10       ` Arnaldo Carvalho de Melo
@ 2013-12-10 12:18       ` Ingo Molnar
  2013-12-10 12:46         ` Ingo Molnar
  2013-12-10 13:49         ` Arnaldo Carvalho de Melo
  1 sibling, 2 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 12:18 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Andi Kleen, Ben Cheng,
	David Ahern, Dongsheng Yang, Frederic Weisbecker, Jiri Olsa,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt


* Adrian Hunter <adrian.hunter@intel.com> wrote:

> -void dso__set_short_name(struct dso *dso, const char *name)
> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
>  {
>  	if (name == NULL)
>  		return;
> +	if (dso->sname_alloc)
> +		free((char *)dso->short_name);
> +	dso->sname_alloc = sname_alloc;

Calling the function option the same as the field name is asking for 
trouble - I'd suggest 'new_sname_alloc' for the parameter, or so.

And I'd also remove the 'const' from struct dso::short_name, it 
probably does not help code generation, because 'dso' is passed in as 
const in all the non-lifetime methods anyway.

That way the cast can be dropped from the free().

Similar problems exist with the usage of 'short_name' - it overloads 
the field name which makes it somewhat confusing, and it's also 
sometimes inconsistently named, such as 'name' in 
dso__set_short_name().

Ditto for 'long_name' handling.

Also, the 'sname_alloc' name sucks, it does not make it obvious that 
it's related to 'short_name', hiding its true significance (and hiding 
the broken life time handling of the flag/pointer combo). I'd rename 
it to something more descriptive, like ->short_name_allocated - or I'd 
rename everything to 'sname'/'lname' naming for short/long names.

Every time one runs into a crash like this it's a canary signal that 
cleanliness principles need hardening.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 11:44   ` Arnaldo Carvalho de Melo
  2013-12-10 11:47     ` Ingo Molnar
@ 2013-12-10 12:13     ` Adrian Hunter
  2013-12-10 12:10       ` Arnaldo Carvalho de Melo
  2013-12-10 12:18       ` Ingo Molnar
  1 sibling, 2 replies; 81+ messages in thread
From: Adrian Hunter @ 2013-12-10 12:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
>>
>> Hm, I've unpulled it because 'perf top' crashes on exit, in 
>> dso__delete():
> 
> 495		if (dso->sname_alloc)
> 496			free((char *)dso->short_name)
> 
> Yeah, must be that basename() patch from Stephane, I'll work on a fix
> and resubmit this batch, thanks for the report.

The problem is sname_alloc is not maintained.  Perhaps it should be
set in dso__set_short_name() e.g.

diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index 9fae484..54ed980 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -379,7 +379,7 @@ struct dso *dso__kernel_findnew(struct machine *machine,
const char *name,
 	 * processing we had no idea this was the kernel dso.
 	 */
 	if (dso != NULL) {
-		dso__set_short_name(dso, short_name);
+		dso__set_short_name(dso, short_name, false);
 		dso->kernel = dso_type;
 	}

@@ -394,10 +394,13 @@ void dso__set_long_name(struct dso *dso, char *name)
 	dso->long_name_len = strlen(name);
 }

-void dso__set_short_name(struct dso *dso, const char *name)
+void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
 {
 	if (name == NULL)
 		return;
+	if (dso->sname_alloc)
+		free((char *)dso->short_name);
+	dso->sname_alloc = sname_alloc;
 	dso->short_name = name;
 	dso->short_name_len = strlen(name);
 }
@@ -426,12 +429,7 @@ static void dso__set_basename(struct dso *dso)
 	if (!base)
 		return;

-	if (dso->sname_alloc)
-		free((char *)dso->short_name);
-	else
-		dso->sname_alloc = 1;
-
-	dso__set_short_name(dso, base);
+	dso__set_short_name(dso, base, true);
 }

 int dso__name_len(const struct dso *dso)
@@ -467,7 +465,7 @@ struct dso *dso__new(const char *name)
 		int i;
 		strcpy(dso->name, name);
 		dso__set_long_name(dso, dso->name);
-		dso__set_short_name(dso, dso->name);
+		dso__set_short_name(dso, dso->name, false);
 		for (i = 0; i < MAP__NR_TYPES; ++i)
 			dso->symbols[i] = dso->symbol_names[i] = RB_ROOT;
 		dso->cache = RB_ROOT;
diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
index 384f2d9..166463e 100644
--- a/tools/perf/util/dso.h
+++ b/tools/perf/util/dso.h
@@ -110,7 +110,7 @@ static inline void dso__set_loaded(struct dso *dso, enum
map_type type)
 struct dso *dso__new(const char *name);
 void dso__delete(struct dso *dso);

-void dso__set_short_name(struct dso *dso, const char *name);
+void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc);
 void dso__set_long_name(struct dso *dso, char *name);

 int dso__name_len(const struct dso *dso);


> 
> - Arnaldo
>  
>> [Thread 0x7ffff70df700 (LWP 29561) exited]
>> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
>> ======= Backtrace: =========
>> /lib64/libc.so.6[0x3e5907bbe7]
>> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
>> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
>> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
>> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
>> /fast/mingo/tip/tools/perf/perf[0x419f95]
>> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
>> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
>> /fast/mingo/tip/tools/perf/perf[0x4198fd]
>> ======= Memory map: ========
>>
>> Program received signal SIGABRT, Aborted.
>> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
>> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
>> (gdb) 
>> (gdb) bt
>> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
>> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
>> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
>> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
>> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
>> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
>> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
>> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
>> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
>> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
>> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
>> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
>> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
>> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
>> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
>> (gdb) 
>>
>> Running it on an up-to-date installation of Fedora 19.
>>
>> Thanks,
>>
>> 	Ingo
> 
> 


^ permalink raw reply related	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:13     ` Adrian Hunter
@ 2013-12-10 12:10       ` Arnaldo Carvalho de Melo
  2013-12-10 12:22         ` Adrian Hunter
  2013-12-10 12:18       ` Ingo Molnar
  1 sibling, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 12:10 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 02:13:12PM +0200, Adrian Hunter escreveu:
> On 10/12/13 13:44, Arnaldo Carvalho de Melo wrote:
> > Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> >>
> >> Hm, I've unpulled it because 'perf top' crashes on exit, in 
> >> dso__delete():
> > 
> > 495		if (dso->sname_alloc)
> > 496			free((char *)dso->short_name)
> > 
> > Yeah, must be that basename() patch from Stephane, I'll work on a fix
> > and resubmit this batch, thanks for the report.
> 
> The problem is sname_alloc is not maintained.  Perhaps it should be
> set in dso__set_short_name() e.g.

Yeah, sounds better than having all callers manage that thing, quickie,
was this with Stephane's patch applied?

I think it should be done as a prep, then apply a modified version of
Stephanes, that doesn't deal with the alloc flag (more than using 'true'
to say it is a malloc'ed chunk).

- Arnaldo
 
> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> index 9fae484..54ed980 100644
> --- a/tools/perf/util/dso.c
> +++ b/tools/perf/util/dso.c
> @@ -379,7 +379,7 @@ struct dso *dso__kernel_findnew(struct machine *machine,
> const char *name,
>  	 * processing we had no idea this was the kernel dso.
>  	 */
>  	if (dso != NULL) {
> -		dso__set_short_name(dso, short_name);
> +		dso__set_short_name(dso, short_name, false);
>  		dso->kernel = dso_type;
>  	}
> 
> @@ -394,10 +394,13 @@ void dso__set_long_name(struct dso *dso, char *name)
>  	dso->long_name_len = strlen(name);
>  }
> 
> -void dso__set_short_name(struct dso *dso, const char *name)
> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc)
>  {
>  	if (name == NULL)
>  		return;
> +	if (dso->sname_alloc)
> +		free((char *)dso->short_name);
> +	dso->sname_alloc = sname_alloc;
>  	dso->short_name = name;
>  	dso->short_name_len = strlen(name);
>  }
> @@ -426,12 +429,7 @@ static void dso__set_basename(struct dso *dso)
>  	if (!base)
>  		return;
> 
> -	if (dso->sname_alloc)
> -		free((char *)dso->short_name);
> -	else
> -		dso->sname_alloc = 1;
> -
> -	dso__set_short_name(dso, base);
> +	dso__set_short_name(dso, base, true);
>  }
> 
>  int dso__name_len(const struct dso *dso)
> @@ -467,7 +465,7 @@ struct dso *dso__new(const char *name)
>  		int i;
>  		strcpy(dso->name, name);
>  		dso__set_long_name(dso, dso->name);
> -		dso__set_short_name(dso, dso->name);
> +		dso__set_short_name(dso, dso->name, false);
>  		for (i = 0; i < MAP__NR_TYPES; ++i)
>  			dso->symbols[i] = dso->symbol_names[i] = RB_ROOT;
>  		dso->cache = RB_ROOT;
> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> index 384f2d9..166463e 100644
> --- a/tools/perf/util/dso.h
> +++ b/tools/perf/util/dso.h
> @@ -110,7 +110,7 @@ static inline void dso__set_loaded(struct dso *dso, enum
> map_type type)
>  struct dso *dso__new(const char *name);
>  void dso__delete(struct dso *dso);
> 
> -void dso__set_short_name(struct dso *dso, const char *name);
> +void dso__set_short_name(struct dso *dso, const char *name, bool sname_alloc);
>  void dso__set_long_name(struct dso *dso, char *name);
> 
>  int dso__name_len(const struct dso *dso);
> 
> 
> > 
> > - Arnaldo
> >  
> >> [Thread 0x7ffff70df700 (LWP 29561) exited]
> >> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
> >> ======= Backtrace: =========
> >> /lib64/libc.so.6[0x3e5907bbe7]
> >> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
> >> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
> >> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
> >> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
> >> /fast/mingo/tip/tools/perf/perf[0x419f95]
> >> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
> >> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
> >> /fast/mingo/tip/tools/perf/perf[0x4198fd]
> >> ======= Memory map: ========
> >>
> >> Program received signal SIGABRT, Aborted.
> >> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
> >> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
> >> (gdb) 
> >> (gdb) bt
> >> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
> >> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
> >> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
> >> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
> >> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
> >> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
> >> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
> >> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
> >> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
> >> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
> >> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
> >> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
> >> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
> >> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
> >> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
> >> (gdb) 
> >>
> >> Running it on an up-to-date installation of Fedora 19.
> >>
> >> Thanks,
> >>
> >> 	Ingo
> > 
> > 

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 12:01       ` Arnaldo Carvalho de Melo
@ 2013-12-10 12:07         ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 12:07 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt


* Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:

> Em Tue, Dec 10, 2013 at 12:47:57PM +0100, Ingo Molnar escreveu:
> > * Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:
> > > Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> > > > Hm, I've unpulled it because 'perf top' crashes on exit, in 
> > > > dso__delete():
> 
> > > 495		if (dso->sname_alloc)
> > > 496			free((char *)dso->short_name)
> 
> > Btw., instead of trusting flags I'd argue that using the pointer as a 
> > flag and clearing the pointer too is a much more robust freeing 
> > pattern in general:
> 
> > 		if (dso->short_name) {
> > 			free(dso->short_name);
> > 			dso->short_name = NULL;
> > 		}
> > 
> > or so ...
> 
> This is not an unusual idiom, if you look at 
> tools/perf/util/ev{list,sel}.c, for instance, you'll see it in many 
> destructors.
> 
> In this case there is a micro optimization where sometimes the 
> shortname is just a pointer to the tail part of the long name, hence 
> the flag.

Sounds fair.

[btw., a tiny nit remains: the cast is probably unnecessary, free() 
will take any pointer.]

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 11:47     ` Ingo Molnar
@ 2013-12-10 12:01       ` Arnaldo Carvalho de Melo
  2013-12-10 12:07         ` Ingo Molnar
  0 siblings, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 12:01 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 12:47:57PM +0100, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:
> > Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> > > Hm, I've unpulled it because 'perf top' crashes on exit, in 
> > > dso__delete():

> > 495		if (dso->sname_alloc)
> > 496			free((char *)dso->short_name)

> Btw., instead of trusting flags I'd argue that using the pointer as a 
> flag and clearing the pointer too is a much more robust freeing 
> pattern in general:

> 		if (dso->short_name) {
> 			free(dso->short_name);
> 			dso->short_name = NULL;
> 		}
> 
> or so ...

This is not an unusual idiom, if you look at tools/perf/util/ev{list,sel}.c,
for instance, you'll see it in many destructors.

In this case there is a micro optimization where sometimes the shortname
is just a pointer to the tail part of the long name, hence the flag.

- Arnaldo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 11:44   ` Arnaldo Carvalho de Melo
@ 2013-12-10 11:47     ` Ingo Molnar
  2013-12-10 12:01       ` Arnaldo Carvalho de Melo
  2013-12-10 12:13     ` Adrian Hunter
  1 sibling, 1 reply; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 11:47 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt


* Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:

> Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> > 
> > Hm, I've unpulled it because 'perf top' crashes on exit, in 
> > dso__delete():
> 
> 495		if (dso->sname_alloc)
> 496			free((char *)dso->short_name)

Btw., instead of trusting flags I'd argue that using the pointer as a 
flag and clearing the pointer too is a much more robust freeing 
pattern in general:

		if (dso->short_name) {
			free(dso->short_name);
			dso->short_name = NULL;
		}

or so ...

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-10 11:12 ` Ingo Molnar
@ 2013-12-10 11:44   ` Arnaldo Carvalho de Melo
  2013-12-10 11:47     ` Ingo Molnar
  2013-12-10 12:13     ` Adrian Hunter
  0 siblings, 2 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-10 11:44 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Ben Cheng, David Ahern,
	Dongsheng Yang, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt

Em Tue, Dec 10, 2013 at 12:12:29PM +0100, Ingo Molnar escreveu:
> 
> Hm, I've unpulled it because 'perf top' crashes on exit, in 
> dso__delete():

495		if (dso->sname_alloc)
496			free((char *)dso->short_name)

Yeah, must be that basename() patch from Stephane, I'll work on a fix
and resubmit this batch, thanks for the report.

- Arnaldo
 
> [Thread 0x7ffff70df700 (LWP 29561) exited]
> *** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
> ======= Backtrace: =========
> /lib64/libc.so.6[0x3e5907bbe7]
> /fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
> /fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
> /fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
> /fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
> /fast/mingo/tip/tools/perf/perf[0x419f95]
> /fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
> /fast/mingo/tip/tools/perf/perf[0x4198fd]
> ======= Memory map: ========
> 
> Program received signal SIGABRT, Aborted.
> 0x0000003e590359e9 in raise () from /lib64/libc.so.6
> Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
> (gdb) 
> (gdb) bt
> #0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
> #1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
> #2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
> #3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
> #4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
> #5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
> #6  machine__exit (machine=<optimized out>) at util/machine.c:103
> #7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
> #8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
> #9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
> #10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
> #11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
> #12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
> #13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
> #14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
> (gdb) 
> 
> Running it on an up-to-date installation of Fedora 19.
> 
> Thanks,
> 
> 	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-09 19:36 Arnaldo Carvalho de Melo
  2013-12-10 11:07 ` Ingo Molnar
@ 2013-12-10 11:12 ` Ingo Molnar
  2013-12-10 11:44   ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 11:12 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Ben Cheng, David Ahern, Dongsheng Yang,
	Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Arnaldo Carvalho de Melo


Hm, I've unpulled it because 'perf top' crashes on exit, in 
dso__delete():

[Thread 0x7ffff70df700 (LWP 29561) exited]
*** Error in `/fast/mingo/tip/tools/perf/perf': munmap_chunk(): invalid pointer: 0x0000000000587371 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3e5907bbe7]
/fast/mingo/tip/tools/perf/perf(dso__delete+0xd9)[0x46da89]
/fast/mingo/tip/tools/perf/perf(machines__exit+0xad)[0x482e7d]
/fast/mingo/tip/tools/perf/perf(perf_session__delete+0xb6)[0x488c66]
/fast/mingo/tip/tools/perf/perf(cmd_top+0xf44)[0x4345f4]
/fast/mingo/tip/tools/perf/perf[0x419f95]
/fast/mingo/tip/tools/perf/perf(main+0x600)[0x419830]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3e59021b45]
/fast/mingo/tip/tools/perf/perf[0x4198fd]
======= Memory map: ========

Program received signal SIGABRT, Aborted.
0x0000003e590359e9 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install audit-libs-2.3.2-1.fc19.x86_64 bzip2-libs-1.0.6-8.fc19.x86_64 elfutils-libelf-0.156-5.fc19.x86_64 elfutils-libs-0.156-5.fc19.x86_64 glibc-2.17-19.fc19.x86_64 libgcc-4.8.2-1.fc19.x86_64 libunwind-1.1-2.fc19.x86_64 nss-softokn-freebl-3.15.2-2.fc19.x86_64 numactl-libs-2.0.8-4.fc19.x86_64 perl-libs-5.16.3-266.fc19.x86_64 python-libs-2.7.5-9.fc19.x86_64 slang-2.2.4-8.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
(gdb) 
(gdb) bt
#0  0x0000003e590359e9 in raise () from /lib64/libc.so.6
#1  0x0000003e590370f8 in abort () from /lib64/libc.so.6
#2  0x0000003e59075d17 in __libc_message () from /lib64/libc.so.6
#3  0x0000003e5907bbe7 in malloc_printerr () from /lib64/libc.so.6
#4  0x000000000046da89 in dso__delete (dso=0x8e46f0) at util/dso.c:496
#5  0x0000000000482e7d in dsos__delete (dsos=0x8e4490) at util/machine.c:72
#6  machine__exit (machine=<optimized out>) at util/machine.c:103
#7  machines__exit (machines=machines@entry=0x8e4438) at util/machine.c:123
#8  0x0000000000488c66 in perf_session__delete (session=0x8e4360) at util/session.c:155
#9  0x00000000004345f4 in __cmd_top (top=0x7fffffffb140) at builtin-top.c:985
#10 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1210
#11 0x0000000000419f95 in run_builtin (p=p@entry=0x7ece88 <commands+264>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe420) at perf.c:319
#12 0x0000000000419830 in handle_internal_command (argv=0x7fffffffe420, argc=2) at perf.c:376
#13 run_argv (argv=0x7fffffffe220, argcp=0x7fffffffe22c) at perf.c:420
#14 main (argc=2, argv=0x7fffffffe420) at perf.c:529
(gdb) 

Running it on an up-to-date installation of Fedora 19.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-12-09 19:36 Arnaldo Carvalho de Melo
@ 2013-12-10 11:07 ` Ingo Molnar
  2013-12-10 15:47   ` Jiri Olsa
  2013-12-10 11:12 ` Ingo Molnar
  1 sibling, 1 reply; 81+ messages in thread
From: Ingo Molnar @ 2013-12-10 11:07 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Ben Cheng, David Ahern, Dongsheng Yang,
	Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> Best Regards,
> 
> -Arnaldo
> 
> The following changes since commit 6d65894bc028d0342829ea1e64c9e9efad571124:
> 
>   tools lib traceevent: Update kvm plugin with is_writable_pte helper (2013-12-04 15:38:14 -0300)
> 
> 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 e993d10caeb6dca690dbaf86e1981ba240d1414a:
> 
>   perf symbols: fix bug in usage of the basename() function (2013-12-09 15:41:59 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Add an option in 'perf script' to print the source line number, from Adrian Hunter
> 
> . Fix symoff printing in callchains in 'perf script', from Adrian Hunter.
> 
> . Assorted mmap_pages handling fixes, from Adrian Hunter.
> 
> . Fix summary percentage when processing files in 'perf trace', fom David Ahern.
> 
> . Handle old kernels where the "raw_syscalls" tracepoints were called plan "syscalls",
>   in 'perf trace', from David Ahern.
> 
> . Several man pages typo fixes from Dongsheng Yang.
> 
> . Add '-v' option to 'perf kvm', from Dongsheng Yang.
> 
> . Make perf kvm diff support --guestmount, from Dongsheng Yang.
> 
> . Get rid of several die() calls in libtraceevent, from Namhyung Kim.
> 
> . Use basename() in a more robust way, to avoid problems related to different
>   system library implementations for that function, from Stephane Eranian.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Adrian Hunter (6):
>       perf script: Fix symoff printing in callchains
>       perf script: Add an option to print the source line number
>       perf record: Fix display of incorrect mmap pages
>       perf evlist: Remove unnecessary parentheses
>       perf evlist: Fix max mmap_pages
>       perf evlist: Fix mmap pages rounding to power of 2
> 
> David Ahern (2):
>       perf trace: Add support for syscalls vs raw_syscalls
>       perf trace: Fix summary percentage when processing files
> 
> Dongsheng Yang (6):
>       perf kvm: Introduce option -v for perf kvm command.
>       perf kvm: Fix bug in 'stat report'
>       perf archive: Remove duplicated 'runs' in man page
>       perf annotate: Fix typo
>       perf kvm: Move code to generate filename for perf-kvm to function.
>       perf kvm: Make perf kvm diff support --guestmount.
> 
> Namhyung Kim (5):
>       tools lib traceevent: Get rid of malloc_or_die() in pevent_filter_alloc()
>       tools lib traceevent: Get rid of malloc_or_die() in add_event()
>       tools lib traceevent: Get rid of die() in create_arg_item()
>       tools lib traceevent: Get rid of malloc_or_die() in pevent_filter_add_filter_str()
>       tools lib traceevent: Get rid of die() in pevent_filter_clear_trivial()
> 
> Stephane Eranian (1):
>       perf symbols: fix bug in usage of the basename() function
> 
> Steven Rostedt (1):
>       tools lib traceevent: Report better error message on bad function args
> 
>  tools/lib/traceevent/event-parse.c        | 28 +++++++++------
>  tools/lib/traceevent/event-parse.h        |  2 +-
>  tools/lib/traceevent/parse-filter.c       | 57 ++++++++++++++++++++++++-------
>  tools/perf/Documentation/perf-archive.txt |  6 ++--
>  tools/perf/Documentation/perf-kvm.txt     |  7 ++--
>  tools/perf/Documentation/perf-script.txt  |  2 +-
>  tools/perf/builtin-annotate.c             |  2 +-
>  tools/perf/builtin-diff.c                 |  3 +-
>  tools/perf/builtin-kvm.c                  | 11 +++---
>  tools/perf/builtin-record.c               |  2 +-
>  tools/perf/builtin-script.c               | 10 ++++++
>  tools/perf/builtin-trace.c                | 32 +++++++++++++++--
>  tools/perf/util/dso.c                     | 29 +++++++++++++++-
>  tools/perf/util/evlist.c                  | 10 +++---
>  tools/perf/util/map.c                     | 17 +++++++++
>  tools/perf/util/map.h                     |  2 ++
>  tools/perf/util/session.c                 | 15 +++++++-
>  tools/perf/util/session.h                 |  1 +
>  tools/perf/util/util.c                    | 14 ++++++++
>  tools/perf/util/util.h                    | 14 ++++++++
>  20 files changed, 214 insertions(+), 50 deletions(-)

Pulled, thanks Arnaldo!

There's one detail I noticed about the recent trace-plugin changes:

comet:~/tip/tools/perf> make install
  BUILD:   Doing 'make -j12' parallel build
  SUBDIR   Documentation
  INSTALL  Documentation-man
  INSTALL  GTK UI
  SUBDIR   /home/mingo/tip/tools/lib/traceevent/
  INSTALL  binaries
  INSTALL  plugin_jbd2.so
  INSTALL  plugin_hrtimer.so
  INSTALL  plugin_kmem.so
  INSTALL  plugin_kvm.so
  INSTALL  plugin_mac80211.so
  INSTALL  plugin_sched_switch.so
  INSTALL  plugin_function.so
  INSTALL  plugin_xen.so
  INSTALL  plugin_scsi.so
  INSTALL  plugin_cfg80211.so
  INSTALL  libexec
  INSTALL  perf-archive
  INSTALL  perl-scripts
  INSTALL  python-scripts
  INSTALL  perf_completion-script
  INSTALL  tests

those plugin installs are way too verbose, they should really be in a 
single summarized line, only saying something like:

  INSTALL  plugins

Just like we already sum up 'binaries', 'libexec', 'tests', etc.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-12-09 19:36 Arnaldo Carvalho de Melo
  2013-12-10 11:07 ` Ingo Molnar
  2013-12-10 11:12 ` Ingo Molnar
  0 siblings, 2 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-12-09 19:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Ben Cheng, David Ahern, Dongsheng Yang,
	Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>

Hi Ingo,

	Please consider pulling,

Best Regards,

-Arnaldo

The following changes since commit 6d65894bc028d0342829ea1e64c9e9efad571124:

  tools lib traceevent: Update kvm plugin with is_writable_pte helper (2013-12-04 15:38:14 -0300)

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 e993d10caeb6dca690dbaf86e1981ba240d1414a:

  perf symbols: fix bug in usage of the basename() function (2013-12-09 15:41:59 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Add an option in 'perf script' to print the source line number, from Adrian Hunter

. Fix symoff printing in callchains in 'perf script', from Adrian Hunter.

. Assorted mmap_pages handling fixes, from Adrian Hunter.

. Fix summary percentage when processing files in 'perf trace', fom David Ahern.

. Handle old kernels where the "raw_syscalls" tracepoints were called plan "syscalls",
  in 'perf trace', from David Ahern.

. Several man pages typo fixes from Dongsheng Yang.

. Add '-v' option to 'perf kvm', from Dongsheng Yang.

. Make perf kvm diff support --guestmount, from Dongsheng Yang.

. Get rid of several die() calls in libtraceevent, from Namhyung Kim.

. Use basename() in a more robust way, to avoid problems related to different
  system library implementations for that function, from Stephane Eranian.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (6):
      perf script: Fix symoff printing in callchains
      perf script: Add an option to print the source line number
      perf record: Fix display of incorrect mmap pages
      perf evlist: Remove unnecessary parentheses
      perf evlist: Fix max mmap_pages
      perf evlist: Fix mmap pages rounding to power of 2

David Ahern (2):
      perf trace: Add support for syscalls vs raw_syscalls
      perf trace: Fix summary percentage when processing files

Dongsheng Yang (6):
      perf kvm: Introduce option -v for perf kvm command.
      perf kvm: Fix bug in 'stat report'
      perf archive: Remove duplicated 'runs' in man page
      perf annotate: Fix typo
      perf kvm: Move code to generate filename for perf-kvm to function.
      perf kvm: Make perf kvm diff support --guestmount.

Namhyung Kim (5):
      tools lib traceevent: Get rid of malloc_or_die() in pevent_filter_alloc()
      tools lib traceevent: Get rid of malloc_or_die() in add_event()
      tools lib traceevent: Get rid of die() in create_arg_item()
      tools lib traceevent: Get rid of malloc_or_die() in pevent_filter_add_filter_str()
      tools lib traceevent: Get rid of die() in pevent_filter_clear_trivial()

Stephane Eranian (1):
      perf symbols: fix bug in usage of the basename() function

Steven Rostedt (1):
      tools lib traceevent: Report better error message on bad function args

 tools/lib/traceevent/event-parse.c        | 28 +++++++++------
 tools/lib/traceevent/event-parse.h        |  2 +-
 tools/lib/traceevent/parse-filter.c       | 57 ++++++++++++++++++++++++-------
 tools/perf/Documentation/perf-archive.txt |  6 ++--
 tools/perf/Documentation/perf-kvm.txt     |  7 ++--
 tools/perf/Documentation/perf-script.txt  |  2 +-
 tools/perf/builtin-annotate.c             |  2 +-
 tools/perf/builtin-diff.c                 |  3 +-
 tools/perf/builtin-kvm.c                  | 11 +++---
 tools/perf/builtin-record.c               |  2 +-
 tools/perf/builtin-script.c               | 10 ++++++
 tools/perf/builtin-trace.c                | 32 +++++++++++++++--
 tools/perf/util/dso.c                     | 29 +++++++++++++++-
 tools/perf/util/evlist.c                  | 10 +++---
 tools/perf/util/map.c                     | 17 +++++++++
 tools/perf/util/map.h                     |  2 ++
 tools/perf/util/session.c                 | 15 +++++++-
 tools/perf/util/session.h                 |  1 +
 tools/perf/util/util.c                    | 14 ++++++++
 tools/perf/util/util.h                    | 14 ++++++++
 20 files changed, 214 insertions(+), 50 deletions(-)

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-08-28 14:59 Arnaldo Carvalho de Melo
@ 2013-08-29 10:04 ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-08-29 10:04 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> 
> Hi Ingo,
> 
> 	Please consider pulling, another batch, more to come soon,
> 
> - Arnaldo
> 
> The following changes since commit 5ec4c599a52362896c3e7c6a31ba6145dca9c6f5:
> 
>   perf: Do not compute time values unnecessarily (2013-08-16 17:55:52 +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 456da532a5fb04f8a79622df7dd49e84e04f31a8:
> 
>   tools lib traceevent: Fixup jobserver setup (2013-08-27 11:05:55 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Don't install scripting files files when perl/python support is disabled.
> 
> . Support ! in -e expressions in 'perf trace', to filter a list of syscalls.
> 
> . Add --verbose and -o/--output options to 'perf trace'.
> 
> . Introduce better formatting of syscall arguments in 'perf trace',
>   including so far beautifiers for mmap, madvise, syscall return
>   values.
> 
> . Fixup jobserver setup in libtraceevent makefile.
> 
> . Debug improvements from Adrian Hunter.
> 
> . Try to increase the file descriptor limits on EMFILE, from Andi Kleen.
> 
> . Remove unused force option in 'perf kvm', from David Ahern.
> 
> . Make 'perf trace' command line arguments consistent with 'perf record',
>   from David Ahern.
> 
> . Fix correlation of samples coming after PERF_RECORD_EXIT event, from
>   David Ahern.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Adrian Hunter (3):
>       perf tools: Re-implement debug print function for linking python/perf.so
>       perf tools: Add debug prints
>       perf tools: Add pid to struct thread
> 
> Andi Kleen (1):
>       perf tools: Try to increase the file descriptor limits on EMFILE
> 
> Arnaldo Carvalho de Melo (14):
>       perf trace: Implement -o/--output filename
>       perf tools: Don't install scripting files files when disabled
>       perf trace: Support ! in -e expressions
>       perf trace: Add --verbose option
>       perf trace: Hide sys_exit messages about syscall id = -1
>       perf trace: Introduce syscall arg formatters
>       perf trace: Simplify sys_exit return printing
>       perf trace: Allow printing syscall return values in hex
>       perf trace: Add aliases to remaining syscalls of the sys_enter_newfoo
>       perf trace: Allow overiding the formatting of syscall fields
>       perf trace: Add beautifier for mmap prot parm
>       perf trace: Add beautifier for mmap flags parm
>       perf trace: Add beautifier for madvise behaviour/advice parm
>       tools lib traceevent: Fixup jobserver setup
> 
> David Ahern (3):
>       perf kvm: Remove force option to cmd_record
>       perf trace: Make command line arguments consistent with perf-record
>       perf tools: Sample after exit loses thread correlation
> 
>  tools/lib/traceevent/Makefile           |   2 +-
>  tools/perf/Documentation/perf-trace.txt |  16 ++
>  tools/perf/Makefile                     |   6 +-
>  tools/perf/builtin-kvm.c                |   1 -
>  tools/perf/builtin-trace.c              | 379 ++++++++++++++++++++++++++------
>  tools/perf/util/evlist.c                |   3 +
>  tools/perf/util/evsel.c                 |  93 ++++++++
>  tools/perf/util/machine.c               |  50 +++--
>  tools/perf/util/python.c                |  20 ++
>  tools/perf/util/thread.c                |   3 +-
>  tools/perf/util/thread.h                |   8 +-
>  11 files changed, 488 insertions(+), 93 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-08-28 14:59 Arnaldo Carvalho de Melo
  2013-08-29 10:04 ` Ingo Molnar
  0 siblings, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-08-28 14:59 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>

Hi Ingo,

	Please consider pulling, another batch, more to come soon,

- Arnaldo

The following changes since commit 5ec4c599a52362896c3e7c6a31ba6145dca9c6f5:

  perf: Do not compute time values unnecessarily (2013-08-16 17:55:52 +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 456da532a5fb04f8a79622df7dd49e84e04f31a8:

  tools lib traceevent: Fixup jobserver setup (2013-08-27 11:05:55 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Don't install scripting files files when perl/python support is disabled.

. Support ! in -e expressions in 'perf trace', to filter a list of syscalls.

. Add --verbose and -o/--output options to 'perf trace'.

. Introduce better formatting of syscall arguments in 'perf trace',
  including so far beautifiers for mmap, madvise, syscall return
  values.

. Fixup jobserver setup in libtraceevent makefile.

. Debug improvements from Adrian Hunter.

. Try to increase the file descriptor limits on EMFILE, from Andi Kleen.

. Remove unused force option in 'perf kvm', from David Ahern.

. Make 'perf trace' command line arguments consistent with 'perf record',
  from David Ahern.

. Fix correlation of samples coming after PERF_RECORD_EXIT event, from
  David Ahern.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (3):
      perf tools: Re-implement debug print function for linking python/perf.so
      perf tools: Add debug prints
      perf tools: Add pid to struct thread

Andi Kleen (1):
      perf tools: Try to increase the file descriptor limits on EMFILE

Arnaldo Carvalho de Melo (14):
      perf trace: Implement -o/--output filename
      perf tools: Don't install scripting files files when disabled
      perf trace: Support ! in -e expressions
      perf trace: Add --verbose option
      perf trace: Hide sys_exit messages about syscall id = -1
      perf trace: Introduce syscall arg formatters
      perf trace: Simplify sys_exit return printing
      perf trace: Allow printing syscall return values in hex
      perf trace: Add aliases to remaining syscalls of the sys_enter_newfoo
      perf trace: Allow overiding the formatting of syscall fields
      perf trace: Add beautifier for mmap prot parm
      perf trace: Add beautifier for mmap flags parm
      perf trace: Add beautifier for madvise behaviour/advice parm
      tools lib traceevent: Fixup jobserver setup

David Ahern (3):
      perf kvm: Remove force option to cmd_record
      perf trace: Make command line arguments consistent with perf-record
      perf tools: Sample after exit loses thread correlation

 tools/lib/traceevent/Makefile           |   2 +-
 tools/perf/Documentation/perf-trace.txt |  16 ++
 tools/perf/Makefile                     |   6 +-
 tools/perf/builtin-kvm.c                |   1 -
 tools/perf/builtin-trace.c              | 379 ++++++++++++++++++++++++++------
 tools/perf/util/evlist.c                |   3 +
 tools/perf/util/evsel.c                 |  93 ++++++++
 tools/perf/util/machine.c               |  50 +++--
 tools/perf/util/python.c                |  20 ++
 tools/perf/util/thread.c                |   3 +-
 tools/perf/util/thread.h                |   8 +-
 11 files changed, 488 insertions(+), 93 deletions(-)

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-08-14 18:24 Arnaldo Carvalho de Melo
@ 2013-08-15  7:52 ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-08-15  7:52 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Runzhen Wang,
	Stephane Eranian, Xiao Guangrong, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> 	Flushing it out now before processing another batch.
> 
> - Arnaldo
> 
> The following changes since commit 0a3d23a2568ed5e73bd4fb532dc672fa9f03b1f1:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-08-12 10:14:47 +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 2ae3a312c0ccd8ff615372f00aab1700aac27474:
> 
>   perf trace: Allow specifying which syscalls to trace (2013-08-14 11:44:21 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Allow specifying syscalls in 'perf trace', a la strace.
> 
> . Simplify symbol filtering by doing it at machine class level,
>   from Adrian Hunter.
> 
> . Add option to 'perf kvm' to print only events that exceed a specified time
>   duration, from David Ahern.
> 
> . 'perf sched' improvements, including removing some tracepoints that provide
>   the same information as the PERF_RECORD_{FORK,EXIT} events.
> 
> . Improve stack trace printing, from David Ahern.
> 
> . Update documentation with live command, from David Ahern
> 
> . Fix 'perf test' compile failure on do_sort_something, from David Ahern.
> 
> . Improve robustness of topology parsing code, from Stephane Eranian.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Adrian Hunter (8):
>       perf machine: Add symbol filter to struct machine
>       perf top: Set the machines symbol filter
>       perf report: Set the machines symbol filter
>       perf mem: Remove unused symbol filter member
>       perf annotate: Set the machines symbol filter
>       perf tools: Remove filter parameter of perf_event__preprocess_sample()
>       perf tools: Remove filter parameter of thread__find_addr_location()
>       perf tools: Remove filter parameter of thread__find_addr_map()
> 
> Arnaldo Carvalho de Melo (1):
>       perf trace: Allow specifying which syscalls to trace
> 
> David Ahern (11):
>       perf kvm: Option to print events that exceed a duration
>       perf kvm: Update documentation with live command
>       perf sched: Simplify arguments to read_events
>       perf sched: Remove thread lookup in sample handler
>       perf sched: Remove sched_process_exit tracepoint
>       perf sched: Remove sched_process_fork tracepoint
>       perf tool: Simplify options to perf_evsel__print_ip
>       perf evsel: Add option to print stack trace on single line
>       perf evsel: Add option to limit stack depth in callchain dumps
>       perf session: Change perf_session__has_traces to actually check for tracepoints
>       perf tests: Fix compile failure on do_sort_something
> 
> Stephane Eranian (1):
>       perf tools: Improve robustness of topology parsing code
> 
>  tools/perf/Documentation/perf-kvm.txt   | 46 +++++++++++++++-
>  tools/perf/Documentation/perf-trace.txt |  4 ++
>  tools/perf/builtin-annotate.c           |  5 +-
>  tools/perf/builtin-diff.c               |  2 +-
>  tools/perf/builtin-inject.c             |  2 +-
>  tools/perf/builtin-kvm.c                | 25 +++++++--
>  tools/perf/builtin-mem.c                |  4 +-
>  tools/perf/builtin-report.c             |  7 ++-
>  tools/perf/builtin-sched.c              | 94 ++++++++++++++-------------------
>  tools/perf/builtin-script.c             | 35 +++++++++---
>  tools/perf/builtin-top.c                |  5 +-
>  tools/perf/builtin-trace.c              | 52 +++++++++++++++---
>  tools/perf/perf.h                       |  3 ++
>  tools/perf/tests/code-reading.c         | 13 +++--
>  tools/perf/tests/hists_link.c           |  4 +-
>  tools/perf/util/build-id.c              |  2 +-
>  tools/perf/util/event.c                 | 20 +++----
>  tools/perf/util/event.h                 |  3 +-
>  tools/perf/util/header.c                | 11 ++--
>  tools/perf/util/machine.c               | 28 ++++++++--
>  tools/perf/util/machine.h               |  5 ++
>  tools/perf/util/session.c               | 40 +++++++++-----
>  tools/perf/util/session.h               |  8 ++-
>  tools/perf/util/thread.h                |  5 +-
>  tools/perf/util/unwind.c                |  6 +--
>  25 files changed, 294 insertions(+), 135 deletions(-)

Pulled, thanks Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-08-14 18:24 Arnaldo Carvalho de Melo
  2013-08-15  7:52 ` Ingo Molnar
  0 siblings, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-08-14 18:24 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Runzhen Wang,
	Stephane Eranian, Xiao Guangrong, Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>

Hi Ingo,

	Please consider pulling,

	Flushing it out now before processing another batch.

- Arnaldo

The following changes since commit 0a3d23a2568ed5e73bd4fb532dc672fa9f03b1f1:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-08-12 10:14:47 +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 2ae3a312c0ccd8ff615372f00aab1700aac27474:

  perf trace: Allow specifying which syscalls to trace (2013-08-14 11:44:21 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Allow specifying syscalls in 'perf trace', a la strace.

. Simplify symbol filtering by doing it at machine class level,
  from Adrian Hunter.

. Add option to 'perf kvm' to print only events that exceed a specified time
  duration, from David Ahern.

. 'perf sched' improvements, including removing some tracepoints that provide
  the same information as the PERF_RECORD_{FORK,EXIT} events.

. Improve stack trace printing, from David Ahern.

. Update documentation with live command, from David Ahern

. Fix 'perf test' compile failure on do_sort_something, from David Ahern.

. Improve robustness of topology parsing code, from Stephane Eranian.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (8):
      perf machine: Add symbol filter to struct machine
      perf top: Set the machines symbol filter
      perf report: Set the machines symbol filter
      perf mem: Remove unused symbol filter member
      perf annotate: Set the machines symbol filter
      perf tools: Remove filter parameter of perf_event__preprocess_sample()
      perf tools: Remove filter parameter of thread__find_addr_location()
      perf tools: Remove filter parameter of thread__find_addr_map()

Arnaldo Carvalho de Melo (1):
      perf trace: Allow specifying which syscalls to trace

David Ahern (11):
      perf kvm: Option to print events that exceed a duration
      perf kvm: Update documentation with live command
      perf sched: Simplify arguments to read_events
      perf sched: Remove thread lookup in sample handler
      perf sched: Remove sched_process_exit tracepoint
      perf sched: Remove sched_process_fork tracepoint
      perf tool: Simplify options to perf_evsel__print_ip
      perf evsel: Add option to print stack trace on single line
      perf evsel: Add option to limit stack depth in callchain dumps
      perf session: Change perf_session__has_traces to actually check for tracepoints
      perf tests: Fix compile failure on do_sort_something

Stephane Eranian (1):
      perf tools: Improve robustness of topology parsing code

 tools/perf/Documentation/perf-kvm.txt   | 46 +++++++++++++++-
 tools/perf/Documentation/perf-trace.txt |  4 ++
 tools/perf/builtin-annotate.c           |  5 +-
 tools/perf/builtin-diff.c               |  2 +-
 tools/perf/builtin-inject.c             |  2 +-
 tools/perf/builtin-kvm.c                | 25 +++++++--
 tools/perf/builtin-mem.c                |  4 +-
 tools/perf/builtin-report.c             |  7 ++-
 tools/perf/builtin-sched.c              | 94 ++++++++++++++-------------------
 tools/perf/builtin-script.c             | 35 +++++++++---
 tools/perf/builtin-top.c                |  5 +-
 tools/perf/builtin-trace.c              | 52 +++++++++++++++---
 tools/perf/perf.h                       |  3 ++
 tools/perf/tests/code-reading.c         | 13 +++--
 tools/perf/tests/hists_link.c           |  4 +-
 tools/perf/util/build-id.c              |  2 +-
 tools/perf/util/event.c                 | 20 +++----
 tools/perf/util/event.h                 |  3 +-
 tools/perf/util/header.c                | 11 ++--
 tools/perf/util/machine.c               | 28 ++++++++--
 tools/perf/util/machine.h               |  5 ++
 tools/perf/util/session.c               | 40 +++++++++-----
 tools/perf/util/session.h               |  8 ++-
 tools/perf/util/thread.h                |  5 +-
 tools/perf/util/unwind.c                |  6 +--
 25 files changed, 294 insertions(+), 135 deletions(-)

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2013-01-30 14:46 ` Arnaldo Carvalho de Melo
@ 2013-01-31  9:27   ` Ingo Molnar
  -1 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-01-31  9:27 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Andi Kleen, Andrea Arcangeli, Andrew Morton,
	Anton Blanchard, Borislav Petkov, Corey Ashford, David Ahern,
	Frederic Weisbecker, Hugh Dickins, Jiri Olsa, linuxppc-dev,
	Mel Gorman, Michael Ellerman, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Hurley, Peter Zijlstra, Rik van Riel,
	Stephane Eranian, Steven Rostedt, Sukadev Bhattiprolu,
	Thomas Jarosch, arnaldo.melo, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling.
> 
> 	Namhyung, Jiri, the 'group report' patches are at acme/perf/group,
> will send a pull req later if it survives further testing.
> 
> - Arnaldo
> 
> The following changes since commit a2d28d0c198b65fac28ea6212f5f8edc77b29c27:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-25 11:34:00 +0100)
> 
> 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 5809fde040de2afa477a6c593ce2e8fd2c11d9d3:
> 
>   perf header: Fix double fclose() on do_write(fd, xxx) failure (2013-01-30 10:40:44 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Fix some leaks in exit paths.
> 
> . Use memdup where applicable
> 
> . Remove some die() calls, allowing callers to handle exit paths
>   gracefully.
> 
> . Correct typo in tools Makefile, fix from Borislav Petkov.
> 
> . Add 'perf bench numa mem' NUMA performance measurement suite, from Ingo Molnar.
> 
> . Handle dynamic array's element size properly, fix from Jiri Olsa.
> 
> . Fix memory leaks on evsel->counts, from Namhyung Kim.
> 
> . Make numa benchmark optional, allowing the build in machines where required
>   numa libraries are not present, fix from Peter Hurley.
> 
> . Add interval printing in 'perf stat', from Stephane Eranian.
> 
> . Fix compile warnings in tests/attr.c, from Sukadev Bhattiprolu.
> 
> . Fix double free, pclose instead of fclose, leaks and double fclose errors
>   found with the cppcheck tool, from Thomas Jarosch.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (8):
>       perf tools: Stop using 'self' in strlist
>       perf tools: Stop using 'self' in map.[ch]
>       perf tools: Use memdup in map__clone
>       perf kmem: Use memdup()
>       perf header: Stop using die() calls when processing tracing data
>       perf ui browser: Free browser->helpline() on ui_browser__hide()
>       perf tests: Call machine__exit in the vmlinux matches kallsyms test
>       perf tests: Fix leaks on PERF_RECORD_* test
> 
> Borislav Petkov (1):
>       tools: Correct typo in tools Makefile
> 
> Ingo Molnar (1):
>       perf: Add 'perf bench numa mem' NUMA performance measurement suite
> 
> Jiri Olsa (1):
>       tools lib traceevent: Handle dynamic array's element size properly
> 
> Namhyung Kim (1):
>       perf evsel: Fix memory leaks on evsel->counts
> 
> Peter Hurley (1):
>       perf tools: Make numa benchmark optional
> 
> Stephane Eranian (2):
>       perf evsel: Add prev_raw_count field
>       perf stat: Add interval printing
> 
> Sukadev Bhattiprolu (1):
>       perf tools, powerpc: Fix compile warnings in tests/attr.c
> 
> Thomas Jarosch (5):
>       perf tools: Fix possible double free on error
>       perf sort: Use pclose() instead of fclose() on pipe stream
>       perf tools: Fix memory leak on error
>       perf header: Fix memory leak for the "Not caching a kptr_restrict'ed /proc/kallsyms" case
>       perf header: Fix double fclose() on do_write(fd, xxx) failure
> 
>  tools/Makefile                           |    2 +-
>  tools/lib/traceevent/event-parse.c       |   39 +-
>  tools/perf/Documentation/perf-stat.txt   |    4 +
>  tools/perf/Makefile                      |   13 +
>  tools/perf/arch/common.c                 |    1 +
>  tools/perf/bench/bench.h                 |    1 +
>  tools/perf/bench/numa.c                  | 1731 ++++++++++++++++++++++++++++++
>  tools/perf/builtin-bench.c               |   17 +
>  tools/perf/builtin-kmem.c                |    6 +-
>  tools/perf/builtin-stat.c                |  158 ++-
>  tools/perf/config/feature-tests.mak      |   11 +
>  tools/perf/tests/attr.c                  |    5 +
>  tools/perf/tests/open-syscall-all-cpus.c |    1 +
>  tools/perf/tests/perf-record.c           |   12 +-
>  tools/perf/tests/vmlinux-kallsyms.c      |    4 +-
>  tools/perf/ui/browser.c                  |    2 +
>  tools/perf/util/event.c                  |    4 +-
>  tools/perf/util/evsel.c                  |   31 +
>  tools/perf/util/evsel.h                  |    2 +
>  tools/perf/util/header.c                 |   25 +-
>  tools/perf/util/map.c                    |  118 +-
>  tools/perf/util/map.h                    |   24 +-
>  tools/perf/util/sort.c                   |    7 +-
>  tools/perf/util/strlist.c                |   54 +-
>  tools/perf/util/strlist.h                |   42 +-
>  25 files changed, 2154 insertions(+), 160 deletions(-)
>  create mode 100644 tools/perf/bench/numa.c

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-01-31  9:27   ` Ingo Molnar
  0 siblings, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2013-01-31  9:27 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Frederic Weisbecker, Stephane Eranian,
	arnaldo.melo, linuxppc-dev, Paul Mackerras, Jiri Olsa,
	Andrea Arcangeli, Andi Kleen, Hugh Dickins, Mel Gorman,
	Michael Ellerman, Borislav Petkov, Thomas Jarosch, Rik van Riel,
	Corey Ashford, Namhyung Kim, Anton Blanchard, Steven Rostedt,
	Arnaldo Carvalho de Melo, Sukadev Bhattiprolu, Peter Hurley,
	Mike Galbraith, linux-kernel, David Ahern, Andrew Morton


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling.
> 
> 	Namhyung, Jiri, the 'group report' patches are at acme/perf/group,
> will send a pull req later if it survives further testing.
> 
> - Arnaldo
> 
> The following changes since commit a2d28d0c198b65fac28ea6212f5f8edc77b29c27:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-25 11:34:00 +0100)
> 
> 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 5809fde040de2afa477a6c593ce2e8fd2c11d9d3:
> 
>   perf header: Fix double fclose() on do_write(fd, xxx) failure (2013-01-30 10:40:44 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Fix some leaks in exit paths.
> 
> . Use memdup where applicable
> 
> . Remove some die() calls, allowing callers to handle exit paths
>   gracefully.
> 
> . Correct typo in tools Makefile, fix from Borislav Petkov.
> 
> . Add 'perf bench numa mem' NUMA performance measurement suite, from Ingo Molnar.
> 
> . Handle dynamic array's element size properly, fix from Jiri Olsa.
> 
> . Fix memory leaks on evsel->counts, from Namhyung Kim.
> 
> . Make numa benchmark optional, allowing the build in machines where required
>   numa libraries are not present, fix from Peter Hurley.
> 
> . Add interval printing in 'perf stat', from Stephane Eranian.
> 
> . Fix compile warnings in tests/attr.c, from Sukadev Bhattiprolu.
> 
> . Fix double free, pclose instead of fclose, leaks and double fclose errors
>   found with the cppcheck tool, from Thomas Jarosch.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (8):
>       perf tools: Stop using 'self' in strlist
>       perf tools: Stop using 'self' in map.[ch]
>       perf tools: Use memdup in map__clone
>       perf kmem: Use memdup()
>       perf header: Stop using die() calls when processing tracing data
>       perf ui browser: Free browser->helpline() on ui_browser__hide()
>       perf tests: Call machine__exit in the vmlinux matches kallsyms test
>       perf tests: Fix leaks on PERF_RECORD_* test
> 
> Borislav Petkov (1):
>       tools: Correct typo in tools Makefile
> 
> Ingo Molnar (1):
>       perf: Add 'perf bench numa mem' NUMA performance measurement suite
> 
> Jiri Olsa (1):
>       tools lib traceevent: Handle dynamic array's element size properly
> 
> Namhyung Kim (1):
>       perf evsel: Fix memory leaks on evsel->counts
> 
> Peter Hurley (1):
>       perf tools: Make numa benchmark optional
> 
> Stephane Eranian (2):
>       perf evsel: Add prev_raw_count field
>       perf stat: Add interval printing
> 
> Sukadev Bhattiprolu (1):
>       perf tools, powerpc: Fix compile warnings in tests/attr.c
> 
> Thomas Jarosch (5):
>       perf tools: Fix possible double free on error
>       perf sort: Use pclose() instead of fclose() on pipe stream
>       perf tools: Fix memory leak on error
>       perf header: Fix memory leak for the "Not caching a kptr_restrict'ed /proc/kallsyms" case
>       perf header: Fix double fclose() on do_write(fd, xxx) failure
> 
>  tools/Makefile                           |    2 +-
>  tools/lib/traceevent/event-parse.c       |   39 +-
>  tools/perf/Documentation/perf-stat.txt   |    4 +
>  tools/perf/Makefile                      |   13 +
>  tools/perf/arch/common.c                 |    1 +
>  tools/perf/bench/bench.h                 |    1 +
>  tools/perf/bench/numa.c                  | 1731 ++++++++++++++++++++++++++++++
>  tools/perf/builtin-bench.c               |   17 +
>  tools/perf/builtin-kmem.c                |    6 +-
>  tools/perf/builtin-stat.c                |  158 ++-
>  tools/perf/config/feature-tests.mak      |   11 +
>  tools/perf/tests/attr.c                  |    5 +
>  tools/perf/tests/open-syscall-all-cpus.c |    1 +
>  tools/perf/tests/perf-record.c           |   12 +-
>  tools/perf/tests/vmlinux-kallsyms.c      |    4 +-
>  tools/perf/ui/browser.c                  |    2 +
>  tools/perf/util/event.c                  |    4 +-
>  tools/perf/util/evsel.c                  |   31 +
>  tools/perf/util/evsel.h                  |    2 +
>  tools/perf/util/header.c                 |   25 +-
>  tools/perf/util/map.c                    |  118 +-
>  tools/perf/util/map.h                    |   24 +-
>  tools/perf/util/sort.c                   |    7 +-
>  tools/perf/util/strlist.c                |   54 +-
>  tools/perf/util/strlist.h                |   42 +-
>  25 files changed, 2154 insertions(+), 160 deletions(-)
>  create mode 100644 tools/perf/bench/numa.c

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-01-30 14:46 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-30 14:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
	Andrea Arcangeli, Andrew Morton, Anton Blanchard,
	Borislav Petkov, Corey Ashford, David Ahern, Frederic Weisbecker,
	Hugh Dickins, Jiri Olsa, linuxppc-dev, Mel Gorman,
	Michael Ellerman, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Hurley, Peter Zijlstra, Rik van Riel, Stephane Eranian,
	Steven Rostedt, Sukadev Bhattiprolu, Thomas Jarosch,
	arnaldo.melo, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling.

	Namhyung, Jiri, the 'group report' patches are at acme/perf/group,
will send a pull req later if it survives further testing.

- Arnaldo

The following changes since commit a2d28d0c198b65fac28ea6212f5f8edc77b29c27:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-25 11:34:00 +0100)

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 5809fde040de2afa477a6c593ce2e8fd2c11d9d3:

  perf header: Fix double fclose() on do_write(fd, xxx) failure (2013-01-30 10:40:44 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Fix some leaks in exit paths.

. Use memdup where applicable

. Remove some die() calls, allowing callers to handle exit paths
  gracefully.

. Correct typo in tools Makefile, fix from Borislav Petkov.

. Add 'perf bench numa mem' NUMA performance measurement suite, from Ingo Molnar.

. Handle dynamic array's element size properly, fix from Jiri Olsa.

. Fix memory leaks on evsel->counts, from Namhyung Kim.

. Make numa benchmark optional, allowing the build in machines where required
  numa libraries are not present, fix from Peter Hurley.

. Add interval printing in 'perf stat', from Stephane Eranian.

. Fix compile warnings in tests/attr.c, from Sukadev Bhattiprolu.

. Fix double free, pclose instead of fclose, leaks and double fclose errors
  found with the cppcheck tool, from Thomas Jarosch.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (8):
      perf tools: Stop using 'self' in strlist
      perf tools: Stop using 'self' in map.[ch]
      perf tools: Use memdup in map__clone
      perf kmem: Use memdup()
      perf header: Stop using die() calls when processing tracing data
      perf ui browser: Free browser->helpline() on ui_browser__hide()
      perf tests: Call machine__exit in the vmlinux matches kallsyms test
      perf tests: Fix leaks on PERF_RECORD_* test

Borislav Petkov (1):
      tools: Correct typo in tools Makefile

Ingo Molnar (1):
      perf: Add 'perf bench numa mem' NUMA performance measurement suite

Jiri Olsa (1):
      tools lib traceevent: Handle dynamic array's element size properly

Namhyung Kim (1):
      perf evsel: Fix memory leaks on evsel->counts

Peter Hurley (1):
      perf tools: Make numa benchmark optional

Stephane Eranian (2):
      perf evsel: Add prev_raw_count field
      perf stat: Add interval printing

Sukadev Bhattiprolu (1):
      perf tools, powerpc: Fix compile warnings in tests/attr.c

Thomas Jarosch (5):
      perf tools: Fix possible double free on error
      perf sort: Use pclose() instead of fclose() on pipe stream
      perf tools: Fix memory leak on error
      perf header: Fix memory leak for the "Not caching a kptr_restrict'ed /proc/kallsyms" case
      perf header: Fix double fclose() on do_write(fd, xxx) failure

 tools/Makefile                           |    2 +-
 tools/lib/traceevent/event-parse.c       |   39 +-
 tools/perf/Documentation/perf-stat.txt   |    4 +
 tools/perf/Makefile                      |   13 +
 tools/perf/arch/common.c                 |    1 +
 tools/perf/bench/bench.h                 |    1 +
 tools/perf/bench/numa.c                  | 1731 ++++++++++++++++++++++++++++++
 tools/perf/builtin-bench.c               |   17 +
 tools/perf/builtin-kmem.c                |    6 +-
 tools/perf/builtin-stat.c                |  158 ++-
 tools/perf/config/feature-tests.mak      |   11 +
 tools/perf/tests/attr.c                  |    5 +
 tools/perf/tests/open-syscall-all-cpus.c |    1 +
 tools/perf/tests/perf-record.c           |   12 +-
 tools/perf/tests/vmlinux-kallsyms.c      |    4 +-
 tools/perf/ui/browser.c                  |    2 +
 tools/perf/util/event.c                  |    4 +-
 tools/perf/util/evsel.c                  |   31 +
 tools/perf/util/evsel.h                  |    2 +
 tools/perf/util/header.c                 |   25 +-
 tools/perf/util/map.c                    |  118 +-
 tools/perf/util/map.h                    |   24 +-
 tools/perf/util/sort.c                   |    7 +-
 tools/perf/util/strlist.c                |   54 +-
 tools/perf/util/strlist.h                |   42 +-
 25 files changed, 2154 insertions(+), 160 deletions(-)
 create mode 100644 tools/perf/bench/numa.c

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2013-01-30 14:46 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-30 14:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Peter Zijlstra, Frederic Weisbecker, Stephane Eranian,
	arnaldo.melo, linuxppc-dev, Paul Mackerras, Thomas Jarosch,
	Jiri Olsa, Arnaldo Carvalho de Melo, Andi Kleen, Hugh Dickins,
	Mel Gorman, Michael Ellerman, Borislav Petkov, Andrea Arcangeli,
	Rik van Riel, Corey Ashford, Namhyung Kim, Anton Blanchard,
	Steven Rostedt, Arnaldo Carvalho de Melo, Sukadev Bhattiprolu,
	Peter Hurley, Mike Galbraith, linux-kernel, David Ahern,
	Andrew Morton

Hi Ingo,

	Please consider pulling.

	Namhyung, Jiri, the 'group report' patches are at acme/perf/group,
will send a pull req later if it survives further testing.

- Arnaldo

The following changes since commit a2d28d0c198b65fac28ea6212f5f8edc77b29c27:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-25 11:34:00 +0100)

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 5809fde040de2afa477a6c593ce2e8fd2c11d9d3:

  perf header: Fix double fclose() on do_write(fd, xxx) failure (2013-01-30 10:40:44 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Fix some leaks in exit paths.

. Use memdup where applicable

. Remove some die() calls, allowing callers to handle exit paths
  gracefully.

. Correct typo in tools Makefile, fix from Borislav Petkov.

. Add 'perf bench numa mem' NUMA performance measurement suite, from Ingo Molnar.

. Handle dynamic array's element size properly, fix from Jiri Olsa.

. Fix memory leaks on evsel->counts, from Namhyung Kim.

. Make numa benchmark optional, allowing the build in machines where required
  numa libraries are not present, fix from Peter Hurley.

. Add interval printing in 'perf stat', from Stephane Eranian.

. Fix compile warnings in tests/attr.c, from Sukadev Bhattiprolu.

. Fix double free, pclose instead of fclose, leaks and double fclose errors
  found with the cppcheck tool, from Thomas Jarosch.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (8):
      perf tools: Stop using 'self' in strlist
      perf tools: Stop using 'self' in map.[ch]
      perf tools: Use memdup in map__clone
      perf kmem: Use memdup()
      perf header: Stop using die() calls when processing tracing data
      perf ui browser: Free browser->helpline() on ui_browser__hide()
      perf tests: Call machine__exit in the vmlinux matches kallsyms test
      perf tests: Fix leaks on PERF_RECORD_* test

Borislav Petkov (1):
      tools: Correct typo in tools Makefile

Ingo Molnar (1):
      perf: Add 'perf bench numa mem' NUMA performance measurement suite

Jiri Olsa (1):
      tools lib traceevent: Handle dynamic array's element size properly

Namhyung Kim (1):
      perf evsel: Fix memory leaks on evsel->counts

Peter Hurley (1):
      perf tools: Make numa benchmark optional

Stephane Eranian (2):
      perf evsel: Add prev_raw_count field
      perf stat: Add interval printing

Sukadev Bhattiprolu (1):
      perf tools, powerpc: Fix compile warnings in tests/attr.c

Thomas Jarosch (5):
      perf tools: Fix possible double free on error
      perf sort: Use pclose() instead of fclose() on pipe stream
      perf tools: Fix memory leak on error
      perf header: Fix memory leak for the "Not caching a kptr_restrict'ed /proc/kallsyms" case
      perf header: Fix double fclose() on do_write(fd, xxx) failure

 tools/Makefile                           |    2 +-
 tools/lib/traceevent/event-parse.c       |   39 +-
 tools/perf/Documentation/perf-stat.txt   |    4 +
 tools/perf/Makefile                      |   13 +
 tools/perf/arch/common.c                 |    1 +
 tools/perf/bench/bench.h                 |    1 +
 tools/perf/bench/numa.c                  | 1731 ++++++++++++++++++++++++++++++
 tools/perf/builtin-bench.c               |   17 +
 tools/perf/builtin-kmem.c                |    6 +-
 tools/perf/builtin-stat.c                |  158 ++-
 tools/perf/config/feature-tests.mak      |   11 +
 tools/perf/tests/attr.c                  |    5 +
 tools/perf/tests/open-syscall-all-cpus.c |    1 +
 tools/perf/tests/perf-record.c           |   12 +-
 tools/perf/tests/vmlinux-kallsyms.c      |    4 +-
 tools/perf/ui/browser.c                  |    2 +
 tools/perf/util/event.c                  |    4 +-
 tools/perf/util/evsel.c                  |   31 +
 tools/perf/util/evsel.h                  |    2 +
 tools/perf/util/header.c                 |   25 +-
 tools/perf/util/map.c                    |  118 +-
 tools/perf/util/map.h                    |   24 +-
 tools/perf/util/sort.c                   |    7 +-
 tools/perf/util/strlist.c                |   54 +-
 tools/perf/util/strlist.h                |   42 +-
 25 files changed, 2154 insertions(+), 160 deletions(-)
 create mode 100644 tools/perf/bench/numa.c

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2012-11-09 21:42 Arnaldo Carvalho de Melo
  2012-11-12  2:10 ` Namhyung Kim
@ 2012-11-13 18:11 ` Ingo Molnar
  1 sibling, 0 replies; 81+ messages in thread
From: Ingo Molnar @ 2012-11-13 18:11 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Andi Kleen, Corey Ashford, David Ahern,
	Frederic Weisbecker, Irina Tirdea, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, stable,
	Stephane Eranian, Steven Rostedt, Vinson Lee, Zheng Liu, acme,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling.
> 
> - Arnaldo
> 
> The following changes since commit 8dfec403e39b7c37fd6e8813bacc01da1e1210ab:
> 
>   perf tests: Removing 'optional' field (2012-11-05 14:03:59 -0300)
> 
> 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 27f94d52394003d444a383eaf8d4824daf32432e:
> 
>   tools lib traceevent: Use 'const' in variables pointing to const strings (2012-11-09 17:42:47 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Add a 'link' method for hists, so that we can have the leader with
>   buckets for all the entries in all the hists.  This new method
>   is now used in the default 'diff' output, making the sum of the 'baseline'
>   column be 100%, eliminating blind spots. Now we need to use this
>   for 'diff' with > 2 perf.data files and for multi event 'report' and
>   'annotate'.
> 
> . libtraceevent fixes for compiler warnings trying to make perf it build
>   on some distros, like fedora 14, 32-bit, some of the warnings really
>   pointed to real bugs.
> 
> . Remove temp dir on failure in 'perf test', fix from Jiri Olsa.
> 
> . Fixes for handling data, stack mmaps, from Namhyung Kim.
> 
> . Fix live annotation bug related to recent objdump lookup patches, from
>   Namhyung Kim
> 
> . Don't try to follow jump target on PLT symbols in the annotation browser,
>   fix from Namhyung Kim.
> 
> . Fix leak on hist_entry delete, from Namhyung Kim.
> 
> . Fix a CPU_ALLOC related build error on builtin-test, from Zheng Liu.
> 
> 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 (10):
>       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
> 
> Jiri Olsa (2):
>       perf tests: Move attr.py temp dir cleanup into finally section
>       perf tools: Add LIBDW_DIR Makefile variable to for alternate libdw
> 
> Namhyung Kim (7):
>       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
> 
> Zheng Liu (1):
>       perf test: fix a build error on builtin-test
> 
>  tools/lib/traceevent/event-parse.c |   22 ++--
>  tools/perf/Makefile                |   12 ++-
>  tools/perf/arch/common.c           |    7 ++
>  tools/perf/builtin-diff.c          |   48 ++-------
>  tools/perf/tests/attr.py           |   30 +++---
>  tools/perf/tests/builtin-test.c    |   39 +++----
>  tools/perf/tests/dso-data.c        |    1 +
>  tools/perf/ui/browsers/annotate.c  |   12 +++
>  tools/perf/ui/hist.c               |   10 +-
>  tools/perf/util/annotate.c         |   69 ++++++++++--
>  tools/perf/util/annotate.h         |    1 +
>  tools/perf/util/dso.c              |    1 +
>  tools/perf/util/hist.c             |  100 ++++++++++++++++++
>  tools/perf/util/hist.h             |    3 +
>  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.l     |    2 +
>  tools/perf/util/session.h          |    5 +-
>  tools/perf/util/sort.h             |   27 ++++-
>  tools/perf/util/symbol.c           |    1 +
>  tools/perf/util/symbol.h           |   20 ----
>  23 files changed, 604 insertions(+), 416 deletions(-)

Pulled, thanks Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2012-11-12 16:01     ` Arnaldo Carvalho de Melo
@ 2012-11-13  1:20       ` Namhyung Kim
  0 siblings, 0 replies; 81+ messages in thread
From: Namhyung Kim @ 2012-11-13  1:20 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Ingo Molnar, linux-kernel, Andi Kleen, Corey Ashford,
	David Ahern, Frederic Weisbecker, Irina Tirdea, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, stable, Stephane Eranian,
	Steven Rostedt, Vinson Lee, Zheng Liu

On Mon, 12 Nov 2012 13:01:39 -0300, Arnaldo Carvalho de Melo wrote:
> Em Mon, Nov 12, 2012 at 02:55:46PM +0100, Jiri Olsa escreveu:
>> On Mon, Nov 12, 2012 at 11:10:52AM +0900, Namhyung Kim wrote:
>> > On Fri,  9 Nov 2012 18:42:49 -0300, Arnaldo Carvalho de Melo wrote:
>> > > . Add a 'link' method for hists, so that we can have the leader with
>> > >   buckets for all the entries in all the hists.  This new method
>> > >   is now used in the default 'diff' output, making the sum of the 'baseline'
>> > >   column be 100%, eliminating blind spots. Now we need to use this
>> > >   for 'diff' with > 2 perf.data files and for multi event 'report' and
>> > >   'annotate'.
>
>> > I'm not sure it can be used for group report at least in its current
>> > form.  IIUC it connects multiple hist entries using a list head and
>> > create a dummy entry in the leader if need be.  But it didn't handle
>> > non-leader entries so it's hard to tell which is which if less entries
>> > are present only.  For example consider following case:
>
>> > 	leader		member1		member2
>> > 	A		A		A
>> > 	B
>> > 			C
>> > 					D
>
>> > where leader, member1 and member2 are evsel/hists and A, B, C and D are
>> > hist entries.  After 'linking' the entries the leader will have
>> > following linkage:
>
>> > 	leader
>> > 	A	->	A	->	A
>> > 	B
>> > 	C (dummy) ->	C
>> > 	D (dummy)		->	D
>
>> > In this case, for entry A the leader can determine which entry came from
>> > which hists by looking its order in the list.  For entry B the leader
>> > can use zero value for them since the list is empty.  However for
>> > entries C and D, it cannot know which one is the right hists unless it
>> > records a hist index or creates dummy entry and insert it in a correct
>> > order (looks far from an optimal solution).  Am I missing something?
>
>> there's hists pointer in hist_entry if that's what you look for
>
> And from there to evsel->idx. In your patchset you even introduce
> hists_2_evsel(), right?

Ah, okay.  I worried about a possiblity of non-consecutive event groups
for some reason, but that's not gonna happen in the future?

Thanks,
Namhyung

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2012-11-12 13:55   ` Jiri Olsa
@ 2012-11-12 16:01     ` Arnaldo Carvalho de Melo
  2012-11-13  1:20       ` Namhyung Kim
  0 siblings, 1 reply; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-11-12 16:01 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Namhyung Kim, Ingo Molnar, linux-kernel, Andi Kleen,
	Corey Ashford, David Ahern, Frederic Weisbecker, Irina Tirdea,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, stable,
	Stephane Eranian, Steven Rostedt, Vinson Lee, Zheng Liu

Em Mon, Nov 12, 2012 at 02:55:46PM +0100, Jiri Olsa escreveu:
> On Mon, Nov 12, 2012 at 11:10:52AM +0900, Namhyung Kim wrote:
> > On Fri,  9 Nov 2012 18:42:49 -0300, Arnaldo Carvalho de Melo wrote:
> > > . Add a 'link' method for hists, so that we can have the leader with
> > >   buckets for all the entries in all the hists.  This new method
> > >   is now used in the default 'diff' output, making the sum of the 'baseline'
> > >   column be 100%, eliminating blind spots. Now we need to use this
> > >   for 'diff' with > 2 perf.data files and for multi event 'report' and
> > >   'annotate'.

> > I'm not sure it can be used for group report at least in its current
> > form.  IIUC it connects multiple hist entries using a list head and
> > create a dummy entry in the leader if need be.  But it didn't handle
> > non-leader entries so it's hard to tell which is which if less entries
> > are present only.  For example consider following case:

> > 	leader		member1		member2
> > 	A		A		A
> > 	B
> > 			C
> > 					D

> > where leader, member1 and member2 are evsel/hists and A, B, C and D are
> > hist entries.  After 'linking' the entries the leader will have
> > following linkage:

> > 	leader
> > 	A	->	A	->	A
> > 	B
> > 	C (dummy) ->	C
> > 	D (dummy)		->	D

> > In this case, for entry A the leader can determine which entry came from
> > which hists by looking its order in the list.  For entry B the leader
> > can use zero value for them since the list is empty.  However for
> > entries C and D, it cannot know which one is the right hists unless it
> > records a hist index or creates dummy entry and insert it in a correct
> > order (looks far from an optimal solution).  Am I missing something?

> there's hists pointer in hist_entry if that's what you look for

And from there to evsel->idx. In your patchset you even introduce
hists_2_evsel(), right?

- Arnaldo

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2012-11-12  2:10 ` Namhyung Kim
@ 2012-11-12 13:55   ` Jiri Olsa
  2012-11-12 16:01     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 81+ messages in thread
From: Jiri Olsa @ 2012-11-12 13:55 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel, Andi Kleen,
	Corey Ashford, David Ahern, Frederic Weisbecker, Irina Tirdea,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, stable,
	Stephane Eranian, Steven Rostedt, Vinson Lee, Zheng Liu, acme,
	Arnaldo Carvalho de Melo

On Mon, Nov 12, 2012 at 11:10:52AM +0900, Namhyung Kim wrote:
> Hi Arnaldo,
> 
> On Fri,  9 Nov 2012 18:42:49 -0300, Arnaldo Carvalho de Melo wrote:
> > Hi Ingo,
> >
> > 	Please consider pulling.
> >
> > - Arnaldo
> >
> > The following changes since commit 8dfec403e39b7c37fd6e8813bacc01da1e1210ab:
> >
> >   perf tests: Removing 'optional' field (2012-11-05 14:03:59 -0300)
> >
> > 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 27f94d52394003d444a383eaf8d4824daf32432e:
> >
> >   tools lib traceevent: Use 'const' in variables pointing to const strings (2012-11-09 17:42:47 -0300)
> >
> > ----------------------------------------------------------------
> > perf/core improvements and fixes:
> >
> > . Add a 'link' method for hists, so that we can have the leader with
> >   buckets for all the entries in all the hists.  This new method
> >   is now used in the default 'diff' output, making the sum of the 'baseline'
> >   column be 100%, eliminating blind spots. Now we need to use this
> >   for 'diff' with > 2 perf.data files and for multi event 'report' and
> >   'annotate'.
> 
> I'm not sure it can be used for group report at least in its current
> form.  IIUC it connects multiple hist entries using a list head and
> create a dummy entry in the leader if need be.  But it didn't handle
> non-leader entries so it's hard to tell which is which if less entries
> are present only.  For example consider following case:
> 
> 	leader		member1		member2
> 	A		A		A
> 	B
> 			C
> 					D
> 
> where leader, member1 and member2 are evsel/hists and A, B, C and D are
> hist entries.  After 'linking' the entries the leader will have
> following linkage:
> 
> 	leader
> 	A	->	A	->	A
> 	B
> 	C (dummy) ->	C
> 	D (dummy)		->	D
> 
> In this case, for entry A the leader can determine which entry came from
> which hists by looking its order in the list.  For entry B the leader
> can use zero value for them since the list is empty.  However for
> entries C and D, it cannot know which one is the right hists unless it
> records a hist index or creates dummy entry and insert it in a correct
> order (looks far from an optimal solution).  Am I missing something?

there's hists pointer in hist_entry if that's what you look for

jirka

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [GIT PULL 00/21] perf/core improvements and fixes
  2012-11-09 21:42 Arnaldo Carvalho de Melo
@ 2012-11-12  2:10 ` Namhyung Kim
  2012-11-12 13:55   ` Jiri Olsa
  2012-11-13 18:11 ` Ingo Molnar
  1 sibling, 1 reply; 81+ messages in thread
From: Namhyung Kim @ 2012-11-12  2:10 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, Andi Kleen, Corey Ashford,
	David Ahern, Frederic Weisbecker, Irina Tirdea, Jiri Olsa,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, stable,
	Stephane Eranian, Steven Rostedt, Vinson Lee, Zheng Liu, acme,
	Arnaldo Carvalho de Melo

Hi Arnaldo,

On Fri,  9 Nov 2012 18:42:49 -0300, Arnaldo Carvalho de Melo wrote:
> Hi Ingo,
>
> 	Please consider pulling.
>
> - Arnaldo
>
> The following changes since commit 8dfec403e39b7c37fd6e8813bacc01da1e1210ab:
>
>   perf tests: Removing 'optional' field (2012-11-05 14:03:59 -0300)
>
> 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 27f94d52394003d444a383eaf8d4824daf32432e:
>
>   tools lib traceevent: Use 'const' in variables pointing to const strings (2012-11-09 17:42:47 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . Add a 'link' method for hists, so that we can have the leader with
>   buckets for all the entries in all the hists.  This new method
>   is now used in the default 'diff' output, making the sum of the 'baseline'
>   column be 100%, eliminating blind spots. Now we need to use this
>   for 'diff' with > 2 perf.data files and for multi event 'report' and
>   'annotate'.

I'm not sure it can be used for group report at least in its current
form.  IIUC it connects multiple hist entries using a list head and
create a dummy entry in the leader if need be.  But it didn't handle
non-leader entries so it's hard to tell which is which if less entries
are present only.  For example consider following case:

	leader		member1		member2
	A		A		A
	B
			C
					D

where leader, member1 and member2 are evsel/hists and A, B, C and D are
hist entries.  After 'linking' the entries the leader will have
following linkage:

	leader
	A	->	A	->	A
	B
	C (dummy) ->	C
	D (dummy)		->	D

In this case, for entry A the leader can determine which entry came from
which hists by looking its order in the list.  For entry B the leader
can use zero value for them since the list is empty.  However for
entries C and D, it cannot know which one is the right hists unless it
records a hist index or creates dummy entry and insert it in a correct
order (looks far from an optimal solution).  Am I missing something?

Thanks,
Namhyung

^ permalink raw reply	[flat|nested] 81+ messages in thread

* [GIT PULL 00/21] perf/core improvements and fixes
@ 2012-11-09 21:42 Arnaldo Carvalho de Melo
  2012-11-12  2:10 ` Namhyung Kim
  2012-11-13 18:11 ` Ingo Molnar
  0 siblings, 2 replies; 81+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-11-09 21:42 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
	Corey Ashford, David Ahern, Frederic Weisbecker, Irina Tirdea,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, stable, Stephane Eranian, Steven Rostedt,
	Vinson Lee, Zheng Liu, acme, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling.

- Arnaldo

The following changes since commit 8dfec403e39b7c37fd6e8813bacc01da1e1210ab:

  perf tests: Removing 'optional' field (2012-11-05 14:03:59 -0300)

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 27f94d52394003d444a383eaf8d4824daf32432e:

  tools lib traceevent: Use 'const' in variables pointing to const strings (2012-11-09 17:42:47 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

. Add a 'link' method for hists, so that we can have the leader with
  buckets for all the entries in all the hists.  This new method
  is now used in the default 'diff' output, making the sum of the 'baseline'
  column be 100%, eliminating blind spots. Now we need to use this
  for 'diff' with > 2 perf.data files and for multi event 'report' and
  'annotate'.

. libtraceevent fixes for compiler warnings trying to make perf it build
  on some distros, like fedora 14, 32-bit, some of the warnings really
  pointed to real bugs.

. Remove temp dir on failure in 'perf test', fix from Jiri Olsa.

. Fixes for handling data, stack mmaps, from Namhyung Kim.

. Fix live annotation bug related to recent objdump lookup patches, from
  Namhyung Kim

. Don't try to follow jump target on PLT symbols in the annotation browser,
  fix from Namhyung Kim.

. Fix leak on hist_entry delete, from Namhyung Kim.

. Fix a CPU_ALLOC related build error on builtin-test, from Zheng Liu.

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 (10):
      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

Jiri Olsa (2):
      perf tests: Move attr.py temp dir cleanup into finally section
      perf tools: Add LIBDW_DIR Makefile variable to for alternate libdw

Namhyung Kim (7):
      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

Zheng Liu (1):
      perf test: fix a build error on builtin-test

 tools/lib/traceevent/event-parse.c |   22 ++--
 tools/perf/Makefile                |   12 ++-
 tools/perf/arch/common.c           |    7 ++
 tools/perf/builtin-diff.c          |   48 ++-------
 tools/perf/tests/attr.py           |   30 +++---
 tools/perf/tests/builtin-test.c    |   39 +++----
 tools/perf/tests/dso-data.c        |    1 +
 tools/perf/ui/browsers/annotate.c  |   12 +++
 tools/perf/ui/hist.c               |   10 +-
 tools/perf/util/annotate.c         |   69 ++++++++++--
 tools/perf/util/annotate.h         |    1 +
 tools/perf/util/dso.c              |    1 +
 tools/perf/util/hist.c             |  100 ++++++++++++++++++
 tools/perf/util/hist.h             |    3 +
 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.l     |    2 +
 tools/perf/util/session.h          |    5 +-
 tools/perf/util/sort.h             |   27 ++++-
 tools/perf/util/symbol.c           |    1 +
 tools/perf/util/symbol.h           |   20 ----
 23 files changed, 604 insertions(+), 416 deletions(-)

^ permalink raw reply	[flat|nested] 81+ messages in thread

end of thread, other threads:[~2018-08-23  8:31 UTC | newest]

Thread overview: 81+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-06 16:53 [GIT PULL 00/21] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-02-06 16:53 ` Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 01/21] perf vendor events aarch64: Add JSON metrics for ARM Cortex-A53 Processor Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 02/21] perf evlist: Remove stale mmap read for backward Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 03/21] perf mmap: Recalculate size for overwrite mode Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 04/21] perf mmap: Cleanup perf_mmap__push() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 05/21] perf mmap: Introduce perf_mmap__read_init() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 06/21] perf mmap: Add new return value logic for perf_mmap__read_init() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 07/21] perf mmap: Discard 'prev' in perf_mmap__read() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 08/21] perf mmap: Introduce perf_mmap__read_done() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 09/21] perf mmap: Introduce perf_mmap__read_event() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 10/21] perf test: Update mmap read functions for backward-ring-buffer test Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 11/21] perf mmap: Discard legacy interface for mmap read Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 12/21] perf top: Check per-event overwrite term Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 13/21] perf evsel: Expose the perf_missing_features struct Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 14/21] perf top: Add overwrite fall back Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 15/21] perf hists browser: Add parameter to disable lost event warning Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 16/21] perf top: Remove lost events checking Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 17/21] perf top: Switch default mode to overwrite mode Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 18/21] perf top: Check the latency of perf_top__mmap_read() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 19/21] perf tools: Substitute yet another strtoull() Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 20/21] perf data: Document missing --force option Arnaldo Carvalho de Melo
2018-02-06 16:53 ` [PATCH 21/21] perf test: Fix test trace+probe_libc_inet_pton.sh for s390x Arnaldo Carvalho de Melo
2018-02-13 11:59 ` [PATCH] tools/headers: Synchronize kernel ABI headers, v4.16-rc1 Ingo Molnar
2018-02-13 11:59   ` Ingo Molnar
2018-02-14 13:41   ` Arnaldo Carvalho de Melo
  -- strict thread matches above, loose matches on Subject: below --
2018-08-20 16:15 [GIT PULL 00/21] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-08-20 16:15 ` Arnaldo Carvalho de Melo
2018-08-23  8:31 ` Ingo Molnar
2018-08-23  8:31   ` Ingo Molnar
2018-08-01 21:36 Arnaldo Carvalho de Melo
2018-08-01 21:36 ` Arnaldo Carvalho de Melo
2018-08-01 21:36 ` Arnaldo Carvalho de Melo
2018-08-02  8:03 ` Ingo Molnar
2018-08-02  8:03   ` Ingo Molnar
2018-08-02  8:03   ` Ingo Molnar
2015-05-04 21:36 Arnaldo Carvalho de Melo
2015-05-04 21:36 ` Arnaldo Carvalho de Melo
2015-05-04 21:36 ` Arnaldo Carvalho de Melo
2015-02-11 21:08 Arnaldo Carvalho de Melo
2015-02-11 21:08 ` Arnaldo Carvalho de Melo
2015-03-05  4:30 ` Victor Kamensky
2015-03-05  4:30   ` Victor Kamensky
2015-03-05  6:37   ` Ingo Molnar
2015-03-05  6:37     ` Ingo Molnar
2015-03-05  6:49     ` Victor Kamensky
2015-03-05  6:49       ` Victor Kamensky
2013-12-09 19:36 Arnaldo Carvalho de Melo
2013-12-10 11:07 ` Ingo Molnar
2013-12-10 15:47   ` Jiri Olsa
2013-12-10 15:49     ` Ingo Molnar
2013-12-10 11:12 ` Ingo Molnar
2013-12-10 11:44   ` Arnaldo Carvalho de Melo
2013-12-10 11:47     ` Ingo Molnar
2013-12-10 12:01       ` Arnaldo Carvalho de Melo
2013-12-10 12:07         ` Ingo Molnar
2013-12-10 12:13     ` Adrian Hunter
2013-12-10 12:10       ` Arnaldo Carvalho de Melo
2013-12-10 12:22         ` Adrian Hunter
2013-12-10 12:22           ` Arnaldo Carvalho de Melo
2013-12-10 12:23             ` Arnaldo Carvalho de Melo
2013-12-10 12:24             ` Ingo Molnar
2013-12-10 12:18       ` Ingo Molnar
2013-12-10 12:46         ` Ingo Molnar
2013-12-10 13:29           ` Arnaldo Carvalho de Melo
2013-12-10 13:49         ` Arnaldo Carvalho de Melo
2013-12-10 15:05           ` Ingo Molnar
2013-08-28 14:59 Arnaldo Carvalho de Melo
2013-08-29 10:04 ` Ingo Molnar
2013-08-14 18:24 Arnaldo Carvalho de Melo
2013-08-15  7:52 ` Ingo Molnar
2013-01-30 14:46 Arnaldo Carvalho de Melo
2013-01-30 14:46 ` Arnaldo Carvalho de Melo
2013-01-31  9:27 ` Ingo Molnar
2013-01-31  9:27   ` Ingo Molnar
2012-11-09 21:42 Arnaldo Carvalho de Melo
2012-11-12  2:10 ` Namhyung Kim
2012-11-12 13:55   ` Jiri Olsa
2012-11-12 16:01     ` Arnaldo Carvalho de Melo
2012-11-13  1:20       ` Namhyung Kim
2012-11-13 18:11 ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.