1. 25 Apr, 2012 3 commits
    • Arnaldo Carvalho de Melo's avatar
      perf annotate: Mark jump instructions with no offset · fb29fa58
      Arnaldo Carvalho de Melo authored
      I.e. jumps that go to code outside the current function, that is denoted
      in objdump -dS as:
      
         399f877a9f: jne    399f87bcf4 <_L_lock_5154>
      
      I.e. without the + after the name of the current function, like in:
      
         399f877aa5: jmp    399f877ab2 <_int_free+0x412>
      
      The browser will use that info to avoid drawing connectors to the start
      of the function, since ops.target.addr was zero.
      
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-xrn35g2mlawz1ydo1p73w3q6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      fb29fa58
    • Arnaldo Carvalho de Melo's avatar
      perf annotate: Disambiguage offsets and addresses in operands · 44d1a3ed
      Arnaldo Carvalho de Melo authored
      We were using ins_ops->target for callq addresses and jump offsets,
      disambiguate by having ins_ops->target.addr and ins_ops->target.offset.
      
      For jumps we'll need both to fixup lines that don't have an offset on
      the <> part.
      
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-3nlcmstua75u07ao7wja1rwx@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      44d1a3ed
    • Arnaldo Carvalho de Melo's avatar
      perf annotate browser: Handle NULL jump targets · 9481ede9
      Arnaldo Carvalho de Melo authored
      In annotate_browser__mark_jump_targets
      
      702                     dlt = browser->offsets[dl->ops.target];
      703                     bdlt = disasm_line__browser(dlt);
      704                     bdlt->jump_target = true;
      705             }
      706
      707     }
      
      (gdb) p size
      $5 = 2415
      (gdb) p offset
      $6 = 140
      (gdb) p dl->ops.target
      $7 = 143
      (gdb) p browser->offsets[143]
      $8 = (struct disasm_line *) 0x0
      (gdb) p dl->name
      $9 = 0x2363bd0 "je"
      (gdb)
      
      Really strange, the code assumed that at the jump target we would have
      an assembly line, but only in the previous instruction offset we have a
      'lock':
      
      (gdb) p browser->offsets[144]
      $10 = (struct disasm_line *) 0x0
      (gdb) p browser->offsets[142]
      $11 = (struct disasm_line *) 0x27bd620
      (gdb) p browser->offsets[142]->name
      $12 = 0x237a8a0 "lock"
      (gdb)
      
      I'll study this more, but for now I'll just check if there is a
      disasm_line at dl->ops.target, i.e. a valid jump target.
      Reported-by: default avatarHagen Paul Pfeifer <hagen@jauu.net>
      Reported-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-inzjrzyqhkzyv78met2vula6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9481ede9
  2. 24 Apr, 2012 1 commit
    • Arnaldo Carvalho de Melo's avatar
      perf annotate browser: Initial loop detection · a3f895be
      Arnaldo Carvalho de Melo authored
      Simple algorithm, just look for the next backward jump that points to
      before the cursor.
      
      Then draw an arrow connecting the jump to its target.
      
      Do this as you move the cursor, entering/exiting possible loops.
      
      Ex (graph chars replaced to avoid mail encoding woes):
      
      avc_has_perm_flags
          0.00 |         nopl   0x0(%rax)
          5.36 |+-> 68:  mov    (%rax),%rax
          5.15 ||        test   %rax,%rax
          0.00 ||      v je     130
          2.96 ||   74:  cmp    -0x20(%rax),%ebx
         47.38 ||        lea    -0x20(%rax),%rcx
          0.28 ||      ^ jne    68
          3.16 ||        cmp    -0x18(%rax),%dx
          0.00 |+------^ jne    68
          4.92 |         cmp    0x4(%rcx),%r13d
          0.00 |       v jne    68
          1.15 |         test   %rcx,%rcx
          0.00 |       v je     130
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-5gairf6or7dazlx3ocxwvftm@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a3f895be
  3. 20 Apr, 2012 7 commits
  4. 19 Apr, 2012 8 commits
  5. 18 Apr, 2012 2 commits
  6. 16 Apr, 2012 3 commits
  7. 13 Apr, 2012 2 commits
    • Ingo Molnar's avatar
      Merge tag 'v3.4-rc2' into perf/core · a385ec4f
      Ingo Molnar authored
      Merge Linux 3.4-rc2: we were on v3.3, update the base.
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      a385ec4f
    • Ingo Molnar's avatar
      Merge tag 'perf-core-for-mingo' of... · 659c36fc
      Ingo Molnar authored
      Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Fixes and improvements for perf/core:
      
      . Overhaul the tools/ makefiles, gluing them to the top level Makefile, from
        Borislav Petkov.
      
      . Move the UI files from tools/perf/util/ui/ to tools/perf/ui/. Also move
        the GTK+ browser to tools/perf/ui/gtk/, from Namhyung Kim.
      
      . Only fallback to sw cycles counter on ENOENT for the hw cycles, from
        Robert Richter
      
      . Trivial fixes from Robert Richter
      
      . Handle the autogenerated bison/flex files better, from Namhyung and Jiri Olsa.
      
      . Navigate jump instructions in the annotate browser, just press enter or ->,
        still needs support for a jump navigation history, i.e. to go back.
      
      . Search string in the annotate browser: same keys as vim:
           / forward
           n next backward/forward
           ? backward
      
      . Clarify number of events/samples in the report header, from Ashay Rane
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      659c36fc
  8. 11 Apr, 2012 13 commits
  9. 08 Apr, 2012 1 commit