linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL 0/8] perf/urgent fixes
@ 2019-07-08 15:41 Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 1/8] tools arch kvm: Sync kvm headers with the kernel sources Arnaldo Carvalho de Melo
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:41 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Arnaldo Carvalho de Melo,
	David Carrillo Cisneros, Konstantin Kharlamov, Seeteena Thoufeek,
	Song Liu, Wei Li, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling, I did a git merge with torvalds/master
late last week to fixup some kernel headers ABI sync warnings, but I had
to cherry pick some csets from my perf/core branch to get the container
builds to all work, so ended up slipping past v5.2, oh well, but here it
is, all containers building ok, I'll now test perf/core to then push
that too.

Best regards,

- Arnaldo

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

- Arnaldo

The following changes since commit 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d:

  Revert "mm: page cache: store only head pages in i_pages" (2019-07-05 19:55:18 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-5.3-20190708

for you to fetch changes up to 05c78468a60f2fd961cd0a0c01c27f288bf81204:

  tools build: Check if gettid() is available before providing helper (2019-07-07 17:53:09 -0300)

----------------------------------------------------------------
perf/urgent fixes:

core:

  Arnaldo Carvalho de Melo:

  - Allow references to thread objects after__machine_exit(), fixing a bug with
    'perf sched lat' where that happens, i.e. after perf_session__delete() we
    still have references to threads that were in a linked list whose head was
    freed in perf_session__delete(), causing a segfault, fix it.

  Jiri Olsa:

  - Do not rely on errno values for precise_ip fallback, fixing the default
    use case for 'perf record' on some AMD servers, when no events are specified
    and we try to use "cycles:P", i.e. with the maximum precision level.

BPF:

  Song Liu:

  - Assign proper ff->ph in perf_event__synthesize_features(), fixing a bug
    when using pipe mode, i.e.  'perf record -o -'.

tools headers:

  Arnaldo Carvalho de Melo:

  - Sync kvm headers with the kernel sources

perf tests:

  Seeteena Thoufeek:

  - Fix record+probe_libc_inet_pton.sh for powerpc64, where without the
    debuginfo package for the 'ping' utility we can't resolve its symbols,
    so admit getting "[unknown]" for that backtrace line.

perf python:

  Arnaldo Carvalho de Melo:

  - Remove -fstack-protector-strong if clang doesn't have it, fixing the build
    with clang on fedora:30, oracleline:7, centos:7.

perf jvmti:

  Jiri Olsa:

  - Address gcc string overflow warning for strncpy()

build:

  Arnaldo Carvalho de Melo:

  - Check if gettid() is available before providing helper, as recent
    versions of glibc started to provide gettid().

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

----------------------------------------------------------------
Arnaldo Carvalho de Melo (5):
      tools arch kvm: Sync kvm headers with the kernel sources
      perf thread: Allow references to thread objects after machine__exit()
      perf annotate TUI browser: Do not use member from variable within its own initialization
      perf python: Remove -fstack-protector-strong if clang doesn't have it
      tools build: Check if gettid() is available before providing helper

Jiri Olsa (2):
      perf evsel: Do not rely on errno values for precise_ip fallback
      perf jvmti: Address gcc string overflow warning for strncpy()

Seeteena Thoufeek (1):
      perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64

Song Liu (1):
      perf header: Assign proper ff->ph in perf_event__synthesize_features()

 tools/arch/arm64/include/uapi/asm/kvm.h            |  7 +++++
 tools/arch/x86/include/uapi/asm/kvm.h              | 31 +++++++++++++++-------
 tools/build/Makefile.feature                       |  1 +
 tools/build/feature/Makefile                       |  4 +++
 tools/build/feature/test-all.c                     |  5 ++++
 tools/build/feature/test-gettid.c                  | 11 ++++++++
 tools/perf/Makefile.config                         |  4 +++
 tools/perf/jvmti/jvmti_agent.c                     |  2 ++
 tools/perf/jvmti/libjvmti.c                        |  4 +--
 .../tests/shell/record+probe_libc_inet_pton.sh     |  2 +-
 tools/perf/ui/browsers/annotate.c                  |  5 ++--
 tools/perf/util/evsel.c                            | 10 ++-----
 tools/perf/util/header.c                           |  1 +
 tools/perf/util/machine.c                          | 25 +++++++++++++++--
 tools/perf/util/setup.py                           |  2 ++
 tools/perf/util/thread.c                           | 23 +++++++++++++---
 16 files changed, 109 insertions(+), 28 deletions(-)
 create mode 100644 tools/build/feature/test-gettid.c

Test results:

The first ones are container based builds of tools/perf with and without libelf
support.  Where clang is available, it is also used to build perf with/without
libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
when clang and its devel libraries are installed.

The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.

Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.

The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.

Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.

The '41: BPF filter' 'perf test' entry is being investigated, it
shouldn't be with "Skip" status, some problem with BPF maps.

  $ export PERF_TARBALL=http://192.168.124.1/perf/perf-5.2.0-rc7.tar.xz
  $ dm
   1  alpine:3.4                    : Ok   gcc (Alpine 5.3.0) 5.3.0, clang version 3.8.0 (tags/RELEASE_380/final)
   2  alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822, clang version 3.8.1 (tags/RELEASE_381/final)
   3  alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0, clang version 4.0.0 (tags/RELEASE_400/final)
   4  alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.0 (tags/RELEASE_500/final) (based on LLVM 5.0.0)
   5  alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.1 (tags/RELEASE_501/final) (based on LLVM 5.0.1)
   6  alpine:3.9                    : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 5.0.1 (tags/RELEASE_502/final) (based on LLVM 5.0.1)
   7  alpine:3.10                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 8.0.0 (tags/RELEASE_800/final) (based on LLVM 8.0.0)
   8  alpine:edge                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 7.0.1 (tags/RELEASE_701/final) (based on LLVM 7.0.1)
   9  amazonlinux:1                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2), clang version 3.6.2 (tags/RELEASE_362/final)
  10  amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5), clang version 7.0.1 (Amazon Linux 2 7.0.1-1.amzn2.0.2)
  11  android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  12  android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
  13  centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
  14  centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
  15  centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
  16  clearlinux:latest             : Ok   gcc (Clear Linux OS for Intel Architecture) 9.1.1 20190628 gcc-9-branch@272773, clang version 8.0.0 (tags/RELEASE_800/final)
  17  debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u2) 4.9.2, Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
  18  debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, clang version 3.8.1-24 (tags/RELEASE_381/final)
  19  debian:experimental           : Ok   gcc (Debian 8.3.0-7) 8.3.0, clang version 7.0.1-8 (tags/RELEASE_701/final)
  20  debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
  21  debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
  22  debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.3.0-7) 8.3.0
  23  debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
  24  fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
  25  fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.5.0 (tags/RELEASE_350/final)
  26  fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.7.0 (tags/RELEASE_370/final)
  27  fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1), clang version 3.8.1 (tags/RELEASE_381/final)
  28  fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
  29  fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1), clang version 3.9.1 (tags/RELEASE_391/final)
  30  fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2), clang version 4.0.1 (tags/RELEASE_401/final)
  31  fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6), clang version 5.0.2 (tags/RELEASE_502/final)
  32  fedora:28                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 6.0.1 (tags/RELEASE_601/final)
  33  fedora:29                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 7.0.1 (Fedora 7.0.1-6.fc29)
  34  fedora:30                     : Ok   gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1), clang version 8.0.0 (Fedora 8.0.0-1.fc30)
  35  fedora:30-x-ARC-glibc         : Ok   arc-linux-gcc (ARC HS GNU/Linux glibc toolchain 2019.03-rc1) 8.3.1 20190225
  36  fedora:30-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
  37  fedora:31                     : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
  38  fedora:rawhide                : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
  39  gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 8.3.0-r1 p1.1) 8.3.0
  40  mageia:5                      : Ok   gcc (GCC) 4.9.2, clang version 3.5.2 (tags/RELEASE_352/final)
  41  mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0, clang version 3.9.1 (tags/RELEASE_391/final)
  42  mageia:7                      : Ok   gcc (Mageia 8.3.1-0.20190524.1.mga7) 8.3.1 20190524, clang version 8.0.0 (Mageia 8.0.0-1.mga7)
  43  manjaro:latest                : Ok   gcc (GCC) 9.1.0, clang version 8.0.0 (tags/RELEASE_800/final)
  44  openmandriva:cooker           : Ok   gcc (GCC) 9.1.1 20190622 (OpenMandriva)
  45  opensuse:15.0                 : Ok   gcc (SUSE Linux) 7.4.1 20190424 [gcc-7-branch revision 270538], clang version 5.0.1 (tags/RELEASE_501/final 312548)
  46  opensuse:15.1                 : Ok   gcc (SUSE Linux) 7.4.0, clang version 7.0.1 (tags/RELEASE_701/final 349238)
  47  opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5, clang version 3.8.0 (tags/RELEASE_380/final 262553)
  48  opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 9.1.1 20190611 [gcc-9-branch revision 272147], clang version 8.0.0 (tags/RELEASE_800/final 356365)
  49  oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
  50  oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
  51  ubuntu:12.04                  : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  52  ubuntu:14.04                  : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4, Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
  53  ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
  54  ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  55  ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  56  ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  57  ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  58  ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  59  ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
  60  ubuntu:18.04                  : Ok   gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
  61  ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
  62  ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
  63  ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  64  ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  65  ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  66  ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  67  ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  68  ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  69  ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  70  ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
  71  ubuntu:18.10                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1~18.10.1) 8.3.0, clang version 7.0.0-3 (tags/RELEASE_700/final)
  72  ubuntu:19.04                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0, clang version 8.0.0-3 (tags/RELEASE_800/final)
  73  ubuntu:19.04-x-alpha          : Ok   alpha-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
  74  ubuntu:19.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 8.3.0-6ubuntu1) 8.3.0
  75  ubuntu:19.04-x-hppa           : Ok   hppa-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
  76  ubuntu:19.10                  : Ok   gcc (Ubuntu 8.3.0-14ubuntu1) 8.3.0, clang version 8.0.1-+rc1-1~exp1 (tags/RELEASE_801/rc1)
  $

  # uname -a
  Linux quaco 5.2.0-rc7+ #4 SMP Sat Jul 6 14:43:41 -03 2019 x86_64 x86_64 x86_64 GNU/Linux
  # git log --oneline -1
  05c78468a60f tools build: Check if gettid() is available before providing helper
  # perf version --build-options
  perf version 5.2.rc7.g05c784
                   dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
      dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                   glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
                    gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
           syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
                  libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
                  libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
                 libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
  numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                 libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
               libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
                libslang: [ on  ]  # HAVE_SLANG_SUPPORT
               libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
               libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
      libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                    zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                    lzma: [ on  ]  # HAVE_LZMA_SUPPORT
               get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                     bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
                     aio: [ on  ]  # HAVE_AIO_SUPPORT
                    zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
  # perf test
   1: vmlinux symtab matches kallsyms                       : Ok
   2: Detect openat syscall event                           : Ok
   3: Detect openat syscall event on all cpus               : Ok
   4: Read samples using the mmap interface                 : Ok
   5: Test data source output                               : Ok
   6: Parse event definition strings                        : Ok
   7: Simple expression parser                              : Ok
   8: PERF_RECORD_* events & perf_sample fields             : Ok
   9: Parse perf pmu format                                 : Ok
  10: DSO data read                                         : Ok
  11: DSO data cache                                        : Ok
  12: DSO data reopen                                       : Ok
  13: Roundtrip evsel->name                                 : Ok
  14: Parse sched tracepoints fields                        : Ok
  15: syscalls:sys_enter_openat event fields                : Ok
  16: Setup struct perf_event_attr                          : Ok
  17: Match and link multiple hists                         : Ok
  18: 'import perf' in python                               : Ok
  19: Breakpoint overflow signal handler                    : Ok
  20: Breakpoint overflow sampling                          : Ok
  21: Breakpoint accounting                                 : Ok
  22: Watchpoint                                            :
  22.1: Read Only Watchpoint                                : Skip
  22.2: Write Only Watchpoint                               : Ok
  22.3: Read / Write Watchpoint                             : Ok
  22.4: Modify Watchpoint                                   : Ok
  23: Number of exit events of a simple workload            : Ok
  24: Software clock events period values                   : Ok
  25: Object code reading                                   : Ok
  26: Sample parsing                                        : Ok
  27: Use a dummy software event to keep tracking           : Ok
  28: Parse with no sample_id_all bit set                   : Ok
  29: Filter hist entries                                   : Ok
  30: Lookup mmap thread                                    : Ok
  31: Share thread mg                                       : Ok
  32: Sort output of hist entries                           : Ok
  33: Cumulate child hist entries                           : Ok
  34: Track with sched_switch                               : Ok
  35: Filter fds with revents mask in a fdarray             : Ok
  36: Add fd to a fdarray, making it autogrow               : Ok
  37: kmod_path__parse                                      : Ok
  38: Thread map                                            : Ok
  39: LLVM search and compile                               :
  39.1: Basic BPF llvm compile                              : Ok
  39.2: kbuild searching                                    : Ok
  39.3: Compile source for BPF prologue generation          : Ok
  39.4: Compile source for BPF relocation                   : Ok
  40: Session topology                                      : Ok
  41: BPF filter                                            :
  41.1: Basic BPF filtering                                 : Skip
  41.2: BPF pinning                                         : Skip
  41.3: BPF prologue generation                             : Skip
  41.4: BPF relocation checker                              : Skip
  42: Synthesize thread map                                 : Ok
  43: Remove thread map                                     : Ok
  44: Synthesize cpu map                                    : Ok
  45: Synthesize stat config                                : Ok
  46: Synthesize stat                                       : Ok
  47: Synthesize stat round                                 : Ok
  48: Synthesize attr update                                : Ok
  49: Event times                                           : Ok
  50: Read backward ring buffer                             : Ok
  51: Print cpu map                                         : Ok
  52: Probe SDT events                                      : Ok
  53: is_printable_array                                    : Ok
  54: Print bitmap                                          : Ok
  55: perf hooks                                            : Ok
  56: builtin clang support                                 : Skip (not compiled in)
  57: unit_number__scnprintf                                : Ok
  58: mem2node                                              : Ok
  59: x86 rdpmc                                             : Ok
  60: Convert perf time to TSC                              : Ok
  61: DWARF unwind                                          : Ok
  62: x86 instruction decoder - new instructions            : Ok
  63: x86 bp modify                                         : Ok
  64: probe libc's inet_pton & backtrace it with ping       : Ok
  65: Use vfs_getname probe to get syscall args filenames   : Ok
  66: Add vfs_getname probe to get syscall args filenames   : Ok
  67: Check open filename arg using perf trace + vfs_getname: Ok
  68: Zstd perf.data compression/decompression              : Ok

  $ make -C tools/perf build-test
  make: Entering directory '/home/acme/git/perf/tools/perf'
  - tarpkg: ./tests/perf-targz-src-pkg .
                   make_help_O: make help
                 make_perf_o_O: make perf.o
                   make_pure_O: make
               make_no_slang_O: make NO_SLANG=1
              make_no_libelf_O: make NO_LIBELF=1
                  make_debug_O: make DEBUG=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
            make_no_libaudit_O: make NO_LIBAUDIT=1
                make_install_O: make install
             make_util_map_o_O: make util/map.o
                make_no_gtk2_O: make NO_GTK2=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
             make_no_libnuma_O: make NO_LIBNUMA=1
           make_no_libunwind_O: make NO_LIBUNWIND=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
              make_clean_all_O: make clean all
            make_no_auxtrace_O: make NO_AUXTRACE=1
             make_no_libperl_O: make NO_LIBPERL=1
           make_no_libpython_O: make NO_LIBPYTHON=1
            make_no_demangle_O: make NO_DEMANGLE=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
           make_no_backtrace_O: make NO_BACKTRACE=1
                 make_cscope_O: make cscope
                   make_tags_O: make tags
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
              make_no_libbpf_O: make NO_LIBBPF=1
                 make_static_O: make LDFLAGS=-static
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
                make_no_newt_O: make NO_NEWT=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
                    make_doc_O: make doc
         make_install_prefix_O: make install prefix=/tmp/krava
                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 NO_LIBZSTD=1
            make_install_bin_O: make install-bin
  OK
  make: Leaving directory '/home/acme/git/perf/tools/perf'
  

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

