From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: James Clark <james.clark@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Mike Leach <mike.leach@linaro.org>,
John Garry <john.g.garry@oracle.com>,
Will Deacon <will@kernel.org>, Leo Yan <leo.yan@linux.dev>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 02/14] perf evsel: Refactor evsel__set_config_if_unset() arguments
Date: Tue, 13 Jan 2026 19:13:23 -0300 [thread overview]
Message-ID: <aWbDg0kmo-isxkz2@x1> (raw)
In-Reply-To: <20251222-james-perf-config-bits-v4-2-0608438186fc@linaro.org>
On Mon, Dec 22, 2025 at 03:14:27PM +0000, James Clark wrote:
> Make the evsel argument first to match the other evsel__* functions
> and remove the redundant pmu argument, which can be accessed via evsel.
I haven't checked if this is the exactly where this takes place but
should be in this series, 32-bit build is broken:
3: almalinux:9-i386WARNING: image platform (linux/386) does not match the expected platform (linux/amd64)
WARNING: image platform (linux/386) does not match the expected platform (linux/amd64)
21.72 almalinux:9-i386 : FAIL gcc version 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC)
1378 | perf_pmu__format_pack(&bits, val, vp, /*zero=*/true);
| ^~~~~
| |
| u64 * {aka long long unsigned int *}
In file included from util/evsel.h:14,
from util/evsel.c:38:
util/pmu.h:282:43: note: expected ‘long unsigned int *’ but argument is of type ‘u64 *’ {aka ‘long long unsigned int *’}
282 | void perf_pmu__format_pack(unsigned long *format, __u64 value, __u64 *v,
| ~~~~~~~~~~~~~~~^~~~~~
What I have is in perf-tools-next/tmp.perf-tools-next BTW, I'll try and
fix this tomorrow if you don't do it first. :-)
There are some more build problems in other containers/distros, I'll be
reporting as replies to the patches that looks related
- Arnaldo
> Signed-off-by: James Clark <james.clark@linaro.org>
> ---
> tools/perf/arch/arm/util/cs-etm.c | 9 +++------
> tools/perf/arch/arm64/util/arm-spe.c | 2 +-
> tools/perf/arch/x86/util/intel-pt.c | 3 +--
> tools/perf/util/evsel.h | 4 ++--
> tools/perf/util/pmu.c | 6 +++---
> 5 files changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
> index ea891d12f8f4..c28208361d91 100644
> --- a/tools/perf/arch/arm/util/cs-etm.c
> +++ b/tools/perf/arch/arm/util/cs-etm.c
> @@ -441,10 +441,8 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
> * when a context switch happened.
> */
> if (!perf_cpu_map__is_any_cpu_or_is_empty(cpus)) {
> - evsel__set_config_if_unset(cs_etm_pmu, cs_etm_evsel,
> - "timestamp", 1);
> - evsel__set_config_if_unset(cs_etm_pmu, cs_etm_evsel,
> - "contextid", 1);
> + evsel__set_config_if_unset(cs_etm_evsel, "timestamp", 1);
> + evsel__set_config_if_unset(cs_etm_evsel, "contextid", 1);
> }
>
> /*
> @@ -453,8 +451,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
> * timestamp tracing.
> */
> if (opts->sample_time_set)
> - evsel__set_config_if_unset(cs_etm_pmu, cs_etm_evsel,
> - "timestamp", 1);
> + evsel__set_config_if_unset(cs_etm_evsel, "timestamp", 1);
>
> /* Add dummy event to keep tracking */
> err = parse_event(evlist, "dummy:u");
> diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/util/arm-spe.c
> index d5ec1408d0ae..51014f8bff97 100644
> --- a/tools/perf/arch/arm64/util/arm-spe.c
> +++ b/tools/perf/arch/arm64/util/arm-spe.c
> @@ -274,7 +274,7 @@ static void arm_spe_setup_evsel(struct evsel *evsel, struct perf_cpu_map *cpus)
> */
> if (!perf_cpu_map__is_any_cpu_or_is_empty(cpus)) {
> evsel__set_sample_bit(evsel, CPU);
> - evsel__set_config_if_unset(evsel->pmu, evsel, "ts_enable", 1);
> + evsel__set_config_if_unset(evsel, "ts_enable", 1);
> }
>
> /*
> diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
> index b394ad9cc635..c131a727774f 100644
> --- a/tools/perf/arch/x86/util/intel-pt.c
> +++ b/tools/perf/arch/x86/util/intel-pt.c
> @@ -664,8 +664,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr,
> return 0;
>
> if (opts->auxtrace_sample_mode)
> - evsel__set_config_if_unset(intel_pt_pmu, intel_pt_evsel,
> - "psb_period", 0);
> + evsel__set_config_if_unset(intel_pt_evsel, "psb_period", 0);
>
> err = intel_pt_validate_config(intel_pt_pmu, intel_pt_evsel);
> if (err)
> diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> index a08130ff2e47..2cf87bc67df7 100644
> --- a/tools/perf/util/evsel.h
> +++ b/tools/perf/util/evsel.h
> @@ -575,8 +575,8 @@ void evsel__uniquify_counter(struct evsel *counter);
> ((((src) >> (pos)) & ((1ull << (size)) - 1)) << (63 - ((pos) + (size) - 1)))
>
> u64 evsel__bitfield_swap_branch_flags(u64 value);
> -void evsel__set_config_if_unset(struct perf_pmu *pmu, struct evsel *evsel,
> - const char *config_name, u64 val);
> +void evsel__set_config_if_unset(struct evsel *evsel, const char *config_name,
> + u64 val);
>
> bool evsel__is_offcpu_event(struct evsel *evsel);
>
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 956ea273c2c7..e87c12946d71 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -1382,8 +1382,8 @@ bool evsel__is_aux_event(const struct evsel *evsel)
> * something to true, pass 1 for val rather than a pre shifted value.
> */
> #define field_prep(_mask, _val) (((_val) << (ffsll(_mask) - 1)) & (_mask))
> -void evsel__set_config_if_unset(struct perf_pmu *pmu, struct evsel *evsel,
> - const char *config_name, u64 val)
> +void evsel__set_config_if_unset(struct evsel *evsel, const char *config_name,
> + u64 val)
> {
> u64 user_bits = 0, bits;
> struct evsel_config_term *term = evsel__get_config_term(evsel, CFG_CHG);
> @@ -1391,7 +1391,7 @@ void evsel__set_config_if_unset(struct perf_pmu *pmu, struct evsel *evsel,
> if (term)
> user_bits = term->val.cfg_chg;
>
> - bits = perf_pmu__format_bits(pmu, config_name);
> + bits = perf_pmu__format_bits(evsel->pmu, config_name);
>
> /* Do nothing if the user changed the value */
> if (bits & user_bits)
>
> --
> 2.34.1
>
next prev parent reply other threads:[~2026-01-13 22:13 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-22 15:14 [PATCH v4 00/14] perf cs-etm/arm-spe: Remove hard coded config fields James Clark
2025-12-22 15:14 ` [PATCH v4 01/14] perf parse-events: Refactor get_config_terms() to remove macros James Clark
2026-01-13 20:53 ` Arnaldo Carvalho de Melo
2025-12-22 15:14 ` [PATCH v4 02/14] perf evsel: Refactor evsel__set_config_if_unset() arguments James Clark
2026-01-13 22:13 ` Arnaldo Carvalho de Melo [this message]
2026-01-14 12:14 ` James Clark
2026-01-14 13:33 ` James Clark
2026-01-14 15:47 ` Arnaldo Carvalho de Melo
2026-01-14 15:58 ` James Clark
2025-12-22 15:14 ` [PATCH v4 03/14] perf evsel: Move evsel__* functions to evsel.c James Clark
2025-12-22 15:14 ` [PATCH v4 04/14] perf evsel: Support sparse fields in evsel__set_config_if_unset() James Clark
2025-12-22 15:14 ` [PATCH v4 05/14] perf parse-events: Track all user changed config bits James Clark
2025-12-22 15:14 ` [PATCH v4 06/14] perf evsel: apply evsel__set_config_if_unset() to all config fields James Clark
2025-12-22 15:14 ` [PATCH v4 07/14] perf evsel: Add a helper to get the value of a config field James Clark
2025-12-22 15:14 ` [PATCH v4 08/14] perf parse-events: Always track user config changes James Clark
2025-12-22 15:14 ` [PATCH v4 09/14] perf tests: Test evsel__set_config_if_unset() and config change tracking James Clark
2025-12-22 15:14 ` [PATCH v4 10/14] perf cs-etm: Make a helper to find the Coresight evsel James Clark
2025-12-22 15:14 ` [PATCH v4 11/14] perf cs-etm: Don't use hard coded config bits when setting up ETMCR James Clark
2025-12-22 15:14 ` [PATCH v4 12/14] perf cs-etm: Don't use hard coded config bits when setting up TRCCONFIGR James Clark
2025-12-22 15:14 ` [PATCH v4 13/14] perf cs-etm: Don't hard code config attribute when configuring the event James Clark
2025-12-22 15:14 ` [PATCH v4 14/14] perf arm-spe: Don't hard code config attribute James Clark
2026-01-13 20:58 ` [PATCH v4 00/14] perf cs-etm/arm-spe: Remove hard coded config fields Ian Rogers
2026-01-13 21:03 ` Arnaldo Carvalho de Melo
2026-01-13 21:01 ` 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=aWbDg0kmo-isxkz2@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=coresight@lists.linaro.org \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@linux.dev \
--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=mike.leach@linaro.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
/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.