Commit Graph

596 Commits

Author SHA1 Message Date
Michael Petlan 49d3b2c506 perf map: API clean up
JIRA: https://issues.redhat.com/browse/RHEL-29796

upstream
========
commit a031073626d135b332c1004dd6ade1b1e8d7c9f8
Author: Ian Rogers <irogers@google.com>
Date: Fri Aug 16 23:44:31 2024 -0700

description
===========
map__init() is only used internally so make it static. Assume memory is
zero initialized, which will better support adding fields to struct
map in the future and was already the case for map__new2.

To reduce complexity, change set_priv and set_erange_warned to not take
a value to assign as they always assign true.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Anne Macedo <retpolanne@posteo.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Casey Chen <cachen@purestorage.com>
    Cc: Chaitanya S Prakash <chaitanyas.prakash@arm.com>
    Cc: Colin Ian King <colin.i.king@gmail.com>
    Cc: Dominique Martinet <asmadeus@codewreck.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jann Horn <jannh@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    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>
    Cc: Sun Haiyong <sunhaiyong@loongson.cn>
    Cc: Weilin Wang <weilin.wang@intel.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Yunseong Kim <yskelg@gmail.com>
    Cc: Ze Gao <zegao2021@gmail.com>
    Link: https://lore.kernel.org/r/20240817064442.2152089-3-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-11-18 19:23:39 +01:00
Michael Petlan c1a56836fe perf annotate: Save branch counters for each block
JIRA: https://issues.redhat.com/browse/RHEL-29796

upstream
========
commit 1f2b7fbb04f53540090ac7d320194654f142443f
Author: Kan Liang <kan.liang@linux.intel.com>
Date: Tue Aug 13 09:02:03 2024 -0700

description
===========
When annotating a basic block, it's useful to display the occurrences
of other events in the block.

The branch counter feature is only available for newer Intel platforms.

So a dedicated option to display the branch counters is not introduced.

Reuse the existing --total-cycles option, which triggers the annotation
of a basic block and displays the cycle-related annotation.

When the branch counters information is available, the branch counters
are automatically appended after all the cycle-related annotation.

Accounting the branch counters as well when accounting the cycles in
hist__account_cycles().

In 'struct annotated_branch', introduce a br_cntr array to save the
accumulation of each branch counter.

In a sample, all the branch counters for a branch are saved in a u64
space.

Because the saturation of a branch counter is small, e.g., for Intel
Sierra Forest, the saturation is only 3.

Add ANNOTATION__BR_CNTR_SATURATED_FLAG to indicate if a branch counter
once saturated. That can be used to indicate a potential event lost
because of the saturation.

    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20240813160208.2493643-5-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-11-18 19:23:38 +01:00
Michael Petlan 6d5468f9cf perf tool: Constify tool pointers
JIRA: https://issues.redhat.com/browse/RHEL-29796

upstream
========
commit 30f29bae9142f34e978a4861ed07aa512af21416
Author: Ian Rogers <irogers@google.com>
Date: Mon Aug 12 13:46:55 2024 -0700

description
===========
The tool pointer (to a struct largely of function pointers) is passed
around but is unchanged except at initialization. Change parameter and
variable types to be const to lower the possibilities of what could
happen with a tool.

    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ian Rogers <irogers@google.com>
    Tested-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Leo Yan <leo.yan@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ilkka Koskinen <ilkka@os.amperecomputing.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linux.dev>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Nick Terrell <terrelln@fb.com>
    Cc: Oliver Upton <oliver.upton@linux.dev>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Sun Haiyong <sunhaiyong@loongson.cn>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yanteng Si <siyanteng@loongson.cn>
    Cc: Yicong Yang <yangyicong@hisilicon.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20240812204720.631678-4-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-11-18 19:23:36 +01:00
Michael Petlan 2a31f3d173 perf bpf-filter: Pass 'target' to perf_bpf_filter__prepare()
JIRA: https://issues.redhat.com/browse/RHEL-29796

upstream
========
commit 966854e72f6e8a259609ea3c7fd78215e6606c7b
Author: Namhyung Kim <namhyung@kernel.org>
Date: Wed Jul 3 15:30:29 2024 -0700

description
===========
This is needed to prepare target-specific actions in the later patch.
We want to reuse the pinned BPF program and map for regular users to
profile their own processes.

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: KP Singh <kpsingh@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: bpf@vger.kernel.org
    Link: https://lore.kernel.org/r/20240703223035.2024586-3-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-11-18 19:23:34 +01:00
Michael Petlan cb3d2b3c5b perf top: Allow filters on events
JIRA: https://issues.redhat.com/browse/RHEL-29795

upstream
========
commit af752016340021d433a962063067e819dba889b1
Author: Ian Rogers <irogers@google.com>
Date: Fri May 24 13:52:27 2024 -0700

description
===========
Allow filters to be added to perf top events. One use is to workaround
issues with:
```
$ perf top --uid="$(id -u)"
```
which tries to scan /proc find processes belonging to the uid and can
fail in such a pid terminates between the scan and the
perf_event_open reporting:
```
Error:
The sys_perf_event_open() syscall returned with 3 (No such process) for event (cycles:P).
/bin/dmesg | grep -i perf may provide additional information.
```
A similar filter:
```
$ perf top -e cycles:P --filter "uid == $(id -u)"
```
doesn't fail this way.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: bpf@vger.kernel.org
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240524205227.244375-4-irogers@google.com

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-10-14 13:02:56 +02:00
Michael Petlan fbcea1ecad perf dso: Add reference count checking and accessor functions
JIRA: https://issues.redhat.com/browse/RHEL-29795

upstream
========
commit ee756ef7491eafd70f390343a1d90930af125a51
Author: Ian Rogers <irogers@google.com>
Date: Sat May 4 14:38:01 2024 -0700

description
===========
Add reference count checking to struct dso, this can help with
implementing correct reference counting discipline. To avoid
RC_CHK_ACCESS everywhere, add accessor functions for the variables in
struct dso.

The majority of the change is mechanical in nature and not easy to
split up.

Committer testing:

'perf test' up to this patch shows no regressions.

