alistair23-linux/arch
Frederic Weisbecker 927c7a9e92 perf: Fix race in callchains
Now that software events don't have interrupt disabled anymore in
the event path, callchains can nest on any context. So seperating
nmi and others contexts in two buffers has become racy.

Fix this by providing one buffer per nesting level. Given the size
of the callchain entries (2040 bytes * 4), we now need to allocate
them dynamically.

v2: Fixed put_callchain_entry call after recursion.
    Fix the type of the recursion, it must be an array.

v3: Use a manual pr cpu allocation (temporary solution until NMIs
    can safely access vmalloc'ed memory).
    Do a better separation between callchain reference tracking and
    allocation. Make the "put" path lockless for non-release cases.

v4: Protect the callchain buffers with rcu.

v5: Do the cpu buffers allocations node affine.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: David Miller <davem@davemloft.net>
Cc: Borislav Petkov <bp@amd64.org>
2010-08-19 01:32:31 +02:00
..
alpha Merge branch 'linus' into perf/core 2010-06-28 22:33:24 +02:00
arm perf: Factorize callchain context handling 2010-08-19 01:32:11 +02:00
avr32 Merge commit 'v2.6.35' into perf/core 2010-08-02 08:31:54 +02:00
blackfin arch: Implement local64_t 2010-06-09 11:12:36 +02:00
cris Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
frv Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
h8300 Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
ia64 Merge commit 'v2.6.35-rc4' into perf/core 2010-07-05 08:30:58 +02:00
m32r Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
m68k arch: Implement local64_t 2010-06-09 11:12:36 +02:00
m68knommu Merge branch 'for-35' of git://repo.or.cz/linux-kbuild 2010-06-01 08:55:52 -07:00
microblaze Merge branch 'linus' into perf/core 2010-07-21 21:43:06 +02:00
mips Merge commit 'v2.6.35' into perf/core 2010-08-02 08:31:54 +02:00
mn10300 Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
parisc Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
powerpc perf: Factorize callchain context handling 2010-08-19 01:32:11 +02:00
s390 Merge commit 'v2.6.35' into perf/core 2010-08-02 08:31:54 +02:00
score arch: Implement local64_t 2010-06-09 11:12:36 +02:00
sh perf: Factorize callchain context handling 2010-08-19 01:32:11 +02:00
sparc perf: Factorize callchain context handling 2010-08-19 01:32:11 +02:00
um um: os-linux/mem.c needs sys/stat.h 2010-06-29 15:29:32 -07:00
x86 perf: Fix race in callchains 2010-08-19 01:32:31 +02:00
xtensa Merge commit 'v2.6.35-rc3' into perf/core 2010-06-18 10:53:19 +02:00
.gitignore
Kconfig Merge branch 'perf/nmi' into perf/core 2010-08-05 08:45:05 +02:00