tree d7c81373a9ea1b833163e9c36d727b1b6ddab067
parent 1341f3e4c0276aae3de6d902c9202265d89fe438
parent 26f7f9877234e6b9ed87eff4ca450631bafe0182
author Ingo Molnar <mingo@kernel.org> 1389716712 +0100
committer Ingo Molnar <mingo@kernel.org> 1389716712 +0100
mergetag object 26f7f9877234e6b9ed87eff4ca450631bafe0182
 type commit
 tag perf-core-for-mingo
 tagger Arnaldo Carvalho de Melo <acme@redhat.com> 1389644886 -0300
 
 New features:
 
 . perf record: Add --initial-delay option (Andi Kleen)
 
 . Column colouring improvements in 'diff' (Ramkumar Ramachandra)
 
 Fixes:
 
 . Don't show counter information when workload fails (Arnaldo Carvalho de Melo)
 
 . Fixup leak on error path in parse events test. (Arnaldo Carvalho de Melo)
 
 . Fix --delay option in 'stat' man page (Andi Kleen)
 
 . Use the DWARF unwind info only if loaded (Jean Pihet):
 
 Developer stuff:
 
 . Improve forked workload error reporting by sending the errno in the signal
   data queueing integer field, using sigqueue and by doing the signal setup in
   the evlist methods, removing open coded equivalents in various tools. (Arnaldo Carvalho de Melo)
 
 . Do more auto exit cleanup shores in the 'evlist' destructor, so that the tools
   don't have to all do that sequence. (Arnaldo Carvalho de Melo)
 
 . Pack 'struct perf_session_env' and 'struct trace' (Arnaldo Carvalho de Melo)
 
 . Include tools/lib/api/ in MANIFEST, fixing detached tarballs (Arnaldo Carvalho de Melo)
 
 . Add test for building detached source tarballs (Arnaldo Carvalho de Melo)
 
 . Shut up libtracevent plugins make message (Jiri Olsa)
 
 . Fix installation tests path setup (Jiri Olsa)
 
 . Fix id_hdr_size initialization (Jiri Olsa)
 
 . Move some header files from tools/perf/ to tools/include/ to make them available to
   other tools/ dwelling codebases (Namhyung Kim)
 
 . Fix 'probe' build when DWARF support libraries not present (Arnaldo Carvalho de Melo)
 
 Refactorings:
 
 . Move logic to warn about kptr_restrict'ed kernels to separate
   function in 'report' (Arnaldo Carvalho de Melo)
 
 . Move hist browser selection code to separate function (Arnaldo Carvalho de Melo)
 
 . Move histogram entries collapsing to separate function (Arnaldo Carvalho de Melo)
 
 . Introduce evlist__for_each() & friends (Arnaldo Carvalho de Melo)
 
 . Automate setup of FEATURE_CHECK_(C|LD)FLAGS-all variables (Jiri Olsa)
 
 . Move arch setup into seprate Makefile (Jiri Olsa)
 
 Trivial stuff:
 
 . Remove misplaced __maybe_unused in 'stat' (Arnaldo Carvalho de Melo)
 
 . Remove old evsel_list usage in 'record' (Arnaldo Carvalho de Melo)
 
 . Comment typo fix (Cody P Schafer)
 
 . Remove unused test-volatile-register-var.c (Yann Droneaud)
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQIcBAABAgAGBQJS1FB5AAoJENZQFvNTUqpAvOIP/2i0Mu0AbumxvJs0AlRrTISt
 +YF+jKx26pZ7szk86iKUJyIy8LxNY3TOuNITrLStVSJgZt5Dmj8/ePpniIWP9dOh
 ZnKd8aPe1FF9ehB0VL4QJI6V9GIKPsw/YzpzSWiL0r485VMedIvBNFd12z2VdcSK
 0zQlDLGw0QNgvK0GfaGKTn8caKQdiYquH9P7UUsh6E89yThN1mXuFnEn2HbN65UD
 Am9jL2asRkbHGVUmza2bJ2uOJktpjB/aaRITHfAH3b7oX58o1oQJOFa6mqyXv5sN
 XFebZjJJ0qAednDeeG6VPRtSCb+MAGE6/rU1/Xla628BNRIOHNxhR/DYiU8TQum1
 r7tIqUdx31YTXeuzxaNV8GOhKjCDj2oIFwoALO3vtH9IEK7Xf6Thn/easV8bWVNb
 FtoGzmzgR7ZH7RqEModrkQ+UMEhv3mjP8htvffTWn7cWC+dhsDxqnZtOSvI0/zE1
 /vPPatCsB+1jFERIVG2ITXaXX73aAT998nmyxCHZdsALyWjevDzVq4YgN7fEez2E
 WPkd7MAyfIgWUPneoJciZ5iZVGXAieYWnSd8l7a192XFM6hF6vm+fjz2tbcje6Wg
 n6z6T0Q92Bp1dP260rZwS4x0ShPqARitZsbEcLpDMOCvsHErad9IA560Sx8m9+sB
 5iovlBy/J0B+4v+q2WrS
 =a//S
 -----END PGP SIGNATURE-----

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

