1. 03 Aug, 2023 10 commits
    • 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 26 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
    • Ian Rogers's avatar
      perf parse-events: Additional error reporting · b30d4f0b
      Ian Rogers authored
      When no events or PMUs match report an error for event_pmu:
      
      Before:
      ```
      $ perf stat -e 'asdfasdf' -a sleep 1
      Run 'perf list' for a list of valid events
      
       Usage: perf stat [<options>] [<command>]
      
          -e, --event <event>   event selector. use 'perf list' to list available events
      ```
      
      After:
      ```
      $ perf stat -e 'asdfasdf' -a sleep 1
      event syntax error: 'asdfasdf'
                           \___ Bad event name
      
      Unabled to find PMU or event on a PMU of 'asdfasdf'
      Run 'perf list' for a list of valid events
      
       Usage: perf stat [<options>] [<command>]
      
          -e, --event <event>   event selector. use 'perf list' to list available events
      ```
      
      Fixes the inadvertent removal when hybrid parsing was modified.
      
      Fixes: 70c90e4a ("perf parse-events: Avoid scanning PMUs before parsing")
      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: Ian Rogers <irogers@google.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-11-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b30d4f0b
    • Ian Rogers's avatar
      perf parse-events: Separate ENOMEM memory handling · b52cb995
      Ian Rogers authored
      Add PE_ABORT that will YYNOMEM or YYABORT accordingly.
      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-10-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b52cb995
    • Ian Rogers's avatar
      perf parse-events: Move instances of YYABORT to YYNOMEM · 77cdd787
      Ian Rogers authored
      Migration to improve error reporting as YYABORT cases should carry
      event parsing errors.
      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-9-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      77cdd787
    • Ian Rogers's avatar
      perf parse-events: Separate YYABORT and YYNOMEM cases · a7a3252d
      Ian Rogers authored
      Split cases in event_pmu for greater accuracy.
      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-8-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a7a3252d
    • Ian Rogers's avatar
      perf parse-event: Add memory allocation test for name terms · 9462e4de
      Ian Rogers authored
      If the name memory allocation fails then propagate to the parser.
      
      Committer notes:
      
      Use $(BISON_FALLBACK_FLAGS) on the bison call so that we continue
      building with older bison versions, before 3.81, where YYNOMEM isn't
      present.
      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-7-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9462e4de
    • Arnaldo Carvalho de Melo's avatar
      perf build: Define YYNOMEM as YYNOABORT for bison < 3.81 · 88cc47e2
      Arnaldo Carvalho de Melo authored
      YYNOMEM was introduced in bison 3.81, so define it as YYABORT for older
      versions, which should provide the previous perf behaviour.
      
      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>
      88cc47e2
  3. 26 Jul, 2023 4 commits