But:

  util/symbol.c: In function ‘dso__load_bfd_symbols’:
  util/symbol.c:1683:9: error: too few arguments to function ‘dso__set_adjust_symbols’
   1683 |         dso__set_adjust_symbols(dso);
        |         ^~~~~~~~~~~~~~~~~~~~~~~
  In file included from util/symbol.c:21:
  util/dso.h:268:20: note: declared here
    268 | static inline void dso__set_adjust_symbols(struct dso *dso, bool val)
        |                    ^~~~~~~~~~~~~~~~~~~~~~~
  make[6]: *** [/home/acme/git/perf-tools-next/tools/build/Makefile.build:106: /tmp/tmp.ZWHbQftdN6/util/symbol.o] Error 1
    MKDIR   /tmp/tmp.ZWHbQftdN6/tests/workloads/
  make[6]: *** Waiting for unfinished jobs....

This was updated:

  -       symbols__fixup_end(&dso->symbols, false);
  -       symbols__fixup_duplicate(&dso->symbols);
  -       dso->adjust_symbols = 1;
  +       symbols__fixup_end(dso__symbols(dso), false);
  +       symbols__fixup_duplicate(dso__symbols(dso));
  +       dso__set_adjust_symbols(dso);

But not build tested with BUILD_NONDISTRO and libbfd devel files installed
(binutils-devel on fedora).

Add the missing argument:

   	symbols__fixup_end(dso__symbols(dso), false);
   	symbols__fixup_duplicate(dso__symbols(dso));
  -	dso__set_adjust_symbols(dso);
  +	dso__set_adjust_symbols(dso, true);

    Signed-off-by: Ian Rogers <irogers@google.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Ben Gainey <ben.gainey@arm.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Chengen Du <chengen.du@canonical.com>
    Cc: Colin Ian King <colin.i.king@gmail.com>
    Cc: Dima Kogan <dima@secretsauce.net>
    Cc: Ilkka Koskinen <ilkka@os.amperecomputing.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linux.dev>
    Cc: Li Dong <lidong@vivo.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paran Lee <p4ranlee@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Sun Haiyong <sunhaiyong@loongson.cn>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Cc: Yanteng Si <siyanteng@loongson.cn>
    Cc: zhaimingbing <zhaimingbing@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20240504213803.218974-6-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-10-14 13:02:53 +02:00
Michael Petlan 958f0db80c perf tools: Add -H short option for --hierarchy
JIRA: https://issues.redhat.com/browse/RHEL-29571

upstream
========
commit 7727d59de44e4568d0ad0f3867c8bdec69d688fe
Author: Namhyung Kim <namhyung@kernel.org>
Date: Wed Jan 24 21:51:24 2024 -0800

description
===========
I found the hierarchy mode useful, but it's easy to make a typo when
using it.  Let's add a short option for that.

Also update the documentation. :)

    Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Link: https://lore.kernel.org/r/20240125055124.1579617-1-namhyung@kernel.org
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-06-25 10:47:22 +02:00
Michael Petlan b977227718 perf top: Remove needless malloc(0) call that triggers -Walloc-size
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit 79baac8acfc60a7a5114f6d60731e28c242ef8ce
Author: Sun Haiyong <sunhaiyong@loongson.cn>
Date: Mon Dec 4 16:20:55 2023 +0800

description
===========
GCC 14 introduces a new -Walloc-size included in -Wextra which errors out
like:

  builtin-top.c: In function ‘prompt_integer’:
  builtin-top.c:360:21: error: allocation of insufficient size ‘0’ for
  type ‘char’ with size ‘1’ [-Werror=alloc-size]
    360 |         char *buf = malloc(0), *p;
        |                     ^~~~~~

Just set it to NULL, getline() will do the allocation.

    Signed-off-by: Sun Haiyong <sunhaiyong@loongson.cn>
    Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.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/20231204082055.91877-1-siyanteng@loongson.cn
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:26 +02:00
Michael Petlan f4670ce6e5 perf top: Uniform the event name for the hybrid machine
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit a61f89bf76ef6f87ec48dd90dbc73a6cf9952edc
Author: Kan Liang <kan.liang@linux.intel.com>
Date: Thu Dec 14 06:46:12 2023 -0800

description
===========
It's hard to distinguish the default cycles events among hybrid PMUs.
For example,

  $ perf top
  Available samples
  385 cycles:P
  903 cycles:P

The other tool, e.g., perf record, uniforms the event name and adds the
hybrid PMU name before opening the event. So the events can be easily
distinguished. Apply the same methodology for the perf top as well.

The evlist__uniquify_name() will be invoked by both record and top.
Move it to util/evlist.c

With the patch:

  $ perf top
  Available samples
  148 cpu_atom/cycles:P/
  1K cpu_core/cycles:P/

    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Hector Martin <marcan@marcan.st>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20231214144612.1092028-2-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:20 +02:00
Michael Petlan cab36c5239 perf top: Use evsel's cpus to replace user_requested_cpus
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit 5fa695e7da4975e8d21ce49f3718d6cf00ecb75e
Author: Kan Liang <kan.liang@linux.intel.com>
Date: Thu Dec 14 06:46:11 2023 -0800

description
===========
perf top errors out on a hybrid machine
 $perf top

 Error:
 The cycles:P event is not supported.

The perf top expects that the "cycles" is collected on all CPUs in the
system. But for hybrid there is no single "cycles" event which can cover
all CPUs. Perf has to split it into two cycles events, e.g.,
cpu_core/cycles/ and cpu_atom/cycles/. Each event has its own CPU mask.
If a event is opened on the unsupported CPU. The open fails. That's the
reason of the above error out.