Pull perf tooling updates from Arnaldo Carvalho de Melo:

New features:

 * perf record: Add --initial-delay option (Andi Kleen)

 * Column colouring improvements in 'diff' (Ramkumar Ramachandra)

Fixes:

 * Don't show counter information when workload fails (Arnaldo Carvalho de Melo)

 * Fixup leak on error path in parse events test. (Arnaldo Carvalho de Melo)

 * Fix --delay option in 'stat' man page (Andi Kleen)

 * Use the DWARF unwind info only if loaded (Jean Pihet):

Developer stuff:

 * Improve forked workload error reporting by sending the errno in the signal
   data queueing integer field, using sigqueue and by doing the signal setup in
   the evlist methods, removing open coded equivalents in various tools. (Arnaldo Carvalho de Melo)

 * Do more auto exit cleanup shores in the 'evlist' destructor, so that the tools
   don't have to all do that sequence. (Arnaldo Carvalho de Melo)

 * Pack 'struct perf_session_env' and 'struct trace' (Arnaldo Carvalho de Melo)

 * Include tools/lib/api/ in MANIFEST, fixing detached tarballs (Arnaldo Carvalho de Melo)

 * Add test for building detached source tarballs (Arnaldo Carvalho de Melo)

 * Shut up libtracevent plugins make message (Jiri Olsa)

 * Fix installation tests path setup (Jiri Olsa)

 * Fix id_hdr_size initialization (Jiri Olsa)

 * Move some header files from tools/perf/ to tools/include/ to make them available to
   other tools/ dwelling codebases (Namhyung Kim)

 * Fix 'probe' build when DWARF support libraries not present (Arnaldo Carvalho de Melo)

Refactorings:

 * Move logic to warn about kptr_restrict'ed kernels to separate
   function in 'report' (Arnaldo Carvalho de Melo)

 * Move hist browser selection code to separate function (Arnaldo Carvalho de Melo)

 * Move histogram entries collapsing to separate function (Arnaldo Carvalho de Melo)

 * Introduce evlist__for_each() & friends (Arnaldo Carvalho de Melo)

 * Automate setup of FEATURE_CHECK_(C|LD)FLAGS-all variables (Jiri Olsa)

 * Move arch setup into seprate Makefile (Jiri Olsa)

Trivial stuff:

 * Remove misplaced __maybe_unused in 'stat' (Arnaldo Carvalho de Melo)

 * Remove old evsel_list usage in 'record' (Arnaldo Carvalho de Melo)

 * Comment typo fix (Cody P Schafer)

 * Remove unused test-volatile-register-var.c (Yann Droneaud)

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