linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL 0/5] perf/core improvements and fixes
@ 2018-02-21  1:34 Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 1/5] perf s390: Fix reading cpuid model information Arnaldo Carvalho de Melo
                   ` (5 more replies)
  0 siblings, 6 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
	Adrian Hunter, Alexander Shishkin, Changbin Du, David Ahern,
	Heiko Carstens, Hendrik Brueckner, Jaroslav Škarvada,
	Jiri Olsa, kernel-team, Martin Schwidefsky, Namhyung Kim,
	Peter Zijlstra, Thomas Richter, Wang Nan,
	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 11737ca9e3b9d84448fa405a80980aa9957bcee8:

  Merge tag 'perf-core-for-mingo-4.17-20180216' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-02-17 11:39:47 +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-20180220

for you to fetch changes up to 66dfdff03d196e51322c6a85c0d8db8bb2bdd655:

  perf tools: Add Python 3 support (2018-02-19 12:28:23 -0300)

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

- Initial support for linking with python3, by explicitely setting
  the PYTHON Makefile variable, python2 remains supported, more work
  needed to test the shipped python scripts used with 'perf script'
  (Jaroslav Škarvada)

- Make twatch.py, an example python script that sets up evlists and
  evsels to then parse events from mmap, to work with both python2 and
  python3 (Arnaldo Carvalho de Melo)

- Fix setting 'perf ftrace' function filter when using a non-existent
  function, which should result in an error instead of simply not setting
  the filter and showing all functions (Changbin Du)

- Fix paranoid check in machine__set_kernel_mmap(), problem introduced
  in previous perf/core batch (Namhyung Kim)

- Fix reading cpuid model information in s/390, ditto, also introduced
  in the previous perf/core batch (Thomas Richter)

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

----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
      perf python: Make twatch.py work with both python2 and python3

Changbin Du (1):
      perf ftrace: Append an EOL when write tracing files

Jaroslav Škarvada (1):
      perf tools: Add Python 3 support

Namhyung Kim (1):
      perf machine: Fix paranoid check in machine__set_kernel_mmap()

Thomas Richter (1):
      perf s390: Fix reading cpuid model information

 tools/perf/Makefile.config                         |  23 +---
 tools/perf/Makefile.perf                           |   4 +-
 tools/perf/arch/s390/util/header.c                 |   2 +-
 tools/perf/builtin-ftrace.c                        |  18 ++-
 tools/perf/python/twatch.py                        |   8 +-
 .../perf/scripts/python/Perf-Trace-Util/Context.c  |  34 ++++-
 tools/perf/util/machine.c                          |   2 +-
 tools/perf/util/python.c                           |  95 ++++++++++---
 .../util/scripting-engines/trace-event-python.c    | 147 +++++++++++++++------
 tools/perf/util/setup.py                           |   6 +-
 10 files changed, 243 insertions(+), 96 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.

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.

  Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
  # dm
   1  49.10 alpine:3.4                    : Ok   gcc (Alpine 5.3.0) 5.3.0
   2  51.30 alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822
   3  53.53 alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0
   4  54.74 alpine:edge                   : Ok   gcc (Alpine 6.4.0) 6.4.0
   5  41.38 amazonlinux:1                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
   6  58.50 amazonlinux:2                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
   7  35.52 android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   8  34.34 android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
   9  31.16 centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  10  40.51 centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  11  50.00 centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  12  40.12 debian:7                      : Ok   gcc (Debian 4.7.2-5) 4.7.2
  13  41.64 debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u1) 4.9.2
  14  69.65 debian:9                      : Ok   gcc (Debian 6.3.0-18) 6.3.0 20170516
  15  91.07 debian:experimental           : Ok   gcc (Debian 7.2.0-18) 7.2.0
  16  48.13 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  17  41.69 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  18  36.72 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 7.2.0-11) 7.2.0
  19  52.76 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
  20  49.01 fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
  21  54.99 fedora:21                     : Ok   gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
  22  39.61 fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  23  42.29 fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
  24  41.84 fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
  25  36.88 fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  26  78.12 fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
  27  80.48 fedora:26                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  28  81.00 fedora:27                     : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  29 115.57 fedora:rawhide                : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-4)
  30  42.70 gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0
  31  45.48 mageia:5                      : Ok   gcc (GCC) 4.9.2
  32  42.61 mageia:6                      : Ok   gcc (Mageia 5.4.0-5.mga6) 5.4.0
  33  42.05 opensuse:42.1                 : Ok   gcc (SUSE Linux) 4.8.5
  34  43.63 opensuse:42.2                 : Ok   gcc (SUSE Linux) 4.8.5
  35  47.48 opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5
  36  90.12 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 7.3.0
  37  35.32 oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
  38  41.55 oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
  39  33.95 ubuntu:12.04.5                : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  40  39.13 ubuntu:14.04.4                : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
  41  33.62 ubuntu:14.04.4-x-linaro-arm64 : Ok   aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
  42  62.84 ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609
  43  38.41 ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  44  41.31 ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  45  40.18 ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  46  35.83 ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
  47  35.91 ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  48  32.80 ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  49  65.42 ubuntu:16.10                  : Ok   gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  50  67.55 ubuntu:17.04                  : Ok   gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
  51  68.25 ubuntu:17.10                  : Ok   gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
  52  72.18 ubuntu:18.04                  : Ok   gcc (Ubuntu 7.3.0-3ubuntu1) 7.3.0
  # 

  # uname -a
  Linux jouet 4.16.0-rc2 #2 SMP Mon Feb 19 14:41:03 -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_install_prefix_slash_O: make install prefix=/tmp/krava/
              make_no_libelf_O: make NO_LIBELF=1
               make_no_slang_O: make NO_SLANG=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                make_install_O: make install
              make_no_libbpf_O: make NO_LIBBPF=1
                   make_pure_O: make
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
           make_no_backtrace_O: make NO_BACKTRACE=1
            make_no_demangle_O: make NO_DEMANGLE=1
                   make_tags_O: make tags
             make_no_libperl_O: make NO_LIBPERL=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
           make_no_libunwind_O: make NO_LIBUNWIND=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
                make_no_newt_O: make NO_NEWT=1
           make_no_libpython_O: make NO_LIBPYTHON=1
              make_clean_all_O: make clean all
            make_no_libaudit_O: make NO_LIBAUDIT=1
                 make_static_O: make LDFLAGS=-static
                    make_doc_O: make doc
                make_no_gtk2_O: make NO_GTK2=1
         make_install_prefix_O: make install prefix=/tmp/krava
            make_no_auxtrace_O: make NO_AUXTRACE=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                   make_help_O: make help
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
            make_install_bin_O: make install-bin
                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_util_map_o_O: make util/map.o
                  make_debug_O: make DEBUG=1
             make_no_libnuma_O: make NO_LIBNUMA=1
                 make_perf_o_O: make perf.o
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  $

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

* [PATCH 1/5] perf s390: Fix reading cpuid model information
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2018-02-21  1:34 ` Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 2/5] perf machine: Fix paranoid check in machine__set_kernel_mmap() Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Thomas Richter, Heiko Carstens,
	Hendrik Brueckner, Martin Schwidefsky, Arnaldo Carvalho de Melo

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

Commit eca0fa28cd0d (perf record: Provide detailed information on s390
CPU") fixed a  build error on Ubuntu. However the fix uses the wrong
size to print the model information.

Signed-off-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Fixes: eca0fa28cd0d ("perf record: Provide detailed information on s390 CPU")
Link: http://lkml.kernel.org/r/20180219102444.96900-1-tmricht@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/arch/s390/util/header.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/arch/s390/util/header.c b/tools/perf/arch/s390/util/header.c
index 231294b80dc4..a4c30f1c70be 100644
--- a/tools/perf/arch/s390/util/header.c
+++ b/tools/perf/arch/s390/util/header.c
@@ -81,7 +81,7 @@ int get_cpuid(char *buffer, size_t sz)
 			line2 = line + strlen(SYSINFO_MODEL);
 
 			while ((cp = strtok_r(line2, "\n ", &line2))) {
-				mdsize += scnprintf(model + mdsize, sizeof(type) - mdsize,
+				mdsize += scnprintf(model + mdsize, sizeof(model) - mdsize,
 						    "%s%s", model[0] ? "," : "", cp);
 			}
 			break;
-- 
2.14.3

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

* [PATCH 2/5] perf machine: Fix paranoid check in machine__set_kernel_mmap()
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 1/5] perf s390: Fix reading cpuid model information Arnaldo Carvalho de Melo
@ 2018-02-21  1:34 ` Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 3/5] perf ftrace: Append an EOL when write tracing files Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Namhyung Kim, Alexander Shishkin,
	David Ahern, Peter Zijlstra, kernel-team,
	Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

The machine__set_kernel_mmap() is to setup addresses of the kernel map
using external info.  But it has a check when the address is given from
an incorrect input which should have the start and end address of 0
(i.e. machine__process_kernel_mmap_event).

But we also use the end address of 0 for a valid input so change it to
check both start and end addresses.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: kernel-team@lge.com
Link: http://lkml.kernel.org/r/20180219101936.GD1583@sejong
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/machine.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index fe27ef55cbb9..12b7427444a3 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1226,7 +1226,7 @@ static void machine__set_kernel_mmap(struct machine *machine,
 		 * Be a bit paranoid here, some perf.data file came with
 		 * a zero sized synthesized MMAP event for the kernel.
 		 */
-		if (machine->vmlinux_maps[i]->end == 0)
+		if (start == 0 && end == 0)
 			machine->vmlinux_maps[i]->end = ~0ULL;
 	}
 }
-- 
2.14.3

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

* [PATCH 3/5] perf ftrace: Append an EOL when write tracing files
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 1/5] perf s390: Fix reading cpuid model information Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 2/5] perf machine: Fix paranoid check in machine__set_kernel_mmap() Arnaldo Carvalho de Melo
@ 2018-02-21  1:34 ` Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 4/5] perf python: Make twatch.py work with both python2 and python3 Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Changbin Du, Jiri Olsa,
	Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo

From: Changbin Du <changbin.du@intel.com>

Before this change, the '--graph-funcs', '--nograph-funcs' and
'--trace-funcs' options didn't work as expected when the <func> doesn't
exist. Because the kernel side hid possible errors.

  $ sudo ./perf ftrace -a --graph-depth 1 --graph-funcs abcdefg
   0)   0.140 us    |  rcu_all_qs();
   3)   0.304 us    |  mutex_unlock();
   0)   0.153 us    |  find_vma();
   3)   0.088 us    |  __fsnotify_parent();
   0)   6.145 us    |  handle_mm_fault();
   3)   0.089 us    |  fsnotify();
   3)   0.161 us    |  __sb_end_write();
   3)   0.710 us    |  SyS_close();
   3)   7.848 us    |  exit_to_usermode_loop();

On the example above, I specified the function filter 'abcdefg' but all
functions are enabled. The expected result is for all functions to be
filtered, since there is no such function ('abcdefg')

The original fix is to make the kernel support '\0' as end of string:
https://lkml.org/lkml/2018/1/16/116

But above fix cannot be compatible with old kernels. Then Namhyung Kim
suggest adding a space after function name.

This patch will append an '\n' when write tracing file. After this fix,
the perf will report correct error state. Also let it print an error if
reset_tracing_files() fails.

Committer testing:

Now it prints:

  # perf ftrace -a --graph-depth 1 --graph-funcs abcdefg
  failed to set tracing filters
  #

And for an existing function:

  # perf ftrace -a --graph-depth 1 --graph-funcs SyS_open
   3)               |  SyS_open() {
   3) ! 494.899 us  |  }
   0) + 23.910 us   |  SyS_open();
   1) + 17.115 us   |  SyS_open();
   1) + 13.900 us   |  SyS_open();
   ------------------------------------------
   3)  qemu-sy-2817  =>  pickup-1290
   ------------------------------------------

   3) + 20.021 us   |  SyS_open();
  #

Signed-off-by: Changbin Du <changbin.du@intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.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/1519007609-14551-1-git-send-email-changbin.du@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-ftrace.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 25a42acabee1..f42f228e8899 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -72,6 +72,7 @@ static int __write_tracing_file(const char *name, const char *val, bool append)
 	ssize_t size = strlen(val);
 	int flags = O_WRONLY;
 	char errbuf[512];
+	char *val_copy;
 
 	file = get_tracing_file(name);
 	if (!file) {
@@ -91,12 +92,23 @@ static int __write_tracing_file(const char *name, const char *val, bool append)
 		goto out;
 	}
 
-	if (write(fd, val, size) == size)
+	/*
+	 * Copy the original value and append a '\n'. Without this,
+	 * the kernel can hide possible errors.
+	 */
+	val_copy = strdup(val);
+	if (!val_copy)
+		goto out_close;
+	val_copy[size] = '\n';
+
+	if (write(fd, val_copy, size + 1) == size + 1)
 		ret = 0;
 	else
 		pr_debug("write '%s' to tracing/%s failed: %s\n",
 			 val, name, str_error_r(errno, errbuf, sizeof(errbuf)));
 
+	free(val_copy);
+out_close:
 	close(fd);
 out:
 	put_tracing_file(file);
@@ -280,8 +292,10 @@ static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv)
 	signal(SIGCHLD, sig_handler);
 	signal(SIGPIPE, sig_handler);
 
-	if (reset_tracing_files(ftrace) < 0)
+	if (reset_tracing_files(ftrace) < 0) {
+		pr_err("failed to reset ftrace\n");
 		goto out;
+	}
 
 	/* reset ftrace buffer */
 	if (write_tracing_file("trace", "0") < 0)
-- 
2.14.3

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

* [PATCH 4/5] perf python: Make twatch.py work with both python2 and python3
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2018-02-21  1:34 ` [PATCH 3/5] perf ftrace: Append an EOL when write tracing files Arnaldo Carvalho de Melo
@ 2018-02-21  1:34 ` Arnaldo Carvalho de Melo
  2018-02-21  1:34 ` [PATCH 5/5] perf tools: Add Python 3 support Arnaldo Carvalho de Melo
  2018-02-21  7:52 ` [GIT PULL 0/5] perf/core improvements and fixes Ingo Molnar
  5 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
	Adrian Hunter, David Ahern, Jaroslav Škarvada, Jiri Olsa,
	Namhyung Kim, Wang Nan

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

Will be used to test patches allowing to build perf with python3, so
that we make sure that we can build with both versions.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jaroslav Škarvada <jskarvad@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-c2ynv0ozr3eifzsyit6qgh3h@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/python/twatch.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/python/twatch.py b/tools/perf/python/twatch.py
index c235c22b107a..0a29c5c3079f 100755
--- a/tools/perf/python/twatch.py
+++ b/tools/perf/python/twatch.py
@@ -42,10 +42,10 @@ def main(context_switch = 0, thread = -1):
 			event = evlist.read_on_cpu(cpu)
 			if not event:
 				continue