Perf should only open the cycles event on the corresponding CPU. The
commit ef91871c960e ("perf evlist: Propagate user CPU maps intersecting
core PMU maps") intersect the requested CPU map with the CPU map of the
PMU. Use the evsel's cpus to replace user_requested_cpus.

The evlist's threads are also propagated to the evsel's threads in
__perf_evlist__propagate_maps(). For a system-wide event, perf appends
a dummy event and assign it to the evsel's threads. For a per-thread
event, the evlist's thread_map is assigned to the evsel's threads. The
same as the other tools, e.g., perf record, using the evsel's threads
when opening an event.

    Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Hector Martin <marcan@marcan.st>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
Closes: https://lore.kernel.org/linux-perf-users/ZXNnDrGKXbEELMXV@kernel.org/
    Link: https://lore.kernel.org/r/20231214144612.1092028-1-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:20 +02:00
Michael Petlan 5f163da1ef perf annotate: Ensure init/exit for global options
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit 7f929aea21fd0be5e0d9ee5827d5b809daa69f29
Author: Namhyung Kim <namhyung@kernel.org>
Date: Tue Nov 28 09:54:39 2023 -0800

description
===========
Now it only cares about the global options so it can just handle it
without the argument.

    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.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/20231128175441.721579-7-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:18 +02:00
Michael Petlan 8c4ff35be8 perf ui/browser/annotate: Use global annotation_options
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit 22197fb296913f83c7182befd2a8b23bf042f279
Author: Namhyung Kim <namhyung@kernel.org>
Date: Tue Nov 28 09:54:38 2023 -0800

description
===========
Now it can use the global options and no need save local browser
options separately.

    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.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/20231128175441.721579-6-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:18 +02:00
Michael Petlan 00bca253ff perf annotate: Use global annotation_options
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit 41fd3cacd29f47f6b9c6474b27c5b0513786c4e9
Author: Namhyung Kim <namhyung@kernel.org>
Date: Tue Nov 28 09:54:37 2023 -0800

description
===========
Now it can directly use the global options and no need to pass it as an
argument.

    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.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/20231128175441.721579-5-namhyung@kernel.org
[ Fixup build with GTK2=1 ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:18 +02:00
Michael Petlan b1b7de274d perf top: Convert to the global annotation_options
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit c9a21a872c69032cb9a94ebc171649c0c28141d7
Author: Namhyung Kim <namhyung@kernel.org>
Date: Tue Nov 28 09:54:36 2023 -0800

description
===========
Use the global option and drop the local copy.

    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.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/20231128175441.721579-4-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:18 +02:00
Michael Petlan f7c00cc3b3 perf evsel: Fallback to "task-clock" when not system wide
JIRA: https://issues.redhat.com/browse/RHEL-25824

upstream
========
commit eb2eac0c7b6180332ced94d2979f3d3c7d22aaff
Author: Ian Rogers <irogers@google.com>
Date: Mon Nov 20 16:04:20 2023 -0800

description
===========
When the "cycles" event isn't available evsel will fallback to the
"cpu-clock" software event.

"task-clock" is similar to "cpu-clock" but only runs when the process is
running.

Falling back to "cpu-clock" when not system wide leads to confusion, by
falling back to "task-clock" it is hoped the confusion is less.

Pass the target to determine if "task-clock" is more appropriate.

Update a nearby comment and debug string for the change.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Tested-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ajay Kaher <akaher@vmware.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Makhalov <amakhalov@vmware.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: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/r/20231121000420.368075-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2024-04-03 19:37:17 +02:00
Michael Petlan ecad9466ec perf top: Don't pass an ERR_PTR() directly to perf_session__delete()
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit ef23cb593304bde0cc046fd4cc83ae7ea2e24f16
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Thu Aug 17 09:11:21 2023 -0300

description
===========
While debugging a segfault on 'perf lock contention' without an
available perf.data file I noticed that it was basically calling:

	perf_session__delete(ERR_PTR(-1))

Resulting in:

  (gdb) run lock contention
  Starting program: /root/bin/perf lock contention
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".
  failed to open perf.data: No such file or directory  (try 'perf record' first)
  Initializing perf session failed

  Program received signal SIGSEGV, Segmentation fault.
  0x00000000005e7515 in auxtrace__free (session=0xffffffffffffffff) at util/auxtrace.c:2858
  2858		if (!session->auxtrace)
  (gdb) p session
  $1 = (struct perf_session *) 0xffffffffffffffff
  (gdb) bt
  #0  0x00000000005e7515 in auxtrace__free (session=0xffffffffffffffff) at util/auxtrace.c:2858
  #1  0x000000000057bb4d in perf_session__delete (session=0xffffffffffffffff) at util/session.c:300
  #2  0x000000000047c421 in __cmd_contention (argc=0, argv=0x7fffffffe200) at builtin-lock.c:2161
  #3  0x000000000047dc95 in cmd_lock (argc=0, argv=0x7fffffffe200) at builtin-lock.c:2604
  #4  0x0000000000501466 in run_builtin (p=0xe597a8 <commands+552>, argc=2, argv=0x7fffffffe200) at perf.c:322
  #5  0x00000000005016d5 in handle_internal_command (argc=2, argv=0x7fffffffe200) at perf.c:375
  #6  0x0000000000501824 in run_argv (argcp=0x7fffffffe02c, argv=0x7fffffffe020) at perf.c:419
  #7  0x0000000000501b11 in main (argc=2, argv=0x7fffffffe200) at perf.c:535
  (gdb)

So just set it to NULL after using PTR_ERR(session) to decode the error
as perf_session__delete(NULL) is supported.

The same problem was found in 'perf top' after an audit of all
perf_session__new() failure handling.

Fixes: 6ef81c55a2 ("perf session: Return error code for perf_session__new() function on failure")
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jeremie Galarneau <jeremie.galarneau@efficios.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Mamatha Inamdar <mamatha4@linux.vnet.ibm.com>
    Cc: Mukesh Ojha <mojha@codeaurora.org>
    Cc: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Shawn Landden <shawn@git.icu>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tzvetomir Stoyanov <tstoyanov@vmware.com>
    Link: https://lore.kernel.org/lkml/ZN4Q2rxxsL08A8rd@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 13:03:48 +02:00
Michael Petlan 36b4e204b5 perf annotation: Switch lock from a mutex to a sharded_mutex
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 2e9f9d4a729f12b4bc3fa60406374327b1809abe
Author: Ian Rogers <irogers@google.com>
Date: Wed Jun 14 21:07:15 2023 -0700

description
===========
Remove the "struct mutex lock" variable from annotation that is
allocated per symbol. This removes in the region of 40 bytes per
symbol allocation. Use a sharded mutex where the number of shards is
set to the number of CPUs. Assuming good hashing of the annotation
(done based on the pointer), this means in order to contend there
needs to be more threads than CPUs, which is not currently true in any
perf command. Were contention an issue it is straightforward to
increase the number of shards in the mutex.

On my Debian/glibc based machine, this reduces the size of struct
annotation from 136 bytes to 96 bytes, or nearly 30%.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Yuan Can <yuancan@huawei.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Link: https://lore.kernel.org/r/20230615040715.2064350-2-irogers@google.com
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 13:03:16 +02:00
Michael Petlan 64736bf0ba perf top: Add exit routine for main thread
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit cddeeeda8fba4156255abf5a1d8c2517de8db0cd
Author: Ian Rogers <irogers@google.com>
Date: Thu Jun 8 16:28:19 2023 -0700

description
===========
Add exit_process_thread that reverses init_process_thread. This avoids
leak sanitizer reporting memory leaks.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ali Saidi <alisaidi@amazon.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Brian Robbins <brianrob@linux.microsoft.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: Fangrui Song <maskray@google.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ivan Babrou <ivan@cloudflare.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jing Zhang <renyu.zj@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Ye Xingchen <ye.xingchen@zte.com.cn>
    Cc: Yuan Can <yuancan@huawei.com>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20230608232823.4027869-23-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 13:02:48 +02:00
Michael Petlan dd3248cc46 perf addr_location: Add init/exit/copy functions
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 0dd5041c9a0eaf8c5c3fd46df4ee60f877799f44
Author: Ian Rogers <irogers@google.com>
Date: Thu Jun 8 16:28:03 2023 -0700

description
===========
struct addr_location holds references to multiple reference counted
objects. Add init/exit functions to make maintenance of those more
consistent with the rest of the code and to try to avoid
leaks. Modification of thread reference counts isn't included in this
change.

Committer notes:

I needed to initialize result to sample->ip to make sure is set to
something, fixing a compile time error, mostly keeping the previous
logic as build_alloc_func_list() already does debugging/error prints
about what went wrong if it takes the 'goto out'.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ali Saidi <alisaidi@amazon.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Brian Robbins <brianrob@linux.microsoft.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: Fangrui Song <maskray@google.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ivan Babrou <ivan@cloudflare.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jing Zhang <renyu.zj@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Ye Xingchen <ye.xingchen@zte.com.cn>
    Cc: Yuan Can <yuancan@huawei.com>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20230608232823.4027869-7-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 13:02:43 +02:00
Michael Petlan 00a1b14546 perf thread: Add accessor functions for thread
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit ee84a3032b74055feed192a727e872b0a18d1140
Author: Ian Rogers <irogers@google.com>
Date: Thu Jun 8 16:28:00 2023 -0700

description
===========
Using accessors will make it easier to add reference count checking in
later patches.

Committer notes:

thread->nsinfo wasn't wrapped as it is used together with
nsinfo__zput(), where does a trick to set the field with a refcount
being dropped to NULL, and that doesn't work well with using
thread__nsinfo(thread), that loses the &thread->nsinfo pointer.

When refcount checking is added to 'struct thread', later in this
series, nsinfo__zput(RC_CHK_ACCESS(thread)->nsinfo) will be used to
check the thread pointer.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ali Saidi <alisaidi@amazon.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Brian Robbins <brianrob@linux.microsoft.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: Fangrui Song <maskray@google.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ivan Babrou <ivan@cloudflare.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jing Zhang <renyu.zj@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Ye Xingchen <ye.xingchen@zte.com.cn>
    Cc: Yuan Can <yuancan@huawei.com>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20230608232823.4027869-4-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 13:02:42 +02:00
Michael Petlan 1c66b48548 perf evlist: Remove __evlist__add_default
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 7b100989b4f6bce7090ef89badf4091b1730d14c
Author: Ian Rogers <irogers@google.com>
Date: Sat May 27 00:21:49 2023 -0700

description
===========
__evlist__add_default adds a cycles event to a typically empty evlist
and was extended for hybrid with evlist__add_default_hybrid, as more
than 1 PMU was necessary. Rather than have dedicated logic for the
cycles event, this change switches to parsing 'cycles:P' which will
handle wildcarding the PMUs appropriately for hybrid.

    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ali Saidi <alisaidi@amazon.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jing Zhang <renyu.zj@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kang Minchul <tegongkang@gmail.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Ming Wang <wangming01@loongson.cn>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20230527072210.2900565-14-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:02:01 +02:00
Michael Petlan 9af892db7f perf parse-events: Add pmu filter
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 411ad22ecf0281d666a82aa7f4de90c70365da7d
Author: Ian Rogers <irogers@google.com>
Date: Tue May 2 15:38:36 2023 -0700

description
===========
To support the cputype argument added to "perf stat" for hybrid it is
necessary to filter events during wildcard matching. Add a scanner
argument for the filter and checking it when wildcard matching.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Tested-by: Kan Liang <kan.liang@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ahmad Yasin <ahmad.yasin@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Caleb Biggers <caleb.biggers@intel.com>
    Cc: Edward Baker <edward.baker@intel.com>
    Cc: Florian Fischer <florian.fischer@muhq.space>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kang Minchul <tegongkang@gmail.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Perry Taylor <perry.taylor@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Samantha Alt <samantha.alt@intel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Cc: Weilin Wang <weilin.wang@intel.com>
    Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/r/20230502223851.2234828-30-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:01:36 +02:00
Michael Petlan 4b12cc6be3 perf map: Add set_ methods for map->{start,end,pgoff,pgoff,reloc,erange_warned,dso,map_ip,unmap_ip,priv}
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit e6a9efcee55f084a5450e4853ecbbaa0b086dcd0
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Wed Apr 19 12:24:12 2023 -0300

description
===========
To have a way to intercept usage of the reference counted struct map.

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:00:55 +02:00
Michael Petlan 72438b2ece perf top: Expand the range of multithreaded phase
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit eab5051788f6111adb88268a784af0c981616579
Author: Hangliang Lai <laihangliang1@huawei.com>
Date: Tue Apr 11 09:32:24 2023 +0800

description
===========
In __cmd_top(), perf_set_multithreaded() is used to enable
pthread_rwlock, thus down_read() and down_write () are not nops,
handling concurrency problems

Then 'perf top' uses perf_set_singlethreaded(), switching to the single
threaded phase, assuming that no thread concurrency will happen later.

However, a use after free problem could occur in the single threaded
phase, the concurrent procedure is this:

display_thread                              process_thread
--------------                              --------------
thread__comm_len
  -> thread__comm_str
    -> __thread__comm_str(thread)
                                            thread__delete
                                             -> comm__free
                                              -> comm_str__put
                                               -> zfree(&cs->str)
    -> thread->comm_len = strlen(comm);

Since in single thread phase, perf_singlethreaded is true, down_read()
and down_write() do nothing to avoid concurrency problems.

This patch moves the perf_set_singlethreaded() call to the function tail
to expand the multithreaded phase range, making display_thread() and
process_thread() concurrency safe.

    Reviewed-by: Yunfeng Ye <yeyunfeng@huawei.com>
    Signed-off-by: Hangliang Lai  <laihangliang1@huawei.com>
    Co-developed-by: Wenyu Liu <liuwenyu7@huawei.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Feilong Lin <linfeilong@huawei.com>
    Cc: Hewenliang <hewenliang4@huawei.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>
    Link: https://lore.kernel.org/r/20230411013224.2079-1-laihangliang1@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:00:33 +02:00
Michael Petlan 52bd9f7315 tools: Rename __fallthrough to fallthrough
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit f7a858bffcddaaf70c71b6b656e7cc21b6107cec
Author: Liam Howlett <liam.howlett@oracle.com>
Date: Fri Nov 25 15:50:16 2022 +0000

description
===========
Rename the fallthrough attribute to better align with the kernel
version.  Copy the definition from include/linux/compiler_attributes.h
including the #else clause.  Adding the #else clause allows the tools
compiler.h header to drop the check for a definition entirely and keeps
both definitions together.

Change any __fallthrough statements to fallthrough anywhere it was used
within perf.

This allows other tools to use the same key word as the kernel.

Committer notes:

Did some missing conversions to:

  builtin-list.c

Also included gtk.h before the 'fallthrough' definition in:

  tools/perf/ui/gtk/hists.c
  tools/perf/ui/gtk/helpline.c
  tools/perf/ui/gtk/browser.c

As it is the arg name for a macro in glib.h:

  /var/home/acme/git/perf-tools-next/tools/include/linux/compiler-gcc.h:16:55: error: missing binary operator before token "("
     16 | # define fallthrough                    __attribute__((__fallthrough__))
        |                                                       ^
  /usr/include/glib-2.0/glib/gmacros.h:637:28: note: in expansion of macro ‘fallthrough’
    637 | #if g_macro__has_attribute(fallthrough)

    Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Liam Howlett <Liam.Howlett@oracle.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Tom Rix <trix@redhat.com>
    Cc: linux-sparse@vger.kernel.org <linux-sparse@vger.kernel.org>
    Cc: llvm@lists.linux.dev <llvm@lists.linux.dev>
    Link: https://lore.kernel.org/r/20221125154947.2163498-1-Liam.Howlett@oracle.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:00:04 +02:00
Michael Petlan d057ea6e5b perf map: Add accessor for start and end
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit e5116f46d44b72ede59a6923829f68a8b8f84e76
Author: Ian Rogers <irogers@google.com>
Date: Mon Mar 20 14:22:36 2023 -0700

description
===========
Later changes will add reference count checking for struct map, start
and end are frequently accessed variables. Add an accessor so that the
reference count check is only necessary in one place.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Hao Luo <haoluo@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Miaoqian Lin <linmq006@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
    Cc: Song Liu <song@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Yury Norov <yury.norov@gmail.com>
    Link: https://lore.kernel.org/r/20230320212248.1175731-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:00:02 +02:00
Michael Petlan 0c196b90d9 perf map: Add accessor for dso
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 63df0e4bc368adbd12ed70ed4789d8d52d65661d
Author: Ian Rogers <irogers@google.com>
Date: Mon Mar 20 14:22:35 2023 -0700

description
===========
Later changes will add reference count checking for struct map, with
dso being the most frequently accessed variable. Add an accessor so
that the reference count check is only necessary in one place.

Additional changes:
 - add a dso variable to avoid repeated map__dso calls.
 - in builtin-mem.c dump_raw_samples, code only partially tested for
   dso == NULL. Make the possibility of NULL consistent.
 - in thread.c thread__memcpy fix use of spaces and use tabs.

Committer notes:

Did missing conversions on these files:

   tools/perf/arch/powerpc/util/skip-callchain-idx.c
   tools/perf/arch/powerpc/util/sym-handling.c
   tools/perf/ui/browsers/hists.c
   tools/perf/ui/gtk/annotate.c
   tools/perf/util/cs-etm.c
   tools/perf/util/thread.c
   tools/perf/util/unwind-libunwind-local.c
   tools/perf/util/unwind-libunwind.c

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Hao Luo <haoluo@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Miaoqian Lin <linmq006@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
    Cc: Song Liu <song@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Yury Norov <yury.norov@gmail.com>
    Link: https://lore.kernel.org/r/20230320212248.1175731-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 12:00:02 +02:00
Michael Petlan 9f083d7ac4 perf top: Add --branch-history option
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 5ef506130c739a0601d234b36f5dfd2129f966c0
Author: Adrian Hunter <adrian.hunter@intel.com>
Date: Thu Mar 30 16:18:32 2023 +0300

description
===========
Add --branch-history option, to act the same as that option does for
perf report.

Example:

  $ cat tcallf.c
  volatile a = 10000, b = 100000, c;

  __attribute__((noinline)) f2()
  {
          c = a / b;
  }

  __attribute__((noinline)) f1()
  {
          f2();
          f2();
  }
  main()
  {
          while (1)
                  f1();
  }
  $ gcc -w -g -o tcallf tcallf.c
  $ ./tcallf &
  [1] 29409
  $ perf top -e cycles:u  -t $(pidof tcallf) --stdio --no-children --branch-history
     PerfTop:    3819 irqs/sec  kernel: 0.0%  exact:  0.0% lost: 0/0 drop: 0/0 [4000Hz cycles:u],  (target_tid: 29409)
  --------------------------------------------------------------------------------------------------------------------

      49.01%  tcallf.c:5   [.] f2    tcallf
              |
              |--24.91%--f2 tcallf.c:4
              |          |
              |          |--17.14%--f1 tcallf.c:11 (cycles:1)
              |          |          f1 tcallf.c:11
              |          |          f2 tcallf.c:6 (cycles:3)
              |          |          f2 tcallf.c:4
              |          |          f1 tcallf.c:10 (cycles:2)
              |          |          f1 tcallf.c:9
              |          |          main tcallf.c:16 (cycles:1)
              |          |          main tcallf.c:16
              |          |          main tcallf.c:16 (cycles:1)
              |          |          main tcallf.c:16
              |          |          f1 tcallf.c:12 (cycles:1)
              |          |          f1 tcallf.c:12
              |          |          f2 tcallf.c:6 (cycles:3)
              |          |          f2 tcallf.c:4
              |          |          f1 tcallf.c:11 (cycles:1 iter:1 avg_cycles:12)
              |          |          f1 tcallf.c:11
              |          |          f2 tcallf.c:6 (cycles:3 iter:1 avg_cycles:12)
              |          |          f2 tcallf.c:4
              |          |          f1 tcallf.c:10 (cycles:2 iter:1 avg_cycles:12)
              |          |
              |           --7.78%--f1 tcallf.c:10 (cycles:2)
              |                     f1 tcallf.c:9
              |                     main tcallf.c:16 (cycles:1)
              |                     main tcallf.c:16
              |                     main tcallf.c:16 (cycles:1)
              |                     main tcallf.c:16
              |                     f1 tcallf.c:12 (cycles:1)
              |                     f1 tcallf.c:12
              |                     f2 tcallf.c:6 (cycles:3)
              |                     f2 tcallf.c:4
              |                     f1 tcallf.c:11 (cycles:1)
              |                     f1 tcallf.c:11
              |                     f2 tcallf.c:6 (cycles:3)
              |                     f2 tcallf.c:4
              |                     f1 tcallf.c:10 (cycles:2 iter:1 avg_cycles:12)
              |                     f1 tcallf.c:9
              |                     main tcallf.c:16 (cycles:1 iter:1 avg_cycles:12)
              |                     main tcallf.c:16
              |                     main tcallf.c:16 (cycles:1 iter:1 avg_cycles:12)
  ...

  $ pkill tcallf
  [1]+  Terminated              ./tcallf

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20230330131833.12864-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 11:59:48 +02:00
Michael Petlan 5fe937c217 perf symbol: Add command line support for addr2line path
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 57594454ceb92defaa0707cf29289f0c3c266ede
Author: Ian Rogers <irogers@google.com>
Date: Tue Mar 28 16:55:43 2023 -0700

description
===========
Allow addr2line to be set either on the command line or via the
perfconfig file. This doesn't currently work with llvm-addr2line as
the addr2line code emits two things:
1) the address to decode,
2) a bogus ',' value.
The expectation is the bogus value will generate:
??
??:0
that terminates the addr2line reading. However, the output from
llvm-addr2line is a single line with just the input ',' locking up the
addr2line reading that is expecting a second line.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.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: Sandipan Das <sandipan.das@amd.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: llvm@lists.linux.dev
    Link: https://lore.kernel.org/r/20230328235543.1082207-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 11:59:46 +02:00
