Centos-kernel-stream-9/tools
David Miller 35d48ddfc0 perf tools: Fix mmap limitations on 32-bit
This is a suggested patch to fix the bug I reported at:

	http://marc.info/?l=linux-kernel&m=135033028924652&w=2

Essentially, there is a hard requirement that when perf analyzes a
trace, it must have the entire thing mmap()'d.

Therefore the scheme used on 32-bit where we have a fixed (8) number of
32MB mmaps, and cycle through them, simply does not work.

One of the reasons this requirement exists is because the iterators
maintain references to perf entry objects and those references don't
just simply go away when this mmap code decides to cycle an old mmap
area out and reuse it.  At this point, those entry pointers now point to
garbage resulting in unpredictable behavior and crashes.

It is better to try to mmap() as much as we can and if we do actually
run into address space limitations, the failure of the mmap() call will
indicate that and stop processing.

I noticed that perf_session->mmap_window is set to a constant in one
location, and only used in one other location.  So I got rid of it
altogether.

So we adjust the size of the mmaps[] array to the maximum we could need.
On 64-bit we only need one slot.  On 32-bit we could need up to 128 (128
* 32MB == 4GB).

I've verified that this allows a large (~600MB) perf.data file to be
analyzed properly with a 32-bit perf binary, which previously was not
possible.

Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20121110.141219.582924082787523608.davem@davemloft.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-12-09 08:46:05 -03:00
..
firewire
hv tools/hv: Parse /etc/os-release 2012-09-10 16:43:32 -07:00
include/tools tools/include: Add byteshift headers for endian access 2012-02-28 10:22:51 -08:00
lguest lguest: fix occasional crash in example launcher. 2012-10-04 12:12:59 +09:30
lib/traceevent tools lib traceevent: Use 'const' in variables pointing to const strings 2012-11-09 17:42:47 -03:00
nfsd
perf perf tools: Fix mmap limitations on 32-bit 2012-12-09 08:46:05 -03:00
power tools/power turbostat: graceful fail on garbage input 2012-11-01 00:22:00 -04:00
scripts tools: Pass the target in descend 2012-11-19 22:10:36 +00:00
testing revert "epoll: support for disabling items, and a self-test app" 2012-11-09 06:41:46 +01:00
usb tools/usb: remove last USBFS user 2012-09-10 11:10:37 -07:00
virtio tools: Fix pthread flag for Makefile of trace-agent used by virtio-trace 2012-09-28 15:05:13 +09:30
vm UAPI: fix tools/vm/page-types.c 2012-10-25 14:37:53 -07:00
Makefile tools: Define a Makefile function to do subdir processing 2012-11-19 22:10:14 +00:00