tree b6806dcd59c7a2b8f11167b4ff26271c378e6837
parent 15a3e845b01ce2342cf187dc123c92c44c3c8170
parent 8a9fd8323087e794f1d3cd4850b393ced048bc73
author Ingo Molnar <mingo@kernel.org> 1524296313 +0200
committer Ingo Molnar <mingo@kernel.org> 1524296313 +0200
mergetag object 8a9fd8323087e794f1d3cd4850b393ced048bc73
 type commit
 tag perf-urgent-for-mingo-4.17-20180420
 tagger Arnaldo Carvalho de Melo <acme@redhat.com> 1524234378 -0300
 
 perf/urgent fixes and improvements:
 
 - Store context switch out type in PERF_RECORD_SWITCH[_CPU_WIDE].
   The percentage of preempting and non-preempting context switches help
   understanding the nature of workloads (CPU or IO bound) that are running
   on a machine. This adds the kernel facility and userspace changes needed
   to show this information in 'perf script' and 'perf report -D' (Alexey Budankov)
 
 - Remove old error messages about things that unlikely to be the root cause
   in modern systems (Andi Kleen)
 
 - Synchronize kernel ABI headers, v4.17-rc1 (Ingo Molnar)
 
 - Support MAP_FIXED_NOREPLACE, noticed when updating the tools/include/
   copies (Arnaldo Carvalho de Melo)
 
 - Fixup BPF test using epoll_pwait syscall function probe, to cope with
   the syscall routines renames performed in this development cycle (Arnaldo Carvalho de Melo)
 
 - Fix sample_max_stack maximum check and do not proceed when an error
   has been detect, return them to avoid misidentifying errors (Jiri Olsa)
 
 - Add '\n' at the end of parse-options error messages (Ravi Bangoria)
 
 - Add s390 support for detailed/verbose PMU event description (Thomas Richter)
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEELb9bqkb7Te0zijNb1lAW81NSqkAFAlrZ+JQACgkQ1lAW81NS
 qkADwQ/9HVJr9inFOL4FVOWAVDweKSnp2wbKQdIUxRkR7LJjHfXfWBpJ8snGROKY
 sS95yNy0Q4xejVbvPkf9P2Mk6eiZw5oQQJwwhAYMD0Ae0Jz8CQ9rCt9ABHy9yOre
 tl76fF19U8TU0yk80fE+Mp0Z6Ssw6RrC9rkBAAm4LZgLcEuVCIRxlPT1LXDFO2xz
 8Tk9UHeNNTb/sQRCme6bnbqBZsitd3K/qN2iWeAX/v10LMJaMcT9Xy1aL/K/RZzl
 H/4ehioaqtio1h5RlconcY2PjzhG3tW9469UIBkudXvtM1DDeZ1ddl4HP0C3xMlh
 /Ypo0vEsaGPRTal7l5fudnMfnRQ9Xbmcy74WylAFvDDpaegcipLbBY4qUziyELRv
 lRb2Vll9gHhsnuyfvGlIi6Zrwm3jCOe856ZhJYj0HBE+gwvGXrgg9leK+0LnjSrC
 /hZKFhiQp4WuBxaduqAHu9fhU0jtLN0TaqmpoaqxMqBcUPKFZkyHxXnV9HODVxuX
 NmF0WrcRxy3NAT0teLtAvpfei6s2wH3WyVC/zWr0N+u6mRR+kJvR9ibmwgShqVI9
 sEKz0r6GhKvN1Bwe2fQ+OWUJ3mfjAO4w2Hfdls2a+I8lRRNv+uW7ZQS0aFSz8stH
 frHCV2HrUDKNLEfNikxu1ECdK5ErQdJgXMNJ8/2+TlOUufNfVqc=
 =WABo
 -----END PGP SIGNATURE-----

Merge tag 'perf-urgent-for-mingo-4.17-20180420' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent

Pull perf/urgent fixes and improvements from Arnaldo Carvalho de Melo:

- Store context switch out type in PERF_RECORD_SWITCH[_CPU_WIDE].
  The percentage of preempting and non-preempting context switches help
  understanding the nature of workloads (CPU or IO bound) that are running
  on a machine. This adds the kernel facility and userspace changes needed
  to show this information in 'perf script' and 'perf report -D' (Alexey Budankov)

- Remove old error messages about things that unlikely to be the root cause
  in modern systems (Andi Kleen)

- Synchronize kernel ABI headers, v4.17-rc1 (Ingo Molnar)

- Support MAP_FIXED_NOREPLACE, noticed when updating the tools/include/
  copies (Arnaldo Carvalho de Melo)

- Fixup BPF test using epoll_pwait syscall function probe, to cope with
  the syscall routines renames performed in this development cycle (Arnaldo Carvalho de Melo)

- Fix sample_max_stack maximum check and do not proceed when an error
  has been detect, return them to avoid misidentifying errors (Jiri Olsa)

- Add '\n' at the end of parse-options error messages (Ravi Bangoria)

- Add s390 support for detailed/verbose PMU event description (Thomas Richter)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