* [PATCH 1/8] tools arch kvm: Sync kvm headers with the kernel sources
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 2/8] perf header: Assign proper ff->ph in perf_event__synthesize_features() Arnaldo Carvalho de Melo
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter,
	Dave Martin, Liran Alon, Paolo Bonzini, Will Deacon

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

To pick up the changes from:

  41040cf7c5f0 ("arm64/sve: Fix missing SVE/FPSIMD endianness conversions")
  6ca00dfafda7 ("KVM: x86: Modify struct kvm_nested_state to have explicit fields for data")

None entail changes in tooling.

This silences these tools/perf build warnings:

  Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/kvm.h' differs from latest version at 'arch/x86/include/uapi/asm/kvm.h'
  diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
  Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
  diff -u tools/arch/arm64/include/uapi/asm/kvm.h arch/arm64/include/uapi/asm/kvm.h

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Dave Martin <Dave.Martin@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Liran Alon <liran.alon@oracle.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Will Deacon <will.deacon@arm.com>
Link: https://lkml.kernel.org/n/tip-1cdbq5ulr4d6cx3iv2ye5wdv@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/arch/arm64/include/uapi/asm/kvm.h |  7 ++++++
 tools/arch/x86/include/uapi/asm/kvm.h   | 31 +++++++++++++++++--------
 2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/tools/arch/arm64/include/uapi/asm/kvm.h b/tools/arch/arm64/include/uapi/asm/kvm.h
