1. 20 12月, 2020 1 次提交
  2. 19 12月, 2020 1 次提交
    • A
      perf trace beauty: Update copy of linux/socket.h with the kernel sources · eb2842da
      Arnaldo Carvalho de Melo 提交于
      This just triggers the rebuilding of the syscall beautifiers that
      extract patterns from this file due to this cset:
      
        b713c195 ("net: provide __sys_shutdown_sock() that takes a socket")
      
      After updating it:
      
          CC       /tmp/build/perf/trace/beauty/sockaddr.o
      
      Addressing this perf build warning:
      
        Warning: Kernel ABI header at 'tools/perf/trace/beauty/include/linux/socket.h' differs from latest version at 'include/linux/socket.h'
        diff -u tools/perf/trace/beauty/include/linux/socket.h include/linux/socket.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      eb2842da
  3. 18 12月, 2020 22 次提交
    • J
      perf tools: Reformat record's control fd man text · feca8a83
      Jiri Olsa 提交于
      Adding available control commands in separate paragraph, so it's more
      readable and easier to add new commands.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Budankov <abudankov@huawei.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20201216083914.47215-2-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      feca8a83
    • N
      perf config: Fix example command in manpage to conform to syntax specified in the SYNOPSIS section. · 526671bf
      Nick Thompson 提交于
      Committer testing:
      
      With the previously documented example:
      
        $ perf config --user report sort-order=srcline
        The config variable does not contain a section name: report
        $
      
      With the fixed example line:
      
        $ perf config --user report.sort-order=srcline
        $ perf config --user report.sort-order
        report.sort-order=srcline
        $
      Signed-off-by: NNick Thompson <nathompson7@protonmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lore.kernel.org/linux-perf-users/20201217142619.GA14524@redhat.com/Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      526671bf
    • A
      perf test: Make sample-parsing test aware of PERF_SAMPLE_{CODE,DATA}_PAGE_SIZE · dc67d192
      Arnaldo Carvalho de Melo 提交于
      To fix this:
      
        $ perf test -v 27
        27: Sample parsing                                                  :
        --- start ---
        test child forked, pid 586013
        sample format has changed, some new PERF_SAMPLE_ bit was introduced - test needs updating
        test child finished with -1
        ---- end ----
        Sample parsing: FAILED!
        $
      
      This patchset is still not completely merged, so when adding the
      PERF_SAMPLE_CODE_PAGE_SIZE to 'struct perf_sample' we need to add the
      bits added in this patch for 'perf_sample.data_page_size'.
      
      Fixes: 251cc77b8176de37 ("tools headers UAPI: Update tools's copy of linux/perf_event.h")
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      dc67d192
    • J
      perf tools: Add support to read build id from compressed elf · 47dce51a
      Jiri Olsa 提交于
      Adding support to decompress file before reading build id.
      
      Adding filename__read_build_id and change its current versions to
      read_build_id.
      
      Shutting down stderr output of perf list in the shell test:
        82: Check open filename arg using perf trace + vfs_getname          : Ok
      
      because with decompression code in the place we the
      filename__read_build_id function is more verbose in case
      of error and the test did not account for that.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Budankov <abudankov@huawei.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Song Liu <songliubraving@fb.com>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20201214105457.543111-7-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      47dce51a
    • J
      perf debug: Add debug_set_file function · 8abceacf
      Jiri Olsa 提交于
      Allow to set debug output file via new debug_set_file function.
      
      It's called during perf startup in perf_debug_setup to set stderr file
      as default and any perf command can set it later to different file.
      
      It will be used in perf daemon command to get verbose output into log
      file.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Budankov <abudankov@huawei.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20201212104358.412065-2-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8abceacf
    • J
      perf tools: Add evlist__disable_evsel/evlist__enable_evsel · 7cfcd1e0
      Jiri Olsa 提交于
      Adding interface to enable/disable single event in the evlist based on
      its name. It will be used later in new control enable/disable interface.
      
      Keeping the evlist::enabled true when one or more events are enabled so
      the toggle can work properly and toggle evlist to disabled state.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Acked-by: NAlexei Budankov <abudankov@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Link: https://lore.kernel.org/r/20201210204330.233864-2-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7cfcd1e0
    • N
      perf evlist: Support pipe mode display · 96aea4da
      Namhyung Kim 提交于
      Likewise, perf evlist command should print event attributes by reading
      PERF_RECORD_HEADER_ATTR records.
      
      Before:
        $ perf record -o- true | ./perf evlist -i-
        (prints nothing)
      
      After:
        $ perf record -o- true | ./perf evlist -i-
        cycles:pppH
      
      Committer testing:
      
      Verbose mode also works as expected:
      
        $ perf record -o- true | perf evlist -i-
        cycles:uhH
        $ perf record -o- true | perf evlist -vi-
        cycles:uhH: size: 120, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ID|PERIOD, read_format: ID, disabled: 1, inherit: 1, exclude_kernel: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
        $
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: https://lore.kernel.org/r/20201210061302.88213-2-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      96aea4da
    • N
      perf report: Support --header-only for pipe mode · 03de8656
      Namhyung Kim 提交于
      The --header-only checks file header and prints the feature data.  But
      as pipe mode doesn't have it in the header it prints almost nothing.
      Change it to process first few records until it founds HEADER_FEATURE.
      
      Before:
        $ perf record -o- true | perf report -i- --header-only
        # ========
        # captured on    : Thu Dec 10 14:34:59 2020
        # header version : 1
        # data offset    : 0
        # data size      : 0
        # feat offset    : 0
        # ========
        #
      
      After:
        $ perf record -o- true | perf report -i- --header-only
        # ========
        # captured on    : Thu Dec 10 14:49:11 2020
        # header version : 1
        # data offset    : 0
        # data size      : 0
        # feat offset    : 0
        # ========
        #
        # hostname : balhae
        # os release : 5.7.17-1xxx
        # perf version : 5.10.rc6.gdb0ea13c
        # arch : x86_64
        # nrcpus online : 8
        # nrcpus avail : 8
        # cpudesc : Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz
        # cpuid : GenuineIntel,6,142,12
        # total memory : 16158916 kB
        # cmdline : perf record -o- true
        # event : name = cycles, , id = { 81, 82, 83, 84, 85, 86, 87, 88 }, size = 120, ...
        # CPU_TOPOLOGY info available, use -I to display
        # NUMA_TOPOLOGY info available, use -I to display
        # pmu mappings: intel_pt = 9, intel_bts = 8, software = 1, power = 20, uprobe = 7, ...
        # time of first sample : 0.000000
        # time of last sample : 0.000000
        # sample duration :      0.000 ms
        # MEM_TOPOLOGY info available, use -I to display
        # cpu pmu capabilities: branches=32, max_precise=3, pmu_name=skylake
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: https://lore.kernel.org/r/20201210061302.88213-1-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      03de8656
    • J
      perf vendor events: Add JSON metrics for imx8mm DDR Perf · e15a5365
      Joakim Zhang 提交于
      Add JSON metrics for imx8mm DDR Perf.
      Signed-off-by: NJoakim Zhang <qiangqing.zhang@nxp.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Link: http://lore.kernel.org/lkml/1607080216-36968-11-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e15a5365
    • J
      perf metricgroup: Support adding metrics for system PMUs · be335ec2
      John Garry 提交于
      Currently adding metrics for core- or uncore-based events matched by CPUID
      is supported.
      
      Extend this for system events.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-10-git-send-email-john.garry@huawei.com
      [ Reorder 'struct metricgroup_add_iter_data' field to avoid alignment holes ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      be335ec2
    • J
      perf metricgroup: Support printing metric groups for system PMUs · a36fadb1
      John Garry 提交于
      Currently printing metricgroups for core- or uncore-based events matched
      by CPUID is supported.
      
      Extend this for system events.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-9-git-send-email-john.garry@huawei.com
      [ Reorder 'struct metricgroup_print_sys_idata' field to avoid alignment holes ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a36fadb1
    • J
      perf metricgroup: Split up metricgroup__print() · f6fe1e48
      John Garry 提交于
      To aid supporting system event metric groups, break up the function
      metricgroup__print() into a part which iterates metrics and a part which
      actually "prints" the metric.
      
      No functional change intended.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-8-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f6fe1e48
    • J
      perf metricgroup: Fix metrics using aliases covering multiple PMUs · c2337d67
      John Garry 提交于
      Support for metric expressions using aliases which cover multiple PMUs
      is broken. Consider the following test metric expression:
      
        "MetricExpr": "UNC_CBO_XSNP_RESPONSE.MISS_XCORE * UNC_CBO_XSNP_RESPONSE.MISS_EVICTION"
      
      When used on my broadwell, "perf stat" gives:
      
        unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_1/umask=0x81,event=0x22/
        unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_0/umask=0x81,event=0x22/
        unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_1/umask=0x41,event=0x22/
        unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_0/umask=0x41,event=0x22/
        Control descriptor is not initialized
        unc_cbo_xsnp_response.miss_eviction: 3645925 1000850523 1000850523
        unc_cbo_xsnp_response.miss_xcore: 106850 1000850523 1000850523
      
         Performance counter stats for 'system wide':
      
                 3,645,925      unc_cbo_xsnp_response.miss_eviction # 389567086250.00 test_metric_inc
                   106,850      unc_cbo_xsnp_response.miss_xcore
      
               1.000883096 seconds time elapsed
      
      Notice that only the results from one PMU are included. Fix the logic of
      find_evsel_group() to enable events which apply to multiple PMUs, by
      checking if the event pmu_name matches that of the metric event.
      
      With that, "perf stat" now gives:
      
        unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_1/umask=0x81,event=0x22/
        unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_0/umask=0x81,event=0x22/
        unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_1/umask=0x41,event=0x22/
        unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_0/umask=0x41,event=0x22/
        Control descriptor is not initialized
        unc_cbo_xsnp_response.miss_eviction: 4237983 1000904100 1000904100
        unc_cbo_xsnp_response.miss_xcore: 218643 1000904100 1000904100
        unc_cbo_xsnp_response.miss_eviction: 4254148 1000902629 1000902629
        unc_cbo_xsnp_response.miss_xcore: 213352 1000902629 1000902629
      
         Performance counter stats for 'system wide':
      
                 4,237,983      unc_cbo_xsnp_response.miss_eviction # 3668558131345.00 test_metric_inc
                   218,643      unc_cbo_xsnp_response.miss_xcore
                 4,254,148      unc_cbo_xsnp_response.miss_eviction
                   213,352      unc_cbo_xsnp_response.miss_xcore
      
               1.000938151 seconds time elapsed
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-7-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      c2337d67
    • J
      perf evlist: Change evlist__splice_list_tail() ordering · 6d2783fe
      John Garry 提交于
      Function find_evsel_group() expects events to be ordered such that they
      are grouped after their leader.
      
      Modify evlist__splice_list_tail() to guarantee this (ordering).
      
      [Should prob also change the function name]
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-6-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6d2783fe
    • J
      perf pmu: Add pmu_add_sys_aliases() · 4513c719
      John Garry 提交于
      Add pmu_add_sys_aliases() to add system PMU events aliases.
      
      For adding system PMU events, iterate through all the events for all SoC
      event tables in pmu_sys_event_tables[].
      
      Matches must satisfy both:
      - PMU identifier matches event "compat" value
      - event "Unit" member must match, same as uncore event aliases matched by
        CPUID
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-5-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4513c719
    • J
      perf pmu: Add pmu_id() · 51d54847
      John Garry 提交于
      Add a function to read the PMU id sysfs entry. This is only done for uncore
      PMUs where this would possibly be relevant.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-4-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      51d54847
    • J
      perf jevents: Add support for system events tables · 4689f567
      John Garry 提交于
      Process the JSONs to find support for "system" events, which are not
      tied to a specific CPUID.
      
      A "COMPAT" property is now used to match against the namespace ID from
      the kernel PMU driver.
      
      The generated pmu-events.c will now have 2 tables:
      
      a. CPU events, as before.
      b. New pmu_sys_event_tables[] table, which will have events matched to
         specific SoCs.
      
      It will look like this:
      
      struct pmu_event pme_hisilicon_hip09_sys[] = {
      {
      	.name = "cycles",
      	.compat = "0x00030736",
      	.event = "event=0",
      	.desc = "Clock cycles",
      	.topic = "smmu v3 pmcg",
      	.long_desc = "Clock cycles",
      },
      {
      	.name = "smmuv3_pmcg.l1_tlb",
      	.compat = "0x00030736",
      	.event = "event=0x8a",
      	.desc = "SMMUv3 PMCG l1_tlb. Unit: smmuv3_pmcg ",
      	.topic = "smmu v3 pmcg",
      	.long_desc = "SMMUv3 PMCG l1_tlb",
      	.pmu = "smmuv3_pmcg",
      },
      ...
      };
      
      struct pmu_event pme_arm_cortex_a53[] = {
      {
      	.name = "ext_mem_req",
      	.event = "event=0xc0",
      	.desc = "External memory request",
      	.topic = "memory",
      },
      {
      	.name = "ext_mem_req_nc",
      	.event = "event=0xc1",
      	.desc = "Non-cacheable external memory request",
      	.topic = "memory",
      },
      ...
      };
      
      struct pmu_event pme_hisilicon_hip09_cpu[] = {
      {
      	.name = "l2d_cache_refill_wr",
      	.event = "event=0x53",
      	.desc = "L2D cache refill, write",
      	.topic = "core imp def",
      	.long_desc = "Attributable Level 2 data cache refill, write",
      },
      ...
      };
      
      struct pmu_events_map pmu_events_map[] = {
      {
      	.cpuid = "0x00000000410fd030",
      	.version = "v1",
      	.type = "core",
      	.table = pme_arm_cortex_a53
      },
      {
      	.cpuid = "0x00000000480fd010",
      	.version = "v1",
      	.type = "core",
      	.table = pme_hisilicon_hip09_cpu
      },
      	{
      		.table = 0
      	},
      };
      
      struct pmu_event pme_hisilicon_hip09_cpu[] = {
      {
      	.name = "uncore_hisi_l3c.rd_cpipe",
      	.event = "event=0",
      	.desc = "Total read accesses. Unit: hisi_sccl,l3c ",
      	.topic = "uncore l3c",
      	.long_desc = "Total read accesses",
      	.pmu = "hisi_sccl,l3c",
      },
      {
      	.name = "uncore_hisi_l3c.wr_cpipe",
      	.event = "event=0x1",
      	.desc = "Total write accesses. Unit: hisi_sccl,l3c ",
      	.topic = "uncore l3c",
      	.long_desc = "Total write accesses",
      	.pmu = "hisi_sccl,l3c",
      },
      ...
      };
      
      struct pmu_sys_events pmu_sys_event_tables[] = {
      {
      	.table = pme_hisilicon_hip09_sys,
      },
      ...
      };
      
      Committer notes:
      
      Added the fix for architectures without PMU events, provided by John
      after I reported the build failing in such systems.
      
      Link: https://lore.kernel.org/lkml/650baaf2-36b6-a9e2-ff49-963ef864c1f3@huawei.com/Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-3-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4689f567
    • J
      perf jevents: Add support for an extra directory level · 4853f1ca
      John Garry 提交于
      Currently only upto a level 2 directory is supported, in form
      vendor/platform.
      
      Add support for a further level, to support vendor/platform
      sub-directories in future, which will be vendor/platform/cpu and
      vendor/platform/sys.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Acked-by: NKajol Jain <kjain@linux.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kim Phillips <kim.phillips@amd.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linuxarm@huawei.com
      Link: http://lore.kernel.org/lkml/1607080216-36968-2-git-send-email-john.garry@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4853f1ca
    • A
      perf evsel: Emit warning about kernel not supporting the data page size sample_type bit · 456ef4c1
      Arnaldo Carvalho de Melo 提交于
      Before we had this unhelpful message:
      
        $ perf record --data-page-size sleep 1
        Error:
        The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles:u).
        /bin/dmesg | grep -i perf may provide additional information.
        $
      
      Add support to the perf_missing_features variable to remember what
      caused evsel__open() to fail and then use that information in
      evsel__open_strerror().
      
        $ perf record --data-page-size sleep 1
        Error:
        Asking for the data page size isn't supported by this kernel.
        $
      
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Will Deacon <will@kernel.org>
      Link: http://lore.kernel.org/lkml/20201207170759.GB129853@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      456ef4c1
    • K
      perf record: Support new sample type for data page size · 542b88fd
      Kan Liang 提交于
      Support new sample type PERF_SAMPLE_DATA_PAGE_SIZE for page size.
      
      Add new option --data-page-size to record sample data page size.
      Signed-off-by: NKan Liang <kan.liang@linux.intel.com>
      Acked-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Will Deacon <will@kernel.org>
      Link: http://lore.kernel.org/lkml/20201130172803.2676-3-kan.liang@linux.intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      542b88fd
    • J
      perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder · bf53fc6b
      Jan Kratochvil 提交于
      elfutils needs to be provided main binary and separate debug info file
      respectively. Providing separate debug info file instead of the main
      binary is not sufficient.
      
      One needs to try both supplied filename and its possible cache by its
      build-id depending on the use case.
      Signed-off-by: NJan Kratochvil <jan.kratochvil@redhat.com>
      Tested-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      bf53fc6b
    • Z
      perf record: Fix memory leak when using '--user-regs=?' to list registers · 2eb5dd41
      Zheng Zengkai 提交于
      When using 'perf record's option '-I' or '--user-regs=' along with
      argument '?' to list available register names, memory of variable 'os'
      allocated by strdup() needs to be released before __parse_regs()
      returns, otherwise memory leak will occur.
      
      Fixes: bcc84ec6 ("perf record: Add ability to name registers to record")
      Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Li Bin <huawei.libin@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lore.kernel.org/r/20200703093344.189450-1-zhengzengkai@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      2eb5dd41
  4. 15 12月, 2020 1 次提交
    • K
      perf test: Fix metric parsing test · b2ce5dbc
      Kajol Jain 提交于
      Commit e1c92a7f ("perf tests: Add another metric parsing test") add
      another test for metric parsing. The test goes through all metrics
      compiled for arch within pmu events and try to parse them.
      
      Right now this test is failing in powerpc machine.
      
      Result in power9 platform:
      
        [command]# ./perf test 10
        10: PMU events                                                      :
        10.1: PMU event table sanity                                        : Ok
        10.2: PMU event map aliases                                         : Ok
        10.3: Parsing of PMU event table metrics                            : Skip (some metrics failed)
        10.4: Parsing of PMU event table metrics with fake PMUs             : FAILED!
      
      Issue is we are passing different runtime parameter value in
      "expr__find_other" and "expr__parse" function which is called from
      function `metric_parse_fake`.  And because of this parsing of hv-24x7
      metrics is failing.
      
        [command]# ./perf test 10 -vv
        .....
        hv_24x7/pm_mcs01_128b_rd_disp_port01,chip=1/ not found
        expr__parse failed
        test child finished with -1
        ---- end ----
        PMU events subtest 4: FAILED!
      
      This patch fix this issue and change runtime parameter value to '0' in
      expr__parse function.
      
      Result in power9 platform after this patch:
      
        [command]# ./perf test 10
        10: PMU events                                                      :
        10.1: PMU event table sanity                                        : Ok
        10.2: PMU event map aliases                                         : Ok
        10.3: Parsing of PMU event table metrics                            : Skip (some metrics failed)
        10.4: Parsing of PMU event table metrics with fake PMUs             : Ok
      
      Fixes: e1c92a7f ("perf tests: Add another metric parsing test")
      Signed-off-by: NKajol Jain <kjain@linux.ibm.com>
      Acked-by: NIan Rogers <irogers@google.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/20201119152411.46041-1-kjain@linux.ibm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b2ce5dbc
  5. 01 12月, 2020 15 次提交