android_kernel_motorola_sm6375/tools/perf
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jiri Olsa 268fb20f83 perf session: Handle endianity swap on sample_id_all header data
Adding endianity swapping for event header attached via sample_id_all.

Currently we dont do that and it's causing wrong data to be read when
running report on architecture with different endianity than the record.

The perf is currently able to process 32-bit PPC samples on 32-bit
and 64-bit x86.

Together with other endianity patches, this change fixies perf report
discrepancies on origin and target systems as described in test 1
below, e.g. following perf report diff:

...
      0.12%               ps  [kernel.kallsyms]    [k] clear_page
-     0.12%              awk  bash                 [.] alloc_word_desc
+     0.12%              awk  bash                 [.] yyparse
      0.11%   beah-rhts-task  libpython2.6.so.1.0  [.] 0x5560e
      0.10%             perf  libc-2.12.so         [.] __ctype_toupper_loc
-     0.09%  rhts-test-runne  bash                 [.] maybe_make_export_env
+     0.09%  rhts-test-runne  bash                 [.] 0x385a0
      0.09%               ps  [kernel.kallsyms]    [k] page_fault
...

Note, running following to test perf endianity handling:
test 1)
  - origin system:
    # perf record -a -- sleep 10 (any perf record will do)
    # perf report > report.origin
    # perf archive perf.data

  - copy the perf.data, report.origin and perf.data.tar.bz2
    to a target system and run:
    # tar xjvf perf.data.tar.bz2 -C ~/.debug
    # perf report > report.target
    # diff -u report.origin report.target

  - the diff should produce no output
    (besides some white space stuff and possibly different
     date/TZ output)

test 2)
  - origin system:
    # perf record -ag -fo /tmp/perf.data -- sleep 1
  - mount origin system root to the target system on /mnt/origin
  - target system:
    # perf script --symfs /mnt/origin -I -i /mnt/origin/tmp/perf.data \
     --kallsyms /mnt/origin/proc/kallsyms
  - complete perf.data header is displayed

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Tested-by: David Ahern <dsahern@gmail.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1338380624-7443-3-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-05-31 11:58:14 -03:00
..
arch perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
bench perf tool: Fix perf stack to non executable on x86_64 2012-02-06 19:14:17 -02:00
config perf report: Add a simple GTK2-based 'perf report' browser 2012-03-19 15:13:29 -03:00
Documentation Merge branch 'linus' into perf/urgent 2012-05-30 10:59:04 +02:00
python perf python: Use attr.watermark in twatch.py 2012-01-30 18:38:23 -02:00
scripts
ui perf annotate browser: Fix help window entry for navigating to hottest line 2012-05-30 12:31:44 -03:00
util perf session: Handle endianity swap on sample_id_all header data 2012-05-31 11:58:14 -03:00
.gitignore perf tools: Ignore auto-generated bison/flex files 2012-04-14 13:50:39 -03:00
builtin-annotate.c perf tools: Convert critical messages to ui__error() 2012-05-29 11:53:42 -03:00
builtin-bench.c perf bench: Also allow measuring memset() 2012-01-24 20:25:32 -02:00
builtin-buildid-cache.c
builtin-buildid-list.c perf buildid-list: Work better with pipe mode 2012-05-22 13:03:54 -03:00
builtin-diff.c perf diff: Fix to work with new hists design 2012-03-22 15:12:09 -03:00
builtin-evlist.c perf evlist: Explicititely initialize input_name 2012-05-23 21:47:51 -03:00
builtin-help.c
builtin-inject.c perf inject: Fix broken perf inject -b 2012-05-22 12:59:28 -03:00
builtin-kmem.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
builtin-kvm.c perf kvm: Do guest-only counting by default 2012-01-06 15:47:37 -02:00
builtin-list.c
builtin-lock.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
builtin-probe.c perf probe: Detect probe target when m/x options are absent 2012-05-11 13:58:53 -03:00
builtin-record.c perf tools: Convert critical messages to ui__error() 2012-05-29 11:53:42 -03:00
builtin-report.c perf callchain: Make callchain cursors TLS 2012-05-31 10:47:12 -03:00
builtin-sched.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
builtin-script.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
builtin-stat.c perf stat: Initialize default events wrt exclude_{guest,host} 2012-05-30 14:02:38 -03:00
builtin-test.c perf test: Move parse event automated tests to separated object 2012-05-22 11:19:16 -03:00
builtin-timechart.c perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
builtin-top.c perf callchain: Make callchain cursors TLS 2012-05-31 10:47:12 -03:00
builtin.h
command-list.txt
CREDITS
design.txt perf tools: Update ioctl documentation for PERF_IOC_FLAG_GROUP 2012-05-31 11:38:42 -03:00
Makefile perf tools: Do not use _FORTIFY_SOURCE when DEBUG=1 is specified 2012-05-24 14:48:39 -03:00
MANIFEST perf tools: Fix make tarballs 2012-05-30 15:05:59 -03:00
perf-archive.sh perf archive: Correct cutting of symbolic link 2012-04-14 13:52:15 -03:00
perf.c perf tools: Simplify debugfs mountpoint handling code 2011-11-28 10:11:28 -02:00
perf.h perf record: Fix branch_stack type in perf_record_opts 2012-05-25 18:32:44 -03:00