Paul Mackerras
9eff26ea48
powerpc/perf_events: Fix call-graph recording, add perf_arch_fetch_caller_regs
...
This implements a powerpc version of perf_arch_fetch_caller_regs
to get correct call-graphs.
It's implemented in assembly because that way we can be sure there isn't
a stack frame for perf_arch_fetch_caller_regs. If it was in C, gcc might
or might not create a stack frame for it, which would affect the number
of levels we have to skip.
With this, we see results from perf record -e lock:lock_acquire like
this:
# Samples: 24878
#
# Overhead Command Shared Object Symbol
# ........ .............. ................. ......
#
14.99% perf [kernel.kallsyms] [k] ._raw_spin_lock
|
--- ._raw_spin_lock
|
|--25.00%-- .alloc_fd
| (nil)
| |
| |--50.00%-- .anon_inode_getfd
| | .sys_perf_event_open
| | syscall_exit
| | syscall
| | create_counter
| | __cmd_record
| | run_builtin
| | main
| | 0xfd2e704
| | 0xfd2e8c0
| | (nil)
... etc.
Signed-off-by: Paul Mackerras <paulus@samba.org >
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: anton@samba.org
Cc: linuxppc-dev@ozlabs.org
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100318050513.GA6575@drongo>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-18 06:48:29 +01:00
..
2009-10-27 16:42:40 +11:00
2009-09-21 06:27:08 +02:00
2008-10-07 14:26:18 +11:00
2009-12-18 14:55:43 +11:00
2010-03-01 12:35:56 -03:00
2008-08-20 16:34:57 +10:00
2010-03-07 17:04:49 -08:00
2009-01-08 16:25:10 +11:00
2007-10-03 09:11:56 +10:00
2009-08-20 10:12:27 +10:00
2009-02-14 14:41:29 -05:00
2009-06-15 21:45:30 -05:00
2008-09-15 11:08:35 -07:00
2009-12-12 22:24:29 -07:00
2009-02-23 10:48:56 +11:00
2009-10-30 17:20:55 +11:00
2009-02-23 15:53:03 +11:00
2009-09-24 15:31:43 +10:00
2009-11-24 17:00:24 +11:00
2009-09-24 15:31:43 +10:00
2009-08-20 10:12:27 +10:00
2010-02-09 13:56:24 +11:00
2009-09-24 15:31:41 +10:00
2009-12-09 17:14:38 +11:00
2010-02-09 13:56:07 +11:00
2009-08-20 10:12:27 +10:00
2009-06-20 10:56:46 -07:00
2010-01-15 13:26:16 +11:00
2009-12-12 22:24:31 -07:00
2009-08-20 10:12:27 +10:00
2009-08-27 13:12:51 +10:00
2009-11-05 16:49:57 +11:00
2009-08-20 10:12:27 +10:00
2010-02-17 21:10:25 -06:00
2009-08-28 14:24:10 +10:00
2008-09-03 20:53:47 +10:00
2008-09-03 20:53:47 +10:00
2009-11-18 08:37:40 -08:00
2009-09-21 06:27:08 +02:00
2009-11-04 16:43:12 -07:00
2007-09-20 07:36:52 -05:00
2009-12-16 07:20:18 -08:00
2010-02-19 14:52:32 +11:00
2008-05-09 20:22:59 +10:00
2010-02-17 14:03:16 +11:00
2010-02-17 14:03:16 +11:00
2007-10-19 23:21:04 +02:00
2008-07-28 16:30:53 +10:00
2010-02-09 13:56:23 +11:00
2008-08-15 08:35:42 -07:00
2009-09-21 06:27:08 +02:00
2009-05-15 16:43:41 +10:00
2009-10-30 17:20:53 +11:00
2009-12-09 17:10:37 +11:00
2009-06-09 16:46:25 +10:00
2010-03-18 06:48:29 +01:00
2008-11-20 10:52:53 -08:00
2009-02-23 10:48:56 +11:00
2009-06-12 21:47:05 +09:30
2009-09-21 14:28:04 +02:00
2009-03-25 08:54:29 -07:00
2010-02-09 13:55:05 +11:00
2009-06-26 16:55:35 +10:00
2010-01-28 14:06:53 -07:00
2009-08-20 10:25:08 +10:00
2009-09-02 15:45:53 +10:00
2010-02-09 08:33:00 -07:00
2009-05-21 15:44:24 +10:00
2010-02-09 13:56:23 +11:00
2010-02-23 09:43:31 -08:00
2010-01-28 14:31:20 +01:00
2010-03-11 15:21:27 +01:00
2010-02-19 14:52:33 +11:00
2009-09-21 14:28:04 +02:00
2009-10-28 16:13:02 +11:00
2009-10-28 16:13:02 +11:00
2009-10-28 16:13:02 +11:00
2009-10-28 16:13:02 +11:00
2008-07-01 11:28:50 +10:00
2009-10-28 16:13:02 +11:00
2010-03-01 12:35:52 -03:00
2008-12-23 15:13:28 +11:00
2009-10-30 17:20:53 +11:00
2010-02-17 14:03:17 +11:00
2009-03-11 17:11:33 +11:00
2010-02-04 14:33:54 +11:00
2009-04-20 12:18:43 -06:00
2010-02-14 07:13:55 -07:00
2009-07-12 12:22:34 -07:00
2010-02-17 14:03:17 +11:00
2008-09-15 11:08:38 -07:00
2009-10-30 17:20:53 +11:00
2009-05-21 15:44:23 +10:00
2010-01-15 13:26:17 +11:00
2009-12-14 23:55:32 +01:00
2009-10-30 17:20:53 +11:00
2009-11-10 12:32:00 +01:00
2009-12-09 17:14:38 +11:00
2009-12-14 09:58:24 -08:00
2010-02-17 14:03:17 +11:00
2009-03-27 16:58:24 +11:00
2010-02-17 14:03:17 +11:00
2009-03-27 16:58:24 +11:00
2008-11-05 22:08:28 +11:00
2010-01-15 13:26:18 +11:00
2008-09-06 19:30:24 +01:00
2008-07-28 16:30:47 +10:00
2008-07-24 10:47:21 -07:00
2010-01-15 13:20:07 +11:00
2008-10-07 14:26:20 +11:00
2008-12-21 14:21:15 +11:00
2009-11-06 03:52:55 -08:00
2009-12-11 06:44:29 -05:00
2009-12-09 17:09:33 +11:00
2008-01-25 22:52:50 +11:00
2008-01-25 22:52:50 +11:00
2007-10-11 14:36:47 +10:00
2009-12-04 15:39:55 +01:00
2010-02-17 14:02:49 +11:00
2010-02-19 14:52:33 +11:00
2009-09-21 15:14:54 +02:00
2009-12-12 22:24:31 -07:00
2009-11-09 09:40:54 +01:00
2009-12-09 18:10:12 +11:00
2009-09-24 15:31:43 +10:00
2009-12-15 16:28:34 +10:30