1. 20 Sep, 2018 7 commits
    • Sean V Kelley's avatar
      perf vendor events arm64: Revise core JSON events for eMAG · d35c595b
      Sean V Kelley authored
      Split the PMU events into meaningful functional groups.  Update core pmu
      events based on supported ARMv8 recommended IMPLEMENTATION DEFINED
      events.
      
      The JSON files are updated with reference to a PMU table shared here:
      
        https://github.com/AmpereComputing/ampere-centos-kernel/blob/amp-centos-7.5-kernel/Documentation/arm64/eMAG-ARM-CoreImpDefined.pdf
      
      Changes in v3:
      - Removed CHAIN event as it wouldn't be useful in Perf - William
      - Will factor out events 0x00-0x38 in a follow-on patch - William
      - to armv8-recommended.json
      Changes in V2:
      - Provided documentation for changes - John, William
      - Broke up into meaningful groups - William
      Signed-off-by: default avatarSean V Kelley <seanvk.dev@oregontracks.org>
      Reviewed-by: default avatarWilliam Cohen <wcohen@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: linux-arm-kernel@lists.infradead.org
      LPU-Reference: 20180916221203.7935-1-seanvk.dev@oregontracks.org
      Link: https://lkml.kernel.org/n/tip-tzvs1ip6srcv2et0ny58e0wy@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d35c595b
    • Adrian Hunter's avatar
      perf intel-pt: Implement decoder flags for trace begin / end · bea63857
      Adrian Hunter authored
      Have the Intel PT decoder implement the new Intel PT decoder flags for
      trace begin / end.
      
      Previously, the decoder would indicate begin / end by a branch from / to
      zero. That hides useful information, in particular when a trace ends
      with a call. That happens when using address filters, for example:
      
        $ perf record -e intel_pt/cyc,mtc_period=0,noretcomp/u --filter='filter main @ /bin/uname ' uname Linux
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.031 MB perf.data ]
      
      Before:
      
        $ perf script --itrace=cre -Ftime,flags,ip,sym,symoff,addr --ns
         7249.622183310:   tr strt         0 [unknown] =>   401590 main+0x0
         7249.622183311:   call       4015b9 main+0x29 =>        0 [unknown]
         7249.622183711:   tr strt         0 [unknown] =>   4015be main+0x2e
         7249.622183714:   call       4015c8 main+0x38 =>        0 [unknown]
         7249.622247731:   tr strt         0 [unknown] =>   4015cd main+0x3d
         7249.622247760:   call       4015d7 main+0x47 =>        0 [unknown]
         7249.622248340:   tr strt         0 [unknown] =>   4015dc main+0x4c
         7249.622248341:   call       4015e1 main+0x51 =>        0 [unknown]
         7249.622248681:   tr strt         0 [unknown] =>   4015e6 main+0x56
         7249.622248682:   call       4015eb main+0x5b =>        0 [unknown]
         7249.622248970:   tr strt         0 [unknown] =>   4015f0 main+0x60
         7249.622248971:   call       401612 main+0x82 =>        0 [unknown]
         7249.622249757:   tr strt         0 [unknown] =>   401617 main+0x87
         7249.622249770:   call       401847 main+0x2b7 =>        0 [unknown]
         7249.622250606:   tr strt         0 [unknown] =>   40184c main+0x2bc
         7249.622250612:   call       4019bf main+0x42f =>        0 [unknown]
         7249.622256823:   tr strt         0 [unknown] =>   4019c4 main+0x434
         7249.622256863:   call       4019f5 main+0x465 =>        0 [unknown]
         7249.622264217:   tr strt         0 [unknown] =>   4019fa main+0x46a
         7249.622264235:   call       401832 main+0x2a2 =>        0 [unknown]
      
      After:
      
        $ perf script --itrace=cre -Ftime,flags,ip,sym,symoff,addr --ns
         7249.622183310:   tr strt              0 [unknown] =>   401590 main+0x0
         7249.622183311:   tr end  call    4015b9 main+0x29 =>   401ef0 set_program_name+0x0
         7249.622183711:   tr strt              0 [unknown] =>   4015be main+0x2e
         7249.622183714:   tr end  call    4015c8 main+0x38 =>   4014b0 setlocale@plt+0x0
         7249.622247731:   tr strt              0 [unknown] =>   4015cd main+0x3d
         7249.622247760:   tr end  call    4015d7 main+0x47 =>   4012d0 bindtextdomain@plt+0x0
         7249.622248340:   tr strt              0 [unknown] =>   4015dc main+0x4c
         7249.622248341:   tr end  call    4015e1 main+0x51 =>   4012b0 textdomain@plt+0x0
         7249.622248681:   tr strt              0 [unknown] =>   4015e6 main+0x56
         7249.622248682:   tr end  call    4015eb main+0x5b =>   404340 atexit+0x0
         7249.622248970:   tr strt              0 [unknown] =>   4015f0 main+0x60
         7249.622248971:   tr end  call    401612 main+0x82 =>   401320 getopt_long@plt+0x0
         7249.622249757:   tr strt              0 [unknown] =>   401617 main+0x87
         7249.622249770:   tr end  call    401847 main+0x2b7 =>   401360 uname@plt+0x0
         7249.622250606:   tr strt              0 [unknown] =>   40184c main+0x2bc
         7249.622250612:   tr end  call    4019bf main+0x42f =>   401b10 print_element+0x0
         7249.622256823:   tr strt              0 [unknown] =>   4019c4 main+0x434
         7249.622256863:   tr end  call    4019f5 main+0x465 =>   401340 __overflow@plt+0x0
         7249.622264217:   tr strt              0 [unknown] =>   4019fa main+0x46a
         7249.622264235:   tr end  call    401832 main+0x2a2 =>   401520 exit@plt+0x0
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-7-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      bea63857
    • Adrian Hunter's avatar
      perf intel-pt: Add decoder flags for trace begin / end · c6b5da09
      Adrian Hunter authored
      Previously, the decoder would indicate begin / end by a branch from / to
      zero. That hides useful information, in particular when a trace ends
      with a call. To prepare for remedying that, add Intel PT decoder flags
      for trace begin / end and map them to the existing sample flags.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-6-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c6b5da09
    • Adrian Hunter's avatar
      perf tools: Improve thread_stack__process() for trace begin / end · 2dcde4e1
      Adrian Hunter authored
      thread_stack__process() is used to create call paths for database
      export.  Improve the handling of trace begin / end to allow for a trace
      that ends in a call.
      
      Previously, the Intel PT decoder would indicate begin / end by a branch
      from / to zero. That hides useful information, in particular when a
      trace ends with a call. Before remedying that, enhance the thread stack
      so that it identifies the trace end by the flag instead of by ip == 0.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-5-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2dcde4e1
    • Adrian Hunter's avatar
      perf tools: Improve thread_stack__event() for trace begin / end · 4d60e5e3
      Adrian Hunter authored
      thread_stack__event() is used to create call stacks, by keeping track of
      calls and returns. Improve the handling of trace begin / end to allow
      for a trace that ends in a call.
      
      Previously, the Intel PT decoder would indicate begin / end by a branch
      from / to zero. That hides useful information, in particular when a
      trace ends with a call. Before remedying that, enhance the thread stack
      so that it does not expect to see the 'return' for a 'call' that ends
      the trace.
      
      Committer notes:
      
      Added this:
      
                      return thread_stack__push(thread->ts, ret_addr,
      -                                         flags && PERF_IP_FLAG_TRACE_END);
      +                                         flags & PERF_IP_FLAG_TRACE_END);
      
      To fix problem spotted by:
      
      debian:9:            clang version 3.8.1-24 (tags/RELEASE_381/final)
      debian:experimental: clang version 6.0.1-6 (tags/RELEASE_601/final)
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-4-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4d60e5e3
    • Adrian Hunter's avatar
      perf db-export: Add trace begin / end branch type variants · ff645daf
      Adrian Hunter authored
      Add branch types to cover different combinations with "trace begin" or
      "trace end".
      
      Previously, the Intel PT decoder would indicate begin / end by a branch
      from / to zero. That hides useful information, in particular when a
      trace ends with a call. Before remedying that, prepare the database
      export to export branch types with more combinations that include trace
      begin / end.  In those cases extend the descriptions to include 'trace
      begin' and 'trace end' separately.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-3-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ff645daf
    • Adrian Hunter's avatar
      perf script: Enhance sample flags for trace begin / end · 62cb1b88
      Adrian Hunter authored
      Allow for different combinations of sample flags with "trace begin" or
      "trace end".
      
      Previously, the Intel PT decoder would indicate begin / end by a branch
      from / to zero. That hides useful information, in particular when a
      trace ends with a call. Before remedying that, prepare 'perf script' to
      display sample flags with more combinations that include trace begin /
      end. In those cases display 'tr start' and 'tr end' separately.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20180920130048.31432-2-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      62cb1b88
  2. 19 Sep, 2018 31 commits
  3. 18 Sep, 2018 2 commits