-			print "cpu: %2d, pid: %4d, tid: %4d" % (event.sample_cpu,
-								event.sample_pid,
-								event.sample_tid),
-			print event
+			print("cpu: {0}, pid: {1}, tid: {2} {3}".format(event.sample_cpu,
+                                                                        event.sample_pid,
+                                                                        event.sample_tid,
+                                                                        event))
 
 if __name__ == '__main__':
     """
-- 
2.14.3

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

* [PATCH 5/5] perf tools: Add Python 3 support
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2018-02-21  1:34 ` [PATCH 4/5] perf python: Make twatch.py work with both python2 and python3 Arnaldo Carvalho de Melo
@ 2018-02-21  1:34 ` Arnaldo Carvalho de Melo
  2018-02-21  7:52 ` [GIT PULL 0/5] perf/core improvements and fixes Ingo Molnar
  5 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-02-21  1:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, linux-perf-users, Jaroslav Škarvada,
	Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan,
	Arnaldo Carvalho de Melo

From: Jaroslav Škarvada <jskarvad@redhat.com>

Added Python 3 support while keeping Python 2.7 compatibility.

Committer notes:

This doesn't make it to auto detect python 3, one has to explicitely ask
it to build with python 3 devel files, here are the instructions
provided by Jaroslav:

 ---
  $ cp -a tools/perf tools/python3-perf
  $ make V=1 prefix=/usr -C tools/perf PYTHON=/usr/bin/python2 all
  $ make V=1 prefix=/usr -C tools/python3-perf PYTHON=/usr/bin/python3 all
  $ make V=1 prefix=/usr -C tools/python3-perf PYTHON=/usr/bin/python3 DESTDIR=%{buildroot} install-python_ext
  $ make V=1 prefix=/usr -C tools/perf PYTHON=/usr/bin/python2 DESTDIR=%{buildroot} install-python_ext
 ---

We need to make this automatic, just like the existing tests for checking if
the python2 devel files are in place, allowing the build with python3 if
available, fallbacking to python2 and then just disabling it if none are
available.

So, using the PYTHON variable to build it using O= we get:

Before this patch:

  $ rpm -q python3 python3-devel
  python3-3.6.4-7.fc27.x86_64
  python3-devel-3.6.4-7.fc27.x86_64
  $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make O=/tmp/build/perf PYTHON=/usr/bin/python3 -C tools/perf install-bin
  make: Entering directory '/home/acme/git/linux/tools/perf'
  <SNIP>
  Makefile.config:670: Python 3 is not yet supported; please set
  Makefile.config:671: PYTHON and/or PYTHON_CONFIG appropriately.
  Makefile.config:672: If you also have Python 2 installed, then
  Makefile.config:673: try something like:
  Makefile.config:674:
  Makefile.config:675:   make PYTHON=python2
  Makefile.config:676:
  Makefile.config:677: Otherwise, disable Python support entirely:
  Makefile.config:678:
  Makefile.config:679:   make NO_LIBPYTHON=1
  Makefile.config:680:
  Makefile.config:681: *** .  Stop.
  make[1]: *** [Makefile.perf:212: sub-make] Error 2
  make: *** [Makefile:110: install-bin] Error 2
  make: Leaving directory '/home/acme/git/linux/tools/perf'
  $

After:

  $ make O=/tmp/build/perf PYTHON=python3 -C tools/perf install-bin
  $ ldd ~/bin/perf | grep python
	libpython3.6m.so.1.0 => /lib64/libpython3.6m.so.1.0 (0x00007f58a31e8000)
  $ rpm -qf /lib64/libpython3.6m.so.1.0
  python3-libs-3.6.4-7.fc27.x86_64
  $

Now verify that when using the binding the right ELF file is loaded,
using perf trace:

  $ perf trace -e open* perf test python
     0.051 ( 0.016 ms): perf/3927 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC           ) = 3
<SNIP>
  18: 'import perf' in python                               :
     8.849 ( 0.013 ms): sh/3929 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC           ) = 3
<SNIP>
    25.572 ( 0.008 ms): python3/3931 openat(dfd: CWD, filename: /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so, flags: CLOEXEC) = 3
<SNIP>
 Ok
<SNIP>
  $

And using tools/perf/python/twatch.py, to show PERF_RECORD_ metaevents:

  $ python3 tools/perf/python/twatch.py
  cpu: 3, pid: 16060, tid: 16060 { type: fork, pid: 5207, ppid: 16060, tid: 5207, ptid: 16060, time: 10798513015459}
  cpu: 3, pid: 16060, tid: 16060 { type: fork, pid: 5208, ppid: 16060, tid: 5208, ptid: 16060, time: 10798513562503}
  cpu: 0, pid: 5208, tid: 5208 { type: comm, pid: 5208, tid: 5208, comm: grep }
  cpu: 2, pid: 5207, tid: 5207 { type: comm, pid: 5207, tid: 5207, comm: ps }
  cpu: 2, pid: 5207, tid: 5207 { type: exit, pid: 5207, ppid: 5207, tid: 5207, ptid: 5207, time: 10798551337484}
  cpu: 3, pid: 5208, tid: 5208 { type: exit, pid: 5208, ppid: 5208, tid: 5208, ptid: 5208, time: 10798551292153}
  cpu: 3, pid: 601, tid: 601 { type: fork, pid: 5209, ppid: 601, tid: 5209, ptid: 601, time: 10801779977324}
  ^CTraceback (most recent call last):
    File "tools/perf/python/twatch.py", line 68, in <module>
      main()
    File "tools/perf/python/twatch.py", line 40, in main
      evlist.poll(timeout = -1)
  KeyboardInterrupt
  $

  # ps ax|grep twatch
 5197 pts/8    S+     0:00 python3 tools/perf/python/twatch.py
  # ls -la /proc/5197/smaps
  -r--r--r--. 1 acme acme 0 Feb 19 13:14 /proc/5197/smaps
  # grep python /proc/5197/smaps
  558111307000-558111309000 r-xp 00000000 fd:00 3151710  /usr/bin/python3.6
  558111508000-558111509000 r--p 00001000 fd:00 3151710  /usr/bin/python3.6
  558111509000-55811150a000 rw-p 00002000 fd:00 3151710  /usr/bin/python3.6
  7ffad6fc1000-7ffad7008000 r-xp 00000000 00:2d 220196   /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so
  7ffad7008000-7ffad7207000 ---p 00047000 00:2d 220196   /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so
  7ffad7207000-7ffad7208000 r--p 00046000 00:2d 220196   /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so
  7ffad7208000-7ffad7215000 rw-p 00047000 00:2d 220196   /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so
  7ffadea77000-7ffaded3d000 r-xp 00000000 fd:00 3151795  /usr/lib64/libpython3.6m.so.1.0
  7ffaded3d000-7ffadef3c000 ---p 002c6000 fd:00 3151795  /usr/lib64/libpython3.6m.so.1.0
  7ffadef3c000-7ffadef42000 r--p 002c5000 fd:00 3151795  /usr/lib64/libpython3.6m.so.1.0
  7ffadef42000-7ffadefa5000 rw-p 002cb000 fd:00 3151795  /usr/lib64/libpython3.6m.so.1.0
  #

And with this patch, but building normally, without specifying the
PYTHON=python3 part, which will make it use python2 if its devel files are
available, like in this test:

  $ make O=/tmp/build/perf -C tools/perf install-bin
  $ ldd ~/bin/perf | grep python
	libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f6a44410000)
  $ ldd /tmp/build/perf/python_ext_build/lib/perf.so  | grep python
	libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007fed28a2c000)
  $

  [acme@jouet perf]$ tools/perf/python/twatch.py
  cpu: 0, pid: 2817, tid: 2817 { type: fork, pid: 2817, ppid: 2817, tid: 8910, ptid: 2817, time: 11126454335306}
  cpu: 0, pid: 2817, tid: 2817 { type: comm, pid: 2817, tid: 8910, comm: worker }
  $ ps ax | grep twatch.py
   8909 pts/8    S+     0:00 /usr/bin/python tools/perf/python/twatch.py
  $ grep python /proc/8909/smaps
  5579de658000-5579de659000 r-xp 00000000 fd:00 3156044  /usr/bin/python2.7
  5579de858000-5579de859000 r--p 00000000 fd:00 3156044  /usr/bin/python2.7
  5579de859000-5579de85a000 rw-p 00001000 fd:00 3156044  /usr/bin/python2.7
  7f0de01f7000-7f0de023e000 r-xp 00000000 00:2d 230695   /tmp/build/perf/python/perf.so
  7f0de023e000-7f0de043d000 ---p 00047000 00:2d 230695   /tmp/build/perf/python/perf.so
  7f0de043d000-7f0de043e000 r--p 00046000 00:2d 230695   /tmp/build/perf/python/perf.so
  7f0de043e000-7f0de044b000 rw-p 00047000 00:2d 230695   /tmp/build/perf/python/perf.so
  7f0de6f0f000-7f0de6f13000 r-xp 00000000 fd:00 134975   /usr/lib64/python2.7/lib-dynload/_localemodule.so
  7f0de6f13000-7f0de7113000 ---p 00004000 fd:00 134975   /usr/lib64/python2.7/lib-dynload/_localemodule.so
  7f0de7113000-7f0de7114000 r--p 00004000 fd:00 134975   /usr/lib64/python2.7/lib-dynload/_localemodule.so
  7f0de7114000-7f0de7115000 rw-p 00005000 fd:00 134975   /usr/lib64/python2.7/lib-dynload/_localemodule.so
  7f0de7e73000-7f0de8052000 r-xp 00000000 fd:00 3173292  /usr/lib64/libpython2.7.so.1.0
  7f0de8052000-7f0de8251000 ---p 001df000 fd:00 3173292  /usr/lib64/libpython2.7.so.1.0
  7f0de8251000-7f0de8255000 r--p 001de000 fd:00 3173292  /usr/lib64/libpython2.7.so.1.0
  7f0de8255000-7f0de8291000 rw-p 001e2000 fd:00 3173292  /usr/lib64/libpython2.7.so.1.0
  $

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
LPU-Reference: 20180119205641.24242-1-jskarvad@redhat.com
Link: https://lkml.kernel.org/n/tip-8d7dt9kqp83vsz25hagug8fu@git.kernel.org
[ Removed explicit check for python version, allowing it to really build with python3 ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile.config                         |  23 +---
 tools/perf/Makefile.perf                           |   4 +-
 .../perf/scripts/python/Perf-Trace-Util/Context.c  |  34 ++++-
 tools/perf/util/python.c                           |  95 ++++++++++---
 .../util/scripting-engines/trace-event-python.c    | 147 +++++++++++++++------
 tools/perf/util/setup.py                           |   6 +-
 6 files changed, 221 insertions(+), 88 deletions(-)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 577a5d2988fe..89cb2a36b8ff 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -668,25 +668,10 @@ else
       ifneq ($(feature-libpython), 1)
         $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev)
       else
-        ifneq ($(feature-libpython-version), 1)
-          $(warning Python 3 is not yet supported; please set)
-          $(warning PYTHON and/or PYTHON_CONFIG appropriately.)
-          $(warning If you also have Python 2 installed, then)
-          $(warning try something like:)
-          $(warning $(and ,))
-          $(warning $(and ,)  make PYTHON=python2)
-          $(warning $(and ,))
-          $(warning Otherwise, disable Python support entirely:)
-          $(warning $(and ,))
-          $(warning $(and ,)  make NO_LIBPYTHON=1)
-          $(warning $(and ,))
-          $(error   $(and ,))
-        else
-          LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
-          EXTLIBS += $(PYTHON_EMBED_LIBADD)
-          LANG_BINDINGS += $(obj-perf)python/perf.so
-          $(call detected,CONFIG_LIBPYTHON)
-        endif
+         LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
+         EXTLIBS += $(PYTHON_EMBED_LIBADD)
+         LANG_BINDINGS += $(obj-perf)python/perf.so
+         $(call detected,CONFIG_LIBPYTHON)
       endif
     endif
   endif
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 9b0351d3ce34..126ef6e0475c 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -302,7 +302,7 @@ PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/
 PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/
 export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP
 
-python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so
+python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT)python/perf*.so
 
 PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources)
 PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI)
@@ -479,7 +479,7 @@ $(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_D
 	  $(PYTHON_WORD) util/setup.py \
 	  --quiet build_ext; \
 	mkdir -p $(OUTPUT)python && \
-	cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
+	cp $(PYTHON_EXTBUILD_LIB)perf*.so $(OUTPUT)python/
 
 please_set_SHELL_PATH_to_a_more_modern_shell:
 	$(Q)$$(:)
diff --git a/tools/perf/scripts/python/Perf-Trace-Util/Context.c b/tools/perf/scripts/python/Perf-Trace-Util/Context.c
index fcd1dd667906..1a0d27757eec 100644
--- a/tools/perf/scripts/python/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/python/Perf-Trace-Util/Context.c
@@ -23,7 +23,17 @@
 #include "../../../perf.h"
 #include "../../../util/trace-event.h"
 
+#if PY_MAJOR_VERSION < 3
+#define _PyCapsule_GetPointer(arg1, arg2) \
+  PyCObject_AsVoidPtr(arg1)
+
 PyMODINIT_FUNC initperf_trace_context(void);
+#else
+#define _PyCapsule_GetPointer(arg1, arg2) \
+  PyCapsule_GetPointer((arg1), (arg2))
+
+PyMODINIT_FUNC PyInit_perf_trace_context(void);
+#endif
 
 static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args)
 {
@@ -34,7 +44,7 @@ static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args)
 	if (!PyArg_ParseTuple(args, "O", &context))
 		return NULL;
 
-	scripting_context = PyCObject_AsVoidPtr(context);
+	scripting_context = _PyCapsule_GetPointer(context, NULL);
 	retval = common_pc(scripting_context);
 
 	return Py_BuildValue("i", retval);
@@ -50,7 +60,7 @@ static PyObject *perf_trace_context_common_flags(PyObject *obj,
 	if (!PyArg_ParseTuple(args, "O", &context))
 		return NULL;
 
-	scripting_context = PyCObject_AsVoidPtr(context);
+	scripting_context = _PyCapsule_GetPointer(context, NULL);
 	retval = common_flags(scripting_context);
 
 	return Py_BuildValue("i", retval);
@@ -66,7 +76,7 @@ static PyObject *perf_trace_context_common_lock_depth(PyObject *obj,
 	if (!PyArg_ParseTuple(args, "O", &context))
 		return NULL;
 
-	scripting_context = PyCObject_AsVoidPtr(context);
+	scripting_context = _PyCapsule_GetPointer(context, NULL);
 	retval = common_lock_depth(scripting_context);
 
 	return Py_BuildValue("i", retval);
@@ -82,7 +92,25 @@ static PyMethodDef ContextMethods[] = {
 	{ NULL, NULL, 0, NULL}
 };
 
+#if PY_MAJOR_VERSION < 3
 PyMODINIT_FUNC initperf_trace_context(void)
 {
 	(void) Py_InitModule("perf_trace_context", ContextMethods);
 }
+#else
+PyMODINIT_FUNC PyInit_perf_trace_context(void)
+{
+	static struct PyModuleDef moduledef = {
+		PyModuleDef_HEAD_INIT,
+		"perf_trace_context",	/* m_name */
+		"",			/* m_doc */
+		-1,			/* m_size */
+		ContextMethods,		/* m_methods */
+		NULL,			/* m_reload */
+		NULL,			/* m_traverse */
+		NULL,			/* m_clear */
+		NULL,			/* m_free */
+	};
+	return PyModule_Create(&moduledef);
+}
+#endif
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index b1e999bd21ef..2918cac7a142 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -12,6 +12,30 @@
 #include "print_binary.h"
 #include "thread_map.h"
 
+#if PY_MAJOR_VERSION < 3
+#define _PyUnicode_FromString(arg) \
+  PyString_FromString(arg)
+#define _PyUnicode_AsString(arg) \
+  PyString_AsString(arg)
+#define _PyUnicode_FromFormat(...) \
+  PyString_FromFormat(__VA_ARGS__)
+#define _PyLong_FromLong(arg) \
+  PyInt_FromLong(arg)
+
+#else
+
+#define _PyUnicode_FromString(arg) \
+  PyUnicode_FromString(arg)
+#define _PyUnicode_FromFormat(...) \
+  PyUnicode_FromFormat(__VA_ARGS__)
+#define _PyLong_FromLong(arg) \
+  PyLong_FromLong(arg)
+#endif
+
+#ifndef Py_TYPE
+#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
+#endif
+
 /*
  * Provide these two so that we don't have to link against callchain.c and
  * start dragging hist.c, etc.
@@ -49,7 +73,11 @@ int eprintf(int level, int var, const char *fmt, ...)
 # define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
 #endif
 
+#if PY_MAJOR_VERSION < 3
 PyMODINIT_FUNC initperf(void);
+#else
+PyMODINIT_FUNC PyInit_perf(void);
+#endif
 
 #define member_def(type, member, ptype, help) \
 	{ #member, ptype, \
@@ -107,7 +135,7 @@ static PyObject *pyrf_mmap_event__repr(struct pyrf_event *pevent)
 		     pevent->event.mmap.pgoff, pevent->event.mmap.filename) < 0) {
 		ret = PyErr_NoMemory();
 	} else {
-		ret = PyString_FromString(s);
+		ret = _PyUnicode_FromString(s);
 		free(s);
 	}
 	return ret;
@@ -138,7 +166,7 @@ static PyMemberDef pyrf_task_event__members[] = {
 
 static PyObject *pyrf_task_event__repr(struct pyrf_event *pevent)
 {
-	return PyString_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
+	return _PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
 				   "ptid: %u, time: %" PRIu64 "}",
 				   pevent->event.header.type == PERF_RECORD_FORK ? "fork" : "exit",
 				   pevent->event.fork.pid,
@@ -171,7 +199,7 @@ static PyMemberDef pyrf_comm_event__members[] = {
 
 static PyObject *pyrf_comm_event__repr(struct pyrf_event *pevent)
 {
-	return PyString_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }",
+	return _PyUnicode_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }",
 				   pevent->event.comm.pid,
 				   pevent->event.comm.tid,
 				   pevent->event.comm.comm);
@@ -202,7 +230,7 @@ static PyObject *pyrf_throttle_event__repr(struct pyrf_event *pevent)
 {
 	struct throttle_event *te = (struct throttle_event *)(&pevent->event.header + 1);
 
-	return PyString_FromFormat("{ type: %sthrottle, time: %" PRIu64 ", id: %" PRIu64
+	return _PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRIu64 ", id: %" PRIu64
 				   ", stream_id: %" PRIu64 " }",
 				   pevent->event.header.type == PERF_RECORD_THROTTLE ? "" : "un",
 				   te->time, te->id, te->stream_id);
@@ -237,7 +265,7 @@ static PyObject *pyrf_lost_event__repr(struct pyrf_event *pevent)
 		     pevent->event.lost.id, pevent->event.lost.lost) < 0) {
 		ret = PyErr_NoMemory();
 	} else {
-		ret = PyString_FromString(s);
+		ret = _PyUnicode_FromString(s);
 		free(s);
 	}
 	return ret;
@@ -264,7 +292,7 @@ static PyMemberDef pyrf_read_event__members[] = {
 
 static PyObject *pyrf_read_event__repr(struct pyrf_event *pevent)
 {
-	return PyString_FromFormat("{ type: read, pid: %u, tid: %u }",
+	return _PyUnicode_FromFormat("{ type: read, pid: %u, tid: %u }",
 				   pevent->event.read.pid,
 				   pevent->event.read.tid);
 	/*
@@ -299,7 +327,7 @@ static PyObject *pyrf_sample_event__repr(struct pyrf_event *pevent)
 	if (asprintf(&s, "{ type: sample }") < 0) {
 		ret = PyErr_NoMemory();
 	} else {
-		ret = PyString_FromString(s);
+		ret = _PyUnicode_FromString(s);
 		free(s);
 	}
 	return ret;
@@ -330,7 +358,7 @@ tracepoint_field(struct pyrf_event *pe, struct format_field *field)
 		}
 		if (field->flags & FIELD_IS_STRING &&
 		    is_printable_array(data + offset, len)) {
-			ret = PyString_FromString((char *)data + offset);
+			ret = _PyUnicode_FromString((char *)data + offset);
 		} else {
 			ret = PyByteArray_FromStringAndSize((const char *) data + offset, len);
 			field->flags &= ~FIELD_IS_STRING;
@@ -352,7 +380,7 @@ tracepoint_field(struct pyrf_event *pe, struct format_field *field)
 static PyObject*
 get_tracepoint_field(struct pyrf_event *pevent, PyObject *attr_name)
 {
-	const char *str = PyString_AsString(PyObject_Str(attr_name));
+	const char *str = _PyUnicode_AsString(PyObject_Str(attr_name));
 	struct perf_evsel *evsel = pevent->evsel;
 	struct format_field *field;
 
@@ -416,7 +444,7 @@ static PyObject *pyrf_context_switch_event__repr(struct pyrf_event *pevent)
 		     !!(pevent->event.header.misc & PERF_RECORD_MISC_SWITCH_OUT)) < 0) {
 		ret = PyErr_NoMemory();
 	} else {
-		ret = PyString_FromString(s);
+		ret = _PyUnicode_FromString(s);
 		free(s);
 	}
 	return ret;
@@ -528,7 +556,7 @@ static int pyrf_cpu_map__init(struct pyrf_cpu_map *pcpus,
 static void pyrf_cpu_map__delete(struct pyrf_cpu_map *pcpus)
 {
 	cpu_map__put(pcpus->cpus);
-	pcpus->ob_type->tp_free((PyObject*)pcpus);
+	Py_TYPE(pcpus)->tp_free((PyObject*)pcpus);
 }
 
 static Py_ssize_t pyrf_cpu_map__length(PyObject *obj)
@@ -597,7 +625,7 @@ static int pyrf_thread_map__init(struct pyrf_thread_map *pthreads,
 static void pyrf_thread_map__delete(struct pyrf_thread_map *pthreads)
 {
 	thread_map__put(pthreads->threads);
-	pthreads->ob_type->tp_free((PyObject*)pthreads);
+	Py_TYPE(pthreads)->tp_free((PyObject*)pthreads);
 }
 
 static Py_ssize_t pyrf_thread_map__length(PyObject *obj)
@@ -759,7 +787,7 @@ static int pyrf_evsel__init(struct pyrf_evsel *pevsel,
 static void pyrf_evsel__delete(struct pyrf_evsel *pevsel)
 {
 	perf_evsel__exit(&pevsel->evsel);
-	pevsel->ob_type->tp_free((PyObject*)pevsel);
+	Py_TYPE(pevsel)->tp_free((PyObject*)pevsel);
 }
 
 static PyObject *pyrf_evsel__open(struct pyrf_evsel *pevsel,
@@ -850,7 +878,7 @@ static int pyrf_evlist__init(struct pyrf_evlist *pevlist,
 static void pyrf_evlist__delete(struct pyrf_evlist *pevlist)
 {
 	perf_evlist__exit(&pevlist->evlist);
-	pevlist->ob_type->tp_free((PyObject*)pevlist);
+	Py_TYPE(pevlist)->tp_free((PyObject*)pevlist);
 }
 
 static PyObject *pyrf_evlist__mmap(struct pyrf_evlist *pevlist,
@@ -902,12 +930,16 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
 
 	for (i = 0; i < evlist->pollfd.nr; ++i) {
 		PyObject *file;
+#if PY_MAJOR_VERSION < 3
 		FILE *fp = fdopen(evlist->pollfd.entries[i].fd, "r");
 
 		if (fp == NULL)
 			goto free_list;
 
 		file = PyFile_FromFile(fp, "perf", "r", NULL);
+#else
+		file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1, NULL, NULL, NULL, 1);
+#endif
 		if (file == NULL)
 			goto free_list;
 
@@ -1194,9 +1226,9 @@ static PyObject *pyrf__tracepoint(struct pyrf_evsel *pevsel,
 
 	tp_format = trace_event__tp_format(sys, name);
 	if (IS_ERR(tp_format))
-		return PyInt_FromLong(-1);
+		return _PyLong_FromLong(-1);
 
-	return PyInt_FromLong(tp_format->id);
+	return _PyLong_FromLong(tp_format->id);
 }
 
 static PyMethodDef perf__methods[] = {
@@ -1209,11 +1241,31 @@ static PyMethodDef perf__methods[] = {
 	{ .ml_name = NULL, }
 };
 
+#if PY_MAJOR_VERSION < 3
 PyMODINIT_FUNC initperf(void)
+#else
+PyMODINIT_FUNC PyInit_perf(void)
+#endif
 {
 	PyObject *obj;
 	int i;
-	PyObject *dict, *module = Py_InitModule("perf", perf__methods);
+	PyObject *dict;
+#if PY_MAJOR_VERSION < 3
+	PyObject *module = Py_InitModule("perf", perf__methods);
+#else
+	static struct PyModuleDef moduledef = {
+		PyModuleDef_HEAD_INIT,
+		"perf",			/* m_name */
+		"",			/* m_doc */
+		-1,			/* m_size */
+		perf__methods,		/* m_methods */
+		NULL,			/* m_reload */
+		NULL,			/* m_traverse */
+		NULL,			/* m_clear */
+		NULL,			/* m_free */
+	};
+	PyObject *module = PyModule_Create(&moduledef);
+#endif
 
 	if (module == NULL ||
 	    pyrf_event__setup_types() < 0 ||
@@ -1221,7 +1273,11 @@ PyMODINIT_FUNC initperf(void)
 	    pyrf_evsel__setup_types() < 0 ||
 	    pyrf_thread_map__setup_types() < 0 ||
 	    pyrf_cpu_map__setup_types() < 0)
+#if PY_MAJOR_VERSION < 3
 		return;
+#else
+		return module;
+#endif
 
 	/* The page_size is placed in util object. */
 	page_size = sysconf(_SC_PAGE_SIZE);
@@ -1270,7 +1326,7 @@ PyMODINIT_FUNC initperf(void)
 		goto error;
 
 	for (i = 0; perf__constants[i].name != NULL; i++) {
-		obj = PyInt_FromLong(perf__constants[i].value);
+		obj = _PyLong_FromLong(perf__constants[i].value);
 		if (obj == NULL)
 			goto error;
 		PyDict_SetItemString(dict, perf__constants[i].name, obj);
@@ -1280,6 +1336,9 @@ PyMODINIT_FUNC initperf(void)
 error:
 	if (PyErr_Occurred())
 		PyErr_SetString(PyExc_ImportError, "perf: Init failed!");
+#if PY_MAJOR_VERSION >= 3
+	return module;
+#endif
 }
 
 /*
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index ea070883c593..10dd5fce082b 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -49,7 +49,37 @@
 #include "print_binary.h"
 #include "stat.h"
 
+#if PY_MAJOR_VERSION < 3
+#define _PyUnicode_FromString(arg) \
+  PyString_FromString(arg)
+#define _PyUnicode_FromStringAndSize(arg1, arg2) \
+  PyString_FromStringAndSize((arg1), (arg2))
+#define _PyBytes_FromStringAndSize(arg1, arg2) \
+  PyString_FromStringAndSize((arg1), (arg2))
+#define _PyLong_FromLong(arg) \
+  PyInt_FromLong(arg)
+#define _PyLong_AsLong(arg) \
+  PyInt_AsLong(arg)
+#define _PyCapsule_New(arg1, arg2, arg3) \
+  PyCObject_FromVoidPtr((arg1), (arg2))
+
 PyMODINIT_FUNC initperf_trace_context(void);
+#else
+#define _PyUnicode_FromString(arg) \
+  PyUnicode_FromString(arg)
+#define _PyUnicode_FromStringAndSize(arg1, arg2) \
+  PyUnicode_FromStringAndSize((arg1), (arg2))
+#define _PyBytes_FromStringAndSize(arg1, arg2) \
+  PyBytes_FromStringAndSize((arg1), (arg2))
+#define _PyLong_FromLong(arg) \
+  PyLong_FromLong(arg)
+#define _PyLong_AsLong(arg) \
+  PyLong_AsLong(arg)
+#define _PyCapsule_New(arg1, arg2, arg3) \
+  PyCapsule_New((arg1), (arg2), (arg3))
+
+PyMODINIT_FUNC PyInit_perf_trace_context(void);
+#endif
 
 #define TRACE_EVENT_TYPE_MAX				\
 	((1 << (sizeof(unsigned short) * 8)) - 1)
@@ -135,7 +165,7 @@ static int get_argument_count(PyObject *handler)
 		PyObject *arg_count_obj = PyObject_GetAttrString(code_obj,
 			"co_argcount");
 		if (arg_count_obj) {
-			arg_count = (int) PyInt_AsLong(arg_count_obj);
+			arg_count = (int) _PyLong_AsLong(arg_count_obj);
 			Py_DECREF(arg_count_obj);
 		}
 		Py_DECREF(code_obj);
@@ -182,10 +212,10 @@ static void define_value(enum print_arg_type field_type,
 
 	value = eval_flag(field_value);
 
-	PyTuple_SetItem(t, n++, PyString_FromString(ev_name));
-	PyTuple_SetItem(t, n++, PyString_FromString(field_name));
-	PyTuple_SetItem(t, n++, PyInt_FromLong(value));
-	PyTuple_SetItem(t, n++, PyString_FromString(field_str));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(ev_name));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_name));
+	PyTuple_SetItem(t, n++, _PyLong_FromLong(value));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_str));
 
 	try_call_object(handler_name, t);
 
@@ -223,10 +253,10 @@ static void define_field(enum print_arg_type field_type,
 	if (!t)
 		Py_FatalError("couldn't create Python tuple");
 
-	PyTuple_SetItem(t, n++, PyString_FromString(ev_name));
-	PyTuple_SetItem(t, n++, PyString_FromString(field_name));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(ev_name));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_name));
 	if (field_type == PRINT_FLAGS)
-		PyTuple_SetItem(t, n++, PyString_FromString(delim));
+		PyTuple_SetItem(t, n++, _PyUnicode_FromString(delim));
 
 	try_call_object(handler_name, t);
 
@@ -325,12 +355,12 @@ static PyObject *get_field_numeric_entry(struct event_format *event,
 		if (field->flags & FIELD_IS_SIGNED) {
 			if ((long long)val >= LONG_MIN &&
 					(long long)val <= LONG_MAX)
-				obj = PyInt_FromLong(val);
+				obj = _PyLong_FromLong(val);
 			else
 				obj = PyLong_FromLongLong(val);
 		} else {
 			if (val <= LONG_MAX)
-				obj = PyInt_FromLong(val);
+				obj = _PyLong_FromLong(val);
 			else
 				obj = PyLong_FromUnsignedLongLong(val);
 		}
@@ -389,9 +419,9 @@ static PyObject *python_process_callchain(struct perf_sample *sample,
 			pydict_set_item_string_decref(pysym, "end",
 					PyLong_FromUnsignedLongLong(node->sym->end));
 			pydict_set_item_string_decref(pysym, "binding",
-					PyInt_FromLong(node->sym->binding));
+					_PyLong_FromLong(node->sym->binding));
 			pydict_set_item_string_decref(pysym, "name",
-					PyString_FromStringAndSize(node->sym->name,
+					_PyUnicode_FromStringAndSize(node->sym->name,
 							node->sym->namelen));
 			pydict_set_item_string_decref(pyelem, "sym", pysym);
 		}
@@ -406,7 +436,7 @@ static PyObject *python_process_callchain(struct perf_sample *sample,
 					dsoname = map->dso->name;
 			}
 			pydict_set_item_string_decref(pyelem, "dso",
-					PyString_FromString(dsoname));
+					_PyUnicode_FromString(dsoname));
 		}
 
 		callchain_cursor_advance(&callchain_cursor);
@@ -483,16 +513,16 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
 	if (!dict_sample)
 		Py_FatalError("couldn't create Python dictionary");
 
-	pydict_set_item_string_decref(dict, "ev_name", PyString_FromString(perf_evsel__name(evsel)));
-	pydict_set_item_string_decref(dict, "attr", PyString_FromStringAndSize(
+	pydict_set_item_string_decref(dict, "ev_name", _PyUnicode_FromString(perf_evsel__name(evsel)));
+	pydict_set_item_string_decref(dict, "attr", _PyUnicode_FromStringAndSize(
 			(const char *)&evsel->attr, sizeof(evsel->attr)));
 
 	pydict_set_item_string_decref(dict_sample, "pid",
-			PyInt_FromLong(sample->pid));
+			_PyLong_FromLong(sample->pid));
 	pydict_set_item_string_decref(dict_sample, "tid",
-			PyInt_FromLong(sample->tid));
+			_PyLong_FromLong(sample->tid));
 	pydict_set_item_string_decref(dict_sample, "cpu",
-			PyInt_FromLong(sample->cpu));
+			_PyLong_FromLong(sample->cpu));
 	pydict_set_item_string_decref(dict_sample, "ip",
 			PyLong_FromUnsignedLongLong(sample->ip));
 	pydict_set_item_string_decref(dict_sample, "time",
@@ -504,17 +534,17 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
 	set_sample_read_in_dict(dict_sample, sample, evsel);
 	pydict_set_item_string_decref(dict, "sample", dict_sample);
 
-	pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize(
+	pydict_set_item_string_decref(dict, "raw_buf", _PyBytes_FromStringAndSize(
 			(const char *)sample->raw_data, sample->raw_size));
 	pydict_set_item_string_decref(dict, "comm",
-			PyString_FromString(thread__comm_str(al->thread)));
+			_PyUnicode_FromString(thread__comm_str(al->thread)));
 	if (al->map) {
 		pydict_set_item_string_decref(dict, "dso",
-			PyString_FromString(al->map->dso->name));
+			_PyUnicode_FromString(al->map->dso->name));
 	}
 	if (al->sym) {
 		pydict_set_item_string_decref(dict, "symbol",
-			PyString_FromString(al->sym->name));
+			_PyUnicode_FromString(al->sym->name));
 	}
 
 	pydict_set_item_string_decref(dict, "callchain", callchain);
@@ -574,9 +604,9 @@ static void python_process_tracepoint(struct perf_sample *sample,
 	scripting_context->event_data = data;
 	scripting_context->pevent = evsel->tp_format->pevent;
 
-	context = PyCObject_FromVoidPtr(scripting_context, NULL);
+	context = _PyCapsule_New(scripting_context, NULL, NULL);
 
-	PyTuple_SetItem(t, n++, PyString_FromString(handler_name));
+	PyTuple_SetItem(t, n++, _PyUnicode_FromString(handler_name));
 	PyTuple_SetItem(t, n++, context);
 
 	/* ip unwinding */
@@ -585,18 +615,18 @@ static void python_process_tracepoint(struct perf_sample *sample,
 	Py_INCREF(callchain);
 
 	if (!dict) {
-		PyTuple_SetItem(t, n++, PyInt_FromLong(cpu));
-		PyTuple_SetItem(t, n++, PyInt_FromLong(s));
-		PyTuple_SetItem(t, n++, PyInt_FromLong(ns));
-		PyTuple_SetItem(t, n++, PyInt_FromLong(pid));
-		PyTuple_SetItem(t, n++, PyString_FromString(comm));
+		PyTuple_SetItem(t, n++, _PyLong_FromLong(cpu));
+		PyTuple_SetItem(t, n++, _PyLong_FromLong(s));
+		PyTuple_SetItem(t, n++, _PyLong_FromLong(ns));
+		PyTuple_SetItem(t, n++, _PyLong_FromLong(pid));
+		PyTuple_SetItem(t, n++, _PyUnicode_FromString(comm));
 		PyTuple_SetItem(t, n++, callchain);
 	} else {
-		pydict_set_item_string_decref(dict, "common_cpu", PyInt_FromLong(cpu));
-		pydict_set_item_string_decref(dict, "common_s", PyInt_FromLong(s));
-		pydict_set_item_string_decref(dict, "common_ns", PyInt_FromLong(ns));
-		pydict_set_item_string_decref(dict, "common_pid", PyInt_FromLong(pid));
-		pydict_set_item_string_decref(dict, "common_comm", PyString_FromString(comm));
+		pydict_set_item_string_decref(dict, "common_cpu", _PyLong_FromLong(cpu));
+		pydict_set_item_string_decref(dict, "common_s", _PyLong_FromLong(s));
+		pydict_set_item_string_decref(dict, "common_ns", _PyLong_FromLong(ns));
+		pydict_set_item_string_decref(dict, "common_pid", _PyLong_FromLong(pid));
+		pydict_set_item_string_decref(dict, "common_comm", _PyUnicode_FromString(comm));
 		pydict_set_item_string_decref(dict, "common_callchain", callchain);
 	}
 	for (field = event->format.fields; field; field = field->next) {
@@ -615,7 +645,7 @@ static void python_process_tracepoint(struct perf_sample *sample,
 			}
 			if (field->flags & FIELD_IS_STRING &&
 			    is_printable_array(data + offset, len)) {
-				obj = PyString_FromString((char *) data + offset);
+				obj = _PyUnicode_FromString((char *) data + offset);
 			} else {
 				obj = PyByteArray_FromStringAndSize((const char *) data + offset, len);
 				field->flags &= ~FIELD_IS_STRING;
@@ -668,7 +698,7 @@ static PyObject *tuple_new(unsigned int sz)
 static int tuple_set_u64(PyObject *t, unsigned int pos, u64 val)
 {
 #if BITS_PER_LONG == 64
-	return PyTuple_SetItem(t, pos, PyInt_FromLong(val));
+	return PyTuple_SetItem(t, pos, _PyLong_FromLong(val));
 #endif
 #if BITS_PER_LONG == 32
 	return PyTuple_SetItem(t, pos, PyLong_FromLongLong(val));
@@ -677,12 +707,12 @@ static int tuple_set_u64(PyObject *t, unsigned int pos, u64 val)
 
 static int tuple_set_s32(PyObject *t, unsigned int pos, s32 val)
 {
-	return PyTuple_SetItem(t, pos, PyInt_FromLong(val));
+	return PyTuple_SetItem(t, pos, _PyLong_FromLong(val));
 }
 
 static int tuple_set_string(PyObject *t, unsigned int pos, const char *s)
 {
-	return PyTuple_SetItem(t, pos, PyString_FromString(s));
+	return PyTuple_SetItem(t, pos, _PyUnicode_FromString(s));
 }
 
 static int python_export_evsel(struct db_export *dbe, struct perf_evsel *evsel)
@@ -1029,8 +1059,8 @@ process_stat(struct perf_evsel *counter, int cpu, int thread, u64 tstamp,
 		return;
 	}
 
-	PyTuple_SetItem(t, n++, PyInt_FromLong(cpu));
-	PyTuple_SetItem(t, n++, PyInt_FromLong(thread));
+	PyTuple_SetItem(t, n++, _PyLong_FromLong(cpu));
+	PyTuple_SetItem(t, n++, _PyLong_FromLong(thread));
 
 	tuple_set_u64(t, n++, tstamp);
 	tuple_set_u64(t, n++, count->val);
@@ -1212,27 +1242,58 @@ static void set_table_handlers(struct tables *tables)
 	SET_TABLE_HANDLER(call_return);
 }
 
+#if PY_MAJOR_VERSION < 3
+static void _free_command_line(const char **command_line, int num)
+{
+	free(command_line);
+}
+#else
+static void _free_command_line(wchar_t **command_line, int num)
+{
+	int i;
+	for (i = 0; i < num; i++)
+		PyMem_RawFree(command_line[i]);
+	free(command_line);
+}
+#endif
+
+
 /*
  * Start trace script
  */
 static int python_start_script(const char *script, int argc, const char **argv)
 {
 	struct tables *tables = &tables_global;
+#if PY_MAJOR_VERSION < 3
 	const char **command_line;
+#else
+	wchar_t **command_line;
+#endif
 	char buf[PATH_MAX];
 	int i, err = 0;
 	FILE *fp;
 
+#if PY_MAJOR_VERSION < 3
 	command_line = malloc((argc + 1) * sizeof(const char *));
 	command_line[0] = script;
 	for (i = 1; i < argc + 1; i++)
 		command_line[i] = argv[i - 1];
+#else
+	command_line = malloc((argc + 1) * sizeof(wchar_t *));
+	command_line[0] = Py_DecodeLocale(script, NULL);
+	for (i = 1; i < argc + 1; i++)
+		command_line[i] = Py_DecodeLocale(argv[i - 1], NULL);
+#endif
 
 	Py_Initialize();
 
+#if PY_MAJOR_VERSION < 3
 	initperf_trace_context();
-
 	PySys_SetArgv(argc + 1, (char **)command_line);
+#else
+	PyInit_perf_trace_context();
+	PySys_SetArgv(argc + 1, command_line);
+#endif
 
 	fp = fopen(script, "r");
 	if (!fp) {
@@ -1262,12 +1323,12 @@ static int python_start_script(const char *script, int argc, const char **argv)
 			goto error;
 	}
 
-	free(command_line);
+	_free_command_line(command_line, argc + 1);
 
 	return err;
 error:
 	Py_Finalize();
-	free(command_line);
+	_free_command_line(command_line, argc + 1);
 
 	return err;
 }
diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py
index af415febbc46..6891635b50c3 100644
--- a/tools/perf/util/setup.py
+++ b/tools/perf/util/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/python
 
 from os import getenv
 
@@ -35,11 +35,11 @@ build_tmp = getenv('PYTHON_EXTBUILD_TMP')
 libtraceevent = getenv('LIBTRACEEVENT')
 libapikfs = getenv('LIBAPI')
 
-ext_sources = [f.strip() for f in file('util/python-ext-sources')
+ext_sources = [f.strip() for f in open('util/python-ext-sources')
 				if len(f.strip()) > 0 and f[0] != '#']
 
 # use full paths with source files
-ext_sources = map(lambda x: '%s/%s' % (src_perf, x) , ext_sources)
+ext_sources = list(map(lambda x: '%s/%s' % (src_perf, x) , ext_sources))
 
 perf = Extension('perf',
 		  sources = ext_sources,
-- 
2.14.3

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2018-02-21  1:34 ` [PATCH 5/5] perf tools: Add Python 3 support Arnaldo Carvalho de Melo
@ 2018-02-21  7:52 ` Ingo Molnar
  5 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2018-02-21  7:52 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, linux-perf-users, Adrian Hunter,
	Alexander Shishkin, Changbin Du, David Ahern, Heiko Carstens,
	Hendrik Brueckner, Jaroslav Škarvada, Jiri Olsa,
	kernel-team, Martin Schwidefsky, Namhyung Kim, Peter Zijlstra,
	Thomas Richter, Wang Nan, 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 11737ca9e3b9d84448fa405a80980aa9957bcee8:
> 
>   Merge tag 'perf-core-for-mingo-4.17-20180216' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-02-17 11:39:47 +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-20180220
> 
> for you to fetch changes up to 66dfdff03d196e51322c6a85c0d8db8bb2bdd655:
> 
>   perf tools: Add Python 3 support (2018-02-19 12:28:23 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> - Initial support for linking with python3, by explicitely setting
>   the PYTHON Makefile variable, python2 remains supported, more work
>   needed to test the shipped python scripts used with 'perf script'
>   (Jaroslav Škarvada)
> 
> - Make twatch.py, an example python script that sets up evlists and
>   evsels to then parse events from mmap, to work with both python2 and
>   python3 (Arnaldo Carvalho de Melo)
> 
> - Fix setting 'perf ftrace' function filter when using a non-existent
>   function, which should result in an error instead of simply not setting
>   the filter and showing all functions (Changbin Du)
> 
> - Fix paranoid check in machine__set_kernel_mmap(), problem introduced
>   in previous perf/core batch (Namhyung Kim)
> 
> - Fix reading cpuid model information in s/390, ditto, also introduced
>   in the previous perf/core batch (Thomas Richter)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (1):
>       perf python: Make twatch.py work with both python2 and python3
> 
> Changbin Du (1):
>       perf ftrace: Append an EOL when write tracing files
> 
> Jaroslav Škarvada (1):
>       perf tools: Add Python 3 support
> 
> Namhyung Kim (1):
>       perf machine: Fix paranoid check in machine__set_kernel_mmap()
> 
> Thomas Richter (1):
>       perf s390: Fix reading cpuid model information
> 
>  tools/perf/Makefile.config                         |  23 +---
>  tools/perf/Makefile.perf                           |   4 +-
>  tools/perf/arch/s390/util/header.c                 |   2 +-
>  tools/perf/builtin-ftrace.c                        |  18 ++-
>  tools/perf/python/twatch.py                        |   8 +-
>  .../perf/scripts/python/Perf-Trace-Util/Context.c  |  34 ++++-
>  tools/perf/util/machine.c                          |   2 +-
>  tools/perf/util/python.c                           |  95 ++++++++++---
>  .../util/scripting-engines/trace-event-python.c    | 147 +++++++++++++++------
>  tools/perf/util/setup.py                           |   6 +-
>  10 files changed, 243 insertions(+), 96 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2015-10-21 21:31 Arnaldo Carvalho de Melo
@ 2015-10-22  7:34 ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2015-10-22  7:34 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Andi Kleen,
	Borislav Petkov, David Ahern, Frederic Weisbecker, Jiri Olsa,
	Kan Liang, kvm, Masami Hiramatsu, Namhyung Kim, Paolo Bonzini,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt,
	Wang Nan, Yunlong Song, Arnaldo Carvalho de Melo


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

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 43e41adc9e8c36545888d78fed2ef8d102a938dc:
> 
>   perf record: Add ability to sample call branches (2015-10-20 10:30:55 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to e3d006ce8180a0c025ce66bdc89bbc125f85be57:
> 
>   perf annotate: Add debug message for out of bounds sample (2015-10-21 18:12:37 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Print branch filter state with verbose mode (Andi Kleen)
> 
> - Fix core dump caused by per-socket/core system-wide stat (Kan Liang)
> 
> - Update libtraceevent KVM plugin (Paolo Bonzini)
> 
> Developer stuff:
> 
> - Add fixdep to 'tools/build' .gitignore (Yunlong Song)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andi Kleen (1):
>       perf evsel: Print branch filter state with -vv
> 
> Arnaldo Carvalho de Melo (1):
>       perf annotate: Add debug message for out of bounds sample
> 
> Kan Liang (1):
>       perf cpu_map: Fix core dump caused by per-socket/core system-wide stat
> 
> Paolo Bonzini (1):
>       tools lib traceevent: update KVM plugin
> 
> Yunlong Song (1):
>       perf build: Add fixdep to .gitignore
> 
>  tools/build/.gitignore            |  1 +
>  tools/lib/traceevent/plugin_kvm.c | 25 +++++++++++++++++--------
>  tools/perf/util/annotate.c        |  5 ++++-
>  tools/perf/util/cpumap.c          |  2 +-
>  tools/perf/util/evsel.c           |  1 +
>  5 files changed, 24 insertions(+), 10 deletions(-)
>  create mode 100644 tools/build/.gitignore

Pulled, thanks a lot Arnaldo!

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2015-10-21 21:31 Arnaldo Carvalho de Melo
  2015-10-22  7:34 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-21 21:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Andi Kleen, Borislav Petkov, David Ahern,
	Frederic Weisbecker, Jiri Olsa, Kan Liang, kvm, Masami Hiramatsu,
	Namhyung Kim, Paolo Bonzini, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt, Wang Nan, Yunlong Song,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 43e41adc9e8c36545888d78fed2ef8d102a938dc:

  perf record: Add ability to sample call branches (2015-10-20 10:30:55 +0200)

are available in the git repository at:

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

for you to fetch changes up to e3d006ce8180a0c025ce66bdc89bbc125f85be57:

  perf annotate: Add debug message for out of bounds sample (2015-10-21 18:12:37 -0300)

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

User visible:

- Print branch filter state with verbose mode (Andi Kleen)

- Fix core dump caused by per-socket/core system-wide stat (Kan Liang)

- Update libtraceevent KVM plugin (Paolo Bonzini)

Developer stuff:

- Add fixdep to 'tools/build' .gitignore (Yunlong Song)

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

----------------------------------------------------------------
Andi Kleen (1):
      perf evsel: Print branch filter state with -vv

Arnaldo Carvalho de Melo (1):
      perf annotate: Add debug message for out of bounds sample

Kan Liang (1):
      perf cpu_map: Fix core dump caused by per-socket/core system-wide stat

Paolo Bonzini (1):
      tools lib traceevent: update KVM plugin

Yunlong Song (1):
      perf build: Add fixdep to .gitignore

 tools/build/.gitignore            |  1 +
 tools/lib/traceevent/plugin_kvm.c | 25 +++++++++++++++++--------
 tools/perf/util/annotate.c        |  5 ++++-
 tools/perf/util/cpumap.c          |  2 +-
 tools/perf/util/evsel.c           |  1 +
 5 files changed, 24 insertions(+), 10 deletions(-)
 create mode 100644 tools/build/.gitignore

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2015-10-07 22:45 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-07 22:45 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andrzej Hajda, Bartlomiej Zolnierkiewicz, Borislav Petkov,
	David Ahern, Frederic Weisbecker, Guy Streeter, Jiri Olsa,
	kernel-janitors, Marek Szyprowski, Namhyung Kim, Peter Zijlstra,
	Stephane Eranian, Wang Nan, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 712df65ccb63da08a484bf57c40b250dfd4103a7:

  perf/x86/intel/uncore: Fix multi-segment problem of perf_event_intel_uncore (2015-10-06 17:31: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

for you to fetch changes up to ae938802443732e77d01f8d5b52b900b9327ff30:

  perf python: Support the PERF_RECORD_SWITCH event (2015-10-07 19:41:50 -0300)

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

User visible:

- Adding a field via 'perf report -F' that already is enabled makes
  the tool get stuck in a loop, fix it (Jiri Olsa)

Infrastructure:

- Support PERF_RECORD_SWITCH in the python binding (Arnaldo Carvalho de Melo)

- Fix handling read() result using a signed variable, found with Coccinelle
  (Andrzej Hajda)

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

----------------------------------------------------------------
Andrzej Hajda (1):
      perf tools: Fix handling read result using a signed variable

Arnaldo Carvalho de Melo (1):
      perf python: Support the PERF_RECORD_SWITCH event

Jiri Olsa (3):
      perf tools: Get rid of superfluos call to reset_dimensions
      perf tools: Introduce hpp_dimension__add_output function
      perf tools: Use hpp_dimension__add_output to register hpp columns

 tools/perf/python/twatch.py | 23 +++++++++++++++---
 tools/perf/ui/hist.c        | 16 ++++++------
 tools/perf/util/event.c     |  3 ++-
 tools/perf/util/python.c    | 59 ++++++++++++++++++++++++++++++++++++++++++---
 tools/perf/util/sort.c      |  8 ++++--
 tools/perf/util/sort.h      |  2 ++
 6 files changed, 93 insertions(+), 18 deletions(-)

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2015-04-13 23:19     ` Arnaldo Carvalho de Melo
@ 2015-04-14 12:12       ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2015-04-14 12:12 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Masami Hiramatsu, linux-kernel, David Ahern, He Kuang, Jiri Olsa,
	Joonsoo Kim, linux-mm, Minchan Kim, Namhyung Kim, Peter Zijlstra,
	Steven Rostedt, Wang Nan


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

> Em Mon, Apr 13, 2015 at 08:09:23PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Tue, Apr 14, 2015 at 07:33:07AM +0900, Masami Hiramatsu escreveu:
> > > Hi, Arnaldo,
> > > 
> > > >       perf probe: Make --source avaiable when probe with lazy_line
> > > 
> > > No, could you pull Naohiro's patch?
> > > I'd like to move get_real_path to probe_finder.c
> > 
> > OOps, yeah, you asked for that... Ingo, please ignore this pull request
> > for now, thanks,
> 
> Ok, I did that and created a perf-core-for-mingo-2, Masami, please check
> that all is right, ok?
> 
> - Arnaldo
> 
> The following changes since commit 066450be419fa48007a9f29e19828f2a86198754:
> 
>   perf/x86/intel/pt: Clean up the control flow in pt_pmu_hw_init() (2015-04-12 11:21:15 +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-2
> 
> for you to fetch changes up to f19e80c640d58ddfd70f2454ee597f81ba966690:
> 
>   perf probe: Fix segfault when probe with lazy_line to file (2015-04-13 20:12:21 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> New features:
> 
> - Analyze page allocator events also in 'perf kmem' (Namhyung Kim)
> 
> User visible fixes:
> 
> - Fix retprobe 'perf probe' handling when failing to find needed debuginfo (He Kuang)
> 
> - lazy_line probe fixes in 'perf probe' (Naohiro Aota, He Kuang)
> 
> Infrastructure:
> 
> - Record pfn instead of pointer to struct page in tracepoints (Namhyung Kim)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> He Kuang (2):
>       perf probe: Set retprobe flag when probe in address-based alternative mode
>       perf probe: Fix segfault when probe with lazy_line to file
> 
> Namhyung Kim (2):
>       tracing, mm: Record pfn instead of pointer to struct page
>       perf kmem: Analyze page allocator events also
> 
> Naohiro Aota (1):
>       perf probe: Find compilation directory path for lazy matching
> 
>  include/trace/events/filemap.h         |   8 +-
>  include/trace/events/kmem.h            |  42 +--
>  include/trace/events/vmscan.h          |   8 +-
>  tools/perf/Documentation/perf-kmem.txt |   8 +-
>  tools/perf/builtin-kmem.c              | 500 +++++++++++++++++++++++++++++++--
>  tools/perf/util/probe-event.c          |  60 +---
>  tools/perf/util/probe-finder.c         |  73 ++++-
>  tools/perf/util/probe-finder.h         |   4 +
>  8 files changed, 596 insertions(+), 107 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2015-04-13 23:09   ` Arnaldo Carvalho de Melo
@ 2015-04-13 23:19     ` Arnaldo Carvalho de Melo
  2015-04-14 12:12       ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-13 23:19 UTC (permalink / raw)
  To: Masami Hiramatsu, Ingo Molnar
  Cc: linux-kernel, David Ahern, He Kuang, Jiri Olsa, Joonsoo Kim,
	linux-mm, Minchan Kim, Namhyung Kim, Peter Zijlstra,
	Steven Rostedt, Wang Nan

Em Mon, Apr 13, 2015 at 08:09:23PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Apr 14, 2015 at 07:33:07AM +0900, Masami Hiramatsu escreveu:
> > Hi, Arnaldo,
> > 
> > >       perf probe: Make --source avaiable when probe with lazy_line
> > 
> > No, could you pull Naohiro's patch?
> > I'd like to move get_real_path to probe_finder.c
> 
> OOps, yeah, you asked for that... Ingo, please ignore this pull request
> for now, thanks,

Ok, I did that and created a perf-core-for-mingo-2, Masami, please check
that all is right, ok?

- Arnaldo

The following changes since commit 066450be419fa48007a9f29e19828f2a86198754:

  perf/x86/intel/pt: Clean up the control flow in pt_pmu_hw_init() (2015-04-12 11:21:15 +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-2

for you to fetch changes up to f19e80c640d58ddfd70f2454ee597f81ba966690:

  perf probe: Fix segfault when probe with lazy_line to file (2015-04-13 20:12:21 -0300)

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

New features:

- Analyze page allocator events also in 'perf kmem' (Namhyung Kim)

User visible fixes:

- Fix retprobe 'perf probe' handling when failing to find needed debuginfo (He Kuang)

- lazy_line probe fixes in 'perf probe' (Naohiro Aota, He Kuang)

Infrastructure:

- Record pfn instead of pointer to struct page in tracepoints (Namhyung Kim)

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

----------------------------------------------------------------
He Kuang (2):
      perf probe: Set retprobe flag when probe in address-based alternative mode
      perf probe: Fix segfault when probe with lazy_line to file

Namhyung Kim (2):
      tracing, mm: Record pfn instead of pointer to struct page
      perf kmem: Analyze page allocator events also

Naohiro Aota (1):
      perf probe: Find compilation directory path for lazy matching

 include/trace/events/filemap.h         |   8 +-
 include/trace/events/kmem.h            |  42 +--
 include/trace/events/vmscan.h          |   8 +-
 tools/perf/Documentation/perf-kmem.txt |   8 +-
 tools/perf/builtin-kmem.c              | 500 +++++++++++++++++++++++++++++++--
 tools/perf/util/probe-event.c          |  60 +---
 tools/perf/util/probe-finder.c         |  73 ++++-
 tools/perf/util/probe-finder.h         |   4 +
 8 files changed, 596 insertions(+), 107 deletions(-)

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2015-04-13 22:33 ` Masami Hiramatsu
@ 2015-04-13 23:09   ` Arnaldo Carvalho de Melo
  2015-04-13 23:19     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-13 23:09 UTC (permalink / raw)
  To: Masami Hiramatsu
  Cc: Ingo Molnar, linux-kernel, David Ahern, He Kuang, Jiri Olsa,
	Joonsoo Kim, linux-mm, Minchan Kim, Namhyung Kim, Peter Zijlstra,
	Steven Rostedt, Wang Nan

Em Tue, Apr 14, 2015 at 07:33:07AM +0900, Masami Hiramatsu escreveu:
> Hi, Arnaldo,
> 
> >       perf probe: Make --source avaiable when probe with lazy_line
> 
> No, could you pull Naohiro's patch?
> I'd like to move get_real_path to probe_finder.c

OOps, yeah, you asked for that... Ingo, please ignore this pull request
for now, thanks,

- Arnaldo
 
> Thank you,
> 
> (2015/04/14 7:14), Arnaldo Carvalho de Melo wrote:
> > Hi Ingo,
> > 
> > 	Please consider pulling,
> > 
> > Best regards,
> > 
> > - Arnaldo
> > 
> > The following changes since commit 066450be419fa48007a9f29e19828f2a86198754:
> > 
> >   perf/x86/intel/pt: Clean up the control flow in pt_pmu_hw_init() (2015-04-12 11:21:15 +0200)
> > 
> > are available in the git repository at:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> > 
> > for you to fetch changes up to be8d5b1c6b468d10bd2928bbd1a5ca3fd2980402:
> > 
> >   perf probe: Fix segfault when probe with lazy_line to file (2015-04-13 17:59:41 -0300)
> > 
> > ----------------------------------------------------------------
> > perf/core improvements and fixes:
> > 
> > New features:
> > 
> > - Analyze page allocator events also in 'perf kmem' (Namhyung Kim)
> > 
> > User visible fixes:
> > 
> > - Fix retprobe 'perf probe' handling when failing to find needed debuginfo (He Kuang)
> > 
> > - lazy_line probe fixes in 'perf probe' (He Kuang)
> > 
> > Infrastructure:
> > 
> > - Record pfn instead of pointer to struct page in tracepoints (Namhyung Kim)
> > 
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > ----------------------------------------------------------------
> > He Kuang (3):
> >       perf probe: Set retprobe flag when probe in address-based alternative mode
> >       perf probe: Make --source avaiable when probe with lazy_line
> >       perf probe: Fix segfault when probe with lazy_line to file
> > 
> > Namhyung Kim (2):
> >       tracing, mm: Record pfn instead of pointer to struct page
> >       perf kmem: Analyze page allocator events also
> > 
> >  include/trace/events/filemap.h         |   8 +-
> >  include/trace/events/kmem.h            |  42 +--
> >  include/trace/events/vmscan.h          |   8 +-
> >  tools/perf/Documentation/perf-kmem.txt |   8 +-
> >  tools/perf/builtin-kmem.c              | 500 +++++++++++++++++++++++++++++++--
> >  tools/perf/util/probe-event.c          |   3 +-
> >  tools/perf/util/probe-event.h          |   2 +
> >  tools/perf/util/probe-finder.c         |  20 +-
> >  8 files changed, 540 insertions(+), 51 deletions(-)
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> > 
> > 
> 
> 
> -- 
> Masami HIRAMATSU
> Linux Technology Research Center, System Productivity Research Dept.
> Center for Technology Innovation - Systems Engineering
> Hitachi, Ltd., Research & Development Group
> E-mail: masami.hiramatsu.pt@hitachi.com
> 

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2015-04-13 22:14 Arnaldo Carvalho de Melo
@ 2015-04-13 22:33 ` Masami Hiramatsu
  2015-04-13 23:09   ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 35+ messages in thread
From: Masami Hiramatsu @ 2015-04-13 22:33 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, David Ahern, He Kuang, Jiri Olsa,
	Joonsoo Kim, linux-mm, Minchan Kim, Namhyung Kim, Peter Zijlstra,
	Steven Rostedt, Wang Nan, Arnaldo Carvalho de Melo

Hi, Arnaldo,

>       perf probe: Make --source avaiable when probe with lazy_line

No, could you pull Naohiro's patch?
I'd like to move get_real_path to probe_finder.c

Thank you,

(2015/04/14 7:14), Arnaldo Carvalho de Melo wrote:
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> Best regards,
> 
> - Arnaldo
> 
> The following changes since commit 066450be419fa48007a9f29e19828f2a86198754:
> 
>   perf/x86/intel/pt: Clean up the control flow in pt_pmu_hw_init() (2015-04-12 11:21:15 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to be8d5b1c6b468d10bd2928bbd1a5ca3fd2980402:
> 
>   perf probe: Fix segfault when probe with lazy_line to file (2015-04-13 17:59:41 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> New features:
> 
> - Analyze page allocator events also in 'perf kmem' (Namhyung Kim)
> 
> User visible fixes:
> 
> - Fix retprobe 'perf probe' handling when failing to find needed debuginfo (He Kuang)
> 
> - lazy_line probe fixes in 'perf probe' (He Kuang)
> 
> Infrastructure:
> 
> - Record pfn instead of pointer to struct page in tracepoints (Namhyung Kim)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> He Kuang (3):
>       perf probe: Set retprobe flag when probe in address-based alternative mode
>       perf probe: Make --source avaiable when probe with lazy_line
>       perf probe: Fix segfault when probe with lazy_line to file
> 
> Namhyung Kim (2):
>       tracing, mm: Record pfn instead of pointer to struct page
>       perf kmem: Analyze page allocator events also
> 
>  include/trace/events/filemap.h         |   8 +-
>  include/trace/events/kmem.h            |  42 +--
>  include/trace/events/vmscan.h          |   8 +-
>  tools/perf/Documentation/perf-kmem.txt |   8 +-
>  tools/perf/builtin-kmem.c              | 500 +++++++++++++++++++++++++++++++--
>  tools/perf/util/probe-event.c          |   3 +-
>  tools/perf/util/probe-event.h          |   2 +
>  tools/perf/util/probe-finder.c         |  20 +-
>  8 files changed, 540 insertions(+), 51 deletions(-)
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 
> 


-- 
Masami HIRAMATSU
Linux Technology Research Center, System Productivity Research Dept.
Center for Technology Innovation - Systems Engineering
Hitachi, Ltd., Research & Development Group
E-mail: masami.hiramatsu.pt@hitachi.com



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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2015-04-13 22:14 Arnaldo Carvalho de Melo
  2015-04-13 22:33 ` Masami Hiramatsu
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-13 22:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern, He Kuang,
	Jiri Olsa, Joonsoo Kim, linux-mm, Masami Hiramatsu, Minchan Kim,
	Namhyung Kim, Peter Zijlstra, Steven Rostedt, Wang Nan,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

Best regards,

- Arnaldo

The following changes since commit 066450be419fa48007a9f29e19828f2a86198754:

  perf/x86/intel/pt: Clean up the control flow in pt_pmu_hw_init() (2015-04-12 11:21:15 +0200)

are available in the git repository at:

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

for you to fetch changes up to be8d5b1c6b468d10bd2928bbd1a5ca3fd2980402:

  perf probe: Fix segfault when probe with lazy_line to file (2015-04-13 17:59:41 -0300)

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

New features:

- Analyze page allocator events also in 'perf kmem' (Namhyung Kim)

User visible fixes:

- Fix retprobe 'perf probe' handling when failing to find needed debuginfo (He Kuang)

- lazy_line probe fixes in 'perf probe' (He Kuang)

Infrastructure:

- Record pfn instead of pointer to struct page in tracepoints (Namhyung Kim)

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

----------------------------------------------------------------
He Kuang (3):
      perf probe: Set retprobe flag when probe in address-based alternative mode
      perf probe: Make --source avaiable when probe with lazy_line
      perf probe: Fix segfault when probe with lazy_line to file

Namhyung Kim (2):
      tracing, mm: Record pfn instead of pointer to struct page
      perf kmem: Analyze page allocator events also

 include/trace/events/filemap.h         |   8 +-
 include/trace/events/kmem.h            |  42 +--
 include/trace/events/vmscan.h          |   8 +-
 tools/perf/Documentation/perf-kmem.txt |   8 +-
 tools/perf/builtin-kmem.c              | 500 +++++++++++++++++++++++++++++++--
 tools/perf/util/probe-event.c          |   3 +-
 tools/perf/util/probe-event.h          |   2 +
 tools/perf/util/probe-finder.c         |  20 +-
 8 files changed, 540 insertions(+), 51 deletions(-)

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2014-10-17 19:49 Arnaldo Carvalho de Melo
@ 2014-10-18  7:04 ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2014-10-18  7:04 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Borislav Petkov,
	Corey Ashford, David Ahern, Don Zickus, Frederic Weisbecker,
	Jean Pihet, Jen-Cheng Huang, Jiri Olsa, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo


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

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 691286b5561aab2e1b00119bc328598c01250548:
> 
>   kprobes/x86: Remove stale ARCH_SUPPORTS_KPROBES_ON_FTRACE define (2014-10-17 07:18:34 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to e8564b710c6df2c3aeb56c507c22f4bcfa4c0b2d:
> 
>   perf script: Add period as a default output column (2014-10-17 15:22:19 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> o Add period data column and make it default in 'perf script' (Jiri Olsa)
> 
> Infrastructure:
> 
> * Move exit stuff from perf_evsel__delete to perf_evsel__exit, delete
>   should be just a front end for exit + free (Arnaldo Carvalho de Melo)
> 
> * Add missing 'struct option' forward declaration (Arnaldo Carvalho de Melo)
> 
> * No need to drag util/cgroup.h into evsel.h (Arnaldo Carvalho de Melo)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (3):
>       perf evsel: Move exit stuff from __delete to __exit
>       perf evlist: Add missing 'struct option' forward declaration
>       perf evsel: No need to drag util/cgroup.h
> 
> Jiri Olsa (2):
>       perf script: Add period data column
>       perf script: Add period as a default output column
> 
>  tools/perf/Documentation/perf-script.txt |  2 +-
>  tools/perf/builtin-record.c              |  1 +
>  tools/perf/builtin-script.c              | 21 +++++++++++++++++----
>  tools/perf/builtin-stat.c                |  1 +
>  tools/perf/util/evlist.h                 |  2 ++
>  tools/perf/util/evsel.c                  | 11 ++++++-----
>  tools/perf/util/evsel.h                  |  3 ++-
>  7 files changed, 30 insertions(+), 11 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2014-10-17 19:49 Arnaldo Carvalho de Melo
  2014-10-18  7:04 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-10-17 19:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, Corey Ashford, David Ahern,
	Don Zickus, Frederic Weisbecker, Jean Pihet, Jen-Cheng Huang,
	Jiri Olsa, Mike Galbraith, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 691286b5561aab2e1b00119bc328598c01250548:

  kprobes/x86: Remove stale ARCH_SUPPORTS_KPROBES_ON_FTRACE define (2014-10-17 07:18:34 +0200)

are available in the git repository at:

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

for you to fetch changes up to e8564b710c6df2c3aeb56c507c22f4bcfa4c0b2d:

  perf script: Add period as a default output column (2014-10-17 15:22:19 -0300)

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

User visible:

o Add period data column and make it default in 'perf script' (Jiri Olsa)

Infrastructure:

* Move exit stuff from perf_evsel__delete to perf_evsel__exit, delete
  should be just a front end for exit + free (Arnaldo Carvalho de Melo)

* Add missing 'struct option' forward declaration (Arnaldo Carvalho de Melo)

* No need to drag util/cgroup.h into evsel.h (Arnaldo Carvalho de Melo)

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

----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
      perf evsel: Move exit stuff from __delete to __exit
      perf evlist: Add missing 'struct option' forward declaration
      perf evsel: No need to drag util/cgroup.h

Jiri Olsa (2):
      perf script: Add period data column
      perf script: Add period as a default output column

 tools/perf/Documentation/perf-script.txt |  2 +-
 tools/perf/builtin-record.c              |  1 +
 tools/perf/builtin-script.c              | 21 +++++++++++++++++----
 tools/perf/builtin-stat.c                |  1 +
 tools/perf/util/evlist.h                 |  2 ++
 tools/perf/util/evsel.c                  | 11 ++++++-----
 tools/perf/util/evsel.h                  |  3 ++-
 7 files changed, 30 insertions(+), 11 deletions(-)

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2014-06-27 12:20 Jiri Olsa
@ 2014-07-05  9:30 ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2014-07-05  9:30 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Corey Ashford,
	David Ahern, Frederic Weisbecker, Maynard Johnson, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Rickard Strandqvist,
	Sebastian Andrzej Siewior, Steven Rostedt, Sukadev Bhattiprolu


* Jiri Olsa <jolsa@kernel.org> wrote:

> hi Ingo,
> please consider pulling
> 
> thanks,
> jirka
> 
> The following changes since commit 1c92f88542faa3ae4f970c548b4fe8275a45201b:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-06-25 07:44:19 +0200)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to 8ac631cd502d6b31fd29f6d019305305b479fa3e:
> 
>   perf script: Handle the num array type in python properly (2014-06-27 11:15:02 +0200)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Handle the num array type in python properly (Sebastian Andrzej Siewior)
> 
> . Fix wrong condition for allocation failure (Jiri Olsa)
> 
> . Adjust callchain based on DWARF debug info on powerpc (Sukadev Bhattiprolu)
> 
> . Fix a risk for doing free on uninitialized pointer in traceevent lib (Rickard Strandqvist)
> 
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> 
> ----------------------------------------------------------------
> Jiri Olsa (1):
>       perf tools: Fix wrong condition for allocation failure
> 
> Rickard Strandqvist (1):
>       tools lib traceevent: Fix a risk for doing free on uninitialized pointer
> 
> Sebastian Andrzej Siewior (2):
>       perf script: Move the number processing into its own function
>       perf script: Handle the num array type in python properly
> 
> Sukadev Bhattiprolu (1):
>       perf tools powerpc: Adjust callchain based on DWARF debug info
> 
>  tools/lib/traceevent/event-parse.c                 |   6 +-
>  tools/perf/arch/powerpc/Makefile                   |   1 +
>  tools/perf/arch/powerpc/util/skip-callchain-idx.c  | 266 +++++++++++++++++++++
>  tools/perf/builtin-stat.c                          |   2 +-
>  tools/perf/config/Makefile                         |   4 +
>  tools/perf/util/callchain.h                        |  13 +
>  tools/perf/util/machine.c                          |  18 +-
>  .../util/scripting-engines/trace-event-python.c    |  57 +++--
>  8 files changed, 346 insertions(+), 21 deletions(-)
>  create mode 100644 tools/perf/arch/powerpc/util/skip-callchain-idx.c

Pulled, thanks a lot Jiri!

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2014-06-27 12:20 Jiri Olsa
  2014-07-05  9:30 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Jiri Olsa @ 2014-06-27 12:20 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Corey Ashford,
	David Ahern, Frederic Weisbecker, Jiri Olsa, Maynard Johnson,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Rickard Strandqvist, Sebastian Andrzej Siewior, Steven Rostedt,
	Sukadev Bhattiprolu

hi Ingo,
please consider pulling

thanks,
jirka

The following changes since commit 1c92f88542faa3ae4f970c548b4fe8275a45201b:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-06-25 07:44:19 +0200)

are available in the git repository at:


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

for you to fetch changes up to 8ac631cd502d6b31fd29f6d019305305b479fa3e:

  perf script: Handle the num array type in python properly (2014-06-27 11:15:02 +0200)

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

. Handle the num array type in python properly (Sebastian Andrzej Siewior)

. Fix wrong condition for allocation failure (Jiri Olsa)

. Adjust callchain based on DWARF debug info on powerpc (Sukadev Bhattiprolu)

. Fix a risk for doing free on uninitialized pointer in traceevent lib (Rickard Strandqvist)

Signed-off-by: Jiri Olsa <jolsa@kernel.org>

----------------------------------------------------------------
Jiri Olsa (1):
      perf tools: Fix wrong condition for allocation failure

Rickard Strandqvist (1):
      tools lib traceevent: Fix a risk for doing free on uninitialized pointer

Sebastian Andrzej Siewior (2):
      perf script: Move the number processing into its own function
      perf script: Handle the num array type in python properly

Sukadev Bhattiprolu (1):
      perf tools powerpc: Adjust callchain based on DWARF debug info

 tools/lib/traceevent/event-parse.c                 |   6 +-
 tools/perf/arch/powerpc/Makefile                   |   1 +
 tools/perf/arch/powerpc/util/skip-callchain-idx.c  | 266 +++++++++++++++++++++
 tools/perf/builtin-stat.c                          |   2 +-
 tools/perf/config/Makefile                         |   4 +
 tools/perf/util/callchain.h                        |  13 +
 tools/perf/util/machine.c                          |  18 +-
 .../util/scripting-engines/trace-event-python.c    |  57 +++--
 8 files changed, 346 insertions(+), 21 deletions(-)
 create mode 100644 tools/perf/arch/powerpc/util/skip-callchain-idx.c

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2014-04-18 10:31 Jiri Olsa
  0 siblings, 0 replies; 35+ messages in thread
From: Jiri Olsa @ 2014-04-18 10:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Corey Ashford,
	David Ahern, Don Zickus, Frederic Weisbecker, Jiri Olsa,
	Li Zefan, Namhyung Kim, Paul Mackerras, Peter Zijlstra

hi Ingo,
please consider pulling

thanks,
jirka


The following changes since commit 37b6cb475a6d74bc047c53bc323d6eb3113e27a4:

  Merge branch 'uprobes/core' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc into perf/core (2014-04-18 09:49:14 +0200)

are available in the git repository at:


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

for you to fetch changes up to a651d9357f936a19ae811a29d031224cdb8c2f1f:

  perf callchain: Add generic report parse callchain callback function (2014-04-18 11:56:59 +0200)

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

Developer stuff:

. Making some code (cpu node map and report parse callchain callback) global
  to be usable by upcomming changes (Don Zickus)

. Fix pmu object compilation error (Jiri Olsa)

----------------------------------------------------------------
Don Zickus (4):
      perf tools: Allow ability to map cpus to nodes easily
      perf tools: Use cpu/possible instead of cpu/kernel_max
      perf kmem: Utilize the new generic cpunode_map
      perf callchain: Add generic report parse callchain callback function

Jiri Olsa (1):
      perf tools: Fix pmu object compilation error

 tools/perf/builtin-kmem.c   |  78 +----------------------
 tools/perf/builtin-report.c |  81 +-----------------------
 tools/perf/util/callchain.c |  82 ++++++++++++++++++++++++
 tools/perf/util/callchain.h |   1 +
 tools/perf/util/cpumap.c    | 147 ++++++++++++++++++++++++++++++++++++++++++++
 tools/perf/util/cpumap.h    |  35 +++++++++++
 tools/perf/util/pmu.c       |   6 +-
 7 files changed, 274 insertions(+), 156 deletions(-)

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-17  1:15             ` Arnaldo Carvalho de Melo
@ 2011-10-17  6:48               ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2011-10-17  6:48 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: David Ahern, linux-kernel, Frederic Weisbecker, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Jarosch


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

> Em Sat, Oct 15, 2011 at 01:09:32PM -0600, David Ahern escreveu:
> > On 10/15/2011 01:06 PM, Arnaldo Carvalho de Melo wrote:
> > >>
> > >> It should. The message comes from map__load() when it detects a deleted
> > >> mapping such as:
> > >>
> > >> 7f9e8d5c7000-7f9e8d5c8000 rw-p 0000c000 fd:02 1046947
> > >>  /lib64/libpam.so.0.82.2.#prelink#.cM3f72 (deleted)
> > >>
> > >> I have removed prelink from most of my systems (managed to find one lone
> > >> server with the above).
> > > 
> > > 	Can you send me a patch that clarifies this situation?
> > 
> > Clarifies in what way? The code checks for "(deleted)" on the dso and
> > suggests a restart of the process.
> 
> Perhaps telling that prelinking is the reason, so that users that 
> don't recall updating anything understands the situation.

Yeah. I am certainly aware of prelinking yet it did not occur to me 
when i saw the message.

Thanks,

	Ingo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 19:09           ` David Ahern
@ 2011-10-17  1:15             ` Arnaldo Carvalho de Melo
  2011-10-17  6:48               ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-17  1:15 UTC (permalink / raw)
  To: David Ahern
  Cc: Ingo Molnar, linux-kernel, Frederic Weisbecker, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Jarosch

Em Sat, Oct 15, 2011 at 01:09:32PM -0600, David Ahern escreveu:
> On 10/15/2011 01:06 PM, Arnaldo Carvalho de Melo wrote:
> >>
> >> It should. The message comes from map__load() when it detects a deleted
> >> mapping such as:
> >>
> >> 7f9e8d5c7000-7f9e8d5c8000 rw-p 0000c000 fd:02 1046947
> >>  /lib64/libpam.so.0.82.2.#prelink#.cM3f72 (deleted)
> >>
> >> I have removed prelink from most of my systems (managed to find one lone
> >> server with the above).
> > 
> > 	Can you send me a patch that clarifies this situation?
> 
> Clarifies in what way? The code checks for "(deleted)" on the dso and
> suggests a restart of the process.

Perhaps telling that prelinking is the reason, so that users that don't
recall updating anything understands the situation.

- Arnaldo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 19:06         ` Arnaldo Carvalho de Melo
@ 2011-10-15 19:09           ` David Ahern
  2011-10-17  1:15             ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 35+ messages in thread
From: David Ahern @ 2011-10-15 19:09 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, Frederic Weisbecker, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Jarosch



On 10/15/2011 01:06 PM, Arnaldo Carvalho de Melo wrote:
>>
>> It should. The message comes from map__load() when it detects a deleted
>> mapping such as:
>>
>> 7f9e8d5c7000-7f9e8d5c8000 rw-p 0000c000 fd:02 1046947
>>  /lib64/libpam.so.0.82.2.#prelink#.cM3f72 (deleted)
>>
>> I have removed prelink from most of my systems (managed to find one lone
>> server with the above).
> 
> David,
> 
> 	Can you send me a patch that clarifies this situation?
> 
> - Arnaldo

Clarifies in what way? The code checks for "(deleted)" on the dso and
suggests a restart of the process.

David

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 17:46       ` David Ahern
@ 2011-10-15 19:06         ` Arnaldo Carvalho de Melo
  2011-10-15 19:09           ` David Ahern
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-15 19:06 UTC (permalink / raw)
  To: David Ahern
  Cc: Ingo Molnar, linux-kernel, Frederic Weisbecker, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Jarosch

Em Sat, Oct 15, 2011 at 11:46:14AM -0600, David Ahern escreveu:
> 
> 
> On 10/15/2011 11:04 AM, Ingo Molnar wrote:
> > 
> > * David Ahern <dsahern@gmail.com> wrote:
> > 
> >> On 10/15/2011 08:59 AM, Ingo Molnar wrote:
> >>> Btw., i noticed another weirdness - sometimes after startup i get 
> >>> this message:
> >>>
> >>> /lib64/libc-2.14.90.so was updated, restart the long running apps that use it!                          
> >>>
> >>> but it was not updated recently:
> >>>
> >>>  earth5:~/tip/tools/perf> ll /lib64/libc-2.14.90.so
> >>>  -rwxr-xr-x 1 root root 2062920 Sep 28 15:11 /lib64/libc-2.14.90.so
> >>>  earth5:~/tip/tools/perf> date
> >>>  Sat Oct 15 16:59:04 CEST 2011
> >>>  earth5:~/tip/tools/perf> uptime
> >>>   16:59:08 up 19 days, 21:35, 11 users,  load average: 7.77, 7.48, 3.81
> >>
> >> I got the impression that comment was relative to when the 
> >> processes were started versus prelink touching it. In your case the 
> >> mod time of libc is after the uptime of the box.
> > 
> > Ok, that makes sense. Do we report this in perf report output as 
> > well?
> 
> It should. The message comes from map__load() when it detects a deleted
> mapping such as:
> 
> 7f9e8d5c7000-7f9e8d5c8000 rw-p 0000c000 fd:02 1046947
>  /lib64/libpam.so.0.82.2.#prelink#.cM3f72 (deleted)
> 
> I have removed prelink from most of my systems (managed to find one lone
> server with the above).

David,

	Can you send me a patch that clarifies this situation?

- Arnaldo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 17:04     ` Ingo Molnar
@ 2011-10-15 17:46       ` David Ahern
  2011-10-15 19:06         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 35+ messages in thread
From: David Ahern @ 2011-10-15 17:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Frederic Weisbecker,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Thomas Jarosch, arnaldo.melo



On 10/15/2011 11:04 AM, Ingo Molnar wrote:
> 
> * David Ahern <dsahern@gmail.com> wrote:
> 
>> On 10/15/2011 08:59 AM, Ingo Molnar wrote:
>>> Btw., i noticed another weirdness - sometimes after startup i get 
>>> this message:
>>>
>>> /lib64/libc-2.14.90.so was updated, restart the long running apps that use it!                          
>>>
>>> but it was not updated recently:
>>>
>>>  earth5:~/tip/tools/perf> ll /lib64/libc-2.14.90.so
>>>  -rwxr-xr-x 1 root root 2062920 Sep 28 15:11 /lib64/libc-2.14.90.so
>>>  earth5:~/tip/tools/perf> date
>>>  Sat Oct 15 16:59:04 CEST 2011
>>>  earth5:~/tip/tools/perf> uptime
>>>   16:59:08 up 19 days, 21:35, 11 users,  load average: 7.77, 7.48, 3.81
>>
>> I got the impression that comment was relative to when the 
>> processes were started versus prelink touching it. In your case the 
>> mod time of libc is after the uptime of the box.
> 
> Ok, that makes sense. Do we report this in perf report output as 
> well?

It should. The message comes from map__load() when it detects a deleted
mapping such as:

7f9e8d5c7000-7f9e8d5c8000 rw-p 0000c000 fd:02 1046947
 /lib64/libpam.so.0.82.2.#prelink#.cM3f72 (deleted)

I have removed prelink from most of my systems (managed to find one lone
server with the above).

David

> 
> Thanks,
> 
> 	Ingo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 17:00   ` David Ahern
@ 2011-10-15 17:04     ` Ingo Molnar
  2011-10-15 17:46       ` David Ahern
  0 siblings, 1 reply; 35+ messages in thread
From: Ingo Molnar @ 2011-10-15 17:04 UTC (permalink / raw)
  To: David Ahern
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Frederic Weisbecker,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Thomas Jarosch, arnaldo.melo


* David Ahern <dsahern@gmail.com> wrote:

> On 10/15/2011 08:59 AM, Ingo Molnar wrote:
> > Btw., i noticed another weirdness - sometimes after startup i get 
> > this message:
> > 
> > /lib64/libc-2.14.90.so was updated, restart the long running apps that use it!                          
> > 
> > but it was not updated recently:
> > 
> >  earth5:~/tip/tools/perf> ll /lib64/libc-2.14.90.so
> >  -rwxr-xr-x 1 root root 2062920 Sep 28 15:11 /lib64/libc-2.14.90.so
> >  earth5:~/tip/tools/perf> date
> >  Sat Oct 15 16:59:04 CEST 2011
> >  earth5:~/tip/tools/perf> uptime
> >   16:59:08 up 19 days, 21:35, 11 users,  load average: 7.77, 7.48, 3.81
> 
> I got the impression that comment was relative to when the 
> processes were started versus prelink touching it. In your case the 
> mod time of libc is after the uptime of the box.

Ok, that makes sense. Do we report this in perf report output as 
well?

Thanks,

	Ingo

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-15 14:59 ` Ingo Molnar
@ 2011-10-15 17:00   ` David Ahern
  2011-10-15 17:04     ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: David Ahern @ 2011-10-15 17:00 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Frederic Weisbecker,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Thomas Jarosch, arnaldo.melo

On 10/15/2011 08:59 AM, Ingo Molnar wrote:
> Btw., i noticed another weirdness - sometimes after startup i get 
> this message:
> 
> /lib64/libc-2.14.90.so was updated, restart the long running apps that use it!                          
> 
> but it was not updated recently:
> 
>  earth5:~/tip/tools/perf> ll /lib64/libc-2.14.90.so
>  -rwxr-xr-x 1 root root 2062920 Sep 28 15:11 /lib64/libc-2.14.90.so
>  earth5:~/tip/tools/perf> date
>  Sat Oct 15 16:59:04 CEST 2011
>  earth5:~/tip/tools/perf> uptime
>   16:59:08 up 19 days, 21:35, 11 users,  load average: 7.77, 7.48, 3.81

I got the impression that comment was relative to when the processes
were started versus prelink touching it. In your case the mod time of
libc is after the uptime of the box.

David

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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-10-14 18:27 Arnaldo Carvalho de Melo
@ 2011-10-15 14:59 ` Ingo Molnar
  2011-10-15 17:00   ` David Ahern
  0 siblings, 1 reply; 35+ messages in thread
From: Ingo Molnar @ 2011-10-15 14:59 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, David Ahern, Frederic Weisbecker, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Jarosch,
	arnaldo.melo


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

> Hi Ingo,
> 
>         Please consider pulling from:
> 
> git://github.com/acmel/linux.git perf/core
> 
> 	These are in addition to the ones you reported being problematic
> with perf top segfaulting sometimes, that problem should be fixed by the
> first patch below.
> 
> Regards,
> 
> - Arnaldo
> 
> Arnaldo Carvalho de Melo (4):
>   perf hists browser: Invalidate ui_browser->top after timer calls
>   perf annotate browser: Exit when pressing ESC or the left arrow
>   perf ui browser: Add filter method
>   perf annotate browser: Allow toggling the visualization of source code lines
> 
> Thomas Jarosch (1):
>   perf buildid: Fix possible unterminated readlink() result buffer
> 
>  tools/perf/util/header.c               |    2 +-
>  tools/perf/util/ui/browser.c           |   52 +++++++++++++++++----
>  tools/perf/util/ui/browser.h           |    1 +
>  tools/perf/util/ui/browsers/annotate.c |   78 +++++++++++++++++++++++++++++--
>  tools/perf/util/ui/browsers/hists.c    |   15 +++++-
>  5 files changed, 131 insertions(+), 17 deletions(-)

Pulled, thanks a lot Arnaldo!

The 'perf top' segfault is indeed fixed for me too.

Btw., i noticed another weirdness - sometimes after startup i get 
this message:

/lib64/libc-2.14.90.so was updated, restart the long running apps that use it!                          

but it was not updated recently:

 earth5:~/tip/tools/perf> ll /lib64/libc-2.14.90.so
 -rwxr-xr-x 1 root root 2062920 Sep 28 15:11 /lib64/libc-2.14.90.so
 earth5:~/tip/tools/perf> date
 Sat Oct 15 16:59:04 CEST 2011
 earth5:~/tip/tools/perf> uptime
  16:59:08 up 19 days, 21:35, 11 users,  load average: 7.77, 7.48, 3.81

Thanks,

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2011-10-14 18:27 Arnaldo Carvalho de Melo
  2011-10-15 14:59 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-14 18:27 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Mike Galbraith, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Thomas Jarosch, arnaldo.melo

Hi Ingo,

        Please consider pulling from:

git://github.com/acmel/linux.git perf/core

	These are in addition to the ones you reported being problematic
with perf top segfaulting sometimes, that problem should be fixed by the
first patch below.

Regards,

- Arnaldo

Arnaldo Carvalho de Melo (4):
  perf hists browser: Invalidate ui_browser->top after timer calls
  perf annotate browser: Exit when pressing ESC or the left arrow
  perf ui browser: Add filter method
  perf annotate browser: Allow toggling the visualization of source code lines

Thomas Jarosch (1):
  perf buildid: Fix possible unterminated readlink() result buffer

 tools/perf/util/header.c               |    2 +-
 tools/perf/util/ui/browser.c           |   52 +++++++++++++++++----
 tools/perf/util/ui/browser.h           |    1 +
 tools/perf/util/ui/browsers/annotate.c |   78 +++++++++++++++++++++++++++++--
 tools/perf/util/ui/browsers/hists.c    |   15 +++++-
 5 files changed, 131 insertions(+), 17 deletions(-)


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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2011-02-17 20:41 Arnaldo Carvalho de Melo
@ 2011-02-18  7:26 ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2011-02-18  7:26 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arun Sharma, David S . Miller, Frederic Weisbecker,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Robert Richter,
	Stephane Eranian, Steven Rostedt, Tom Zanussi,
	Arnaldo Carvalho de Melo


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

> Hi Ingo,
> 
>         Please consider pulling from:
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
> 
> Regards,
> 
> - Arnaldo
> 
> Arnaldo Carvalho de Melo (4):
>   perf python: Add cgroup.c to setup.py to get it building again
>   perf hists: Print number of samples, not the period sum
>   perf record: Delay setting the header writing atexit call
>   perf report: Tell the user when a perf.data file has no samples
> 
> Stephane Eranian (1):
>   perf: make perf stat print user provided full event names
> 
>  tools/perf/builtin-record.c    |   10 +++++-----
>  tools/perf/builtin-report.c    |    6 ++++++
>  tools/perf/util/evsel.c        |    1 +
>  tools/perf/util/evsel.h        |    7 +++++++
>  tools/perf/util/hist.c         |    7 +++++--
>  tools/perf/util/parse-events.c |   10 ++++++++++
>  tools/perf/util/setup.py       |    2 +-
>  7 files changed, 35 insertions(+), 8 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2011-02-17 20:41 Arnaldo Carvalho de Melo
  2011-02-18  7:26 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-02-17 20:41 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Arun Sharma,
	David S . Miller, Frederic Weisbecker, Ingo Molnar,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Robert Richter,
	Stephane Eranian, Steven Rostedt, Tom Zanussi,
	Arnaldo Carvalho de Melo

Hi Ingo,

        Please consider pulling from:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core

Regards,

- Arnaldo

Arnaldo Carvalho de Melo (4):
  perf python: Add cgroup.c to setup.py to get it building again
  perf hists: Print number of samples, not the period sum
  perf record: Delay setting the header writing atexit call
  perf report: Tell the user when a perf.data file has no samples

Stephane Eranian (1):
  perf: make perf stat print user provided full event names

 tools/perf/builtin-record.c    |   10 +++++-----
 tools/perf/builtin-report.c    |    6 ++++++
 tools/perf/util/evsel.c        |    1 +
 tools/perf/util/evsel.h        |    7 +++++++
 tools/perf/util/hist.c         |    7 +++++--
 tools/perf/util/parse-events.c |   10 ++++++++++
 tools/perf/util/setup.py       |    2 +-
 7 files changed, 35 insertions(+), 8 deletions(-)


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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2010-12-06 20:28 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-12-06 20:28 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Akihiro Nagai,
	Chris Samuel, David S . Miller, Frederic Weisbecker, Ian Munsie,
	Ingo Molnar, Masami Hiramatsu, Mike Galbraith, Paul Mackerras,
	Peter Zijlstra, Robert Richter, Stephane Eranian,
	Stephane Eranian, Thomas Gleixner, Arnaldo Carvalho de Melo

Hi Ingo,

        Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core

	This is in addition to the previous pull request.

Regards,

- Arnaldo

Akihiro Nagai (1):
  perf options: add OPT_CALLBACK_DEFAULT_NOOPT

Chris Samuel (1):
  perf tools: Catch a few uncheck calloc/malloc's

Ian Munsie (1):
  perf hist: Better displaying of unresolved DSOs and symbols

Stephane Eranian (1):
  perf script: Fix compiler warning in builtin_script.c:is_top_script()

Thomas Gleixner (1):
  perf session: Sort all events if ordered_samples=true

 tools/perf/builtin-kmem.c       |    3 +
 tools/perf/builtin-lock.c       |    3 +
 tools/perf/builtin-sched.c      |    3 +
 tools/perf/builtin-script.c     |   10 ++--
 tools/perf/builtin-timechart.c  |    3 +
 tools/perf/util/header.c        |    3 +
 tools/perf/util/parse-options.h |    4 +
 tools/perf/util/session.c       |  125 ++++++++++++++++++++++----------------
 tools/perf/util/sort.c          |    6 +-
 9 files changed, 99 insertions(+), 61 deletions(-)


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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2010-11-26 21:47 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-11-26 21:47 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andreas Schwab,
	Arnaldo Carvalho de Melo, Davidlohr Bueso, Frederic Weisbecker,
	Ian Munsie, Ingo Molnar, Mike Galbraith, Paul Mackerras,
	Peter Zijlstra, Shawn Bohrer, Stephane Eranian, Thomas Gleixner,
	Tom Zanussi

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

Hi Ingo,

        Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core

Regards,

- Arnaldo

Arnaldo Carvalho de Melo (2):
  perf record: Add option to disable collecting build-ids
  perf events: Default to using event__process_lost

Davidlohr Bueso (1):
  perf tools: Add GCC optimization to memory allocating functions

Ian Munsie (1):
  perf symbols: Correct final kernel map guesses

Shawn Bohrer (1):
  perf trace: Handle DT_UNKNOWN on filesystems that don't support
    d_type

 tools/perf/builtin-record.c            |   14 ++++++++++--
 tools/perf/builtin-trace.c             |   33 ++++++++++++++++++++++++-------
 tools/perf/util/event.c                |    2 +-
 tools/perf/util/header.c               |   11 ++++++++-
 tools/perf/util/header.h               |    1 +
 tools/perf/util/include/linux/bitops.h |    5 ++++
 tools/perf/util/session.c              |    2 +-
 tools/perf/util/symbol.c               |    2 +-
 tools/perf/util/util.h                 |    5 ++-
 9 files changed, 57 insertions(+), 18 deletions(-)


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

* Re: [GIT PULL 0/5] perf/core improvements and fixes
  2010-10-23 20:28 Arnaldo Carvalho de Melo
@ 2010-10-24  9:39 ` Ingo Molnar
  0 siblings, 0 replies; 35+ messages in thread
From: Ingo Molnar @ 2010-10-24  9:39 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Ben Hutchings, Frederic Weisbecker,
	Masami Hiramatsu, Mike Galbraith, Paul Mackerras, Peter Zijlstra,
	Robert Richter, Sonny Rao, Stephane Eranian


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

> Hi Ingo,
> 
>         Please pull from:
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
> 
> Regards,
> 
> - Arnaldo
> 
> Arnaldo Carvalho de Melo (2):
>   perf tools: Remove direct slang.h include
>   perf probe: Fix format specified for Dwarf_Off parameter
> 
> Ben Hutchings (2):
>   perf trace: Use $PERF_EXEC_PATH in canned report scripts
>   perf trace: Fix detection of script extension
> 
> Sonny Rao (1):
>   perf tools: Document event modifiers
> 
>  tools/perf/Documentation/perf-list.txt             |   17 +++++++++++++++++
>  tools/perf/builtin-trace.c                         |    8 ++++----
>  tools/perf/scripts/perl/bin/failed-syscalls-report |    2 +-
>  tools/perf/scripts/perl/bin/rw-by-file-report      |    2 +-
>  tools/perf/scripts/perl/bin/rw-by-pid-report       |    2 +-
>  tools/perf/scripts/perl/bin/rwtop-report           |    2 +-
>  tools/perf/scripts/perl/bin/wakeup-latency-report  |    2 +-
>  tools/perf/scripts/perl/bin/workqueue-stats-report |    2 +-
>  .../python/bin/failed-syscalls-by-pid-report       |    2 +-
>  tools/perf/scripts/python/bin/netdev-times-report  |    2 +-
>  .../perf/scripts/python/bin/sched-migration-report |    2 +-
>  tools/perf/scripts/python/bin/sctop-report         |    2 +-
>  .../python/bin/syscall-counts-by-pid-report        |    2 +-
>  .../perf/scripts/python/bin/syscall-counts-report  |    2 +-
>  tools/perf/util/probe-finder.c                     |    3 ++-
>  tools/perf/util/ui/browser.c                       |    1 -
>  16 files changed, 35 insertions(+), 18 deletions(-)

Pulled, thanks Arnaldo!

	Ingo

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

* [GIT PULL 0/5] perf/core improvements and fixes
@ 2010-10-23 20:28 Arnaldo Carvalho de Melo
  2010-10-24  9:39 ` Ingo Molnar
  0 siblings, 1 reply; 35+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-10-23 20:28 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Ben Hutchings,
	Frederic Weisbecker, Ingo Molnar, Masami Hiramatsu,
	Mike Galbraith, Paul Mackerras, Peter Zijlstra, Robert Richter,
	Sonny Rao, Stephane Eranian

Hi Ingo,

        Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core

Regards,

- Arnaldo

Arnaldo Carvalho de Melo (2):
  perf tools: Remove direct slang.h include
  perf probe: Fix format specified for Dwarf_Off parameter

Ben Hutchings (2):
  perf trace: Use $PERF_EXEC_PATH in canned report scripts
  perf trace: Fix detection of script extension

Sonny Rao (1):
  perf tools: Document event modifiers

 tools/perf/Documentation/perf-list.txt             |   17 +++++++++++++++++
 tools/perf/builtin-trace.c                         |    8 ++++----
 tools/perf/scripts/perl/bin/failed-syscalls-report |    2 +-
 tools/perf/scripts/perl/bin/rw-by-file-report      |    2 +-
 tools/perf/scripts/perl/bin/rw-by-pid-report       |    2 +-
 tools/perf/scripts/perl/bin/rwtop-report           |    2 +-
 tools/perf/scripts/perl/bin/wakeup-latency-report  |    2 +-
 tools/perf/scripts/perl/bin/workqueue-stats-report |    2 +-
 .../python/bin/failed-syscalls-by-pid-report       |    2 +-
 tools/perf/scripts/python/bin/netdev-times-report  |    2 +-
 .../perf/scripts/python/bin/sched-migration-report |    2 +-
 tools/perf/scripts/python/bin/sctop-report         |    2 +-
 .../python/bin/syscall-counts-by-pid-report        |    2 +-
 .../perf/scripts/python/bin/syscall-counts-report  |    2 +-
 tools/perf/util/probe-finder.c                     |    3 ++-
 tools/perf/util/ui/browser.c                       |    1 -
 16 files changed, 35 insertions(+), 18 deletions(-)


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

end of thread, other threads:[~2018-02-21  7:52 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21  1:34 [GIT PULL 0/5] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-02-21  1:34 ` [PATCH 1/5] perf s390: Fix reading cpuid model information Arnaldo Carvalho de Melo
2018-02-21  1:34 ` [PATCH 2/5] perf machine: Fix paranoid check in machine__set_kernel_mmap() Arnaldo Carvalho de Melo
2018-02-21  1:34 ` [PATCH 3/5] perf ftrace: Append an EOL when write tracing files Arnaldo Carvalho de Melo
2018-02-21  1:34 ` [PATCH 4/5] perf python: Make twatch.py work with both python2 and python3 Arnaldo Carvalho de Melo
2018-02-21  1:34 ` [PATCH 5/5] perf tools: Add Python 3 support Arnaldo Carvalho de Melo
2018-02-21  7:52 ` [GIT PULL 0/5] perf/core improvements and fixes Ingo Molnar
  -- strict thread matches above, loose matches on Subject: below --
2015-10-21 21:31 Arnaldo Carvalho de Melo
2015-10-22  7:34 ` Ingo Molnar
2015-10-07 22:45 Arnaldo Carvalho de Melo
2015-04-13 22:14 Arnaldo Carvalho de Melo
2015-04-13 22:33 ` Masami Hiramatsu
2015-04-13 23:09   ` Arnaldo Carvalho de Melo
2015-04-13 23:19     ` Arnaldo Carvalho de Melo
2015-04-14 12:12       ` Ingo Molnar
2014-10-17 19:49 Arnaldo Carvalho de Melo
2014-10-18  7:04 ` Ingo Molnar
2014-06-27 12:20 Jiri Olsa
2014-07-05  9:30 ` Ingo Molnar
2014-04-18 10:31 Jiri Olsa
2011-10-14 18:27 Arnaldo Carvalho de Melo
2011-10-15 14:59 ` Ingo Molnar
2011-10-15 17:00   ` David Ahern
2011-10-15 17:04     ` Ingo Molnar
2011-10-15 17:46       ` David Ahern
2011-10-15 19:06         ` Arnaldo Carvalho de Melo
2011-10-15 19:09           ` David Ahern
2011-10-17  1:15             ` Arnaldo Carvalho de Melo
2011-10-17  6:48               ` Ingo Molnar
2011-02-17 20:41 Arnaldo Carvalho de Melo
2011-02-18  7:26 ` Ingo Molnar
2010-12-06 20:28 Arnaldo Carvalho de Melo
2010-11-26 21:47 Arnaldo Carvalho de Melo
2010-10-23 20:28 Arnaldo Carvalho de Melo
2010-10-24  9:39 ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).