linux/arch/powerpc/perf
Anton Blanchard 85101af13b powerpc/perf: Fix ABIv2 kernel backtraces
ABIv2 kernels are failing to backtrace through the kernel. An example:

39.30%  readseek2_proce  [kernel.kallsyms]    [k] find_get_entry
            |
            --- find_get_entry
               __GI___libc_read

The problem is in valid_next_sp() where we check that the new stack
pointer is at least STACK_FRAME_OVERHEAD below the previous one.

ABIv1 has a minimum stack frame size of 112 bytes consisting of 48 bytes
and 64 bytes of parameter save area. ABIv2 changes that to 32 bytes
with no paramter save area.

STACK_FRAME_OVERHEAD is in theory the minimum stack frame size,
but we over 240 uses of it, some of which assume that it includes
space for the parameter area.

We need to work through all our stack defines and rationalise them
but let's fix perf now by creating STACK_FRAME_MIN_SIZE and using
in valid_next_sp(). This fixes the issue:

30.64%  readseek2_proce  [kernel.kallsyms]    [k] find_get_entry
            |
            --- find_get_entry
               pagecache_get_page
               generic_file_read_iter
               new_sync_read
               vfs_read
               sys_read
               syscall_exit
               __GI___libc_read

Cc: stable@vger.kernel.org # 3.16+
Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
2014-09-09 19:02:45 +10:00
..
Makefile powerpc/perf: Add kconfig option for hypervisor provided counters 2014-03-24 09:48:32 +11:00
bhrb.S powerpc/perf: Add basic assembly code to read BHRB entries on POWER8 2013-04-26 16:11:11 +10:00
callchain.c powerpc/perf: Fix ABIv2 kernel backtraces 2014-09-09 19:02:45 +10:00
core-book3s.c powerpc/perf: Add per-event excludes on Power8 2014-07-28 14:30:58 +10:00
core-fsl-emb.c powerpc/perf: add 2 additional performance monitor counters for e6500 core 2013-08-07 18:38:03 -05:00
e500-pmu.c powerpc/perf: Add stalled-cycles events 2013-01-10 17:00:56 +11:00
e6500-pmu.c powerpc/perf: Add e6500 PMU driver 2013-08-07 18:38:04 -05:00
hv-24x7-catalog.h powerpc/perf: Add 24x7 interface headers 2014-03-24 09:48:29 +11:00
hv-24x7.c powerpc/perf/hv-24x7: Use kmem_cache_free 2014-08-13 15:14:04 +10:00
hv-24x7.h powerpc/perf: Add 24x7 interface headers 2014-03-24 09:48:29 +11:00
hv-common.c powerpc/perf: Add a shared interface to get gpci version and capabilities 2014-03-24 09:48:30 +11:00
hv-common.h powerpc/perf: Add macros for defining event fields & formats 2014-03-24 09:48:31 +11:00
hv-gpci.c powerpc, perf: Use common PMU interrupt disabled code 2014-07-05 11:21:51 +02:00
hv-gpci.h powerpc/perf: Add hv_gpci interface header 2014-03-24 09:48:29 +11:00
mpc7450-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power4-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power5+-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power5-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power6-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power7-events-list.h powerpc/perf: Make some new raw event codes available in sysfs 2014-03-24 09:48:23 +11:00
power7-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power8-pmu.c powerpc/perf: Add per-event excludes on Power8 2014-07-28 14:30:58 +10:00
ppc970-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00