index 7b7ac0f6cec9..d819a3e8b552 100644
--- a/tools/arch/arm64/include/uapi/asm/kvm.h
+++ b/tools/arch/arm64/include/uapi/asm/kvm.h
@@ -260,6 +260,13 @@ struct kvm_vcpu_events {
 	 KVM_REG_SIZE_U256 |						\
 	 ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
 
+/*
+ * Register values for KVM_REG_ARM64_SVE_ZREG(), KVM_REG_ARM64_SVE_PREG() and
+ * KVM_REG_ARM64_SVE_FFR() are represented in memory in an endianness-
+ * invariant layout which differs from the layout used for the FPSIMD
+ * V-registers on big-endian systems: see sigcontext.h for more explanation.
+ */
+
 #define KVM_ARM64_SVE_VQ_MIN __SVE_VQ_MIN
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 
diff --git a/tools/arch/x86/include/uapi/asm/kvm.h b/tools/arch/x86/include/uapi/asm/kvm.h
index 24a8cd229df6..d6ab5b4d15e5 100644
--- a/tools/arch/x86/include/uapi/asm/kvm.h
+++ b/tools/arch/x86/include/uapi/asm/kvm.h
@@ -383,6 +383,9 @@ struct kvm_sync_regs {
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE	(1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP	(1 << 3)
 
+#define KVM_STATE_NESTED_FORMAT_VMX	0
+#define KVM_STATE_NESTED_FORMAT_SVM	1	/* unused */
+
 #define KVM_STATE_NESTED_GUEST_MODE	0x00000001
 #define KVM_STATE_NESTED_RUN_PENDING	0x00000002
 #define KVM_STATE_NESTED_EVMCS		0x00000004
@@ -390,7 +393,14 @@ struct kvm_sync_regs {
 #define KVM_STATE_NESTED_SMM_GUEST_MODE	0x00000001
 #define KVM_STATE_NESTED_SMM_VMXON	0x00000002
 
-struct kvm_vmx_nested_state {
+#define KVM_STATE_NESTED_VMX_VMCS_SIZE	0x1000
+
+struct kvm_vmx_nested_state_data {
+	__u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+	__u8 shadow_vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+};
+
+struct kvm_vmx_nested_state_hdr {
 	__u64 vmxon_pa;
 	__u64 vmcs12_pa;
 
@@ -401,24 +411,25 @@ struct kvm_vmx_nested_state {
 
 /* for KVM_CAP_NESTED_STATE */
 struct kvm_nested_state {
-	/* KVM_STATE_* flags */
 	__u16 flags;
-
-	/* 0 for VMX, 1 for SVM.  */
 	__u16 format;
-
-	/* 128 for SVM, 128 + VMCS size for VMX.  */
 	__u32 size;
 
 	union {
-		/* VMXON, VMCS */
-		struct kvm_vmx_nested_state vmx;
+		struct kvm_vmx_nested_state_hdr vmx;
 
 		/* Pad the header to 128 bytes.  */
 		__u8 pad[120];
-	};
+	} hdr;
 
-	__u8 data[0];
+	/*
+	 * Define data region as 0 bytes to preserve backwards-compatability
+	 * to old definition of kvm_nested_state in order to avoid changing
+	 * KVM_{GET,PUT}_NESTED_STATE ioctl values.
+	 */
+	union {
+		struct kvm_vmx_nested_state_data vmx[0];
+	} data;
 };
 
 #endif /* _ASM_X86_KVM_H */
-- 
2.20.1


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

* [PATCH 2/8] perf header: Assign proper ff->ph in perf_event__synthesize_features()
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 1/8] tools arch kvm: Sync kvm headers with the kernel sources Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 3/8] perf thread: Allow references to thread objects after machine__exit() Arnaldo Carvalho de Melo
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Song Liu, David Carrillo Cisneros,
	Arnaldo Carvalho de Melo, kernel-team, stable

From: Song Liu <songliubraving@fb.com>

bpf/btf write_* functions need ff->ph->env.

With this missing, pipe-mode (perf record -o -)  would crash like:

Program terminated with signal SIGSEGV, Segmentation fault.

This patch assign proper ph value to ff.

Committer testing:

  (gdb) run record -o -
  Starting program: /root/bin/perf record -o -
  PERFILE2
  <SNIP start of perf.data headers>
  Thread 1 "perf" received signal SIGSEGV, Segmentation fault.
  __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
  126		memcpy(ff->buf + ff->offset, buf, size);
  (gdb) bt
  #0  __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
  #1  do_write (ff=ff@entry=0x7fffffff8f80, buf=buf@entry=0x160, size=4) at util/header.c:137
  #2  0x00000000004eddba in write_bpf_prog_info (ff=0x7fffffff8f80, evlist=<optimized out>) at util/header.c:912
  #3  0x00000000004f69d7 in perf_event__synthesize_features (tool=tool@entry=0x97cc00 <record>, session=session@entry=0x7fffe9c6d010,
      evlist=0x7fffe9cae010, process=process@entry=0x4435d0 <process_synthesized_event>) at util/header.c:3695
  #4  0x0000000000443c79 in record__synthesize (tail=tail@entry=false, rec=0x97cc00 <record>) at builtin-record.c:1214
  #5  0x0000000000444ec9 in __cmd_record (rec=0x97cc00 <record>, argv=<optimized out>, argc=0) at builtin-record.c:1435
  #6  cmd_record (argc=0, argv=<optimized out>) at builtin-record.c:2450
  #7  0x00000000004ae3e9 in run_builtin (p=p@entry=0x98e058 <commands+216>, argc=argc@entry=3, argv=0x7fffffffd670) at perf.c:304
  #8  0x000000000042eded in handle_internal_command (argv=<optimized out>, argc=<optimized out>) at perf.c:356
  #9  run_argv (argcp=<optimized out>, argv=<optimized out>) at perf.c:400
  #10 main (argc=3, argv=<optimized out>) at perf.c:522
  (gdb)

After the patch the SEGSEGV is gone.

Reported-by: David Carrillo Cisneros <davidca@fb.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: kernel-team@fb.com
Cc: stable@vger.kernel.org # v5.1+
Fixes: 606f972b1361 ("perf bpf: Save bpf_prog_info information as headers to perf.data")
Link: http://lkml.kernel.org/r/20190620010453.4118689-1-songliubraving@fb.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/header.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 847ae51a524b..fb0aa661644b 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -3602,6 +3602,7 @@ int perf_event__synthesize_features(struct perf_tool *tool,
 		return -ENOMEM;
 
 	ff.size = sz - sz_hdr;
+	ff.ph = &session->header;
 
 	for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) {
 		if (!feat_ops[feat].synthesize) {
-- 
2.20.1


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

* [PATCH 3/8] perf thread: Allow references to thread objects after machine__exit()
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 1/8] tools arch kvm: Sync kvm headers with the kernel sources Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 2/8] perf header: Assign proper ff->ph in perf_event__synthesize_features() Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback Arnaldo Carvalho de Melo
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Arnaldo Carvalho de Melo, Wei Li,
	Adrian Hunter, Alexander Shishkin, Peter Zijlstra, Zhipeng Xie

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

Threads are created when we either synthesize PERF_RECORD_FORK events
for pre-existing threads or when we receive PERF_RECORD_FORK events from
the kernel as new threads get created.

We then keep them in machine->threads[].entries rb trees till when we
receive a PERF_RECORD_EXIT, i.e. that thread terminated.

The thread object has a reference count that is grabbed when, for
instance, we keep that thread referenced in struct hist_entry, in 'perf
report' and 'perf top'.

When we receive a PERF_RECORD_EXIT we remove the thread object from the
rb tree and move it to the corresponding machine->threads[].dead list,
then we do a thread__put(), dropping the reference we had for keeping it
in the rb tree.

In thread__put() we were assuming that when the reference count hit zero
we should remove it from the dead list by simply doing a
list_del_init(&thread->node).

That works well when all the thread lifetime is during the machine that
has the list heads lifetime, since we know that we can do the
list_del_init() and it will update the 'dead' list_head.

But in 'perf sched lat' we were doing:

    machine__new() (via perf_session__new)

    process events, grabbing refcounts to keep those thread objects
    in 'perf sched' local data structures.

    machine__exit() (via perf_session__delete) which would delete the
    'dead' list heads.

    And then doing the final thread__put() for the refcounts 'perf sched'
    rightfully obtained for keeping those thread object references.

    b00m, since thread__put() would do the list_del_init() touching
    a dead dead list head.

Fix it by removing all the dead threads from machine->threads[].dead at
machine__exit(), since whatever is there should have refcounts taken by
things like 'perf sched lat', and make thread__put() check if the thread
is in a linked list before removing it from that list.

Reported-by: Wei Li <liwei391@huawei.com>
Link: https://lkml.kernel.org/r/20190508143648.8153-1-liwei391@huawei.com
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Zhipeng Xie <xiezhipeng1@huawei.com>
Link: https://lkml.kernel.org/r/20190704194355.GI10740@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/machine.c | 25 +++++++++++++++++++++++--
 tools/perf/util/thread.c  | 23 ++++++++++++++++++++---
 2 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index dc7aafe45a2b..e00dc413652d 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -209,6 +209,18 @@ void machine__exit(struct machine *machine)
 
 	for (i = 0; i < THREADS__TABLE_SIZE; i++) {
 		struct threads *threads = &machine->threads[i];
+		struct thread *thread, *n;
+		/*
+		 * Forget about the dead, at this point whatever threads were
+		 * left in the dead lists better have a reference count taken
+		 * by who is using them, and then, when they drop those references
+		 * and it finally hits zero, thread__put() will check and see that
+		 * its not in the dead threads list and will not try to remove it
+		 * from there, just calling thread__delete() straight away.
+		 */
+		list_for_each_entry_safe(thread, n, &threads->dead, node)
+			list_del_init(&thread->node);
+
 		exit_rwsem(&threads->lock);
 	}
 }
@@ -1758,9 +1770,11 @@ static void __machine__remove_thread(struct machine *machine, struct thread *th,
 	if (threads->last_match == th)
 		threads__set_last_match(threads, NULL);
 
-	BUG_ON(refcount_read(&th->refcnt) == 0);
 	if (lock)
 		down_write(&threads->lock);
+
+	BUG_ON(refcount_read(&th->refcnt) == 0);
+
 	rb_erase_cached(&th->rb_node, &threads->entries);
 	RB_CLEAR_NODE(&th->rb_node);
 	--threads->nr;
@@ -1770,9 +1784,16 @@ static void __machine__remove_thread(struct machine *machine, struct thread *th,
 	 * will be called and we will remove it from the dead_threads list.
 	 */
 	list_add_tail(&th->node, &threads->dead);
+
+	/*
+	 * We need to do the put here because if this is the last refcount,
+	 * then we will be touching the threads->dead head when removing the
+	 * thread.
+	 */
+	thread__put(th);
+
 	if (lock)
 		up_write(&threads->lock);
-	thread__put(th);
 }
 
 void machine__remove_thread(struct machine *machine, struct thread *th)
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c
index b413ba5b9835..7bfb740d2ede 100644
--- a/tools/perf/util/thread.c
+++ b/tools/perf/util/thread.c
@@ -125,10 +125,27 @@ void thread__put(struct thread *thread)
 {
 	if (thread && refcount_dec_and_test(&thread->refcnt)) {
 		/*
-		 * Remove it from the dead_threads list, as last reference
-		 * is gone.
+		 * Remove it from the dead threads list, as last reference is
+		 * gone, if it is in a dead threads list.
+		 *
+		 * We may not be there anymore if say, the machine where it was
+		 * stored was already deleted, so we already removed it from
+		 * the dead threads and some other piece of code still keeps a
+		 * reference.
+		 *
+		 * This is what 'perf sched' does and finally drops it in
+		 * perf_sched__lat(), where it calls perf_sched__read_events(),
+		 * that processes the events by creating a session and deleting
+		 * it, which ends up destroying the list heads for the dead
+		 * threads, but before it does that it removes all threads from
+		 * it using list_del_init().
+		 *
+		 * So we need to check here if it is in a dead threads list and
+		 * if so, remove it before finally deleting the thread, to avoid
+		 * an use after free situation.
 		 */
-		list_del_init(&thread->node);
+		if (!list_empty(&thread->node))
+			list_del_init(&thread->node);
 		thread__delete(thread);
 	}
 }
-- 
2.20.1


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

* [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 3/8] perf thread: Allow references to thread objects after machine__exit() Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-13 12:42   ` Konstantin Kharlamov
  2019-07-08 15:42 ` [PATCH 5/8] perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64 Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Konstantin Kharlamov, Alexander Shishkin,
	Andi Kleen, Peter Zijlstra, Quentin Monnet, Kim Phillips,
	Arnaldo Carvalho de Melo

From: Jiri Olsa <jolsa@kernel.org>

Konstantin reported problem with default perf record command, which
fails on some AMD servers, because of the default maximum precise
config.

The current fallback mechanism counts on getting ENOTSUP errno for
precise_ip fails, but that's not the case on some AMD servers.

We can fix this by removing the errno check completely, because the
precise_ip fallback is separated. We can just try  (if requested by
evsel->precise_max) all possible precise_ip, and if one succeeds we win,
if not, we continue with standard fallback.

Reported-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quentin Monnet <quentin.monnet@netronome.com>
Cc: Kim Phillips <kim.phillips@amd.com>
Link: http://lkml.kernel.org/r/20190703080949.10356-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evsel.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 4a5947625c5c..69beb9f80f07 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1785,14 +1785,8 @@ static int perf_event_open(struct perf_evsel *evsel,
 		if (fd >= 0)
 			break;
 
-		/*
-		 * Do quick precise_ip fallback if:
-		 *  - there is precise_ip set in perf_event_attr
-		 *  - maximum precise is requested
-		 *  - sys_perf_event_open failed with ENOTSUP error,
-		 *    which is associated with wrong precise_ip
-		 */
-		if (!precise_ip || !evsel->precise_max || (errno != ENOTSUP))
+		/* Do not try less precise if not requested. */
+		if (!evsel->precise_max)
 			break;
 
 		/*
-- 
2.20.1


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

* [PATCH 5/8] perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 6/8] perf annotate TUI browser: Do not use member from variable within its own initialization Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Seeteena Thoufeek, Kim Phillips,
	Alexander Shishkin, Hendrik Brueckner, Jiri Olsa, Michael Petlan,
	Peter Zijlstra, Sandipan Das, Arnaldo Carvalho de Melo

From: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>

'probe libc's inet_pton & backtrace it with ping' testcase sometimes
fails on powerpc because distro ping binary does not have symbol
information and thus it prints "[unknown]" function name in the
backtrace.

Accept "[unknown]" as valid function name for powerpc as well.

 # perf test -v "probe libc's inet_pton & backtrace it with ping"

Before:

  59: probe libc's inet_pton & backtrace it with ping       :
  --- start ---
  test child forked, pid 79695
  ping 79718 [077] 96483.787025: probe_libc:inet_pton: (7fff83a754c8)
  7fff83a754c8 __GI___inet_pton+0x8 (/usr/lib64/power9/libc-2.28.so)
  7fff83a2b7a0 gaih_inet.constprop.7+0x1020
  (/usr/lib64/power9/libc-2.28.so)
  7fff83a2c170 getaddrinfo+0x160 (/usr/lib64/power9/libc-2.28.so)
  1171830f4 [unknown] (/usr/bin/ping)
  FAIL: expected backtrace entry
  ".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
  got "1171830f4 [unknown] (/usr/bin/ping)"
  test child finished with -1
  ---- end ----
  probe libc's inet_pton & backtrace it with ping: FAILED!

After:

  59: probe libc's inet_pton & backtrace it with ping       :
  --- start ---
  test child forked, pid 79085
  ping 79108 [045] 96400.214177: probe_libc:inet_pton: (7fffbb9654c8)
  7fffbb9654c8 __GI___inet_pton+0x8 (/usr/lib64/power9/libc-2.28.so)
  7fffbb91b7a0 gaih_inet.constprop.7+0x1020
  (/usr/lib64/power9/libc-2.28.so)
  7fffbb91c170 getaddrinfo+0x160 (/usr/lib64/power9/libc-2.28.so)
  132e830f4 [unknown] (/usr/bin/ping)
  test child finished with 0
  ---- end ----
  probe libc's inet_pton & backtrace it with ping: Ok

Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
Reviewed-by: Kim Phillips <kim.phillips@amd.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Hendrik Brueckner <brueckner@linux.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sandipan Das <sandipan@linux.ibm.com>
Fixes: 1632936480a5 ("perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo")
Link: http://lkml.kernel.org/r/1561630614-3216-1-git-send-email-s1seetee@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
index 61c9f8fc6fa1..58a99a292930 100755
--- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
+++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
@@ -44,7 +44,7 @@ trace_libc_inet_pton_backtrace() {
 		eventattr='max-stack=4'
 		echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
 		echo "getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
-		echo ".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" >> $expected
+		echo ".*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$" >> $expected
 		;;
 	*)
 		eventattr='max-stack=3'
-- 
2.20.1


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

* [PATCH 6/8] perf annotate TUI browser: Do not use member from variable within its own initialization
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 5/8] perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64 Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 7/8] perf python: Remove -fstack-protector-strong if clang doesn't have it Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter

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

Some compilers will complain when using a member of a struct to
initialize another member, in the same struct initialization.

For instance:

  debian:8      Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
  oraclelinux:7 clang version 3.4.2 (tags/RELEASE_34/dot2-final)

Produce:

  ui/browsers/annotate.c:104:12: error: variable 'ops' is uninitialized when used within its own initialization [-Werror,-Wuninitialized]
                                              (!ops.current_entry ||
                                                ^~~
  1 error generated.

So use an extra variable, initialized just before that struct, to have
the value used in the expressions used to init two of the struct
members.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Fixes: c298304bd747 ("perf annotate: Use a ops table for annotation_line__write()")
Link: https://lkml.kernel.org/n/tip-f9nexro58q62l3o9hez8hr0i@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/ui/browsers/annotate.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 98d934a36d86..b0d089a95dac 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -97,11 +97,12 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
 	struct annotate_browser *ab = container_of(browser, struct annotate_browser, b);
 	struct annotation *notes = browser__annotation(browser);
 	struct annotation_line *al = list_entry(entry, struct annotation_line, node);
+	const bool is_current_entry = ui_browser__is_current_entry(browser, row);
 	struct annotation_write_ops ops = {
 		.first_line		 = row == 0,
-		.current_entry		 = ui_browser__is_current_entry(browser, row),
+		.current_entry		 = is_current_entry,
 		.change_color		 = (!notes->options->hide_src_code &&
-					    (!ops.current_entry ||
+					    (!is_current_entry ||
 					     (browser->use_navkeypressed &&
 					      !browser->navkeypressed))),
 		.width			 = browser->width,
-- 
2.20.1


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

* [PATCH 7/8] perf python: Remove -fstack-protector-strong if clang doesn't have it
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (5 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 6/8] perf annotate TUI browser: Do not use member from variable within its own initialization Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 15:42 ` [PATCH 8/8] perf jvmti: Address gcc string overflow warning for strncpy() Arnaldo Carvalho de Melo
  2019-07-08 21:50 ` [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter

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

Some distros put -fstack-protector-strong in the compiler flags to be
used to build python extensions, but then, the clang version in that
distro doesn't know about that, only gcc does.

Check if that is the case and remove it from the set of options used to
build the python binding with clang.

Case at hand:

oraclelinux:7

  $ head -2 /etc/os-release
  NAME="Oracle Linux Server"
  VERSION="7.6"
  $ grep stack-protector /usr/lib64/python2.7/_sysconfigdata.py | head -1 | cut -c-120
 'CFLAGS': '-fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --para
  $
  gcc version 4.8.5 20150623 (Red Hat 4.8.5-36.0.1) (GCC)
  clang version 3.4.2 (tags/RELEASE_34/dot2-final)

  clang: error: unknown argument: '-fstack-protector-strong'
  clang: error: unknown argument: '-fstack-protector-strong'
  error: command 'clang' failed with exit status 1
  cp: cannot stat '/tmp/build/perf/python_ext_build/lib/perf*.so': No such file or directory
  make[2]: *** [/tmp/build/perf/python/perf.so] Error 1

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-brmp2415zxpbhz45etkgjoma@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/setup.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py
index 5b5a167b43ce..a1a68a2fa917 100644
--- a/tools/perf/util/setup.py
+++ b/tools/perf/util/setup.py
@@ -17,6 +17,8 @@ if cc == "clang":
             vars[var] = sub("-fcf-protection", "", vars[var])
         if not clang_has_option("-fstack-clash-protection"):
             vars[var] = sub("-fstack-clash-protection", "", vars[var])
+        if not clang_has_option("-fstack-protector-strong"):
+            vars[var] = sub("-fstack-protector-strong", "", vars[var])
 
 from distutils.core import setup, Extension
 
-- 
2.20.1


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

* [PATCH 8/8] perf jvmti: Address gcc string overflow warning for strncpy()
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (6 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 7/8] perf python: Remove -fstack-protector-strong if clang doesn't have it Arnaldo Carvalho de Melo
@ 2019-07-08 15:42 ` Arnaldo Carvalho de Melo
  2019-07-08 21:50 ` [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
  8 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, Jiri Olsa, Arnaldo Carvalho de Melo,
	Alexander Shishkin, Ben Gainey, Peter Zijlstra, Stephane Eranian

From: Jiri Olsa <jolsa@redhat.com>

We are getting false positive gcc warning when we compile with gcc9 (9.1.1):

     CC       jvmti/libjvmti.o
   In file included from /usr/include/string.h:494,
                    from jvmti/libjvmti.c:5:
   In function ‘strncpy’,
       inlined from ‘copy_class_filename.constprop’ at jvmti/libjvmti.c:166:3:
   /usr/include/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
     106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   jvmti/libjvmti.c: In function ‘copy_class_filename.constprop’:
   jvmti/libjvmti.c:165:26: note: length computed here
     165 |   size_t file_name_len = strlen(file_name);
         |                          ^~~~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors

As per Arnaldo's suggestion use strlcpy(), which does the same thing and keeps
gcc silent.

Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ben Gainey <ben.gainey@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20190531131321.GB1281@krava
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/jvmti/libjvmti.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c
index aea7b1fe85aa..c441a34cb1c0 100644
--- a/tools/perf/jvmti/libjvmti.c
+++ b/tools/perf/jvmti/libjvmti.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/compiler.h>
+#include <linux/string.h>
 #include <sys/types.h>
 #include <stdio.h>
 #include <string.h>
@@ -162,8 +163,7 @@ copy_class_filename(const char * class_sign, const char * file_name, char * resu
 		result[i] = '\0';
 	} else {
 		/* fallback case */
-		size_t file_name_len = strlen(file_name);
-		strncpy(result, file_name, file_name_len < max_length ? file_name_len : max_length);
+		strlcpy(result, file_name, max_length);
 	}
 }
 
