From: Ian Rogers <irogers@google.com> To: Suzuki K Poulose <suzuki.poulose@arm.com>, Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>, John Garry <john.g.garry@oracle.com>, Will Deacon <will@kernel.org>, James Clark <james.clark@arm.com>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, Kajol Jain <kjain@linux.ibm.com>, Jing Zhang <renyu.zj@linux.alibaba.com>, Kan Liang <kan.liang@linux.intel.com>, Zhengjun Xing <zhengjun.xing@linux.intel.com>, Ravi Bangoria <ravi.bangoria@amd.com>, Madhavan Srinivasan <maddy@linux.ibm.com>, Athira Rajeev <atrajeev@linux.vnet.ibm.com>, Ming Wang <wangming01@loongson.cn>, Huacai Chen <chenhuacai@kernel.org>, Sandipan Das <sandipan.das@amd.com>, Dmitrii Dolgov <9erthalion6@gmail.com>, Sean Christopherson <seanjc@google.com>, Ali Saidi <alisaidi@amazon.com>, Rob Herring <robh@kernel.org>, Thomas Richter <tmricht@linux.ibm.com>, Kang Minchul <tegongkang@gmail.com>, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org Subject: [PATCH v5 07/34] perf pmu: Add CPU map for "cpu" PMUs Date: Sat, 27 May 2023 00:21:43 -0700 [thread overview] Message-ID: <20230527072210.2900565-8-irogers@google.com> (raw) In-Reply-To: <20230527072210.2900565-1-irogers@google.com> A typical "cpu" PMU has no "cpus" or "cpumask" file meaning the CPU map is set to NULL, which also encodes an empty CPU map. Update pmu_cpumask so that if the "cpu" PMU fails to load a CPU map, use a default of all online PMUs. Remove const from cpu_map__online for the sake of reference counting. Signed-off-by: Ian Rogers <irogers@google.com> Reviewed-by: Kan Liang <kan.liang@linux.intel.com> --- tools/perf/util/cpumap.c | 4 ++-- tools/perf/util/cpumap.h | 4 ++-- tools/perf/util/pmu.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c index a0719816a218..0e090e8bc334 100644 --- a/tools/perf/util/cpumap.c +++ b/tools/perf/util/cpumap.c @@ -667,9 +667,9 @@ size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size) return ptr - buf; } -const struct perf_cpu_map *cpu_map__online(void) /* thread unsafe */ +struct perf_cpu_map *cpu_map__online(void) /* thread unsafe */ { - static const struct perf_cpu_map *online = NULL; + static struct perf_cpu_map *online; if (!online) online = perf_cpu_map__new(NULL); /* from /sys/devices/system/cpu/online */ diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h index f394ccc0ccfb..9df2aeb34d3d 100644 --- a/tools/perf/util/cpumap.h +++ b/tools/perf/util/cpumap.h @@ -55,7 +55,7 @@ struct perf_cpu_map *cpu_map__new_data(const struct perf_record_cpu_map_data *da size_t cpu_map__snprint(struct perf_cpu_map *map, char *buf, size_t size); size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size); size_t cpu_map__fprintf(struct perf_cpu_map *map, FILE *fp); -const struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ +struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ int cpu__setup_cpunode_map(void); @@ -66,7 +66,7 @@ struct perf_cpu cpu__max_present_cpu(void); /** * cpu_map__is_dummy - Events associated with a pid, rather than a CPU, use a single dummy map with an entry of -1. */ -static inline bool cpu_map__is_dummy(struct perf_cpu_map *cpus) +static inline bool cpu_map__is_dummy(const struct perf_cpu_map *cpus) { return perf_cpu_map__nr(cpus) == 1 && perf_cpu_map__cpu(cpus, 0).cpu == -1; } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index e8c0762c311a..d992f5242d99 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -610,7 +610,7 @@ static struct perf_cpu_map *pmu_cpumask(int dirfd, const char *name) return cpus; } - return NULL; + return !strcmp(name, "cpu") ? perf_cpu_map__get(cpu_map__online()) : NULL; } static bool pmu_is_uncore(int dirfd, const char *name) -- 2.41.0.rc0.172.g3f132b7071-goog
WARNING: multiple messages have this Message-ID (diff)
From: Ian Rogers <irogers@google.com> To: Suzuki K Poulose <suzuki.poulose@arm.com>, Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>, John Garry <john.g.garry@oracle.com>, Will Deacon <will@kernel.org>, James Clark <james.clark@arm.com>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, Kajol Jain <kjain@linux.ibm.com>, Jing Zhang <renyu.zj@linux.alibaba.com>, Kan Liang <kan.liang@linux.intel.com>, Zhengjun Xing <zhengjun.xing@linux.intel.com>, Ravi Bangoria <ravi.bangoria@amd.com>, Madhavan Srinivasan <maddy@linux.ibm.com>, Athira Rajeev <atrajeev@linux.vnet.ibm.com>, Ming Wang <wangming01@loongson.cn>, Huacai Chen <chenhuacai@kernel.org>, Sandipan Das <sandipan.das@amd.com>, Dmitrii Dolgov <9erthalion6@gmail.com>, Sean Christopherson <seanjc@google.com>, Ali Saidi <alisaidi@amazon.com>, Rob Herring <robh@kernel.org>, Thomas Richter <tmricht@linux.ibm.com>, Kang Minchul <tegongkang@gmail.com>, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org Subject: [PATCH v5 07/34] perf pmu: Add CPU map for "cpu" PMUs Date: Sat, 27 May 2023 00:21:43 -0700 [thread overview] Message-ID: <20230527072210.2900565-8-irogers@google.com> (raw) In-Reply-To: <20230527072210.2900565-1-irogers@google.com> A typical "cpu" PMU has no "cpus" or "cpumask" file meaning the CPU map is set to NULL, which also encodes an empty CPU map. Update pmu_cpumask so that if the "cpu" PMU fails to load a CPU map, use a default of all online PMUs. Remove const from cpu_map__online for the sake of reference counting. Signed-off-by: Ian Rogers <irogers@google.com> Reviewed-by: Kan Liang <kan.liang@linux.intel.com> --- tools/perf/util/cpumap.c | 4 ++-- tools/perf/util/cpumap.h | 4 ++-- tools/perf/util/pmu.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c index a0719816a218..0e090e8bc334 100644 --- a/tools/perf/util/cpumap.c +++ b/tools/perf/util/cpumap.c @@ -667,9 +667,9 @@ size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size) return ptr - buf; } -const struct perf_cpu_map *cpu_map__online(void) /* thread unsafe */ +struct perf_cpu_map *cpu_map__online(void) /* thread unsafe */ { - static const struct perf_cpu_map *online = NULL; + static struct perf_cpu_map *online; if (!online) online = perf_cpu_map__new(NULL); /* from /sys/devices/system/cpu/online */ diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h index f394ccc0ccfb..9df2aeb34d3d 100644 --- a/tools/perf/util/cpumap.h +++ b/tools/perf/util/cpumap.h @@ -55,7 +55,7 @@ struct perf_cpu_map *cpu_map__new_data(const struct perf_record_cpu_map_data *da size_t cpu_map__snprint(struct perf_cpu_map *map, char *buf, size_t size); size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size); size_t cpu_map__fprintf(struct perf_cpu_map *map, FILE *fp); -const struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ +struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ int cpu__setup_cpunode_map(void); @@ -66,7 +66,7 @@ struct perf_cpu cpu__max_present_cpu(void); /** * cpu_map__is_dummy - Events associated with a pid, rather than a CPU, use a single dummy map with an entry of -1. */ -static inline bool cpu_map__is_dummy(struct perf_cpu_map *cpus) +static inline bool cpu_map__is_dummy(const struct perf_cpu_map *cpus) { return perf_cpu_map__nr(cpus) == 1 && perf_cpu_map__cpu(cpus, 0).cpu == -1; } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index e8c0762c311a..d992f5242d99 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -610,7 +610,7 @@ static struct perf_cpu_map *pmu_cpumask(int dirfd, const char *name) return cpus; } - return NULL; + return !strcmp(name, "cpu") ? perf_cpu_map__get(cpu_map__online()) : NULL; } static bool pmu_is_uncore(int dirfd, const char *name) -- 2.41.0.rc0.172.g3f132b7071-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-27 7:23 UTC|newest] Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-27 7:21 [PATCH v5 00/34] PMU refactoring and improvements Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 01/34] perf cpumap: Add internal nr and cpu accessors Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 02/34] perf cpumap: Add equal function Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 03/34] libperf cpumap: Add "any CPU"/dummy test function Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 04/34] perf pmu: Detect ARM and hybrid PMUs with sysfs Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 05/34] perf pmu: Add is_core to pmu Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 06/34] perf evsel: Add is_pmu_core inorder to interpret own_cpus Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` Ian Rogers [this message] 2023-05-27 7:21 ` [PATCH v5 07/34] perf pmu: Add CPU map for "cpu" PMUs Ian Rogers 2023-05-27 7:21 ` [PATCH v5 08/34] perf evlist: Propagate user CPU maps intersecting core PMU maps Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 09/34] perf evlist: Allow has_user_cpus to be set on hybrid Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 10/34] perf target: Remove unused hybrid value Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 11/34] perf tools: Warn if no user requested CPUs match PMU's CPUs Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 12/34] perf evlist: Remove evlist__warn_hybrid_group Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 13/34] perf evlist: Remove __evlist__add_default Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 14/34] perf evlist: Reduce scope of evlist__has_hybrid Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 15/34] perf pmu: Remove perf_pmu__hybrid_mounted Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 16/34] perf pmu: Rewrite perf_pmu__has_hybrid to avoid list Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 17/34] perf x86: Iterate hybrid PMUs as core PMUs Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 18/34] perf topology: Avoid hybrid list for hybrid topology Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 19/34] perf evsel: Compute is_hybrid from PMU being core Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 20/34] perf header: Avoid hybrid PMU list in write_pmu_caps Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 21/34] perf metrics: Remove perf_pmu__is_hybrid use Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 22/34] perf stat: Avoid hybrid PMU list Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:21 ` [PATCH v5 23/34] perf mem: " Ian Rogers 2023-05-27 7:21 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 24/34] perf pmu: Remove perf_pmu__hybrid_pmus list Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 25/34] perf pmus: Prefer perf_pmu__scan over perf_pmus__for_each_pmu Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 26/34] perf x86 mem: minor refactor to is_mem_loads_aux_event Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 27/34] perf pmu: Separate pmu and pmus Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-06-02 5:29 ` [PATCH] perf test amd: Fix build failure with amd-ibs-via-core-pmu.c -- Was: " Ravi Bangoria 2023-06-02 5:29 ` Ravi Bangoria 2023-06-02 6:42 ` Ian Rogers 2023-06-02 6:42 ` Ian Rogers 2023-06-03 4:46 ` [PATCH v2] perf test amd: Fix build failure with amd-ibs-via-core-pmu.c Ravi Bangoria 2023-06-03 4:46 ` Ravi Bangoria 2023-06-05 14:27 ` Arnaldo Carvalho de Melo 2023-06-05 14:27 ` Arnaldo Carvalho de Melo 2023-06-06 3:12 ` Ravi Bangoria 2023-06-06 3:12 ` Ravi Bangoria 2023-06-06 4:24 ` Stephen Rothwell 2023-06-06 4:24 ` Stephen Rothwell 2023-06-07 0:56 ` Stephen Rothwell 2023-06-07 0:56 ` Stephen Rothwell 2023-05-27 7:22 ` [PATCH v5 28/34] perf pmus: Split pmus list into core and other Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-06-09 3:59 ` Ravi Bangoria 2023-06-09 3:59 ` Ravi Bangoria 2023-06-09 4:40 ` Ian Rogers 2023-06-09 4:40 ` Ian Rogers 2023-06-09 5:30 ` Ravi Bangoria 2023-06-09 5:30 ` Ravi Bangoria 2023-06-09 5:35 ` Ian Rogers 2023-06-09 5:35 ` Ian Rogers 2023-06-09 5:55 ` Ravi Bangoria 2023-06-09 5:55 ` Ravi Bangoria 2023-06-09 6:00 ` Ian Rogers 2023-06-09 6:00 ` Ian Rogers 2023-06-09 6:02 ` Ravi Bangoria 2023-06-09 6:02 ` Ravi Bangoria 2023-06-09 7:58 ` Mark Rutland 2023-06-09 7:58 ` Mark Rutland 2023-06-11 3:55 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 29/34] perf pmus: Allow just core PMU scanning Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-06-09 6:12 ` Ravi Bangoria 2023-06-09 6:12 ` Ravi Bangoria 2023-05-27 7:22 ` [PATCH v5 30/34] perf pmus: Avoid repeated sysfs scanning Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 31/34] perf pmus: Ensure all PMUs are read for find_by_type Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 32/34] perf pmus: Add function to return count of core PMUs Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 33/34] perf pmus: Remove perf_pmus__has_hybrid Ian Rogers 2023-05-27 7:22 ` Ian Rogers 2023-05-27 7:22 ` [PATCH v5 34/34] perf pmu: Remove is_pmu_hybrid Ian Rogers 2023-05-27 7:22 ` Ian Rogers
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=20230527072210.2900565-8-irogers@google.com \ --to=irogers@google.com \ --cc=9erthalion6@gmail.com \ --cc=acme@kernel.org \ --cc=adrian.hunter@intel.com \ --cc=alexander.shishkin@linux.intel.com \ --cc=alisaidi@amazon.com \ --cc=atrajeev@linux.vnet.ibm.com \ --cc=chenhuacai@kernel.org \ --cc=coresight@lists.linaro.org \ --cc=james.clark@arm.com \ --cc=john.g.garry@oracle.com \ --cc=jolsa@kernel.org \ --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=maddy@linux.ibm.com \ --cc=mark.rutland@arm.com \ --cc=mike.leach@linaro.org \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=peterz@infradead.org \ --cc=ravi.bangoria@amd.com \ --cc=renyu.zj@linux.alibaba.com \ --cc=robh@kernel.org \ --cc=sandipan.das@amd.com \ --cc=seanjc@google.com \ --cc=suzuki.poulose@arm.com \ --cc=tegongkang@gmail.com \ --cc=tmricht@linux.ibm.com \ --cc=wangming01@loongson.cn \ --cc=will@kernel.org \ --cc=zhengjun.xing@linux.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: linkBe 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.