1
linux/arch/sh/kernel
Anton Blanchard 339ce1a4dc perf: Fix inconsistency between IP and callchain sampling
When running perf across all cpus with backtracing (-a -g), sometimes we
get samples without associated backtraces:

    23.44%         init  [kernel]                     [k] restore
    11.46%         init                       eeba0c  [k] 0x00000000eeba0c
     6.77%      swapper  [kernel]                     [k] .perf_ctx_adjust_freq
     5.73%         init  [kernel]                     [k] .__trace_hcall_entry
     4.69%         perf  libc-2.9.so                  [.] 0x0000000006bb8c
                       |
                       |--11.11%-- 0xfffa941bbbc

It turns out the backtrace code has a check for the idle task and the IP
sampling does not. This creates problems when profiling an interrupt
heavy workload (in my case 10Gbit ethernet) since we get no backtraces
for interrupts received while idle (ie most of the workload).

Right now x86 and sh check that current is not NULL, which should never
happen so remove that too.

Idle task's exclusion must be performed from the core code, on top
of perf_event_attr:exclude_idle.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mundt <lethal@linux-sh.org>
LKML-Reference: <20100118054707.GT12666@kryten>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
2010-01-28 14:31:20 +01:00
..
cpu sh: dmaengine support for SH7785 2009-12-17 14:19:33 +09:00
vsyscall kbuild: rename ld-option to cc-ldoption 2009-09-20 12:27:42 +02:00
.gitignore
asm-offsets.c sh: Add R-standby sleep mode support 2009-10-30 14:38:45 +09:00
cpufreq.c sh: cpufreq: Include CPU id in info messages. 2009-09-15 09:26:04 +09:00
crash_dump.c
debugtraps.S
disassemble.c
dma-nommu.c sh: Revamp PCI DMA coherence Kconfig bits. 2009-10-27 10:35:02 +09:00
dumpstack.c
dwarf.c Merge branch 'sh/stable-updates' 2009-11-09 10:55:36 +09:00
early_printk.c sh: Remove old early serial console code V2 2009-12-15 12:07:35 +09:00
entry-common.S sh: TS_RESTORE_SIGMASK conversion. 2009-10-14 16:05:42 +09:00
ftrace.c sh: ftrace: Fix up syscall tracing build. 2009-12-11 15:25:41 +09:00
head_32.S sh: CONFIG_PMB doesn't mean the MMU is in 32bit mode 2009-10-10 21:51:23 +09:00
head_64.S
idle.c sh: Only use bl bit toggling for sleeping idle. 2009-12-21 11:57:33 +09:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
io_generic.c sh: Use the generic I/O port base for slowdown. 2009-11-12 16:36:26 +09:00
io_trapped.c sh: Only shout about fixing up unexpected unaligned accesses 2009-08-29 20:31:44 +09:00
io.c sh: Optimise memcpy_to/fromio for SH4 2009-08-24 17:35:07 +09:00
irq_32.c sh: Annotate irq functions with "notrace" 2009-10-27 07:37:10 +09:00
irq_64.c sh: Annotate irq functions with "notrace" 2009-10-27 07:37:10 +09:00
irq.c genirq: Convert irq_desc.lock to raw_spinlock 2009-12-14 23:55:33 +01:00
kgdb.c sh: Kill off kgdb's magical NMI debouncing. 2009-09-01 17:45:35 +09:00
kprobes.c
localtimer.c
machine_kexec.c sh: fix kexec by removing check for old kexec-tools 2009-10-26 19:45:45 +09:00
machvec.c sh: Use the generic I/O port base for slowdown. 2009-11-12 16:36:26 +09:00
Makefile sh: Remove old early serial console code V2 2009-12-15 12:07:35 +09:00
module.c sh: Tidy up the dwarf module helpers. 2009-10-13 13:32:19 +09:00
nmi_debug.c sh: nmi_debug support. 2009-09-01 17:38:32 +09:00
perf_callchain.c perf: Fix inconsistency between IP and callchain sampling 2010-01-28 14:31:20 +01:00
perf_event.c sh: perf events: Fix up uninitialized variable warning. 2009-11-05 13:56:50 +09:00
process_32.c sh: Fix up the FPU emulation build. 2009-11-25 12:07:31 +09:00
process_64.c sh: Fix up FPU build for SH5 2009-12-15 12:07:36 +09:00
ptrace_32.c sh: Wire up HAVE_SYSCALL_TRACEPOINTS. 2009-09-16 14:30:34 +09:00
ptrace_64.c sh: Fix up FPU build for SH5 2009-12-15 12:07:36 +09:00
relocate_kernel.S
return_address.c sh: Generalize CALLER_ADDRx support. 2009-10-13 13:10:14 +09:00
setup.c sh-sci: Extend sh-sci driver with early console V2 2009-12-15 12:06:29 +09:00
sh_bios.c
sh_ksyms_32.c sh: Clean up more superfluous symbol exports. 2009-10-27 11:51:19 +09:00
sh_ksyms_64.c sh: Clean up more superfluous symbol exports. 2009-10-27 11:51:19 +09:00
signal_32.c sh: TS_RESTORE_SIGMASK conversion. 2009-10-14 16:05:42 +09:00
signal_64.c sh: Fix up FPU build for SH5 2009-12-15 12:07:36 +09:00
smp.c Merge branch 'sh/stable-updates' 2009-10-14 15:53:08 +09:00
stacktrace.c
swsusp.c
sys_sh32.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh64.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh.c Unify sys_mmap* 2009-12-11 06:44:29 -05:00
syscalls_32.S sh: Wire up recvmmsg syscall. 2009-12-11 15:29:31 +09:00
syscalls_64.S net: Introduce recvmmsg socket syscall 2009-10-12 23:40:10 -07:00
time.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
topology.c sh: Support SCHED_MC for SH-X3 multi-cores. 2009-10-16 18:00:02 +09:00
traps_32.c sh: Make the unaligned trap handler always obey notification levels. 2009-12-14 11:46:09 +09:00
traps_64.c sh: Fix up FPU build for SH5 2009-12-15 12:07:36 +09:00
traps.c sh64: Fix up the CONFIG_GENERIC_BUG=n build. 2009-11-12 16:39:47 +09:00
unwinder.c
vmlinux.lds.S Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-16 13:48:32 +09:00