-- 
2.20.1


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

* Re: [GIT PULL 0/8] perf/urgent fixes
  2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
                   ` (7 preceding siblings ...)
  2019-07-08 15:42 ` [PATCH 8/8] perf jvmti: Address gcc string overflow warning for strncpy() Arnaldo Carvalho de Melo
@ 2019-07-08 21:50 ` Arnaldo Carvalho de Melo
  2019-07-08 21:54   ` Arnaldo Carvalho de Melo
  8 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 21:50 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, David Carrillo Cisneros, Konstantin Kharlamov,
	Seeteena Thoufeek, Song Liu, Wei Li, Arnaldo Carvalho de Melo

Em Mon, Jul 08, 2019 at 12:41:59PM -0300, Arnaldo Carvalho de Melo escreveu:
> Hi Ingo,
> 
> 	Please consider pulling, I did a git merge with torvalds/master
> late last week to fixup some kernel headers ABI sync warnings, but I had
> to cherry pick some csets from my perf/core branch to get the container
> builds to all work, so ended up slipping past v5.2, oh well, but here it
> is, all containers building ok, I'll now test perf/core to then push
> that too.

Hi Ingo,

	As requested I merged tip/perf/core with this branch and now its
available as the perf-urgent-for-mingo-5.3-20190708-2 signed tag, that
has only one extra cset:

  commit 686cbe9e5d88ad639bbe26d963e7d5dafa1c1c28 (HEAD -> perf/urgent, tag: perf-urgent-for-mingo-5.3-20190708-2, acme/perf/urgent, acme.korg/perf/urgent)
  Author: Arnaldo Carvalho de Melo <acme@redhat.com>
  Date:   Mon Jul 8 13:47:14 2019 -0300
  
      tools arch x86: Sync asm/cpufeatures.h with the with the kernel

Best regards,

- Arnaldo
 
