1. 03 Aug, 2023 20 commits
    • Athira Rajeev's avatar
      perf tests stat+shadow_stat: Fix shellcheck warning about unused variable · d13841e7
      Athira Rajeev authored
      Running shellcheck on stat+shadow_stat.sh generates below warning:
      
      In tests/shell/stat+shadow_stat.sh line 48:
              while read cpu num evt hash ipc rest
                                     ^--^ SC2034 (warning): hash appears unused. Verify use (or export if used externally).
      
      This variable is intentionally unused since it is needed to parse
      through the output. Use "_" as a prefix for this throw away variable.
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-11-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d13841e7
    • Athira Rajeev's avatar
      perf tests stat_bpf_counters: Fix usage of '==' to address shellcheck warning · d10eedd8
      Athira Rajeev authored
      Running shellcheck on stat_bpf_counter.sh generates below
      warning:
      
         In tests/shell/stat_bpf_counters.sh line 34:
         if [ "$base_cycles" == "<not" ]; then
                             ^-- SC3014 (warning): In POSIX sh, == in place of = is undefined.
      
         In tests/shell/stat_bpf_counters.sh line 39:
         if [ "$bpf_cycles" == "<not" ]; then
                            ^-- SC3014 (warning): In POSIX sh, == in place of = is undefined.
      
      Fix this by using "=" instead of "==" to work for
      all shells.
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-10-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d10eedd8
    • Athira Rajeev's avatar
      perf tests perf_dat _converter_json: Use quoting to avoid word splitting · 38b3fa07
      Athira Rajeev authored
      Running shellcheck on test_perf_data_converter_json.sh throws
      below warning:
      
         In tests/shell/test_perf_data_converter_json.sh line 42:
         	if [ $(cat "${result}" | wc -l) -gt "0" ] ; then
                      ^------------------------^ SC2046 (warning): Quote this to prevent word splitting.
      
      Fixed the warning by adding quotes to avoid word splitting.
      
      ShellCheck result with patch:
          # shellcheck -S warning test_perf_data_converter_json.sh
          #
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-9-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      38b3fa07
    • Athira Rajeev's avatar
      perf tests stat+csv_summary: Fix unused variable references detected via shellcheck · faae152a
      Athira Rajeev authored
      Running shellcheck on stat+csv_summary.sh throws below warnings:
      
         In tests/shell/stat+csv_summary.sh line 26:
         while read num event run pct
                    ^-^ SC2034 (warning): num appears unused. Verify use (or export if used externally).
                        ^---^ SC2034 (warning): event appears unused. Verify use (or export if used externally).
                              ^-^ SC2034 (warning): run appears unused. Verify use (or export if used externally).
                                  ^-^ SC2034 (warning): pct appears unused. Verify use (or export if used externally).
      
      These variables are intentionally unused since they are needed to parse
      through the output. Use "_" as a prefix for these throw away variables.
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-8-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      faae152a
    • Athira Rajeev's avatar
      perf tests: Address signal case issues detected via shellcheck · e9c7c3a1
      Athira Rajeev authored
      Running shellcheck -S on test_arm_spe_fork.sh throws below warnings:
      
         In tests/shell/test_arm_spe_fork.sh line 25:
         trap cleanup_files exit term int
                            ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                                 ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                                      ^-^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
      
      Fixed this issue by using uppercase for "EXIT", "TERM" and
      "INIT" signals to avoid using lower/mixed case for signal
      names as input.
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-7-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e9c7c3a1
    • Kajol Jain's avatar
      perf test stat_bpf_counters_cgrp: Fix shellcheck issue about logical operators · 0dd1f815
      Kajol Jain authored
      Running shellcheck on lock_contention.sh generates below warning:
      
      In stat_bpf_counters_cgrp.sh line 28:
      	if [ -d /sys/fs/cgroup/system.slice -a -d /sys/fs/cgroup/user.slice ]; then
                                                  ^-- SC2166 (warning): Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
      
      In stat_bpf_counters_cgrp.sh line 34:
      	local self_cgrp=$(grep perf_event /proc/self/cgroup | cut -d: -f3)
              ^-------------^ SC3043 (warning): In POSIX sh, 'local' is undefined.
                    ^-------^ SC2155 (warning): Declare and assign separately to avoid masking return values.
                              ^-- SC2046 (warning): Quote this to prevent word splitting.
      
      In stat_bpf_counters_cgrp.sh line 51:
      	local output
              ^----------^ SC3043 (warning): In POSIX sh, 'local' is undefined.
      
      In stat_bpf_counters_cgrp.sh line 65:
      	local output
              ^----------^ SC3043 (warning): In POSIX sh, 'local' is undefined.
      
      Fixed above warnings by:
      - Changing the expression [p -a q] to [p] && [q].
      - Fixing shellcheck warnings for local usage, by prefixing
        function name to the variable.
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-6-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0dd1f815
    • Kajol Jain's avatar
      perf tests lock_contention: Fix shellcheck issue about quoting to avoid word splitting · edf197cb
      Kajol Jain authored
      Running shellcheck on lock_contention.sh generates below warning:
      
      In tests/shell/lock_contention.sh line 24:
      	if [ `id -u` != 0 ]; then
                   ^-----^ SC2046 (warning): Quote this to prevent word splitting.
      
      In tests/shell/lock_contention.sh line 160:
      	local type=$(head -1 "${result}" | awk '{ print $8 }' | sed -e 's/:.*//')
              ^--------^ SC3043 (warning): In POSIX sh, 'local' is undefined.
                    ^--^ SC2155 (warning): Declare and assign separately to avoid masking return values.
                         ^-- SC2046 (warning): Quote this to prevent word splitting.
      
      Fixed above warnings by:
      
      - Adding quotes to avoid word splitting.
      - Fixing shellcheck warnings for local usage, by prefixing
        function name to the variable.
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-5-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      edf197cb
    • Kajol Jain's avatar
      perf tests record_offcpu: Fix shellcheck warnings about word splitting/quoting... · a225c304
      Kajol Jain authored
      perf tests record_offcpu: Fix shellcheck warnings about word splitting/quoting and signal names case
      
      Running shellcheck on record_offcpu.sh throws below warning:
      
      In tests/shell/record_offcpu.sh line 13:
        trap - exit term int
               ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                    ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                         ^-^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
      
      In tests/shell/record_offcpu.sh line 20:
      trap trap_cleanup exit term int
                        ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                             ^--^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
                                  ^-^ SC3049 (warning): In POSIX sh, using lower/mixed case for signal names is undefined.
      
      In tests/shell/record_offcpu.sh line 25:
        if [ `id -u` != 0 ]
             ^-----^ SC2046 (warning): Quote this to prevent word splitting.
      
      Fixed the warnings by:
      - Capitalize signals(INT, TERM, EXIT) to avoid mixed/lower case naming of
      signals.
      - Adding quotes to avoid word splitting.
      
      Result from shellcheck after patch changes:
           $ shellcheck -S warning record_offcpu.sh
           $
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-4-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a225c304
    • Kajol Jain's avatar
      perf tests probe_vfs_getname: Fix shellcheck warnings about word splitting/quoting · 7b485d94
      Kajol Jain authored
      Running shellcheck on probe_vfs_getname.sh throws below warning:
      
      In tests/shell/probe_vfs_getname.sh line 7:
      . $(dirname $0)/lib/probe.sh
        ^-----------^ SC2046 (warning): Quote this to prevent word splitting.
      
      In tests/shell/probe_vfs_getname.sh line 11:
      . $(dirname $0)/lib/probe_vfs_getname.sh
        ^-----------^ SC2046 (warning): Quote this to prevent word splitting.
      
      Fixed the warning by adding quotes to avoid word splitting.
      
      ShellCheck result with patch:
          # shellcheck -S warning probe_vfs_getname.sh
          #
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-3-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7b485d94
    • Akanksha J N's avatar
      perf tests trace+probe_vfs_getname: Fix shellcheck warnings about word splitting/quoting · 38beba67
      Akanksha J N authored
      Running shellcheck -S on probe_vfs_getname.sh, throws below warnings:
      
      Before fix:
      
      $ shellcheck -S warning trace+probe_vfs_getname.sh
      
      	In trace+probe_vfs_getname.sh line 13:
      	. $(dirname $0)/lib/probe.sh
      	  ^-----------^ SC2046 (warning): Quote this to prevent word splitting.
      
      	In trace+probe_vfs_getname.sh line 18:
      	. $(dirname $0)/lib/probe_vfs_getname.sh
      	  ^-----------^ SC2046 (warning): Quote this to prevent word splitting.
      
      	In trace+probe_vfs_getname.sh line 21:
      		evts=$(echo $(perf list syscalls:sys_enter_open* 2>/dev/null | grep -E 'open(at)? ' | sed -r 's/.*sys_enter_([a-z]+) +\[.*$/\1/') | sed 's/ /,/')
      		            ^-- SC2046 (warning): Quote this to prevent word splitting.
      
      Fix the shellcheck warnings by adding quotes to prevent word splitting.
      Signed-off-by: default avatarAkanksha J N <akanksha@linux.ibm.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230709182800.53002-2-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      38beba67
    • Aditya Gupta's avatar
      perf tests task_analyzer: Check perf build options for libtraceevent support · 11cb1ed4
      Aditya Gupta authored
      Currently we depend on output of 'perf record -e "sched:sched_switch"', to
      check whether perf was built with libtraceevent support.
      
      Instead, a more straightforward approach can be to check the build options,
      using 'perf version --build-options', to check for libtraceevent support.
      
      When perf is compiled WITHOUT libtraceevent ('make NO_LIBTRACEEVENT=1'),
      'perf version --build-options' outputs (output trimmed):
      
      	 ...
               libtraceevent: [ OFF ]  # HAVE_LIBTRACEEVENT
      	 ...
      
      While, when perf is compiled WITH libtraceevent,
      
      'perf version --build-options' outputs:
      
      ...
               libtraceevent: [ on ]  # HAVE_LIBTRACEEVENT
      	 ...
      
      Committer notes:
      
      Removed one grep in the pipleline by combining the two into just one
      expression that covers the OFF + HAVE_LIBTRACEEVENT.
      Suggested-by: default avatarIan Rogers <irogers@google.com>
      Signed-off-by: default avatarAditya Gupta <adityag@linux.ibm.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230725061649.34937-1-adityag@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      11cb1ed4
    • Ian Rogers's avatar
      perf parse-events: Remove array remnants · c9b57eb8
      Ian Rogers authored
      parse_events_array was set up by event term parsing, which no longer
      exists. Remove this struct and references to it.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230728001212.457900-4-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c9b57eb8
    • Ian Rogers's avatar
      perf tools: Revert enable indices setting syntax for BPF map · 30f4ade3
      Ian Rogers authored
      This reverts commit e571e029 ("perf tools: Enable indices setting
      syntax for BPF map").
      
      The reverted commit added a notion of arrays that could be set as
      event terms for BPF events. The parsing hasn't worked over multiple
      Linux releases. Given the broken nature of the parsing it appears the
      code isn't in use, nor could I find a way for it to be used to add a
      test.
      
      The original commit contains a test in the commit message,
      however, running it yields:
      ```
      $ perf record -e './test_bpf_map_3.c/map:channel.value[0,1,2,3...5]=101/' usleep 2
      event syntax error: '..pf_map_3.c/map:channel.value[0,1,2,3...5]=101/'
                                        \___ parser error
      Run 'perf list' for a list of valid events
      
       Usage: perf record [<options>] [<command>]
          or: perf record [<options>] -- <command> [<options>]
      
          -e, --event <event>   event selector. use 'perf list' to list available events
      ```
      
      Given the code can't be used this commit reverts and removes it.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230728001212.457900-3-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      30f4ade3
    • Ian Rogers's avatar
      perf parse-event: Avoid BPF test SEGV · c76a1444
      Ian Rogers authored
      loc is passed as NULL in tools/perf/tests/bpf.c do_test, meaning
      errors trigger a SEGV when trying to access. Add the missing NULL
      check.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230728001212.457900-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c76a1444
    • Namhyung Kim's avatar
      perf build: Include generated header files properly · c7e97f21
      Namhyung Kim authored
      The flex and bison generate header files from the source.  When user
      specified a build directory with O= option, it'd generate files under
      the directory.  The build command has -I option to specify the header
      include directory.
      
      But the -I option only affects the files included like <...>.  Let's
      change the flex and bison headers to use it instead of "...".
      
      Fixes: 80eeb67f ("perf jevents: Program to convert JSON file")
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Anup Sharma <anupnewsmail@gmail.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20230728022447.1323563-2-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c7e97f21
    • Namhyung Kim's avatar
      perf build: Update build rule for generated files · 7822a891
      Namhyung Kim authored
      The bison and flex generate C files from the source (.y and .l)
      files.  When O= option is used, they are saved in a separate directory
      but the default build rule assumes the .C files are in the source
      directory.  So it might read invalid file if there are generated files
      from an old version.  The same is true for the pmu-events files.
      
      For example, the following command would cause a build failure:
      
        $ git checkout v6.3
        $ make -C tools/perf  # build in the same directory
      
        $ git checkout v6.5-rc2
        $ mkdir build  # create a build directory
        $ make -C tools/perf O=build  # build in a different directory but it
                                      # refers files in the source directory
      
      Let's update the build rule to specify those cases explicitly to depend
      on the files in the output directory.
      
      Note that it's not a complete fix and it needs the next patch for the
      include path too.
      
      Fixes: 80eeb67f ("perf jevents: Program to convert JSON file")
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Anup Sharma <anupnewsmail@gmail.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20230728022447.1323563-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7822a891
    • Ian Rogers's avatar
      perf build: Remove -Wno-redundant-decls in 2 cases · f776b043
      Ian Rogers authored
      Properly fix a warning and remove the -Wno-redundant-decls C flag.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-7-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f776b043
    • Ian Rogers's avatar
      perf build: Disable fewer bison warnings · ddc8e4c9
      Ian Rogers authored
      If bison is version 3.8.2, reduce the number of bison C warnings
      disabled. Earlier bison versions have all C warnings disabled. Avoid
      implicit declarations of yylex by adding the declaration in the C
      file. A header can't be included as a circular dependency would occur
      due to the lexer using the bison defined tokens.
      
      Committer notes:
      
      Some recent versions of gcc and clang (noticed on Alpine Linux 3.17,
      edge, clearlinux, fedora 37, etc.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-6-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ddc8e4c9
    • Ian Rogers's avatar
      perf build: Disable fewer flex warnings · 10c775af
      Ian Rogers authored
      If flex is version 2.6.4, reduce the number of flex C warnings
      disabled. Earlier flex versions have all C warnings disabled.
      
      Committer notes:
      
      Added this to the list of ignored warnings to get it building on
      a Fedora 36 machine with flex 2.6.4:
      
        -Wno-misleading-indentation
      
      Noticed when building with:
      
        $ make LLVM=1 -C tools/perf NO_BPF_SKEL=1 DEBUG=1
      
      Take two:
      
      We can't just try to canonicalize flex versions by just removing the
      dots, as we end up with:
      
      	2.6.4 >= 2.5.37
      
      becoming:
      
      	264 >= 2537
      
      Failing the build on flex 2.5.37, so instead use the back to the past
      added $(call version_ge3,$(FLEX_VERSION),2.6.4) variant to check for
      that.
      
      Making sure $(FLEX_VERSION) keeps the dots as we may want to use 'sort
      -V' or something nicer when available everywhere.
      
      Some other tweaks for other flex versions and combinations with gcc and
      clang versions were added, notes on the patch.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-5-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      10c775af
    • Arnaldo Carvalho de Melo's avatar
      tools build: Add 3-component logical version comparators · a9b45150
      Arnaldo Carvalho de Melo authored
      The next cset needs to compare if a flex version is greater or
      equal/less than another, but since there is no canonical, generally
      available way to compare versions in the command line (sort -V, yeah,
      but...), just use awk to canonicalize the versions like is also done in
      scripts/rust_is_available.sh.
      
      There was a problem spotted in linux-next where a bashism, here
      documents, aka the '<<<' stdin redirector, for strings to be used as the
      stdin for awk. Use $(shell echo | awk ...) instead.
      
      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>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a9b45150
  2. 28 Jul, 2023 20 commits
    • Ian Rogers's avatar
      perf build: Add Wextra for C++ compilation · e5764ae4
      Ian Rogers authored
      Commit d58ac0bf ("perf build: Add clang and llvm compile and
      linking support") added -Wall and -Wno-strict-aliasing for CXXFLAGS,
      but not -Wextra. -Wno-strict-aliasing is no longer necessary, adding
      -Wextra for CXXFLAGS requires adding -Wno-unused-parameter clang.cpp
      and clang-test.cpp for LIBCLANGLLVM=1 to build.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-4-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e5764ae4
    • Ian Rogers's avatar
      perf build: Don't always set -funwind-tables and -ggdb3 · 435bea0a
      Ian Rogers authored
      Commit 6a40cd90 ("perf tools: Add libunwind dependency for DWARF
      CFI unwinding") added libunwind support but also -funwind-tables and
      -ggdb3 to the standard build. These build flags aren't necessary so
      remove, set -g when DEBUG is enabled for the build.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-3-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      435bea0a
    • Ian Rogers's avatar
      perf bpf-loader: Remove unneeded diagnostic pragma · 1134f290
      Ian Rogers authored
      Added during the progress to libbpf 1.0 the deprecated functions are
      no longer used and so the pragma can be removed.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tom Rix <trix@redhat.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230728064917.767761-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1134f290
    • Jing Zhang's avatar
      perf docs: Update metric usage for Alibaba's T-Head PMU driver (arm64) · f849ce6b
      Jing Zhang authored
      Alibaba's T-Head ali_drw PMU supports DDR bandwidth metrics. Update
      its usage in the documentation.
      Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
      Signed-off-by: default avatarJing Zhang <renyu.zj@linux.alibaba.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Shuai Xue <xueshuai@linux.alibaba.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Zhuo Song <zhuo.song@linux.alibaba.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-doc@vger.kernel.org
      Link: https://lore.kernel.org/r/1690528175-2499-4-git-send-email-renyu.zj@linux.alibaba.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f849ce6b
    • Jing Zhang's avatar
      perf vendor events arm64: Add JSON metrics for Yitian 710 DDR · 3e65bd13
      Jing Zhang authored
      Add JSON metrics for T-HEAD Yitian 710 SoC DDR.
      Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
      Signed-off-by: default avatarJing Zhang <renyu.zj@linux.alibaba.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Shuai Xue <xueshuai@linux.alibaba.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Zhuo Song <zhuo.song@linux.alibaba.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-doc@vger.kernel.org
      Link: https://lore.kernel.org/r/1690528175-2499-3-git-send-email-renyu.zj@linux.alibaba.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3e65bd13
    • Jing Zhang's avatar
      perf jevents: Add support for Yitian 710 DDR PMU (arm64) aliasing · 24069d81
      Jing Zhang authored
      Add alias support for T-HEAD Yitian 710 SoC DDR PMU events.
      Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
      Reviewed-by: default avatarShuai Xue <xueshuai@linux.alibaba.com>
      Signed-off-by: default avatarJing Zhang <renyu.zj@linux.alibaba.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: Zhuo Song <zhuo.song@linux.alibaba.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-doc@vger.kernel.org
      Link: https://lore.kernel.org/r/1690528175-2499-2-git-send-email-renyu.zj@linux.alibaba.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      24069d81
    • James Clark's avatar
      perf tools: Add a place to put kernel config fragments for test runs · 404e077a
      James Clark authored
      Defconfig doesn't give full coverage for a perf test run, so these can
      be merged with defconfig to do so. It's not complete yet, but is a
      starting point as a place to add to when a specific test needs something
      extra to run.
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Aishwarya.TCV@arm.com
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20230628105303.4053478-2-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      404e077a
    • Anup Sharma's avatar
      perf scripts python: Add command execution for gecko script · f9f72b2a
      Anup Sharma authored
      This will enable the execution of gecko.py script using record and
      report commands in 'perf script'.  And this will be also reflected at
      "perf script -l" command.
      
      For Example:
          perf script record gecko
          perf script report gecko
      
      Committer notes:
      
      As discussed on the perf tools office hours, I made -F 99 the default
      for the record script and removed the double -- on the report script so
      that the existing 'perf script' protocol for the combined operation:
      
          # perf script gecko
      
      Works, i.e. the record script pipes its stdout into the stdin of the
      report script, basically:
      
        /bin/sh /usr/libexec/perf-core/scripts/python/bin/gecko-record -F 99 -g -a -q -o - | \
        /bin/sh /usr/libexec/perf-core/scripts/python/bin/gecko-report -i -
      
      Testing it:
      
      The resulting JSON file needs to be uploaded to
      https://profiler.firefox.com, Anup already has code to start a local
      http server on the trace_begin handler of the gecko python script, start
      firefox and feed it the JSON.
      
      The example below only collects sample for the specified workload, so
      that we don't produce thousands of lines, to collect system wide
      samples, use instead:
      
        # perf script gecko -a sleep 0.5
      
        # nohup perf script gecko sleep 0.5
        {
          "meta": {
            "interval": 1,
            "processType": 0,
            "product": "x86_64 GNU/Linux",
            "stackwalk": 1,
            "debug": 0,
            "gcpoison": 0,
            "asyncstack": 1,
            "startTime": 274601692.636,
            "shutdownTime": null,
            "version": 24,
            "presymbolicated": true,
            "categories": [
              {
                "name": "User",
                "color": "yellow",
                "subcategories": [
                  "Other"
                ]
              },
              {
                "name": "Kernel",
                "color": "orange",
                "subcategories": [
                  "Other"
                ]
              }
            ],
            "markerSchema": []
          },
          "libs": [],
          "threads": [
            {
              "tid": 3344498,
              "pid": 3344498,
              "name": "sleep",
              "markers": {
                "schema": {
                  "name": 0,
                  "startTime": 1,
                  "endTime": 2,
                  "phase": 3,
                  "category": 4,
                  "data": 5
                },
                "data": []
              },
              "samples": {
                "schema": {
                  "stack": 0,
                  "time": 1,
                  "responsiveness": 2
                },
                "data": [
                  [
                    21,
                    274601692.636,
                    0
                  ],
                  [
                    23,
                    274601692.641,
                    0
                  ],
                  [
                    29,
                    274601692.643,
                    0
                  ],
                  [
                    42,
                    274601692.648,
                    0
                  ]
                ]
              },
              "frameTable": {
                "schema": {
                  "location": 0,
                  "relevantForJS": 1,
                  "innerWindowID": 2,
                  "implementation": 3,
                  "optimizations": 4,
                  "line": 5,
                  "column": 6,
                  "category": 7,
                  "subcategory": 8
                },
                "data": [
                  [
                    0,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    1,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    2,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    3,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    4,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    5,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    6,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    7,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    8,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    9,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    10,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    11,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    12,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    13,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    14,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    15,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    16,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    17,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    18,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    19,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    20,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    21,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    22,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    23,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    24,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    25,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    26,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    27,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    28,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    29,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    30,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    31,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    32,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    33,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    34,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    35,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    36,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    37,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ],
                  [
                    38,
                    false,
                    0,
                    null,
                    null,
                    null,
                    null,
                    1,
                    null
                  ]
                ]
              },
              "stackTable": {
                "schema": {
                  "prefix": 0,
                  "frame": 1
                },
                "data": [
                  [
                    null,
                    0
                  ],
                  [
                    0,
                    1
                  ],
                  [
                    1,
                    2
                  ],
                  [
                    2,
                    3
                  ],
                  [
                    3,
                    4
                  ],
                  [
                    4,
                    5
                  ],
                  [
                    5,
                    6
                  ],
                  [
                    6,
                    7
                  ],
                  [
                    7,
                    8
                  ],
                  [
                    8,
                    9
                  ],
                  [
                    9,
                    10
                  ],
                  [
                    10,
                    11
                  ],
                  [
                    11,
                    12
                  ],
                  [
                    12,
                    13
                  ],
                  [
                    13,
                    14
                  ],
                  [
                    14,
                    15
                  ],
                  [
                    15,
                    16
                  ],
                  [
                    16,
                    17
                  ],
                  [
                    17,
                    18
                  ],
                  [
                    18,
                    19
                  ],
                  [
                    19,
                    20
                  ],
                  [
                    20,
                    21
                  ],
                  [
                    20,
                    22
                  ],
                  [
                    22,
                    23
                  ],
                  [
                    11,
                    24
                  ],
                  [
                    24,
                    25
                  ],
                  [
                    25,
                    26
                  ],
                  [
                    26,
                    27
                  ],
                  [
                    27,
                    28
                  ],
                  [
                    28,
                    29
                  ],
                  [
                    9,
                    11
                  ],
                  [
                    30,
                    24
                  ],
                  [
                    31,
                    25
                  ],
                  [
                    32,
                    30
                  ],
                  [
                    33,
                    31
                  ],
                  [
                    34,
                    32
                  ],
                  [
                    35,
                    29
                  ],
                  [
                    36,
                    33
                  ],
                  [
                    37,
                    34
                  ],
                  [
                    38,
                    35
                  ],
                  [
                    39,
                    36
                  ],
                  [
                    40,
                    37
                  ],
                  [
                    41,
                    38
                  ]
                ]
              },
              "stringTable": [
                "__func__.0 (in [kernel.kallsyms].rodata)",
                "perf_trace_ext4_fc_track_inode (in [kernel.kallsyms])",
                "perf_trace_ext4_es_insert_delayed_block (in [kernel.kallsyms])",
                "ext4_es_show_pblock (in [kernel.kallsyms])",
                "perf_trace_ext4_ext_rm_leaf (in [kernel.kallsyms])",
                "devcgroup_access_write (in [kernel.kallsyms])",
                "devcgroup_update_access (in [kernel.kallsyms])",
                "propagate_exception (in [kernel.kallsyms])",
                "revalidate_active_exceptions (in [kernel.kallsyms])",
                "perf_trace_ext4_fc_commit_stop (in [kernel.kallsyms])",
                "perf_fetch_caller_regs (in [kernel.kallsyms])",
                "khugepaged (in [kernel.kallsyms])",
                "khugepaged_wait_work (in [kernel.kallsyms])",
                "freezable_schedule_timeout (in [kernel.kallsyms])",
                "freezer_count (in [kernel.kallsyms])",
                "try_to_freeze (in [kernel.kallsyms])",
                "try_to_freeze_unsafe (in [kernel.kallsyms])",
                "split_huge_pages_write (in [kernel.kallsyms])",
                "migrate_pages (in [kernel.kallsyms])",
                "unmap_and_move (in [kernel.kallsyms])",
                "__unmap_and_move (in [kernel.kallsyms])",
                "collect_events (in [kernel.kallsyms])",
                "uncore_down_prepare (in [kernel.kallsyms])",
                "perf_iommu_read (in [kernel.kallsyms])",
                "khugepaged_do_scan (in [kernel.kallsyms])",
                "khugepaged_scan_mm_slot (in [kernel.kallsyms])",
                "khugepaged_scan_file (in [kernel.kallsyms])",
                "need_resched (in [kernel.kallsyms])",
                "get_current (in [kernel.kallsyms])",
                "move_to_new_page (in [kernel.kallsyms])",
                "khugepaged_scan_pmd (in [kernel.kallsyms])",
                "trace_mm_khugepaged_scan_pmd (in [kernel.kallsyms])",
                "migrate_huge_page_move_mapping (in [kernel.kallsyms])",
                "do_huge_pmd_numa_page (in [kernel.kallsyms])",
                "pmd_pfn (in [kernel.kallsyms])",
                "protnone_mask (in [kernel.kallsyms])",
                "__pte_needs_invert (in [kernel.kallsyms])",
                "reclaim_high (in [kernel.kallsyms])",
                "memcg_memory_event (in [kernel.kallsyms])"
              ],
              "registerTime": 0,
              "unregisterTime": null,
              "processType": "default"
            }
          ],
          "processes": [],
          "pausedRanges": []
        }
        #
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/cbf03cda175ea3dd2c6cd87bd3f12d803446cb95.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f9f72b2a
    • Anup Sharma's avatar
      perf scripts python: Implement add sample function and thread processing · 2d889c6a
      Anup Sharma authored
      The stack has been created for storing func and dso from the callchain.
      The sample has been added to a specific thread. It first checks if the
      thread exists in the Thread class. Then it call _add_sample function
      which is responsible for appending a new entry to the samples list.
      
      Also callchain parsing and storing part is implemented. Moreover removed
      the comment from thread.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/5a112be85ccdcdcd611e343f6a7a7482d01f6299.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2d889c6a
    • Anup Sharma's avatar
      perf scripts python: Implement add sample function and thread processing · 258dfd41
      Anup Sharma authored
      The intern_stack function is responsible for retrieving
      or creating a stack_id based on the provided frame_id and prefix_id.
      It first generates a key using the frame_id and prefix_id values.
      If the stack corresponding to the key is found in the stackMap,
      it is returned. Otherwise, a new stack is created by appending
      the prefix_id and frame_id to the stackTable. The key
      and the index of the newly created stack are added to the
      stackMap for future reference.
      
      The _intern_frame function is responsible for retrieving or
      creating a frame_id based on the provided frame string. If the frame_id
      corresponding to the frameString is found in the frameMap, it is
      returned. Otherwise, a new frame is created by appending relevant
      information to the frameTable and adding the frameString to the string_id
      through _intern_string.
      
      The _intern_string function will gets a matching string, or saves the new
      string and returns a String ID.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Link: https://lore.kernel.org/r/4442f4b1ab4c7317cf940560a3a285fcdfbeeb08.1689961706.git.anupnewsmail@gmail.com
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-perf-users@vger.kernel.org
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      258dfd41
    • Anup Sharma's avatar
      perf scripts python: Add trace end processing and PRODUCT and CATEGORIES information · 833daec7
      Anup Sharma authored
      The final output will now be presented in JSON format following the Gecko
      profile structure. Additionally, the inclusion of PRODUCT allows easy retrieval
      of header information for UI.
      
      Furthermore, CATEGORIES have been introduced to enable customization of
      kernel and user colors using input arguments. To facilitate this functionality,
      an argparse-based parser has been implemented.
      
      Note: The implementation of threads will be addressed in subsequent commits
      for now I have commented it out.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/fa6d027e4134c48e8a2ea45dd8f6b21e6a3418e4.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      833daec7
    • Anup Sharma's avatar
      perf scripts python: Add classes and conversion functions · 5aacd7f0
      Anup Sharma authored
      This commit introduces new classes and conversion functions to
      facilitate the representation of Gecko profile information. The new
      classes Frame, Stack, Sample, and Thread are added to handle specific
      components of the profile data, also link to the origin docs has been
      commented out.
      
      Additionally, Inside the Thread class _to_json_dict() method has been
      created that converts the current thread data into the corresponding
      format expected by the GeckoThread JSON schema, as per the Gecko
      profile format specification.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/ab7b40bd32df7101a6f8b4a3aa41570b63b831ac.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5aacd7f0
    • Anup Sharma's avatar
      perf scripts python: Extact necessary information from process event · 0a02e44c
      Anup Sharma authored
      The script takes in a sample event dictionary(param_dict) and retrieves
      relevant data such as time stamp, PID, TID, and comm for each event.
      Also start time is defined as a global variable as it need to be passed
      to trace_end for gecko meta information field creation.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/19910fefcfe4be03cd5c2aa3fec11d3f86c0381b.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0a02e44c
    • Anup Sharma's avatar
      perf scripts python: Add initial script file with usage information · 1699d3ef
      Anup Sharma authored
      Added necessary modules, including the Perf-Trace-Util
      library, and defines the required functions and variables
      for using perf script python. The perf_trace_context and
      Core modules for tracing and processing events has been
      also imported. Added usage information.
      Signed-off-by: default avatarAnup Sharma <anupnewsmail@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/f2f1a62f1cc69f44a5414da46a26a4cf124d2744.1689961706.git.anupnewsmail@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1699d3ef
    • Xiu Jianfeng's avatar
      perf doc: Fix typo in perf.data-file-format.txt · 1e372014
      Xiu Jianfeng authored
      The 'it' should be 'is' here, fix it.
      Signed-off-by: default avatarXiu Jianfeng <xiujianfeng@huawei.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20230727105001.261420-1-xiujianfeng@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1e372014
    • Namhyung Kim's avatar
      perf machine: Include data symbols in the kernel map · 69a87a32
      Namhyung Kim authored
      When 'perf record -d' is used, it needs data mmaps to symbolize global
      data.  But it missed to collect kernel data maps so it cannot symbolize
      them.  Instead of having a separate map, just increase the kernel map
      size to include the data section.
      
      Probably we can have a separate kernel map for data, but the current
      code assumes a single kernel map.  So it'd require more changes in other
      places and looks error-prone.  I decided not to go that way for now.
      
      Also it seems the kernel module size already includes the data section.
      
      For example, my system has the following.
      
        $ grep -e _stext -e _etext -e _edata /proc/kallsyms
        ffffffff99800000 T _stext
        ffffffff9a601ac8 T _etext
        ffffffff9b446a00 D _edata
      
      Size of the text section is (0x9a601ac8 - 0x99800000 = 0xe01ac8) and
      size including data section is (0x9b446a00 - 0x99800000 = 0x1c46a00).
      
      Before:
        $ perf record -d true
      
        $ perf report -D | grep MMAP | head -1
        0 0 0x460 [0x60]: PERF_RECORD_MMAP -1/0: [0xffffffff99800000(0xe01ac8) @ 0xffffffff99800000]: x [kernel.kallsyms]_text
                                                                     ^^^^^^^^
                                                                       here
      After:
        $ perf report -D | grep MMAP | head -1
        0 0 0x460 [0x60]: PERF_RECORD_MMAP -1/0: [0xffffffff99800000(0x1c46a00) @ 0xffffffff99800000]: x [kernel.kallsyms]_text
                                                                     ^^^^^^^^^
      
      Instead of just replacing it to _edata, try _edata first and then fall
      back to _etext just in case.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20230725001929.368041-2-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      69a87a32
    • Namhyung Kim's avatar
      perf symbols: Add kallsyms__get_symbol_start() · f9dd531c
      Namhyung Kim authored
      The kallsyms__get_symbol_start() to get any symbol address from
      kallsyms.  The existing kallsyms__get_function_start() only allows text
      symbols so create this to allow data symbols too.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20230725001929.368041-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f9dd531c
    • Ian Rogers's avatar
      perf parse-events: Remove ABORT_ON · 4c11adff
      Ian Rogers authored
      Prefer informative messages rather than none with ABORT_ON. Document
      one failure mode and add an error message for another.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230627181030.95608-14-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4c11adff
    • Ian Rogers's avatar
      perf parse-events: Improve location for add pmu · 81a4e31f
      Ian Rogers authored
      Improve the location for add PMU for cases when PMUs aren't found.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230627181030.95608-13-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      81a4e31f
    • Ian Rogers's avatar
      perf parse-events: Populate error column for BPF/tracepoint events · d81fa63b
      Ian Rogers authored
      Follow convention from parse_events_terms__num/str and pass the
      YYLTYPE for the location.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: bpf@vger.kernel.org
      Link: https://lore.kernel.org/r/20230627181030.95608-12-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d81fa63b