tree fc0e6ea775be9bc10e16d2aab31f018f4b027c0c
parent ce37f400336a34bb6e72c4700f9dcc2a41ff7163
parent af3df2cf17f5df079189c3cc88870d28e219496b
author Ingo Molnar <mingo@kernel.org> 1351150923 +0200
committer Ingo Molnar <mingo@kernel.org> 1351150923 +0200
mergetag object af3df2cf17f5df079189c3cc88870d28e219496b
 type commit
 tag perf-core-for-mingo
 tagger Arnaldo Carvalho de Melo <acme@redhat.com> 1351114370 -0200
 
 perf/core improvements and fixes
 
 . Align the 'Ok'/'FAILED!' test results in 'perf test.
 
 . Support interrupted syscalls in 'trace'
 
 . Add an event duration column and filter in 'trace'.
 
 . There are references to the man pages in some tools, so try to build
   Documentation when installing, warning the user if that is not possible,
   from Borislav Petkov.
 
 . Give user better message if precise is not supported, from David Ahern.
 
 . Try to find cross-built objdump path by using the session environment
   information in the perf.data file header, from Irina Tirdea, original
   patch and idea by Namhyung Kim.
 
 . Diplays more output on features check for make V=1, so that one can figure
   out what is happening by looking at gcc output, etc. From Jiri Olsa.
 
 . Account the nr_entries in rblist properly, fix by Suzuki K. Poulose.
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.14 (GNU/Linux)
 
 iQIcBAABAgAGBQJQiF+zAAoJENZQFvNTUqpAuVEP/jL4MWAjBVW4vjkmvClG+iUG
 lXMFZnBO2JgUmcIKv1StaMa+BKrvaagfuFsMHgVpvm3NVDyed0+kc+qp4sFBQy99
 9s3EJ0qeU9UqnCa7v4cQHr10CPGOVzLxnVe+440IHsy4/OSkZw4cJdk+t1X9I68r
 Sj0WfZI2JyWZB9Xzmx8fNhV7fgBqSr3OIwGtYCiEpvXndIfXrnBHWQ7RH40k+flG
 nPV8SKNc4hpe+UBsUmPaFW5r6iyYrX9vL8rqniw1nWBvfqCvzoZ3mS7XL585KQ1K
 t69Lj/iJgyyPO8bn8cL+bJ/QKE2eglaUtXAQqZSQ8bQkKZzOAq8Yx24er9xAJsMs
 RQ4yssVnwucJsDbc7EHLW5k8+GUfA2GB/wAq8IDqM32d9RNEpq9FMTMlXKZwWdkb
 N8hdbm6XVKOptQ2HQI33oSK+k3pMSk6EDNjpdcSsigwdphWCqHeZUXmFQXOtSUbZ
 AcxWLCnZe9kH5OajIgzxZTN/3MwABn4DP0ZrhdbRXaSFuiqwARcuYxtlKj+no3/P
 I5Pjqr4aQdvVRNuhocXiPPKiay4VDjFJBuYVSbdhBPv9RN2qb90BJJhSDVU41gQZ
 s5rcWbZuKm9a/cTwEfvIa7CNz0ascUAPQpNe8Uf8TpFNClqKBAfCGNca2hcqSK9K
 x/6FqzKzR6hfL0LOhKwf
 =DKId
 -----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/core improvements and fixes from Arnaldo Carvalho de Melo:

 * Align the 'Ok'/'FAILED!' test results in 'perf test.

 * Support interrupted syscalls in 'trace'

 * Add an event duration column and filter in 'trace'.

 * There are references to the man pages in some tools, so try to build
   Documentation when installing, warning the user if that is not possible,
   from Borislav Petkov.

 * Give user better message if precise is not supported, from David Ahern.

 * Try to find cross-built objdump path by using the session environment
   information in the perf.data file header, from Irina Tirdea, original
   patch and idea by Namhyung Kim.

 * Diplays more output on features check for make V=1, so that one can figure
   out what is happening by looking at gcc output, etc. From Jiri Olsa.

 * Account the nr_entries in rblist properly, fix by Suzuki K. Poulose.

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