> Best regards,
> 
> - Arnaldo
> 
> Test results at the end of this message, as usual.
> 
> - Arnaldo
> 
> The following changes since commit 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d:
> 
>   Revert "mm: page cache: store only head pages in i_pages" (2019-07-05 19:55:18 -0700)
> 
> are available in the Git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-5.3-20190708
> 
> for you to fetch changes up to 05c78468a60f2fd961cd0a0c01c27f288bf81204:
> 
>   tools build: Check if gettid() is available before providing helper (2019-07-07 17:53:09 -0300)
> 
> ----------------------------------------------------------------
> perf/urgent fixes:
> 
> core:
> 
>   Arnaldo Carvalho de Melo:
> 
>   - Allow references to thread objects after__machine_exit(), fixing a bug with
>     'perf sched lat' where that happens, i.e. after perf_session__delete() we
>     still have references to threads that were in a linked list whose head was
>     freed in perf_session__delete(), causing a segfault, fix it.
> 
>   Jiri Olsa:
> 
>   - Do not rely on errno values for precise_ip fallback, fixing the default
>     use case for 'perf record' on some AMD servers, when no events are specified
>     and we try to use "cycles:P", i.e. with the maximum precision level.
> 
> BPF:
> 
>   Song Liu:
> 
>   - Assign proper ff->ph in perf_event__synthesize_features(), fixing a bug
>     when using pipe mode, i.e.  'perf record -o -'.
> 
> tools headers:
> 
>   Arnaldo Carvalho de Melo:
> 
>   - Sync kvm headers with the kernel sources
> 
> perf tests:
> 
>   Seeteena Thoufeek:
> 
>   - Fix record+probe_libc_inet_pton.sh for powerpc64, where without the
>     debuginfo package for the 'ping' utility we can't resolve its symbols,
>     so admit getting "[unknown]" for that backtrace line.
> 
> perf python:
> 
>   Arnaldo Carvalho de Melo:
> 
>   - Remove -fstack-protector-strong if clang doesn't have it, fixing the build
>     with clang on fedora:30, oracleline:7, centos:7.
> 
> perf jvmti:
> 
>   Jiri Olsa:
> 
>   - Address gcc string overflow warning for strncpy()
> 
> build:
> 
>   Arnaldo Carvalho de Melo:
> 
>   - Check if gettid() is available before providing helper, as recent
>     versions of glibc started to provide gettid().
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (5):
>       tools arch kvm: Sync kvm headers with the kernel sources
>       perf thread: Allow references to thread objects after machine__exit()
>       perf annotate TUI browser: Do not use member from variable within its own initialization
>       perf python: Remove -fstack-protector-strong if clang doesn't have it
>       tools build: Check if gettid() is available before providing helper
> 
> Jiri Olsa (2):
>       perf evsel: Do not rely on errno values for precise_ip fallback
>       perf jvmti: Address gcc string overflow warning for strncpy()
> 
> Seeteena Thoufeek (1):
>       perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64
> 
> Song Liu (1):
>       perf header: Assign proper ff->ph in perf_event__synthesize_features()
> 
>  tools/arch/arm64/include/uapi/asm/kvm.h            |  7 +++++
>  tools/arch/x86/include/uapi/asm/kvm.h              | 31 +++++++++++++++-------
>  tools/build/Makefile.feature                       |  1 +
>  tools/build/feature/Makefile                       |  4 +++
>  tools/build/feature/test-all.c                     |  5 ++++
>  tools/build/feature/test-gettid.c                  | 11 ++++++++
>  tools/perf/Makefile.config                         |  4 +++
>  tools/perf/jvmti/jvmti_agent.c                     |  2 ++
>  tools/perf/jvmti/libjvmti.c                        |  4 +--
>  .../tests/shell/record+probe_libc_inet_pton.sh     |  2 +-
>  tools/perf/ui/browsers/annotate.c                  |  5 ++--
>  tools/perf/util/evsel.c                            | 10 ++-----
>  tools/perf/util/header.c                           |  1 +
>  tools/perf/util/machine.c                          | 25 +++++++++++++++--
>  tools/perf/util/setup.py                           |  2 ++
>  tools/perf/util/thread.c                           | 23 +++++++++++++---
>  16 files changed, 109 insertions(+), 28 deletions(-)
>  create mode 100644 tools/build/feature/test-gettid.c
> 
> Test results:
> 
> The first ones are container based builds of tools/perf with and without libelf
> support.  Where clang is available, it is also used to build perf with/without
> libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
> when clang and its devel libraries are installed.
> 
> The objtool and samples/bpf/ builds are disabled now that I'm switching from
> using the sources in a local volume to fetching them from a http server to
> build it inside the container, to make it easier to build in a container cluster.
> Those will come back later.
> 
> Several are cross builds, the ones with -x-ARCH and the android one, and those
> may not have all the features built, due to lack of multi-arch devel packages,
> available and being used so far on just a few, like
> debian:experimental-x-{arm64,mipsel}.
> 
> The 'perf test' one will perform a variety of tests exercising
> tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
> with a variety of command line event specifications to then intercept the
> sys_perf_event syscall to check that the perf_event_attr fields are set up as
> expected, among a variety of other unit tests.
> 
> Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
> with a variety of feature sets, exercising the build with an incomplete set of
> features as well as with a complete one. It is planned to have it run on each
> of the containers mentioned above, using some container orchestration
> infrastructure. Get in contact if interested in helping having this in place.
> 
> The '41: BPF filter' 'perf test' entry is being investigated, it
> shouldn't be with "Skip" status, some problem with BPF maps.
> 
>   $ export PERF_TARBALL=http://192.168.124.1/perf/perf-5.2.0-rc7.tar.xz
>   $ dm
>    1  alpine:3.4                    : Ok   gcc (Alpine 5.3.0) 5.3.0, clang version 3.8.0 (tags/RELEASE_380/final)
>    2  alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822, clang version 3.8.1 (tags/RELEASE_381/final)
>    3  alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0, clang version 4.0.0 (tags/RELEASE_400/final)
>    4  alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.0 (tags/RELEASE_500/final) (based on LLVM 5.0.0)
>    5  alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.1 (tags/RELEASE_501/final) (based on LLVM 5.0.1)
>    6  alpine:3.9                    : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 5.0.1 (tags/RELEASE_502/final) (based on LLVM 5.0.1)
>    7  alpine:3.10                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 8.0.0 (tags/RELEASE_800/final) (based on LLVM 8.0.0)
>    8  alpine:edge                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 7.0.1 (tags/RELEASE_701/final) (based on LLVM 7.0.1)
>    9  amazonlinux:1                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2), clang version 3.6.2 (tags/RELEASE_362/final)
>   10  amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5), clang version 7.0.1 (Amazon Linux 2 7.0.1-1.amzn2.0.2)
>   11  android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
>   12  android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
>   13  centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
>   14  centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
>   15  centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
>   16  clearlinux:latest             : Ok   gcc (Clear Linux OS for Intel Architecture) 9.1.1 20190628 gcc-9-branch@272773, clang version 8.0.0 (tags/RELEASE_800/final)
>   17  debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u2) 4.9.2, Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
>   18  debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, clang version 3.8.1-24 (tags/RELEASE_381/final)
>   19  debian:experimental           : Ok   gcc (Debian 8.3.0-7) 8.3.0, clang version 7.0.1-8 (tags/RELEASE_701/final)
>   20  debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
>   21  debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
>   22  debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.3.0-7) 8.3.0
>   23  debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
>   24  fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
>   25  fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.5.0 (tags/RELEASE_350/final)
>   26  fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.7.0 (tags/RELEASE_370/final)
>   27  fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1), clang version 3.8.1 (tags/RELEASE_381/final)
>   28  fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
>   29  fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1), clang version 3.9.1 (tags/RELEASE_391/final)
>   30  fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2), clang version 4.0.1 (tags/RELEASE_401/final)
>   31  fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6), clang version 5.0.2 (tags/RELEASE_502/final)
>   32  fedora:28                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 6.0.1 (tags/RELEASE_601/final)
>   33  fedora:29                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 7.0.1 (Fedora 7.0.1-6.fc29)
>   34  fedora:30                     : Ok   gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1), clang version 8.0.0 (Fedora 8.0.0-1.fc30)
>   35  fedora:30-x-ARC-glibc         : Ok   arc-linux-gcc (ARC HS GNU/Linux glibc toolchain 2019.03-rc1) 8.3.1 20190225
>   36  fedora:30-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
>   37  fedora:31                     : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
>   38  fedora:rawhide                : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
>   39  gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 8.3.0-r1 p1.1) 8.3.0
>   40  mageia:5                      : Ok   gcc (GCC) 4.9.2, clang version 3.5.2 (tags/RELEASE_352/final)
>   41  mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0, clang version 3.9.1 (tags/RELEASE_391/final)
>   42  mageia:7                      : Ok   gcc (Mageia 8.3.1-0.20190524.1.mga7) 8.3.1 20190524, clang version 8.0.0 (Mageia 8.0.0-1.mga7)
>   43  manjaro:latest                : Ok   gcc (GCC) 9.1.0, clang version 8.0.0 (tags/RELEASE_800/final)
>   44  openmandriva:cooker           : Ok   gcc (GCC) 9.1.1 20190622 (OpenMandriva)
>   45  opensuse:15.0                 : Ok   gcc (SUSE Linux) 7.4.1 20190424 [gcc-7-branch revision 270538], clang version 5.0.1 (tags/RELEASE_501/final 312548)
>   46  opensuse:15.1                 : Ok   gcc (SUSE Linux) 7.4.0, clang version 7.0.1 (tags/RELEASE_701/final 349238)
>   47  opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5, clang version 3.8.0 (tags/RELEASE_380/final 262553)
>   48  opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 9.1.1 20190611 [gcc-9-branch revision 272147], clang version 8.0.0 (tags/RELEASE_800/final 356365)
>   49  oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
>   50  oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
>   51  ubuntu:12.04                  : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>   52  ubuntu:14.04                  : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4, Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
>   53  ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
>   54  ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   55  ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   56  ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   57  ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   58  ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   59  ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
>   60  ubuntu:18.04                  : Ok   gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
>   61  ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   62  ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   63  ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   64  ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   65  ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   66  ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   67  ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   68  ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   69  ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   70  ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
>   71  ubuntu:18.10                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1~18.10.1) 8.3.0, clang version 7.0.0-3 (tags/RELEASE_700/final)
>   72  ubuntu:19.04                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0, clang version 8.0.0-3 (tags/RELEASE_800/final)
>   73  ubuntu:19.04-x-alpha          : Ok   alpha-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
>   74  ubuntu:19.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 8.3.0-6ubuntu1) 8.3.0
>   75  ubuntu:19.04-x-hppa           : Ok   hppa-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
>   76  ubuntu:19.10                  : Ok   gcc (Ubuntu 8.3.0-14ubuntu1) 8.3.0, clang version 8.0.1-+rc1-1~exp1 (tags/RELEASE_801/rc1)
>   $
> 
>   # uname -a
>   Linux quaco 5.2.0-rc7+ #4 SMP Sat Jul 6 14:43:41 -03 2019 x86_64 x86_64 x86_64 GNU/Linux
>   # git log --oneline -1
>   05c78468a60f tools build: Check if gettid() is available before providing helper
>   # perf version --build-options
>   perf version 5.2.rc7.g05c784
>                    dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
>       dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
>                    glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
>                     gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
>            syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
>                   libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
>                   libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
>                  libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
>   numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
>                  libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
>                libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
>                 libslang: [ on  ]  # HAVE_SLANG_SUPPORT
>                libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
>                libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
>       libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
>                     zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
>                     lzma: [ on  ]  # HAVE_LZMA_SUPPORT
>                get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
>                      bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
>                      aio: [ on  ]  # HAVE_AIO_SUPPORT
>                     zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
>   # perf test
>    1: vmlinux symtab matches kallsyms                       : Ok
>    2: Detect openat syscall event                           : Ok
>    3: Detect openat syscall event on all cpus               : Ok
>    4: Read samples using the mmap interface                 : Ok
>    5: Test data source output                               : Ok
>    6: Parse event definition strings                        : Ok
>    7: Simple expression parser                              : Ok
>    8: PERF_RECORD_* events & perf_sample fields             : Ok
>    9: Parse perf pmu format                                 : Ok
>   10: DSO data read                                         : Ok
>   11: DSO data cache                                        : Ok
>   12: DSO data reopen                                       : Ok
>   13: Roundtrip evsel->name                                 : Ok
>   14: Parse sched tracepoints fields                        : Ok
>   15: syscalls:sys_enter_openat event fields                : Ok
>   16: Setup struct perf_event_attr                          : Ok
>   17: Match and link multiple hists                         : Ok
>   18: 'import perf' in python                               : Ok
>   19: Breakpoint overflow signal handler                    : Ok
>   20: Breakpoint overflow sampling                          : Ok
>   21: Breakpoint accounting                                 : Ok
>   22: Watchpoint                                            :
>   22.1: Read Only Watchpoint                                : Skip
>   22.2: Write Only Watchpoint                               : Ok
>   22.3: Read / Write Watchpoint                             : Ok
>   22.4: Modify Watchpoint                                   : Ok
>   23: Number of exit events of a simple workload            : Ok
>   24: Software clock events period values                   : Ok
>   25: Object code reading                                   : Ok
>   26: Sample parsing                                        : Ok
>   27: Use a dummy software event to keep tracking           : Ok
>   28: Parse with no sample_id_all bit set                   : Ok
>   29: Filter hist entries                                   : Ok
>   30: Lookup mmap thread                                    : Ok
>   31: Share thread mg                                       : Ok
>   32: Sort output of hist entries                           : Ok
>   33: Cumulate child hist entries                           : Ok
>   34: Track with sched_switch                               : Ok
>   35: Filter fds with revents mask in a fdarray             : Ok
>   36: Add fd to a fdarray, making it autogrow               : Ok
>   37: kmod_path__parse                                      : Ok
>   38: Thread map                                            : Ok
>   39: LLVM search and compile                               :
>   39.1: Basic BPF llvm compile                              : Ok
>   39.2: kbuild searching                                    : Ok
>   39.3: Compile source for BPF prologue generation          : Ok
>   39.4: Compile source for BPF relocation                   : Ok
>   40: Session topology                                      : Ok
>   41: BPF filter                                            :
>   41.1: Basic BPF filtering                                 : Skip
>   41.2: BPF pinning                                         : Skip
>   41.3: BPF prologue generation                             : Skip
>   41.4: BPF relocation checker                              : Skip
>   42: Synthesize thread map                                 : Ok
>   43: Remove thread map                                     : Ok
>   44: Synthesize cpu map                                    : Ok
>   45: Synthesize stat config                                : Ok
>   46: Synthesize stat                                       : Ok
>   47: Synthesize stat round                                 : Ok
>   48: Synthesize attr update                                : Ok
>   49: Event times                                           : Ok
>   50: Read backward ring buffer                             : Ok
>   51: Print cpu map                                         : Ok
>   52: Probe SDT events                                      : Ok
>   53: is_printable_array                                    : Ok
>   54: Print bitmap                                          : Ok
>   55: perf hooks                                            : Ok
>   56: builtin clang support                                 : Skip (not compiled in)
>   57: unit_number__scnprintf                                : Ok
>   58: mem2node                                              : Ok
>   59: x86 rdpmc                                             : Ok
>   60: Convert perf time to TSC                              : Ok
>   61: DWARF unwind                                          : Ok
>   62: x86 instruction decoder - new instructions            : Ok
>   63: x86 bp modify                                         : Ok
>   64: probe libc's inet_pton & backtrace it with ping       : Ok
>   65: Use vfs_getname probe to get syscall args filenames   : Ok
>   66: Add vfs_getname probe to get syscall args filenames   : Ok
>   67: Check open filename arg using perf trace + vfs_getname: Ok
>   68: Zstd perf.data compression/decompression              : Ok
> 
>   $ make -C tools/perf build-test
>   make: Entering directory '/home/acme/git/perf/tools/perf'
>   - tarpkg: ./tests/perf-targz-src-pkg .
>                    make_help_O: make help
>                  make_perf_o_O: make perf.o
>                    make_pure_O: make
>                make_no_slang_O: make NO_SLANG=1
>               make_no_libelf_O: make NO_LIBELF=1
>                   make_debug_O: make DEBUG=1
>          make_with_clangllvm_O: make LIBCLANGLLVM=1
>             make_no_libaudit_O: make NO_LIBAUDIT=1
>                 make_install_O: make install
>              make_util_map_o_O: make util/map.o
>                 make_no_gtk2_O: make NO_GTK2=1
>        make_util_pmu_bison_o_O: make util/pmu-bison.o
>    make_install_prefix_slash_O: make install prefix=/tmp/krava/
>              make_no_libnuma_O: make NO_LIBNUMA=1
>            make_no_libunwind_O: make NO_LIBUNWIND=1
>            make_no_libbionic_O: make NO_LIBBIONIC=1
>               make_clean_all_O: make clean all
>             make_no_auxtrace_O: make NO_AUXTRACE=1
>              make_no_libperl_O: make NO_LIBPERL=1
>            make_no_libpython_O: make NO_LIBPYTHON=1
>             make_no_demangle_O: make NO_DEMANGLE=1
>   make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
>            make_no_backtrace_O: make NO_BACKTRACE=1
>                  make_cscope_O: make cscope
>                    make_tags_O: make tags
>              make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
>               make_no_libbpf_O: make NO_LIBBPF=1
>                  make_static_O: make LDFLAGS=-static
>                   make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
>                 make_no_newt_O: make NO_NEWT=1
>         make_with_babeltrace_O: make LIBBABELTRACE=1
>                     make_doc_O: make doc
>          make_install_prefix_O: make install prefix=/tmp/krava
>                 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 NO_LIBZSTD=1
>             make_install_bin_O: make install-bin
>   OK
>   make: Leaving directory '/home/acme/git/perf/tools/perf'
>   