Michael Petlan fb3a7ae68a perf annotate: Own objdump_path and disassembler_style strings
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 56d9117c5004e7192d8062da67fef220e4fdcd19
Author: Ian Rogers <irogers@google.com>
Date: Tue Mar 28 16:55:41 2023 -0700

description
===========
Make struct annotation_options own the strings objdump_path and
disassembler_style, freeing them on exit. Add missing strdup for
disassembler_style when read from a config file.

Committer notes:

Converted free(obj->member) to zfree(&obj->member) in
annotation_options__exit()

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.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: Sandipan Das <sandipan.das@amd.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: llvm@lists.linux.dev
    Link: https://lore.kernel.org/r/20230328235543.1082207-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 11:59:45 +02:00
Michael Petlan 2c762ce73f perf annotate: Add init/exit to annotation_options remove default
Bugzilla: https://bugzilla.redhat.com/2233483

upstream
========
commit 217b7d41ea2038e52991b7a600a0b958330d8ae6
Author: Ian Rogers <irogers@google.com>
Date: Tue Mar 28 16:55:40 2023 -0700

description
===========
The annotation__default_options global variable was used to initialize
annotation_options.  Switch to the init/exit pattern as later changes
will give ownership over strings and this will be necessary to avoid
memory leaks.

Committer note:

