All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	John Garry <john.garry@huawei.com>,
	Kajol Jain <kjain@linux.ibm.com>,
	"Paul A . Clarke" <pc@us.ibm.com>,
	Riccardo Mancini <rickyman7@gmail.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	Vineet Singh <vineet.singh@intel.com>,
	James Clark <james.clark@arm.com>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>,
	coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org,
	zhengjun.xing@intel.com, eranian@google.com
Subject: Re: [PATCH v4 48/48] perf cpumap: Give CPUs their own type.
Date: Tue, 11 Jan 2022 11:16:16 -0800	[thread overview]
Message-ID: <CAP-5=fWZWMweYhWvv1vr6quZe=ZJrhF_WEXqbELVitzofBcQrA@mail.gmail.com> (raw)
In-Reply-To: <YdyOFd8JJHbm1W+m@kernel.org>

On Mon, Jan 10, 2022 at 11:50 AM Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
>
> Em Tue, Jan 04, 2022 at 10:13:51PM -0800, Ian Rogers escreveu:
> > A common problem is confusing CPU map indices with the CPU, by wrapping
> > the CPU with a struct then this is avoided. This approach is similar to
> > atomic_t.
>
> This one needed this to build with BUILD_BPF_SKEL=1, please check, I'll
> soon push this to tmp.perf/perf_cpu so that you can take a look and test
> it.


Thanks Arnaldo, I did eye-ball one issue where cpu_map__default_new's
behavior would be impacted (nr would be 1 rather than nr_cpus). The
fix is:

--- a/tools/lib/perf/cpumap.c
+++ b/tools/lib/perf/cpumap.c
@@ -18,7 +18,7 @@ static struct perf_cpu_map *perf_cpu_map__alloc(int nr_cpus)
        if (!cpus)
                return NULL;

-       cpus->nr = 1;
+       cpus->nr = nr_cpus;
        refcount_set(&cpus->refcnt, 1);
        return cpus;
 }

Could you add that into this patch as well?

Thanks,
Ian