-- 

- Arnaldo

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

* Re: [GIT PULL 0/8] perf/urgent fixes
  2019-07-08 21:50 ` [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
@ 2019-07-08 21:54   ` Arnaldo Carvalho de Melo
  2019-07-09 11:23     ` Ingo Molnar
  0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-07-08 21:54 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel,
	linux-perf-users, David Carrillo Cisneros, Konstantin Kharlamov,
	Seeteena Thoufeek, Song Liu, Wei Li, Arnaldo Carvalho de Melo

Em Mon, Jul 08, 2019 at 06:50:58PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Mon, Jul 08, 2019 at 12:41:59PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Hi Ingo,
> > 
> > 	Please consider pulling, I did a git merge with torvalds/master
> > late last week to fixup some kernel headers ABI sync warnings, but I had
> > to cherry pick some csets from my perf/core branch to get the container
> > builds to all work, so ended up slipping past v5.2, oh well, but here it
> > is, all containers building ok, I'll now test perf/core to then push
> > that too.
> 
> Hi Ingo,
> 
> 	As requested I merged tip/perf/core with this branch and now its
> available as the perf-urgent-for-mingo-5.3-20190708-2 signed tag, that
> has only one extra cset:
> 
>   commit 686cbe9e5d88ad639bbe26d963e7d5dafa1c1c28 (HEAD -> perf/urgent, tag: perf-urgent-for-mingo-5.3-20190708-2, acme/perf/urgent, acme.korg/perf/urgent)
>   Author: Arnaldo Carvalho de Melo <acme@redhat.com>
>   Date:   Mon Jul 8 13:47:14 2019 -0300
>   
>       tools arch x86: Sync asm/cpufeatures.h with the with the kernel

BTW, I ran all the tests as before, same results.

- Arnaldo
 
> Best regards,
> 
> - Arnaldo
>  
> > Best regards,
> > 
> > - Arnaldo
> > 
> > Test results at the end of this message, as usual.
> > 
> > - Arnaldo
> > 
> > The following changes since commit 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d:
> > 
> >   Revert "mm: page cache: store only head pages in i_pages" (2019-07-05 19:55:18 -0700)
> > 
> > are available in the Git repository at:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-5.3-20190708
> > 
> > for you to fetch changes up to 05c78468a60f2fd961cd0a0c01c27f288bf81204:
> > 
> >   tools build: Check if gettid() is available before providing helper (2019-07-07 17:53:09 -0300)
> > 
> > ----------------------------------------------------------------
> > perf/urgent fixes:
> > 
> > core:
> > 
> >   Arnaldo Carvalho de Melo:
> > 
> >   - Allow references to thread objects after__machine_exit(), fixing a bug with
> >     'perf sched lat' where that happens, i.e. after perf_session__delete() we
> >     still have references to threads that were in a linked list whose head was
> >     freed in perf_session__delete(), causing a segfault, fix it.
> > 
> >   Jiri Olsa:
> > 
> >   - Do not rely on errno values for precise_ip fallback, fixing the default
> >     use case for 'perf record' on some AMD servers, when no events are specified
> >     and we try to use "cycles:P", i.e. with the maximum precision level.
> > 
> > BPF:
> > 
> >   Song Liu:
> > 
> >   - Assign proper ff->ph in perf_event__synthesize_features(), fixing a bug
> >     when using pipe mode, i.e.  'perf record -o -'.
> > 
> > tools headers:
> > 
> >   Arnaldo Carvalho de Melo:
> > 
> >   - Sync kvm headers with the kernel sources
> > 
> > perf tests:
> > 
> >   Seeteena Thoufeek:
> > 
> >   - Fix record+probe_libc_inet_pton.sh for powerpc64, where without the
> >     debuginfo package for the 'ping' utility we can't resolve its symbols,
> >     so admit getting "[unknown]" for that backtrace line.
> > 
> > perf python:
> > 
> >   Arnaldo Carvalho de Melo:
> > 
> >   - Remove -fstack-protector-strong if clang doesn't have it, fixing the build
> >     with clang on fedora:30, oracleline:7, centos:7.
> > 
> > perf jvmti:
> > 
> >   Jiri Olsa:
> > 
> >   - Address gcc string overflow warning for strncpy()
> > 
> > build:
> > 
> >   Arnaldo Carvalho de Melo:
> > 
> >   - Check if gettid() is available before providing helper, as recent
> >     versions of glibc started to provide gettid().
> > 
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > ----------------------------------------------------------------
> > Arnaldo Carvalho de Melo (5):
> >       tools arch kvm: Sync kvm headers with the kernel sources
> >       perf thread: Allow references to thread objects after machine__exit()
> >       perf annotate TUI browser: Do not use member from variable within its own initialization
> >       perf python: Remove -fstack-protector-strong if clang doesn't have it
> >       tools build: Check if gettid() is available before providing helper
> > 
> > Jiri Olsa (2):
> >       perf evsel: Do not rely on errno values for precise_ip fallback
> >       perf jvmti: Address gcc string overflow warning for strncpy()
> > 
> > Seeteena Thoufeek (1):
> >       perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64
> > 
> > Song Liu (1):
> >       perf header: Assign proper ff->ph in perf_event__synthesize_features()
> > 
> >  tools/arch/arm64/include/uapi/asm/kvm.h            |  7 +++++
> >  tools/arch/x86/include/uapi/asm/kvm.h              | 31 +++++++++++++++-------
> >  tools/build/Makefile.feature                       |  1 +
> >  tools/build/feature/Makefile                       |  4 +++
> >  tools/build/feature/test-all.c                     |  5 ++++
> >  tools/build/feature/test-gettid.c                  | 11 ++++++++
> >  tools/perf/Makefile.config                         |  4 +++
> >  tools/perf/jvmti/jvmti_agent.c                     |  2 ++
> >  tools/perf/jvmti/libjvmti.c                        |  4 +--
> >  .../tests/shell/record+probe_libc_inet_pton.sh     |  2 +-
> >  tools/perf/ui/browsers/annotate.c                  |  5 ++--
> >  tools/perf/util/evsel.c                            | 10 ++-----
> >  tools/perf/util/header.c                           |  1 +
> >  tools/perf/util/machine.c                          | 25 +++++++++++++++--
> >  tools/perf/util/setup.py                           |  2 ++
> >  tools/perf/util/thread.c                           | 23 +++++++++++++---
> >  16 files changed, 109 insertions(+), 28 deletions(-)
> >  create mode 100644 tools/build/feature/test-gettid.c
> > 
> > Test results:
> > 
> > The first ones are container based builds of tools/perf with and without libelf
> > support.  Where clang is available, it is also used to build perf with/without
> > libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
> > when clang and its devel libraries are installed.
> > 
> > The objtool and samples/bpf/ builds are disabled now that I'm switching from
> > using the sources in a local volume to fetching them from a http server to
> > build it inside the container, to make it easier to build in a container cluster.
> > Those will come back later.
> > 
> > Several are cross builds, the ones with -x-ARCH and the android one, and those
> > may not have all the features built, due to lack of multi-arch devel packages,
> > available and being used so far on just a few, like
> > debian:experimental-x-{arm64,mipsel}.
> > 
> > The 'perf test' one will perform a variety of tests exercising
> > tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
> > with a variety of command line event specifications to then intercept the
> > sys_perf_event syscall to check that the perf_event_attr fields are set up as
> > expected, among a variety of other unit tests.
> > 
> > Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
> > with a variety of feature sets, exercising the build with an incomplete set of
> > features as well as with a complete one. It is planned to have it run on each
> > of the containers mentioned above, using some container orchestration
> > infrastructure. Get in contact if interested in helping having this in place.
> > 
> > The '41: BPF filter' 'perf test' entry is being investigated, it
> > shouldn't be with "Skip" status, some problem with BPF maps.
> > 
> >   $ export PERF_TARBALL=http://192.168.124.1/perf/perf-5.2.0-rc7.tar.xz
> >   $ dm
> >    1  alpine:3.4                    : Ok   gcc (Alpine 5.3.0) 5.3.0, clang version 3.8.0 (tags/RELEASE_380/final)
> >    2  alpine:3.5                    : Ok   gcc (Alpine 6.2.1) 6.2.1 20160822, clang version 3.8.1 (tags/RELEASE_381/final)
> >    3  alpine:3.6                    : Ok   gcc (Alpine 6.3.0) 6.3.0, clang version 4.0.0 (tags/RELEASE_400/final)
> >    4  alpine:3.7                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.0 (tags/RELEASE_500/final) (based on LLVM 5.0.0)
> >    5  alpine:3.8                    : Ok   gcc (Alpine 6.4.0) 6.4.0, Alpine clang version 5.0.1 (tags/RELEASE_501/final) (based on LLVM 5.0.1)
> >    6  alpine:3.9                    : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 5.0.1 (tags/RELEASE_502/final) (based on LLVM 5.0.1)
> >    7  alpine:3.10                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 8.0.0 (tags/RELEASE_800/final) (based on LLVM 8.0.0)
> >    8  alpine:edge                   : Ok   gcc (Alpine 8.3.0) 8.3.0, Alpine clang version 7.0.1 (tags/RELEASE_701/final) (based on LLVM 7.0.1)
> >    9  amazonlinux:1                 : Ok   gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2), clang version 3.6.2 (tags/RELEASE_362/final)
> >   10  amazonlinux:2                 : Ok   gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5), clang version 7.0.1 (Amazon Linux 2 7.0.1-1.amzn2.0.2)
> >   11  android-ndk:r12b-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
> >   12  android-ndk:r15c-arm          : Ok   arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
> >   13  centos:5                      : Ok   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
> >   14  centos:6                      : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
> >   15  centos:7                      : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
> >   16  clearlinux:latest             : Ok   gcc (Clear Linux OS for Intel Architecture) 9.1.1 20190628 gcc-9-branch@272773, clang version 8.0.0 (tags/RELEASE_800/final)
> >   17  debian:8                      : Ok   gcc (Debian 4.9.2-10+deb8u2) 4.9.2, Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
> >   18  debian:9                      : Ok   gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, clang version 3.8.1-24 (tags/RELEASE_381/final)
> >   19  debian:experimental           : Ok   gcc (Debian 8.3.0-7) 8.3.0, clang version 7.0.1-8 (tags/RELEASE_701/final)
> >   20  debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
> >   21  debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
> >   22  debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 8.3.0-7) 8.3.0
> >   23  debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 8.3.0-7) 8.3.0
> >   24  fedora:20                     : Ok   gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
> >   25  fedora:22                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.5.0 (tags/RELEASE_350/final)
> >   26  fedora:23                     : Ok   gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6), clang version 3.7.0 (tags/RELEASE_370/final)
> >   27  fedora:24                     : Ok   gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1), clang version 3.8.1 (tags/RELEASE_381/final)
> >   28  fedora:24-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
> >   29  fedora:25                     : Ok   gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1), clang version 3.9.1 (tags/RELEASE_391/final)
> >   30  fedora:26                     : Ok   gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2), clang version 4.0.1 (tags/RELEASE_401/final)
> >   31  fedora:27                     : Ok   gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6), clang version 5.0.2 (tags/RELEASE_502/final)
> >   32  fedora:28                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 6.0.1 (tags/RELEASE_601/final)
> >   33  fedora:29                     : Ok   gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), clang version 7.0.1 (Fedora 7.0.1-6.fc29)
> >   34  fedora:30                     : Ok   gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1), clang version 8.0.0 (Fedora 8.0.0-1.fc30)
> >   35  fedora:30-x-ARC-glibc         : Ok   arc-linux-gcc (ARC HS GNU/Linux glibc toolchain 2019.03-rc1) 8.3.1 20190225
> >   36  fedora:30-x-ARC-uClibc        : Ok   arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
> >   37  fedora:31                     : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
> >   38  fedora:rawhide                : Ok   gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), clang version 8.0.0 (Fedora 8.0.0-3.fc31)
> >   39  gentoo-stage3-amd64:latest    : Ok   gcc (Gentoo 8.3.0-r1 p1.1) 8.3.0
> >   40  mageia:5                      : Ok   gcc (GCC) 4.9.2, clang version 3.5.2 (tags/RELEASE_352/final)
> >   41  mageia:6                      : Ok   gcc (Mageia 5.5.0-1.mga6) 5.5.0, clang version 3.9.1 (tags/RELEASE_391/final)
> >   42  mageia:7                      : Ok   gcc (Mageia 8.3.1-0.20190524.1.mga7) 8.3.1 20190524, clang version 8.0.0 (Mageia 8.0.0-1.mga7)
> >   43  manjaro:latest                : Ok   gcc (GCC) 9.1.0, clang version 8.0.0 (tags/RELEASE_800/final)
> >   44  openmandriva:cooker           : Ok   gcc (GCC) 9.1.1 20190622 (OpenMandriva)
> >   45  opensuse:15.0                 : Ok   gcc (SUSE Linux) 7.4.1 20190424 [gcc-7-branch revision 270538], clang version 5.0.1 (tags/RELEASE_501/final 312548)
> >   46  opensuse:15.1                 : Ok   gcc (SUSE Linux) 7.4.0, clang version 7.0.1 (tags/RELEASE_701/final 349238)
> >   47  opensuse:42.3                 : Ok   gcc (SUSE Linux) 4.8.5, clang version 3.8.0 (tags/RELEASE_380/final 262553)
> >   48  opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 9.1.1 20190611 [gcc-9-branch revision 272147], clang version 8.0.0 (tags/RELEASE_800/final 356365)
> >   49  oraclelinux:6                 : Ok   gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
> >   50  oraclelinux:7                 : Ok   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1), clang version 3.4.2 (tags/RELEASE_34/dot2-final)
> >   51  ubuntu:12.04                  : Ok   gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
> >   52  ubuntu:14.04                  : Ok   gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4, Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
> >   53  ubuntu:16.04                  : Ok   gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
> >   54  ubuntu:16.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   55  ubuntu:16.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   56  ubuntu:16.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   57  ubuntu:16.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   58  ubuntu:16.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   59  ubuntu:16.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
> >   60  ubuntu:18.04                  : Ok   gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
> >   61  ubuntu:18.04-x-arm            : Ok   arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   62  ubuntu:18.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   63  ubuntu:18.04-x-m68k           : Ok   m68k-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   64  ubuntu:18.04-x-powerpc        : Ok   powerpc-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   65  ubuntu:18.04-x-powerpc64      : Ok   powerpc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   66  ubuntu:18.04-x-powerpc64el    : Ok   powerpc64le-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   67  ubuntu:18.04-x-riscv64        : Ok   riscv64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   68  ubuntu:18.04-x-s390           : Ok   s390x-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   69  ubuntu:18.04-x-sh4            : Ok   sh4-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   70  ubuntu:18.04-x-sparc64        : Ok   sparc64-linux-gnu-gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
> >   71  ubuntu:18.10                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1~18.10.1) 8.3.0, clang version 7.0.0-3 (tags/RELEASE_700/final)
> >   72  ubuntu:19.04                  : Ok   gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0, clang version 8.0.0-3 (tags/RELEASE_800/final)
> >   73  ubuntu:19.04-x-alpha          : Ok   alpha-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
> >   74  ubuntu:19.04-x-arm64          : Ok   aarch64-linux-gnu-gcc (Ubuntu/Linaro 8.3.0-6ubuntu1) 8.3.0
> >   75  ubuntu:19.04-x-hppa           : Ok   hppa-linux-gnu-gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
> >   76  ubuntu:19.10                  : Ok   gcc (Ubuntu 8.3.0-14ubuntu1) 8.3.0, clang version 8.0.1-+rc1-1~exp1 (tags/RELEASE_801/rc1)
> >   $
> > 
> >   # uname -a
> >   Linux quaco 5.2.0-rc7+ #4 SMP Sat Jul 6 14:43:41 -03 2019 x86_64 x86_64 x86_64 GNU/Linux
> >   # git log --oneline -1
> >   05c78468a60f tools build: Check if gettid() is available before providing helper
> >   # perf version --build-options
> >   perf version 5.2.rc7.g05c784
> >                    dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> >       dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> >                    glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> >                     gtk2: [ on  ]  # HAVE_GTK2_SUPPORT
> >            syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> >                   libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> >                   libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> >                  libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> >   numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> >                  libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
> >                libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> >                 libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> >                libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> >                libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> >       libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> >                     zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> >                     lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> >                get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> >                      bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> >                      aio: [ on  ]  # HAVE_AIO_SUPPORT
> >                     zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> >   # perf test
> >    1: vmlinux symtab matches kallsyms                       : Ok
> >    2: Detect openat syscall event                           : Ok
> >    3: Detect openat syscall event on all cpus               : Ok
> >    4: Read samples using the mmap interface                 : Ok
> >    5: Test data source output                               : Ok
> >    6: Parse event definition strings                        : Ok
> >    7: Simple expression parser                              : Ok
> >    8: PERF_RECORD_* events & perf_sample fields             : Ok
> >    9: Parse perf pmu format                                 : Ok
> >   10: DSO data read                                         : Ok
> >   11: DSO data cache                                        : Ok
> >   12: DSO data reopen                                       : Ok
> >   13: Roundtrip evsel->name                                 : Ok
> >   14: Parse sched tracepoints fields                        : Ok
> >   15: syscalls:sys_enter_openat event fields                : Ok
> >   16: Setup struct perf_event_attr                          : Ok
> >   17: Match and link multiple hists                         : Ok
> >   18: 'import perf' in python                               : Ok
> >   19: Breakpoint overflow signal handler                    : Ok
> >   20: Breakpoint overflow sampling                          : Ok
> >   21: Breakpoint accounting                                 : Ok
> >   22: Watchpoint                                            :
> >   22.1: Read Only Watchpoint                                : Skip
> >   22.2: Write Only Watchpoint                               : Ok
> >   22.3: Read / Write Watchpoint                             : Ok
> >   22.4: Modify Watchpoint                                   : Ok
> >   23: Number of exit events of a simple workload            : Ok
> >   24: Software clock events period values                   : Ok
> >   25: Object code reading                                   : Ok
> >   26: Sample parsing                                        : Ok
> >   27: Use a dummy software event to keep tracking           : Ok
> >   28: Parse with no sample_id_all bit set                   : Ok
> >   29: Filter hist entries                                   : Ok
> >   30: Lookup mmap thread                                    : Ok
> >   31: Share thread mg                                       : Ok
> >   32: Sort output of hist entries                           : Ok
> >   33: Cumulate child hist entries                           : Ok
> >   34: Track with sched_switch                               : Ok
> >   35: Filter fds with revents mask in a fdarray             : Ok
> >   36: Add fd to a fdarray, making it autogrow               : Ok
> >   37: kmod_path__parse                                      : Ok
> >   38: Thread map                                            : Ok
> >   39: LLVM search and compile                               :
> >   39.1: Basic BPF llvm compile                              : Ok
> >   39.2: kbuild searching                                    : Ok
> >   39.3: Compile source for BPF prologue generation          : Ok
> >   39.4: Compile source for BPF relocation                   : Ok
> >   40: Session topology                                      : Ok
> >   41: BPF filter                                            :
> >   41.1: Basic BPF filtering                                 : Skip
> >   41.2: BPF pinning                                         : Skip
> >   41.3: BPF prologue generation                             : Skip
> >   41.4: BPF relocation checker                              : Skip
> >   42: Synthesize thread map                                 : Ok
> >   43: Remove thread map                                     : Ok
> >   44: Synthesize cpu map                                    : Ok
> >   45: Synthesize stat config                                : Ok
> >   46: Synthesize stat                                       : Ok
> >   47: Synthesize stat round                                 : Ok
> >   48: Synthesize attr update                                : Ok
> >   49: Event times                                           : Ok
> >   50: Read backward ring buffer                             : Ok
> >   51: Print cpu map                                         : Ok
> >   52: Probe SDT events                                      : Ok
> >   53: is_printable_array                                    : Ok
> >   54: Print bitmap                                          : Ok
> >   55: perf hooks                                            : Ok
> >   56: builtin clang support                                 : Skip (not compiled in)
> >   57: unit_number__scnprintf                                : Ok
> >   58: mem2node                                              : Ok
> >   59: x86 rdpmc                                             : Ok
> >   60: Convert perf time to TSC                              : Ok
> >   61: DWARF unwind                                          : Ok
> >   62: x86 instruction decoder - new instructions            : Ok
> >   63: x86 bp modify                                         : Ok
> >   64: probe libc's inet_pton & backtrace it with ping       : Ok
> >   65: Use vfs_getname probe to get syscall args filenames   : Ok
> >   66: Add vfs_getname probe to get syscall args filenames   : Ok
> >   67: Check open filename arg using perf trace + vfs_getname: Ok
> >   68: Zstd perf.data compression/decompression              : Ok
> > 
> >   $ make -C tools/perf build-test
> >   make: Entering directory '/home/acme/git/perf/tools/perf'
> >   - tarpkg: ./tests/perf-targz-src-pkg .
> >                    make_help_O: make help
> >                  make_perf_o_O: make perf.o
> >                    make_pure_O: make
> >                make_no_slang_O: make NO_SLANG=1
> >               make_no_libelf_O: make NO_LIBELF=1
> >                   make_debug_O: make DEBUG=1
> >          make_with_clangllvm_O: make LIBCLANGLLVM=1
> >             make_no_libaudit_O: make NO_LIBAUDIT=1
> >                 make_install_O: make install
> >              make_util_map_o_O: make util/map.o
> >                 make_no_gtk2_O: make NO_GTK2=1
> >        make_util_pmu_bison_o_O: make util/pmu-bison.o
> >    make_install_prefix_slash_O: make install prefix=/tmp/krava/
> >              make_no_libnuma_O: make NO_LIBNUMA=1
> >            make_no_libunwind_O: make NO_LIBUNWIND=1
> >            make_no_libbionic_O: make NO_LIBBIONIC=1
> >               make_clean_all_O: make clean all
> >             make_no_auxtrace_O: make NO_AUXTRACE=1
> >              make_no_libperl_O: make NO_LIBPERL=1
> >            make_no_libpython_O: make NO_LIBPYTHON=1
> >             make_no_demangle_O: make NO_DEMANGLE=1
> >   make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
> >            make_no_backtrace_O: make NO_BACKTRACE=1
> >                  make_cscope_O: make cscope
> >                    make_tags_O: make tags
> >              make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
> >               make_no_libbpf_O: make NO_LIBBPF=1
> >                  make_static_O: make LDFLAGS=-static
> >                   make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
> >                 make_no_newt_O: make NO_NEWT=1
> >         make_with_babeltrace_O: make LIBBABELTRACE=1
> >                     make_doc_O: make doc
> >          make_install_prefix_O: make install prefix=/tmp/krava
> >                 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 NO_LIBZSTD=1
> >             make_install_bin_O: make install-bin
> >   OK
> >   make: Leaving directory '/home/acme/git/perf/tools/perf'
> >   
> 
> -- 
> 
> - Arnaldo

-- 

- Arnaldo

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

* Re: [GIT PULL 0/8] perf/urgent fixes
  2019-07-08 21:54   ` Arnaldo Carvalho de Melo