Fix the GTK2=1 build, hist_entry__gtk_annotate() needs to receive a
'struct annotation_options' pointer.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.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: Sandipan Das <sandipan.das@amd.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: llvm@lists.linux.dev
    Link: https://lore.kernel.org/r/20230328235543.1082207-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-09-18 11:59:45 +02:00
Michael Petlan a0e9d8b8e7 perf evlist: Remove group option.
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit 5f8f95673f68914419e8657b3263736264b40e16
Author: Ian Rogers <irogers@google.com>
Date: Tue Dec 13 15:26:51 2022 -0800

description
===========
The group option predates grouping events using curly braces added in
commit 89efb02950 ("perf tools: Add support to parse event group
syntax").

The --group option was retained for legacy support (in August
2012) but keeping it adds complexity.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Eelco Chaudron <echaudro@redhat.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Shaomin Deng <dengshaomin@cdjrlc.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Timothy Hayes <timothy.hayes@arm.com>
    Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
    Cc: bpf@vger.kernel.org
    Link: https://lore.kernel.org/r/20221213232651.1269909-6-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-05 10:02:31 +02:00
Michael Petlan e41aad7ffc perf top: Use sig_atomic_t to avoid undefined behaviour in a signal handler
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit 691768968f2a13eba8d52e8475dca7feb288d4f2
Author: Ian Rogers <irogers@google.com>
Date: Mon Oct 24 11:19:12 2022 -0700

description
===========
Use sig_atomic_t for variables written/accessed in signal
handlers. This is undefined behavior as per:

  https://wiki.sei.cmu.edu/confluence/display/c/SIG31-C.+Do+not+access+shared+objects+in+signal+handlers

    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20221024181913.630986-8-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:03:05 +02:00
Michael Petlan f1eab3fc8f perf top: Fix error code in cmd_top()
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit dc64641c8f917f20ad5cf678de3b77ebc8fb3a9a
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date: Thu Sep 22 22:14:37 2022 +0800

description
===========
There are three error paths which return success:

1. Propagate the errno from evlist__create_maps() if it failed.

2. Return -EINVAL if top.sb_evlist is NULL.

3. Return -EINVAL if evlist__add_bpf_sb_event() failed.

    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.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/20220922141438.22487-4-shangxiaojing@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:02:42 +02:00
Michael Petlan 0519c6f032 perf top: Fixes for thread safety analysis
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit b40b2122566ea2d948032370000f0b06b8d507fc
Author: Ian Rogers <irogers@google.com>
Date: Fri Aug 26 09:42:41 2022 -0700

description
===========
Add annotations to describe lock behavior.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexandre Truong <alexandre.truong@arm.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: André Almeida <andrealmeid@igalia.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Colin Ian King <colin.king@intel.com>
    Cc: Dario Petrillo <dario.pk1@gmail.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Dave Marchevsky <davemarchevsky@fb.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Fangrui Song <maskray@google.com>
    Cc: Hewenliang <hewenliang4@huawei.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jason Wang <wangborong@cdjrlc.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Remi Bernon <rbernon@codeweavers.com>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: Weiguo Li <liwg06@foxmail.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: William Cohen <wcohen@redhat.com>
    Cc: Zechuan Chen <chenzechuan1@huawei.com>
    Cc: bpf@vger.kernel.org
    Cc: llvm@lists.linux.dev
    Cc: yaowenbin <yaowenbin1@huawei.com>
    Link: https://lore.kernel.org/r/20220826164242.43412-18-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:02:37 +02:00
Michael Petlan 19c759b303 perf top: Update use of pthread mutex
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit d8e40b58ad4701198bfe83b860a29153d17dc478
Author: Ian Rogers <irogers@google.com>
Date: Fri Aug 26 09:42:37 2022 -0700

description
===========
Switch to the use of mutex wrappers that provide better error checking.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexandre Truong <alexandre.truong@arm.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: André Almeida <andrealmeid@igalia.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Colin Ian King <colin.king@intel.com>
    Cc: Dario Petrillo <dario.pk1@gmail.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Dave Marchevsky <davemarchevsky@fb.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Fangrui Song <maskray@google.com>
    Cc: Hewenliang <hewenliang4@huawei.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jason Wang <wangborong@cdjrlc.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Remi Bernon <rbernon@codeweavers.com>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: Weiguo Li <liwg06@foxmail.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: William Cohen <wcohen@redhat.com>
    Cc: Zechuan Chen <chenzechuan1@huawei.com>
    Cc: bpf@vger.kernel.org
    Cc: llvm@lists.linux.dev
    Cc: yaowenbin <yaowenbin1@huawei.com>
    Link: https://lore.kernel.org/r/20220826164242.43412-14-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:02:37 +02:00
Michael Petlan 2a8d60de33 perf annotate: Update use of pthread mutex
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit 9b3726ef836f6059af948c4b83317070da8b95f9
Author: Ian Rogers <irogers@google.com>
Date: Fri Aug 26 09:42:36 2022 -0700

description
===========
Switch to the use of mutex wrappers that provide better error checking.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexandre Truong <alexandre.truong@arm.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: André Almeida <andrealmeid@igalia.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Colin Ian King <colin.king@intel.com>
    Cc: Dario Petrillo <dario.pk1@gmail.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Dave Marchevsky <davemarchevsky@fb.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Fangrui Song <maskray@google.com>
    Cc: Hewenliang <hewenliang4@huawei.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jason Wang <wangborong@cdjrlc.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Remi Bernon <rbernon@codeweavers.com>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: Weiguo Li <liwg06@foxmail.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: William Cohen <wcohen@redhat.com>
    Cc: Zechuan Chen <chenzechuan1@huawei.com>
    Cc: bpf@vger.kernel.org
    Cc: llvm@lists.linux.dev
    Cc: yaowenbin <yaowenbin1@huawei.com>
    Link: https://lore.kernel.org/r/20220826164242.43412-13-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:02:37 +02:00
Michael Petlan e234e55fe5 perf hist: Update use of pthread mutex
Bugzilla: https://bugzilla.redhat.com/2177180

upstream
========
commit 8e03bb88ab8b60b52baafc4f909bddc1c2323cb5
Author: Ian Rogers <irogers@google.com>
Date: Fri Aug 26 09:42:28 2022 -0700

description
===========
Switch to the use of mutex wrappers that provide better error checking.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexandre Truong <alexandre.truong@arm.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Andres Freund <andres@anarazel.de>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: André Almeida <andrealmeid@igalia.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Colin Ian King <colin.king@intel.com>
    Cc: Dario Petrillo <dario.pk1@gmail.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Dave Marchevsky <davemarchevsky@fb.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Fangrui Song <maskray@google.com>
    Cc: Hewenliang <hewenliang4@huawei.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jason Wang <wangborong@cdjrlc.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kim Phillips <kim.phillips@amd.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Remi Bernon <rbernon@codeweavers.com>
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tom Rix <trix@redhat.com>
    Cc: Weiguo Li <liwg06@foxmail.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: William Cohen <wcohen@redhat.com>
    Cc: Zechuan Chen <chenzechuan1@huawei.com>
    Cc: bpf@vger.kernel.org
    Cc: llvm@lists.linux.dev
    Cc: yaowenbin <yaowenbin1@huawei.com>
    Link: https://lore.kernel.org/r/20220826164242.43412-5-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2023-06-01 17:02:36 +02:00
Michael Petlan 1ed24eddc8 perf evlist: Rename cpus to user_requested_cpus
Bugzilla: https://bugzilla.redhat.com/2123231

upstream
========
commit 0df6ade7119daa40904b0c18871169e753663e14
Author: Ian Rogers <irogers@google.com>
Date: Mon Mar 28 16:26:44 2022 -0700

description
===========
evlist contains cpus and all_cpus. all_cpus is the union of the cpu maps
of all evsels.

For non-task targets, cpus is set to be cpus requested from the command
line, defaulting to all online cpus if no cpus are specified.

For an uncore event, all_cpus may be just CPU 0 or every online CPU.

This causes all_cpus to have fewer values than the cpus variable which
is confusing given the 'all' in the name.

To try to make the behavior clearer, rename cpus to user_requested_cpus
and add comments on the two struct variables.

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-09-21 07:22:55 +02:00
Michael Petlan cdfcea53ca perf top: Remove redundant 'err' variable
Bugzilla: https://bugzilla.redhat.com/2123231

upstream
========
commit 662a9810fcca3d9b3435187d45b759b9649c4551
Author: tangmeng <tangmeng@uniontech.com>
Date: Wed Feb 16 11:04:25 2022 +0800

description
===========
The variable 'err' in the perf_event__process_sample() is only used in
the only one judgment statement, it is not used in other places.

So, use the return value from hist_entry_iter__add() directly instead of
taking this in another redundant variable.

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-09-21 07:22:52 +02:00
Michael Petlan 7f9287f35e perf tui: Only support --tui with slang
Bugzilla: https://bugzilla.redhat.com/2123231

upstream
========
commit 3402ae0a2e05e05254960581ae53d99118e1e134
Author: Ian Rogers <irogers@google.com>
Date: Sun Jan 23 11:18:48 2022 -0800

description
===========
Make the --tui command line flags dependent HAVE_SLANG_SUPPORT. This was
reported as confusing in:
https://lore.kernel.org/linux-perf-users/YevaTkzdXmFKdGpc@zx-spectrum.none/

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-09-21 07:22:51 +02:00
Michael Petlan 0a3a4e4a7e perf report: Output data file name in raw trace dump
Bugzilla: https://bugzilla.redhat.com/2123231

upstream
========
commit 2292083f5956803efe923c8696ca51bf7d4bde53
Author: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Date: Mon Jan 17 21:34:36 2022 +0300

description
===========
Print path and name of a data file into raw dump (-D)
<file_offset>@<path/file>:

  0x2226a@perf.data [0x30]: event: 9
or
  0x15cc36@perf.data/data.7 [0x30]: event: 9

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-09-21 07:22:46 +02:00
Michael Petlan de451198af perf tools: Check vmlinux/kallsyms arguments in all tools
Bugzilla: https://bugzilla.redhat.com/2069073

upstream
========
commit 7cc72553ac03ec20afe2dec91dce4624ccd379b8
Author: James Clark <james.clark@arm.com>
Date: Mon Oct 18 14:48:42 2021 +0100

description
===========
Only perf report checked the validity of these arguments so apply the
same check to all tools that read them for consistency.

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-05-16 11:35:11 +02:00
Michael Petlan 3de72356e1 perf tools: Allow controlling synthesizing PERF_RECORD_ metadata events during record
Bugzilla: https://bugzilla.redhat.com/2069073

upstream
========
commit 84111b9c950ec9a8b31166973e79aa77ddcee7e3
Author: Namhyung Kim <namhyung@kernel.org>
Date: Tue Aug 10 21:46:57 2021 -0700

description
===========
Depending on the use case, it might require some kind of synthesizing
and some not.  Make it controllable to turn off heavy operations like
MMAP for all tasks.

Currently all users are converted to enable all the synthesis by
default.  It'll be updated in the later patch.

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-05-16 11:34:44 +02:00
Michael Petlan 1df7d85569 perf tools: Remove repipe argument from perf_session__new()
Bugzilla: https://bugzilla.redhat.com/2069070

upstream
========
commit 2681bd85a4b92788e265934d0d76bd56b5b08d16
Author: Namhyung Kim <namhyung@kernel.org>
Date: Mon Jul 19 15:31:49 2021 -0700

description
===========
The repipe argument is only used by perf inject and the all others
passes 'false'.  Let's remove it from the function signature and add
__perf_session__new() to be called from perf inject directly.

This is a preparation of the change the pipe input/output.

[ Fixed up some trivial conflicts as this patchset fell thru the cracks ;-( ]

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
2022-04-25 12:33:02 +02:00
Jiri Olsa fba7c86601 libperf: Move 'leader' from tools/perf to perf_evsel::leader
Move evsel::leader to perf_evsel::leader, so we can move the group
interface to libperf.

Also add several evsel helpers to ease up the transition:

  struct evsel *evsel__leader(struct evsel *evsel);
  - get leader evsel

  bool evsel__has_leader(struct evsel *evsel, struct evsel *leader);
  - true if evsel has leader as leader

  bool evsel__is_leader(struct evsel *evsel);
  - true if evsel is itw own leader

  void evsel__set_leader(struct evsel *evsel, struct evsel *leader);
  - set leader for evsel

Committer notes:

Fix this when building with 'make BUILD_BPF_SKEL=1'

  tools/perf/util/bpf_counter.c

  -       if (evsel->leader->core.nr_members > 1) {
  +       if (evsel->core.leader->nr_members > 1) {

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Requested-by: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210706151704.73662-4-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-07-09 14:04:31 -03:00
Jiri Olsa 38fe0e0156 libperf: Move 'idx' from tools/perf to perf_evsel::idx
Move evsel::idx to perf_evsel::idx, so we can move the group interface
to libperf.

Committer notes:

Fixup evsel->idx usage in tools/perf/util/bpf_counter_cgroup.c, that
appeared in my tree in my local tree.

Also fixed up these:

$ find tools/perf/ -name "*.[ch]" | xargs grep 'evsel->idx'
tools/perf/ui/gtk/annotate.c:                      evsel->idx + i);
tools/perf/ui/gtk/annotate.c:                   evsel->idx);
$

That running 'make -C tools/perf build-test' caught.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Requested-by: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210706151704.73662-3-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-07-09 14:04:28 -03:00
Joshua Martinez 51f382428c perf top: Add cgroup support for perf top (-G)
Added callback option (-G) to support cgroups for 'perf top'.

Added condition to make sure -cgroup and --all-cgroups aren't both enabled.

Example:

  $perf top -e cycles -G system.slice/docker-6b95a5eb649c0d671eba3835f0d93973d05a088f3ae8602246bde37affb1ba3e.scope -a --stdio

   PerfTop:    3330 irqs/sec  kernel:68.2%  exact:  0.0% lost: 0/0 drop: 0/11075 [4000Hz cpu-clock],  (all, 4 CPUs)
   -------------------------------------------------------------------------------------------------------------------------------------------------------

    27.32%  [unknown]         [.] 0x00007f8ab7b69352
    11.44%  [kernel]          [k] 0xffffffff968cd657
     3.12%  [kernel]          [k] 0xffffffff96160e96
     2.63%  [kernel]          [k] 0xffffffff96160eb0
     1.96%  [kernel]          [k] 0xffffffff9615fcf6
     1.42%  [kernel]          [k] 0xffffffff964ddfc7
     1.09%  [kernel]          [k] 0xffffffff96160e90
     0.81%  [kernel]          [k] 0xffffffff96160eb3
     0.67%  [kernel]          [k] 0xffffffff9615fec1
     0.57%  [kernel]          [k] 0xffffffff961ee1d0
     0.53%  [unknown]         [.] 0x00007f8ab7b6666c
     0.53%  [kernel]          [k] 0xffffffff96160e64
     0.52%  [kernel]          [k] 0xffffffff9616c303
     0.51%  [kernel]          [k] 0xffffffffc08e7d50
     ...

Signed-off-by: Joshua Martinez <joshuamart@google.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: joshua martinez <joshuamart@google.com>
Link: http://lore.kernel.org/lkml/20210616231829.3735671-1-joshuamart@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-06-24 15:33:35 -03:00
Namhyung Kim bf8f8587bf perf top: Use evlist->events_stat to count events
It's mainly to count lost events for the warning so it should be ok
to use the evlist->stats instead.  This is needed for changes in the
next commit.

Reviewed-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210427013717.1651674-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-04-29 10:30:58 -03:00
Ingo Molnar 4d39c89f0b perf tools: Fix various typos in comments
Fix ~124 single-word typos and a few spelling errors in the perf tooling code,
accumulated over the years.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210321113734.GA248990@gmail.com
Link: http://lore.kernel.org/lkml/20210323160915.GA61903@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-03-23 17:13:43 -03:00