> - Arnaldo
>
> diff --git a/tools/perf/util/bpf_counter.c b/tools/perf/util/bpf_counter.c
> index 80d1a3a31052fe55..328479df5e16a638 100644
> --- a/tools/perf/util/bpf_counter.c
> +++ b/tools/perf/util/bpf_counter.c
> @@ -540,7 +540,7 @@ static int bperf__load(struct evsel *evsel, struct target *target)
>                     filter_type == BPERF_FILTER_TGID)
>                         key = evsel->core.threads->map[i].pid;
>                 else if (filter_type == BPERF_FILTER_CPU)
> -                       key = evsel->core.cpus->map[i];
> +                       key = evsel->core.cpus->map[i].cpu;
>                 else
>                         break;
>
> @@ -584,7 +584,7 @@ static int bperf_sync_counters(struct evsel *evsel)
>
>         num_cpu = all_cpu_map->nr;
>         for (i = 0; i < num_cpu; i++) {
> -               cpu = all_cpu_map->map[i];
> +               cpu = all_cpu_map->map[i].cpu;
>                 bperf_trigger_reading(evsel->bperf_leader_prog_fd, cpu);
>         }
>         return 0;
> @@ -605,7 +605,7 @@ static int bperf__disable(struct evsel *evsel)
>  static int bperf__read(struct evsel *evsel)
>  {
>         struct bperf_follower_bpf *skel = evsel->follower_skel;
> -       __u32 num_cpu_bpf = cpu__max_cpu();
> +       __u32 num_cpu_bpf = cpu__max_cpu().cpu;
>         struct bpf_perf_event_value values[num_cpu_bpf];
>         int reading_map_fd, err = 0;
>         __u32 i;
> @@ -615,6 +615,7 @@ static int bperf__read(struct evsel *evsel)
>         reading_map_fd = bpf_map__fd(skel->maps.accum_readings);
>
>         for (i = 0; i < bpf_map__max_entries(skel->maps.accum_readings); i++) {
> +               struct perf_cpu entry;
>                 __u32 cpu;
>
>                 err = bpf_map_lookup_elem(reading_map_fd, &i, values);
> @@ -624,14 +625,15 @@ static int bperf__read(struct evsel *evsel)
>                 case BPERF_FILTER_GLOBAL:
>                         assert(i == 0);
>
> -                       perf_cpu_map__for_each_cpu(cpu, j, all_cpu_map) {
> +                       perf_cpu_map__for_each_cpu(entry, j, all_cpu_map) {
> +                               cpu = entry.cpu;
>                                 perf_counts(evsel->counts, cpu, 0)->val = values[cpu].counter;
>                                 perf_counts(evsel->counts, cpu, 0)->ena = values[cpu].enabled;
>                                 perf_counts(evsel->counts, cpu, 0)->run = values[cpu].running;
>                         }
>                         break;
>                 case BPERF_FILTER_CPU:
> -                       cpu = evsel->core.cpus->map[i];
> +                       cpu = evsel->core.cpus->map[i].cpu;
>                         perf_counts(evsel->counts, i, 0)->val = values[cpu].counter;
>                         perf_counts(evsel->counts, i, 0)->ena = values[cpu].enabled;
>                         perf_counts(evsel->counts, i, 0)->run = values[cpu].running;
> diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c
> index cbc6c2bca488f6bf..631e34a0b66ff084 100644
> --- a/tools/perf/util/bpf_counter_cgroup.c
> +++ b/tools/perf/util/bpf_counter_cgroup.c
> @@ -48,7 +48,7 @@ static int bperf_load_program(struct evlist *evlist)
>         struct cgroup *cgrp, *leader_cgrp;
>         __u32 i, cpu;
>         __u32 nr_cpus = evlist->core.all_cpus->nr;
> -       int total_cpus = cpu__max_cpu();
> +       int total_cpus = cpu__max_cpu().cpu;
>         int map_size, map_fd;
>         int prog_fd, err;
>
> @@ -125,7 +125,7 @@ static int bperf_load_program(struct evlist *evlist)
>                         for (cpu = 0; cpu < nr_cpus; cpu++) {
>                                 int fd = FD(evsel, cpu);
>                                 __u32 idx = evsel->core.idx * total_cpus +
> -                                       evlist->core.all_cpus->map[cpu];
> +                                       evlist->core.all_cpus->map[cpu].cpu;
>
>                                 err = bpf_map_update_elem(map_fd, &idx, &fd,
>                                                           BPF_ANY);
> @@ -212,7 +212,7 @@ static int bperf_cgrp__sync_counters(struct evlist *evlist)
>         int prog_fd = bpf_program__fd(skel->progs.trigger_read);
>
>         for (i = 0; i < nr_cpus; i++) {
> -               cpu = evlist->core.all_cpus->map[i];
> +               cpu = evlist->core.all_cpus->map[i].cpu;
>                 bperf_trigger_reading(prog_fd, cpu);
>         }
>
> @@ -245,7 +245,7 @@ static int bperf_cgrp__read(struct evsel *evsel)
>  {
>         struct evlist *evlist = evsel->evlist;
>         int i, cpu, nr_cpus = evlist->core.all_cpus->nr;
> -       int total_cpus = cpu__max_cpu();
> +       int total_cpus = cpu__max_cpu().cpu;
>         struct perf_counts_values *counts;
>         struct bpf_perf_event_value *values;
>         int reading_map_fd, err = 0;
> @@ -272,7 +272,7 @@ static int bperf_cgrp__read(struct evsel *evsel)
>                 }
>
>                 for (i = 0; i < nr_cpus; i++) {
> -                       cpu = evlist->core.all_cpus->map[i];
> +                       cpu = evlist->core.all_cpus->map[i].cpu;
>
>                         counts = perf_counts(evsel->counts, i, 0);
>                         counts->val = values[cpu].counter;
> diff --git a/tools/perf/util/bpf_ftrace.c b/tools/perf/util/bpf_ftrace.c
> index 28dc4c60c7884818..d756cc66eef32ae8 100644
> --- a/tools/perf/util/bpf_ftrace.c
> +++ b/tools/perf/util/bpf_ftrace.c
> @@ -63,7 +63,7 @@ int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace)
>                 fd = bpf_map__fd(skel->maps.cpu_filter);
>
>                 for (i = 0; i < ncpus; i++) {
> -                       cpu = perf_cpu_map__cpu(ftrace->evlist->core.cpus, i);
> +                       cpu = perf_cpu_map__cpu(ftrace->evlist->core.cpus, i).cpu;
>                         bpf_map_update_elem(fd, &cpu, &val, BPF_ANY);
>                 }
>         }
> @@ -122,7 +122,7 @@ int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused,
>         int i, fd, err;
>         u32 idx;
>         u64 *hist;
> -       int ncpus = cpu__max_cpu();
> +       int ncpus = cpu__max_cpu().cpu;
>
>         fd = bpf_map__fd(skel->maps.latency);
>

WARNING: multiple messages have this Message-ID (diff)
From: Ian Rogers <irogers@google.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>,
	 Namhyung Kim <namhyung@kernel.org>,
	John Garry <john.garry@huawei.com>,
	 Kajol Jain <kjain@linux.ibm.com>,
	"Paul A . Clarke" <pc@us.ibm.com>,
	 Riccardo Mancini <rickyman7@gmail.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	 Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	 Mark Rutland <mark.rutland@arm.com>,
	 Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	linux-perf-users@vger.kernel.org,  linux-kernel@vger.kernel.org,
	Vineet Singh <vineet.singh@intel.com>,
	 James Clark <james.clark@arm.com>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,  Leo Yan <leo.yan@linaro.org>,
	coresight@lists.linaro.org,
	 linux-arm-kernel@lists.infradead.org, zhengjun.xing@intel.com,
	 eranian@google.com
Subject: Re: [PATCH v4 48/48] perf cpumap: Give CPUs their own type.
Date: Tue, 11 Jan 2022 11:16:16 -0800	[thread overview]
Message-ID: <CAP-5=fWZWMweYhWvv1vr6quZe=ZJrhF_WEXqbELVitzofBcQrA@mail.gmail.com> (raw)
In-Reply-To: <YdyOFd8JJHbm1W+m@kernel.org>

On Mon, Jan 10, 2022 at 11:50 AM Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
>
> Em Tue, Jan 04, 2022 at 10:13:51PM -0800, Ian Rogers escreveu:
> > A common problem is confusing CPU map indices with the CPU, by wrapping
> > the CPU with a struct then this is avoided. This approach is similar to
> > atomic_t.
>
> This one needed this to build with BUILD_BPF_SKEL=1, please check, I'll
> soon push this to tmp.perf/perf_cpu so that you can take a look and test
> it.


Thanks Arnaldo, I did eye-ball one issue where cpu_map__default_new's
behavior would be impacted (nr would be 1 rather than nr_cpus). The
fix is:

--- a/tools/lib/perf/cpumap.c
+++ b/tools/lib/perf/cpumap.c
@@ -18,7 +18,7 @@ static struct perf_cpu_map *perf_cpu_map__alloc(int nr_cpus)
        if (!cpus)
                return NULL;

-       cpus->nr = 1;
+       cpus->nr = nr_cpus;
        refcount_set(&cpus->refcnt, 1);
        return cpus;
 }

Could you add that into this patch as well?

Thanks,
Ian


> - Arnaldo
>
> diff --git a/tools/perf/util/bpf_counter.c b/tools/perf/util/bpf_counter.c
> index 80d1a3a31052fe55..328479df5e16a638 100644
> --- a/tools/perf/util/bpf_counter.c
> +++ b/tools/perf/util/bpf_counter.c
> @@ -540,7 +540,7 @@ static int bperf__load(struct evsel *evsel, struct target *target)
>                     filter_type == BPERF_FILTER_TGID)
>                         key = evsel->core.threads->map[i].pid;
>                 else if (filter_type == BPERF_FILTER_CPU)
> -                       key = evsel->core.cpus->map[i];
> +                       key = evsel->core.cpus->map[i].cpu;
>                 else
>                         break;
>
> @@ -584,7 +584,7 @@ static int bperf_sync_counters(struct evsel *evsel)
>
>         num_cpu = all_cpu_map->nr;
>         for (i = 0; i < num_cpu; i++) {
> -               cpu = all_cpu_map->map[i];
> +               cpu = all_cpu_map->map[i].cpu;
>                 bperf_trigger_reading(evsel->bperf_leader_prog_fd, cpu);
>         }
>         return 0;
> @@ -605,7 +605,7 @@ static int bperf__disable(struct evsel *evsel)
>  static int bperf__read(struct evsel *evsel)
>  {
>         struct bperf_follower_bpf *skel = evsel->follower_skel;
> -       __u32 num_cpu_bpf = cpu__max_cpu();
> +       __u32 num_cpu_bpf = cpu__max_cpu().cpu;
>         struct bpf_perf_event_value values[num_cpu_bpf];
>         int reading_map_fd, err = 0;
>         __u32 i;
> @@ -615,6 +615,7 @@ static int bperf__read(struct evsel *evsel)
>         reading_map_fd = bpf_map__fd(skel->maps.accum_readings);
>
>         for (i = 0; i < bpf_map__max_entries(skel->maps.accum_readings); i++) {
> +               struct perf_cpu entry;
>                 __u32 cpu;
>
>                 err = bpf_map_lookup_elem(reading_map_fd, &i, values);
> @@ -624,14 +625,15 @@ static int bperf__read(struct evsel *evsel)
>                 case BPERF_FILTER_GLOBAL:
>                         assert(i == 0);
>
> -                       perf_cpu_map__for_each_cpu(cpu, j, all_cpu_map) {
> +                       perf_cpu_map__for_each_cpu(entry, j, all_cpu_map) {
> +                               cpu = entry.cpu;
>                                 perf_counts(evsel->counts, cpu, 0)->val = values[cpu].counter;
>                                 perf_counts(evsel->counts, cpu, 0)->ena = values[cpu].enabled;
>                                 perf_counts(evsel->counts, cpu, 0)->run = values[cpu].running;
>                         }
>                         break;
>                 case BPERF_FILTER_CPU:
> -                       cpu = evsel->core.cpus->map[i];
> +                       cpu = evsel->core.cpus->map[i].cpu;
>                         perf_counts(evsel->counts, i, 0)->val = values[cpu].counter;
>                         perf_counts(evsel->counts, i, 0)->ena = values[cpu].enabled;
>                         perf_counts(evsel->counts, i, 0)->run = values[cpu].running;
> diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c
> index cbc6c2bca488f6bf..631e34a0b66ff084 100644
> --- a/tools/perf/util/bpf_counter_cgroup.c
> +++ b/tools/perf/util/bpf_counter_cgroup.c
> @@ -48,7 +48,7 @@ static int bperf_load_program(struct evlist *evlist)
>         struct cgroup *cgrp, *leader_cgrp;
>         __u32 i, cpu;
>         __u32 nr_cpus = evlist->core.all_cpus->nr;
> -       int total_cpus = cpu__max_cpu();
> +       int total_cpus = cpu__max_cpu().cpu;
>         int map_size, map_fd;
>         int prog_fd, err;
>
> @@ -125,7 +125,7 @@ static int bperf_load_program(struct evlist *evlist)
>                         for (cpu = 0; cpu < nr_cpus; cpu++) {
>                                 int fd = FD(evsel, cpu);
>                                 __u32 idx = evsel->core.idx * total_cpus +
> -                                       evlist->core.all_cpus->map[cpu];
> +                                       evlist->core.all_cpus->map[cpu].cpu;
>
>                                 err = bpf_map_update_elem(map_fd, &idx, &fd,
>                                                           BPF_ANY);
> @@ -212,7 +212,7 @@ static int bperf_cgrp__sync_counters(struct evlist *evlist)
>         int prog_fd = bpf_program__fd(skel->progs.trigger_read);
>
>         for (i = 0; i < nr_cpus; i++) {
> -               cpu = evlist->core.all_cpus->map[i];
> +               cpu = evlist->core.all_cpus->map[i].cpu;
>                 bperf_trigger_reading(prog_fd, cpu);
>         }
>
> @@ -245,7 +245,7 @@ static int bperf_cgrp__read(struct evsel *evsel)
>  {
>         struct evlist *evlist = evsel->evlist;
>         int i, cpu, nr_cpus = evlist->core.all_cpus->nr;
> -       int total_cpus = cpu__max_cpu();
> +       int total_cpus = cpu__max_cpu().cpu;
>         struct perf_counts_values *counts;
>         struct bpf_perf_event_value *values;
>         int reading_map_fd, err = 0;
> @@ -272,7 +272,7 @@ static int bperf_cgrp__read(struct evsel *evsel)
>                 }
>
>                 for (i = 0; i < nr_cpus; i++) {
> -                       cpu = evlist->core.all_cpus->map[i];
> +                       cpu = evlist->core.all_cpus->map[i].cpu;
>
>                         counts = perf_counts(evsel->counts, i, 0);
>                         counts->val = values[cpu].counter;
> diff --git a/tools/perf/util/bpf_ftrace.c b/tools/perf/util/bpf_ftrace.c
> index 28dc4c60c7884818..d756cc66eef32ae8 100644
> --- a/tools/perf/util/bpf_ftrace.c
> +++ b/tools/perf/util/bpf_ftrace.c
> @@ -63,7 +63,7 @@ int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace)
>                 fd = bpf_map__fd(skel->maps.cpu_filter);
>
>                 for (i = 0; i < ncpus; i++) {
> -                       cpu = perf_cpu_map__cpu(ftrace->evlist->core.cpus, i);
> +                       cpu = perf_cpu_map__cpu(ftrace->evlist->core.cpus, i).cpu;
>                         bpf_map_update_elem(fd, &cpu, &val, BPF_ANY);
>                 }
>         }
> @@ -122,7 +122,7 @@ int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused,
>         int i, fd, err;
>         u32 idx;
>         u64 *hist;
> -       int ncpus = cpu__max_cpu();
> +       int ncpus = cpu__max_cpu().cpu;
>
>         fd = bpf_map__fd(skel->maps.latency);
>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-01-11 19:17 UTC|newest]

Thread overview: 170+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-05  6:13 [PATCH v4 00/48] Refactor perf cpumap Ian Rogers
2022-01-05  6:13 ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 01/48] libperf: Add comments to perf_cpu_map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 17:00   ` John Garry
2022-01-10 17:00     ` John Garry
2022-01-12  5:35   ` kajoljain
2022-01-12  5:35     ` kajoljain
2022-01-05  6:13 ` [PATCH v4 02/48] perf stat: Add aggr creators that are passed a cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 17:10   ` John Garry
2022-01-10 17:10     ` John Garry
2022-01-10 17:36     ` Ian Rogers
2022-01-10 17:36       ` Ian Rogers
2022-01-10 17:51       ` John Garry
2022-01-10 17:51         ` John Garry
2022-01-10 18:52       ` Arnaldo Carvalho de Melo
2022-01-10 18:52         ` Arnaldo Carvalho de Melo
2022-01-10 18:53         ` Arnaldo Carvalho de Melo
2022-01-10 18:53           ` Arnaldo Carvalho de Melo
2022-01-10 18:56           ` Arnaldo Carvalho de Melo
2022-01-10 18:56             ` Arnaldo Carvalho de Melo
2022-01-10 19:17   ` John Garry
2022-01-10 19:17     ` John Garry
2022-01-11 19:33   ` Arnaldo Carvalho de Melo
2022-01-11 19:33     ` Arnaldo Carvalho de Melo
2022-01-11 19:36     ` Ian Rogers
2022-01-11 19:36       ` Ian Rogers
2022-01-11 19:56       ` Arnaldo Carvalho de Melo
2022-01-11 19:56         ` Arnaldo Carvalho de Melo
2022-01-11 19:49     ` Arnaldo Carvalho de Melo
2022-01-11 19:49       ` Arnaldo Carvalho de Melo
2022-01-05  6:13 ` [PATCH v4 03/48] perf stat: Correct aggregation CPU map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 18:43   ` John Garry
2022-01-10 18:43     ` John Garry
2022-01-05  6:13 ` [PATCH v4 04/48] perf stat: Switch aggregation to use for_each loop Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 18:50   ` John Garry
2022-01-10 18:50     ` John Garry
2022-01-10 22:22     ` Ian Rogers
2022-01-10 22:22       ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 05/48] perf stat: Switch to cpu version of cpu_map__get Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 19:04   ` John Garry
2022-01-10 19:04     ` John Garry
2022-01-11 18:46     ` Ian Rogers
2022-01-11 18:46       ` Ian Rogers
2022-01-11 18:50       ` Arnaldo Carvalho de Melo
2022-01-11 18:50         ` Arnaldo Carvalho de Melo
2022-01-05  6:13 ` [PATCH v4 06/48] perf cpumap: Switch cpu_map__build_map to cpu function Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 07/48] perf cpumap: Remove map+index get_socket Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 08/48] perf cpumap: Remove map+index get_die Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 09/48] perf cpumap: Remove map+index get_core Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 10/48] perf cpumap: Remove map+index get_node Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 11/48] perf cpumap: Add comments to aggr_cpu_id Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 12/48] perf cpumap: Remove unused cpu_map__socket Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 13/48] perf cpumap: Simplify equal function name Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 14/48] perf cpumap: Rename empty functions Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 15/48] perf cpumap: Document cpu__get_node and remove redundant function Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 16/48] perf cpumap: Remove map from function names that don't use a map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 17/48] perf cpumap: Remove cpu_map__cpu, use libperf function Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 19:02   ` Arnaldo Carvalho de Melo
2022-01-10 19:02     ` Arnaldo Carvalho de Melo
2022-01-10 19:04     ` Arnaldo Carvalho de Melo
2022-01-10 19:04       ` Arnaldo Carvalho de Melo
2022-01-10 19:06       ` Arnaldo Carvalho de Melo
2022-01-10 19:06         ` Arnaldo Carvalho de Melo
2022-01-05  6:13 ` [PATCH v4 18/48] perf cpumap: Refactor cpu_map__build_map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 19/48] perf cpumap: Rename cpu_map__get_X_aggr_by_cpu functions Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 20/48] perf cpumap: Move 'has' function to libperf Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 21/48] perf cpumap: Add some comments to cpu_aggr_map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 22/48] perf cpumap: Trim the cpu_aggr_map Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 23/48] perf stat: Fix memory leak in check_per_pkg Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 24/48] perf cpumap: Add CPU to aggr_cpu_id Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 25/48] perf stat-display: Avoid use of core for CPU Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 26/48] perf evsel: Derive CPUs and threads in alloc_counts Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-09 18:30   ` Jiri Olsa
2022-01-09 18:30     ` Jiri Olsa
2022-01-10  5:49     ` Ian Rogers
2022-01-10  5:49       ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 27/48] libperf: Switch cpu to more accurate cpu_map_idx Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 28/48] libperf: Use cpu not index for evsel mmap Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 29/48] perf counts: Switch name cpu to cpu_map_idx Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 30/48] perf stat: Rename aggr_data cpu to imply it's an index Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 31/48] perf stat: Use perf_cpu_map__for_each_cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 32/48] perf script: Use for each cpu to aid readability Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 33/48] libperf: Allow NULL in perf_cpu_map__idx Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 34/48] perf evlist: Refactor evlist__for_each_cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 35/48] perf evsel: Pass cpu not cpu map index to synthesize Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 36/48] perf stat: Correct variable name for read counter Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 37/48] perf evsel: Rename CPU around get_group_fd Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 38/48] perf evsel: Reduce scope of evsel__ignore_missing_thread Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 39/48] perf evsel: Rename variable cpu to index Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 40/48] perf test: Use perf_cpu_map__for_each_cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 41/48] perf stat: Correct check_per_pkg cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 42/48] perf stat: Swap variable name cpu to index Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 43/48] libperf: Sync evsel documentation Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 44/48] perf bpf: Rename cpu to cpu_map_idx Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-10 19:10   ` Arnaldo Carvalho de Melo
2022-01-10 19:10     ` Arnaldo Carvalho de Melo
2022-01-10 19:26     ` Arnaldo Carvalho de Melo
2022-01-10 19:26       ` Arnaldo Carvalho de Melo
2022-01-05  6:13 ` [PATCH v4 45/48] perf c2c: Use more intention revealing iterator Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 46/48] perf script: Fix flipped index and cpu Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 47/48] perf stat: Correct first_shadow_cpu to return index Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-05  6:13 ` [PATCH v4 48/48] perf cpumap: Give CPUs their own type Ian Rogers
2022-01-05  6:13   ` Ian Rogers
2022-01-09 18:30   ` Jiri Olsa
2022-01-09 18:30     ` Jiri Olsa
2022-01-10  5:45     ` Ian Rogers
2022-01-10  5:45       ` Ian Rogers
2022-01-10 19:50   ` Arnaldo Carvalho de Melo
2022-01-10 19:50     ` Arnaldo Carvalho de Melo
2022-01-11 19:16     ` Ian Rogers [this message]
2022-01-11 19:16       ` Ian Rogers
2022-01-11 20:01       ` Arnaldo Carvalho de Melo
2022-01-11 20:01         ` Arnaldo Carvalho de Melo
2022-01-11 20:47         ` Arnaldo Carvalho de Melo
2022-01-11 20:47           ` Arnaldo Carvalho de Melo
2022-01-12 17:39         ` Arnaldo Carvalho de Melo
2022-01-12 18:02           ` Ian Rogers
2022-01-10 20:17 ` [PATCH v4 00/48] Refactor perf cpumap Arnaldo Carvalho de Melo
2022-01-10 20:17   ` Arnaldo Carvalho de Melo
2022-01-10 20:40   ` Arnaldo Carvalho de Melo
2022-01-10 20:40     ` Arnaldo Carvalho de Melo
2022-01-10 20:42     ` Arnaldo Carvalho de Melo
2022-01-10 20:42       ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAP-5=fWZWMweYhWvv1vr6quZe=ZJrhF_WEXqbELVitzofBcQrA@mail.gmail.com' \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=coresight@lists.linaro.org \
    --cc=eranian@google.com \
    --cc=james.clark@arm.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=kan.liang@linux.intel.com \
    --cc=kjain@linux.ibm.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rickyman7@gmail.com \
    --cc=suzuki.poulose@arm.com \
    --cc=vineet.singh@intel.com \
    --cc=zhengjun.xing@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.