@ 2019-07-09 11:23     ` Ingo Molnar
  0 siblings, 0 replies; 13+ messages in thread
From: Ingo Molnar @ 2019-07-09 11:23 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Thomas Gleixner, Jiri Olsa, Namhyung Kim, Clark Williams,
	linux-kernel, linux-perf-users, David Carrillo Cisneros,
	Konstantin Kharlamov, Seeteena Thoufeek, Song Liu, Wei Li,
	Arnaldo Carvalho de Melo


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

> Em Mon, Jul 08, 2019 at 06:50:58PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Mon, Jul 08, 2019 at 12:41:59PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Hi Ingo,
> > > 
> > > 	Please consider pulling, I did a git merge with torvalds/master
> > > late last week to fixup some kernel headers ABI sync warnings, but I had
> > > to cherry pick some csets from my perf/core branch to get the container
> > > builds to all work, so ended up slipping past v5.2, oh well, but here it
> > > is, all containers building ok, I'll now test perf/core to then push
> > > that too.
> > 
> > Hi Ingo,
> > 
> > 	As requested I merged tip/perf/core with this branch and now its
> > available as the perf-urgent-for-mingo-5.3-20190708-2 signed tag, that
> > has only one extra cset:
> > 
> >   commit 686cbe9e5d88ad639bbe26d963e7d5dafa1c1c28 (HEAD -> perf/urgent, tag: perf-urgent-for-mingo-5.3-20190708-2, acme/perf/urgent, acme.korg/perf/urgent)
> >   Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> >   Date:   Mon Jul 8 13:47:14 2019 -0300
> >   
> >       tools arch x86: Sync asm/cpufeatures.h with the with the kernel
> 
> BTW, I ran all the tests as before, same results.

Pulled, thanks a lot Arnaldo!

	Ingo

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

* Re: [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback
  2019-07-08 15:42 ` [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback Arnaldo Carvalho de Melo
@ 2019-07-13 12:42   ` Konstantin Kharlamov
  0 siblings, 0 replies; 13+ messages in thread
From: Konstantin Kharlamov @ 2019-07-13 12:42 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, Thomas Gleixner, Jiri Olsa, Namhyung Kim,
	Clark Williams, linux-kernel, linux-perf-users,
	Alexander Shishkin, Andi Kleen, Peter Zijlstra, Quentin Monnet,
	Kim Phillips, Arnaldo Carvalho de Melo

Thank you very much! Just wondering, would it maybe worth to backport 
the fix to stable kernel too?

В Пн, июл 8, 2019 at 12:42, Arnaldo Carvalho de Melo 
<acme@kernel.org> написал:
> From: Jiri Olsa <jolsa@kernel.org>
> 
> Konstantin reported problem with default perf record command, which
> fails on some AMD servers, because of the default maximum precise
> config.
> 
> The current fallback mechanism counts on getting ENOTSUP errno for
> precise_ip fails, but that's not the case on some AMD servers.
> 
> We can fix this by removing the errno check completely, because the
> precise_ip fallback is separated. We can just try  (if requested by
> evsel->precise_max) all possible precise_ip, and if one succeeds we 
> win,
> if not, we continue with standard fallback.
> 
> Reported-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Andi Kleen <ak@linux.intel.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Quentin Monnet <quentin.monnet@netronome.com>
> Cc: Kim Phillips <kim.phillips@amd.com>
> Link: http://lkml.kernel.org/r/20190703080949.10356-1-jolsa@kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
>  tools/perf/util/evsel.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 4a5947625c5c..69beb9f80f07 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -1785,14 +1785,8 @@ static int perf_event_open(struct perf_evsel 
> *evsel,
>  		if (fd >= 0)
>  			break;
> 
> -		/*
> -		 * Do quick precise_ip fallback if:
> -		 *  - there is precise_ip set in perf_event_attr
> -		 *  - maximum precise is requested
> -		 *  - sys_perf_event_open failed with ENOTSUP error,
> -		 *    which is associated with wrong precise_ip
> -		 */
> -		if (!precise_ip || !evsel->precise_max || (errno != ENOTSUP))
> +		/* Do not try less precise if not requested. */
> +		if (!evsel->precise_max)
>  			break;
> 
>  		/*
> --
> 2.20.1
> 



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

end of thread, other threads:[~2019-07-13 12:49 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-08 15:41 [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 1/8] tools arch kvm: Sync kvm headers with the kernel sources Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 2/8] perf header: Assign proper ff->ph in perf_event__synthesize_features() Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 3/8] perf thread: Allow references to thread objects after machine__exit() Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 4/8] perf evsel: Do not rely on errno values for precise_ip fallback Arnaldo Carvalho de Melo
2019-07-13 12:42   ` Konstantin Kharlamov
2019-07-08 15:42 ` [PATCH 5/8] perf tests: Fix record+probe_libc_inet_pton.sh for powerpc64 Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 6/8] perf annotate TUI browser: Do not use member from variable within its own initialization Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 7/8] perf python: Remove -fstack-protector-strong if clang doesn't have it Arnaldo Carvalho de Melo
2019-07-08 15:42 ` [PATCH 8/8] perf jvmti: Address gcc string overflow warning for strncpy() Arnaldo Carvalho de Melo
2019-07-08 21:50 ` [GIT PULL 0/8] perf/urgent fixes Arnaldo Carvalho de Melo
2019-07-08 21:54   ` Arnaldo Carvalho de Melo
2019-07-09 11:23     ` 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).